Brincando com o PAM. Como citado no artigo Phrack 56 PAM, a coisa legal do PAM é que "Você é limitado somente pelo o que pode imaginar". É verdade. Imagine efetuar login de root somente através de impressão digital ou verificação de retina ou cartão de criptografia (por que usei a conjunção OU em vez de E?).
Gravação fascista de logs. Eu prefiro me referir à toda discussão anterior acima como um "esquema leve de logs". Se você quiser fazer um esquema real de logs, pegue uma impressora com papel de formulário contínuo, e envie todos os logs para ela. Parece engraçado, mas é realmente confiável e as informações não podem ser sobrescritas ou apagadas.
Distribuição de CD. Essa idéia é muito simples de se realizar e oferece uma boa segurança. Crie uma distribuição Debian segura, com as regras de firewall apropriadas. Coloque ela em uma imagem ISO inicializável e grave em um CDROM. Agora você tem uma distribuição somente leitura, com mais ou menos 600 MB de espaço para os serviços. Tenha certeza de que todos os dados que devem ser escritos sejam feitos pela rede. É impossível para um intruso ter acesso de leitura/escrita no sistema, e qualquer alteração feita pelo intruso pode ser desfeita em uma reinicilização do sistema.
Desabilite a capacidade de carregar módulos. Como discutido anteriormente, quando você desabilita o uso de módulos em tempo de compilação do kernel, muitos backdoors baseados em kernel ficam impossíveis de serem implementados, pois a maioria deles é baseada na instalação de módulos do kernel modificados.
Grave os logs por um cabo serial. (contribuido por Gaby Schilders) Já que os servidores ainda têm portas serial, imagine ter um sistema de gravação de logs para um série de servidores. O sistema de logs é desconectado da rede, e conectado aos servidores via um multiplexador de porta serial (Cyclades ou algo do tipo). Agora faça com que todos os seus servidores gravem o log através da porta serial. A máquina de log vai somente aceitar o texto plano como entrada nas portas serial e escrever em um arquivo de log. Conecte um gravador de CD/DVD e grave o arquivo de log quando atingir a capacidade máxima da mídia.
Altere as atribuições do arquivo usando chattr
. (dica tirada do Tips-HOWTO, escrito por Jim Dennis). Depois de uma instalação limpa e configuração inicial, use o programa chattr
com o atributo +i
para que os arquivos não sejam modificados (o arquivo não pode ser apagado, renomeado, criado link ou escrito algo nele). Defina este atributo em todos os arquivos que estão em /bin
, /sbin/
, /usr/bin
, /usr/sbin
, /usr/lib
e também nos arquivos do kernel no root. Você também pode fazer uma cópia de todos os arquivos do /etc/
, usando o tar
ou algo do tipo e marcar o arquivo comprimido como imutável.
Esta estratégia irá ajudar a limitar o estrago que você poderá causar estando logado como root. Você não poderá sobrescrever arquivos por engano, nem deixar o sistema inoperante digitando por engano um espaço no comando rm -fr
(você pode ainda fazer um monte de estragos no seus dados — mas suas bibliotecas e seus binários estarão seguros.)
Esta estratégia também faz com que uma variedade de exploits de segurança e de negação de serviços (DoS) sejam difíceis ou impossíveis de serem realizados (já que a maioria deles conta com a permissão de sobrescrever um arquivo através de algum programa SETUID que a princípio não esteja fornecendo um comando shell arbitrário).
Uma inconveniência desse tipo de estratégia aparece durante a compilação e instalação de alguns binários do sistema. Por outro lado, isso previne que um comando make install
sobrescreva os arquivos. Quando você se esquece de ler o Makefile e executa um chattr -i
nos arquivos a serem sobrescritos, (também nos diretórios nos quais serão adicionados os arquivos) ‐ o comando make falha. Então você deve usar o comando chattr
para desativar a flag de imutável e rodar o make novamente. Você também pode optar por mover os binários e as bibliotecas antigas para dentro de um diretório .old/ ou para um arquivo tar por exemplo.
Note que esta estratégia também impede que você atualize seu próprio sistema de pacotes, já que os arquivos que os pacotes a serem atualizados fornecem não podem ser sobrescritos. Você pode fazer um script ou usar outro mecanismo parecido para desativar a permissão de imutável em todos os binários antes de fazer um apt-get update
.
Você pode brincar um pouco com o cabeamento UTP cortando 2 ou 4 fios, tornando um cabo de tráfego unidirecional. Então use pacotes UDP para enviar informação para uma máquina de destino que atuaria como um servidor de log seguro ou até mesmo um sistema de armazenamento de cartões de crédito.