Os conceitos a seguir são extremamente importantes para o profissional de segurança, que deve tê-los em mente no cotidiano de sua tarefa:
Cada função deve ter apenas os privilégios mínimos para executar suas tarefas e nenhum outro. É difícil aplicar esse conceito, pois muitas vezes ele envolve uma série de ajustes e um mínimo erro pode fazer com que o recurso pare de funcionar. Em um servidor web, por exemplo. Executar o processo do servidor como o usuário administrador provavelmente fornecerá uma série de privilégios desnecessários a ele. Nesse caso, convém criar um usuário específico (ex.: httpd) e definir as permissões mínimas para que o serviço funcione (permissão de leitura na pasta onde ficam as páginas HTML e permissão de leitura e gravação na pasta onde ficam os registros de acesso).
XEsse conceito diz para não depender somente de um único mecanismo de segurança. Se não existe mecanismo 100% seguro então qualquer mecanismo pode ser subvertido. Colocar defesas redundantes minimiza essa questão, pois um atacante, ao passar por suas defesas mais externas, ainda terá outras camadas de defesa para ultrapassar antes de comprometer o sistema como um todo.
XCanal estreito por onde os atacantes são forçados a passar, podem ser monitorados e controlados. Exemplos: praça de pedágio em uma estrada, caixa de supermercado, firewalls.
XNa primeira (mais segura), tudo é proibido e o que é permitido deve ser expressamente definido. Na segunda, tudo é permitido e o que é proibido deve ser definido. Em sistemas seguros, deve-se buscar sempre a primeira atitude (Default Deny), apesar de nem sempre ser possível. Para o caso do acesso à internet por um navegador, seria viável bloquear toda a internet e liberar apenas o que é permitido? Mais difícil, seria melhor a segunda opção.
XTodos devem participar do processo de segurança. Uma única pessoa que não participa do processo pode comprometer todo o sistema. É importante lembrar que a segurança envolve pessoas, elas devem estar envolvidas, motivadas e participantes do processo.
XEsse conceito recomenda a utilização de diferentes sistemas e formas de defesa, de modo que uma vulnerabilidade em um sistema pode ser coberta por outro. Cuidado deve ser tomado para não cair em um dos problemas listados a seguir.
XSistemas de um mesmo tipo podem sofrer da mesma fraqueza inerente a esse tipo de sistema. Exemplos: falha de conceito ou falha de um protocolo com programação comum.
XSistemas diferentes configurados por uma mesma pessoa ou grupo de pessoas podem sofrer de problemas semelhantes de configuração.
XSistemas de fabricantes diferentes podem usar componentes comuns e consequentemente terem as mesmas falhas.
XCorresponde ao ponto mais fraco das suas defesas. As suas defesas são tão fortes quanto o ponto mais fraco. Este deve ser eliminado quando possível ou transformado em uma fortaleza para desencorajar ataques. Muitos atacantes vão procurar o ponto mais fraco da sua rede, tentando atacar a rede a partir dele. Pontos fracos da rede devem ser constantemente monitorados quando não puderem ser eliminados.
XEm caso de falha os sistemas devem fazê-lo de modo a inibir qualquer tipo de acesso. O prejuízo da falta de acesso é preferível ao acesso liberado de forma irrestrita em caso de falha.
XManter o ambiente simples. A complexidade esconde potenciais problemas de segurança. Interfaces gráficas, gerenciadores centralizados e sistemas com configurações simples são alguns exemplos desse princípio. Porém, deve-se tomar cuidado com o excesso de simplicidade. Um simples botão na ferramenta com os dizeres “torne meu sistema seguro” pode não ser adequado. Os sistemas devem ter um mínimo de parametrização, pois cada ambiente possui suas peculiaridades.
X