Wednesday, April 30, 2003

Controle de Acesso: Como adequar seu ambiente aos requisitos da BS7799

Charles Schneider, consultor da Axur Information Security.

Você sabe como implementar um sistema de controle de acesso à informação que funcione de maneira verdadeiramente eficiente e não se torne um estorvo para o usuário final? Geralmente a resposta vem em coro “Coloque um firewall na entrada e tudo bem!”. Frente às técnicas de intrusão e a sofisticação das atuais arquiteturas de rede e sistemas, esta regra nem sempre funciona tão bem isoladamente. Controlar o acesso, na raiz do termo, significa restringir o acesso às informações. Este é um dos primeiros pontos a ser considerado de forma ampla e estratégica pelas organizações quando estiverem desenvolvendo um plano para proteção dos seus sistemas.

Ao longo deste artigo descreverei algumas técnicas que permitirá as organizações que necessitem maior embasamento obter uma estrutura de trabalho baseada nos controles de uma das mais importantes normas internacionais, a BS 7799. Uma mistura entre o melhor do aspecto teórico e do prático.

Como etapa inicial “em busca da rede segura”, é necessário que seja formalizada uma política de controle de acesso. Esta política deve considerar alguns tópicos como: requisitos de segurança de aplicações do negócio, identificação da informação referente às aplicações do negócio, classificação da informação conforme critérios de confidencialidade, legislação aplicável, obrigações contratuais, perfil dos usuários e gerenciamento dos direitos de acesso. Neste mesmo documento devem constar também as regras gerais de controle de acesso, definindo a aplicação do conceito “fecha tudo e só abre quando autorizado” ou “tudo é autorizado, exceto quando expressamente proibido”, sendo que esta segunda política quase nunca é aplicável. É necessário que este documento chegue a todos os usuários dos sistemas de informação.

É conveniente que seja implementado um sistema de gerenciamento de usuários que servirá para manter documentado todos os acessos lógicos e os privilégios que os usuários possuem no sistema. Este documento pode ser utilização para a concessão de acessos e privilégios aos usuários, onde a área de informática ficará de posse destes documentos para manter o controle de acesso devidamente organizado, capacitando ao departamento jurídico acionar legalmente o funcionário em caso de tentativas de acesso não autorizado.

O gestor poderá, periodicamente, conduzir uma análise crítica dos direitos e privilégios dos usuários para garantir que acessos não autorizados sejam registrados nos sistemas. Esta documentação cobrirá todo ciclo de vida de um usuário em um sistema.

O sucesso de um controle de acesso eficaz passa pela cooperação dos usuários que fazem parte da organização. Estes devem ser conscientizados a seguir as boas práticas para com suas senhas, mantendo sua confidencialidade e evitando ao máximo registrá-las de forma que possam ser lidas. Esta é uma parte importantíssima do processo e que requer o envolvimento de todos.

De que forma participa a área de informática? Sua participação é máxima. A área de informática deve proteger os serviços de rede através da implementação de controles, garantindo que usuários com acessos às redes e seu serviços não comprometam a segurança dos mesmos. Nesta etapa do processo, é necessário implantar outra política, que levará em consideração o uso de redes e seus serviços. Esta política deve considerar as redes aos quais o acesso é permitido e também um procedimento de autorização para determinar quem pode ter acesso a que redes e quais serviços.

Após formatada uma política coerente entre as necessidades do negócio e a tecnologia disponível, a área de informática deverá implantar os controles necessários para “defender” a organização. Existem diversos controles de rede disponíveis, mas como saber qual controle se mostra mais eficiente e onde implantá-lo? As implementações desses controles devem ser baseadas em uma análise de risco previamente elaborada.

Alguns controles de rede que devem ser considerados são:

§ rota de rede obrigatória, que serve para controlar o caminho entre o terminnal do usuário e o serviço de rede;

§ a autenticação para conexão de usuário externo.

Muito cuidado ao defender serviços externos, é necessário analisar se este serviço é extremamente necessário para o negócio, pois pode abrir portas de seu sistema para o mundo. Se necessário utilizar este serviço deve-se usar métodos de autenticação forte; a segregação de redes e o controle de conexões de rede podem ser feitos dividindo em domínio interno e externo, utilizando para isso o tão conhecido amigo “firewall” – citado no início do artigo, e que só agora entra em cartaz -, que filtrará o tráfego entre os domínios através de tabelas ou regras predefinidas.

Vamos tratar agora o sistema operacional. A proteção aos sistemas operacionais deve ser efetuada através das funcionalidades pré-existentes nos próprios sistemas, utilizadas para a restrição dos acessos não autorizados. O técnico da área de informática, mais precisamente o administrador de rede, deve configurar os sistemas para que o processo de entrada nos sistemas (logon) seja realizado através de um processo seguro. Um exemplo é limitar número de tentativas sem sucesso, registro das tentativas de acesso inválidas, obrigar o uso de senhas complexas e etc.

Após a obtenção de um sistema operacional bem protegido é necessário tratar às aplicações do negócio. Para isso, o proprietário da aplicação, que no caso pode ser o DBA, juntamente com o administrador de rede deve aplicar restrições aos sistemas para que os usuários mal intencionados não possam utilizar métodos para alterar os dados dos sistemas.

Mas não é somente nos domínios da organização que dados podem ser violados. Deve ser tomado um cuidado especial com a computação móvel e o trabalho remoto. Convém que seja adotada uma política formal levando em conta os riscos de trabalhar com estes recursos. Esta política deve conter os requisitos para proteção física, controles de acesso, criptografia e etc. É necessário que os usuários que se beneficiam deste recurso recebam treinamento específico.

Bem, o trabalho pesado está feito. Agora é necessário verificar o que está acontecendo e, para isso, é necessário que os sistemas sejam monitorados para detectar divergências entre a política de controle de acesso e os registros de eventos monitorados, fornecendo evidências no caso de incidentes de segurança.

Trilhas de auditoria devem ser configuradas nos sistemas para registrar eventos de segurança relevantes e mantidas por um período de tempo para auxiliar em investigações futuras. Alguns exemplos de eventos que devem ser registrados são: identificação do usuário, data e hora de entrada e saída no sistema, tentativas de acesso ao sistema aceitas e rejeitadas, alertas e falhas no sistema e etc. Para garantir a exatidão na auditoria, os relógios dos sistemas necessitam estar corretos, ajustado conforme algum padrão local de tempo.

Pessoal, espero que o artigo tenha sido proveitoso. Fica a pergunta “Depois desta implementação, nenhum usuário não autorizado acessará o sistema?” Bem, prometer ninguém pode, pois à medida que se expõe a informação, tanto internamente quanto externamente, o risco sempre existirá – por menor que seja. O que garantimos é uma administração inteligente do risco.

Wednesday, April 2, 2003

Desenvolvimento de Sistemas: Segurança nas aplicações de negócio

André Palma, consultor da Axur Information Security.
Os sistemas de informação representam o principal frame por onde transitam as informações de uma instituição. Afinal o objetivo destes sistemas é justamente concentrar o maior fluxo possível de informações permitindo agilidade nos processos de negócio. Entretanto nem sempre as empresas adotam as medidas de segurança necessárias durante o desenvolvimento de sistemas, para a proteção adequada destas informações.

Controles pontuais são perfeitamente válidos, porém não garantem, por si só, a segurança das informações. Um ambiente seguro devem empregar produtos de segurança sem esquecer de inserir a segurança em seus processos. Muitas empresas vêem empregando controles individuais, desconsiderando a necessidade de definição e principalmente de formalização de seus processos.

A área de desenvolvimento das empresas é um exemplo claro de processo que nem sempre recebe as atenções necessárias no que diz respeito à segurança da informação. Garantir a segurança da rede corporativa não significa ter sistemas de informação seguros. A informalidade ainda predomina nas relações entre desenvolvimento e suporte operacional.

O primeiro passo para inserir a segurança da informação na área de desenvolvimento de sistemas é definir formalmente este processo. Uma abordagem adequada é considerar como início do processo as solicitações dos usuários e como final a liberação das novas versões para produção.

Entre estes dois pontos deve existir uma avaliação do Analista de Segurança. Este analista pode ser um dos próprios Analistas de Sistemas, porem capacitados a determinar quais são os controles de segurança necessários para determinada especificação de sistema. Por exemplo, um usuário solicita inserir novos campos em um formulário. O Analista de Segurança deve avaliar esta solicitação e inserir, na especificação, a necessidade de validação de entrada, caso integridade externa seja fundamental para o negócio em questão.

A equipe de desenvolvimento somente deve receber especificações para novos sistemas ou modificações nos sistemas existentes após avaliação dos requisitos de segurança. É indispensável a formalização destes requisitos, juntamente com os requisitos do negócio apontados pelo usuário. O desenvolvimento das soluções deve respeitar integralmente as definições de segurança impostas pelo Analista de Segurança e documentadas junto aos requisitos do sistema.

Após o desenvolvimento da solução, o Analista de Segurança deve realizar uma verificação se os controles realmente são válidos e garantem, no caso do nosso exemplo, a inserção exclusiva de dados representativos. Após passar pela aprovação de segurança é necessário realizar testes formais com os usuários. Estes testes devem ser realizados em ambientes próprios, totalmente isolados do ambiente de produção.

A confirmação dos usuários de que o sistema incorpora as funções solicitadas deve ser visto como requisito mínimo para a distribuição da nova versão no ambiente de produção. Os procedimentos de distribuição também precisam estar definidos formalmente, pois representam uma fase crítica do processo. Quando possível, convém que sejam realizados testes verificando se as novas versões não possuem funções ocultas, ou os famosos covert channels, que já foram responsáveis por diversos incidentes de segurança.

Cada fase do processo deve ser formalizada e devidamente autorizada. Para isso, é importante manter uma lista de níveis de autorização, ou seja, quem pode autorizar cada fase do processo. Deve-se exigir também que os desenvolvedores documentem cada novo sistema ou modificação realizada, destacando as funções de segurança incorporadas.

Entretanto, a segurança da informação não é obtida apenas através da formalização do processo. Algumas medidas devem ser adotadas para garantir, sobretudo que cada informação é divulgada a quem se faz necessário – conceito conhecido como need to know.

Em primeiro lugar e requisito para todo o processo de desenvolvimento, os ambientes de produção e desenvolvimento deveem ser segregados. Além de fisicamente separados, em salas ou locais diferentes, devem estar logicamente separados, de preferência em redes próprias, separadas por firewalls da rede de produção. Máquinas da produção não devem realizar suporte ou qualquer outra atividade, devem ser vistas como ferramentas de desenvolvimento apenas.

Um segundo passo importante é não fornecer dados reais para testes. Muitas empresas copiam sua base de dados de alguns meses anteriores e disponibilizam aos desenvolvedores como teste. Claro que a base de testes deve representar como a máxima fidelidade a realidade do negócio. Porém pode-se obter isso através de procedimentos de descaracterização da base de dados. É importante substituir dados de clientes por dados aleatórios, números de contas por números aleatórios, ou seja, e qualquer outra informação que possa ser refletida na realidade deve ser descaracterizada.

Controles de criptografia devem ser sempre considerados e avaliados. Nem sempre são necessário, principalmente frente ao overhead que podem causar nos servidores de produção. Porém existem soluções interessantes, como autenticação de mensagens e serviços de não repúdio que não acrescentam volume às taxas de processamento.

O controle de acesso ao código fonte deve ser rigidamente definido. É importante que o responsável pelo desenvolvimento atribua a cada desenvolvedor acesso aos fontes e projetos que este está diretamente ligado. Produtos de controle de versão são interessantes neste sentido, entretanto uma organização através de servidores de arquivos com acessos definidos também resolve a questão.

Por último, é importante que o ambiente de teste seja dedicado. Uma estação de trabalho e um pequeno servidor rodando a aplicação com acesso a base de testes são o suficiente para que os usuários possam identificar e testar as novas características desenvolvidas. Esse ambiente não deve ser conectado ao ambiente de produção. Pode estar isolado ou conectado ao ambiente de desenvolvimento.

Estes são alguns mecanismos que quando adotados concorrem para o aumento da segurança nas aplicações de negócio. Não se deve esquecer que o controle e auditoria do processo devem ser realizados pelo Security Officer, ou pessoa que assume este papel na empresa. Vale ressaltar que estas medidas de segurança não só protegem as informações da empresa, mas também organizam o processo de desenvolvimento. Nada mais correto, pois um ambiente seguro é forte candidato a ser um ambiente organizado.