Você está na página 1de 158

Securing Debian Manual

Javier Fernndez-Sanguino Pea <jfs@debian.org> Autores on this page

v3.1, Mon, 18 Feb 2013 16:43:07 +0000

Resumo
Este documento descreve a segurana no sistema Debian. Iniciando com o processo de tornar mais seguro e fortalecer a instalao padro da distribuio Debian GNU/Linux. Ele tambm cobre algumas das tarefas mais comuns para congurar um ambiente de rede seguro usando a Debian GNU/Linux, oferece informaes adicionais sobre as ferramentas de segurana disponveis e fala sobre como a segurana fornecida na Debian pelo time de segurana .

Nota de Copyright
Copyright 2002, 2003, 2004, 2005 Javier Fernndez-Sanguino Pea Copyright 2001 Alexander Reelsen, Javier Fernndez-Sanguino Pea Copyright 2000 Alexander Reelsen permitido copiar, distribuir e/ou modicar este documento desde que sob os termos da GNU General Public License, Version 2 (http://www.gnu.org/copyleft/gpl.html) ou qualquer verso posterior publicada pela Free Software Foundation. Ele distribudo na esperana de ser til, porm SEM NENHUMA GARANTIA. permitido fazer e distribuir cpias em disquetes deste documento desde que a nota de copyright e esta nota de permisso estejam em todas as cpias. permitido copiar e distribuir verses modicadas deste documento desde que o documento resultante seja distribudo sob os mesmos termos de distribuio deste documento. permitido copiar e distribuir tradues deste documento em outro idioma desde que o documento resultante seja distribudo sob os mesmos termos de distribuio deste documento e que a traduo deste nota de permisso seja autorizada pela Free Software Foundation. Obs: A traduo do copyleft somente de carter informativo e no tem nenhum vnculo legal. Neste caso veja a verso original abaixo: Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 (http://www.gnu.org/copyleft/gpl.html) or any later version published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. Permission is granted to make and distribute verbatim copies of this document provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modied versions of this document under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this document into another language, under the above conditions for modied versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English.

Sumrio
1 Introduo 1.1 1.2 1.3 1.4 1.5 1.6 Autores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Como obter o manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Notas de organizao/Retorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Conhecimento necessrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Coisas que precisam ser escritas (FIXME/TODO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Alteraes/Histrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 Verso 3.1 (Janeiro de 2005) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Verso 3.0 (Dezembro de 2004) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Verso 2.99 (Maro de 2004) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Verso 2.98 (Dezembro de 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Verso 2.97 (Setembro de 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Verso 2.96 (Agosto de 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Verso 2.95 (Junho de 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Verso 2.94 (Abril de 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Verso 2.93 (Maro de 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 2 2 2 4 4 5 5 5 6 6 6 6 6 7 7 7 7 8 8 8 8

1.6.10 Verso 2.92 (Fevereiro de 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.11 Verso 2.91 (Janeiro/Fevereiro de 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.12 Verso 2.9 (Dezembro de 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.13 Verso 2.8 (Novembro de 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.14 Verso 2.7 (Outubro de 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.15 Verso 2.6 (Setembro de 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.16 Verso 2.5 (Setembro de 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.17 Verso 2.5 (Agosto de 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.6.18 Verso 2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.6.19 Verso 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.6.20 Verso 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.6.21 Verso 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.6.22 Verso 2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.6.23 Verso 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.6.24 Verso 1.99 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.6.25 Verso 1.98 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.6.26 Verso 1.97 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.6.27 Verso 1.96 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

SUMRIO

ii

1.6.28 Verso 1.95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.6.29 Verso 1.94 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.6.30 Verso 1.93 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.6.31 Verso 1.92 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.6.32 Verso 1.91 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.6.33 Verso 1.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.6.34 Verso 1.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.6.35 Verso 1.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.36 Verso 1.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.37 Verso 1.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.38 Verso 1.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.39 Verso 1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.40 Verso 1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.6.41 Verso 1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.6.42 Verso 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.7 2 Crditos e Agradecimentos! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 17

Antes de voc iniciar 2.1 2.2 2.3

Para que nalidade voc quer este sistema? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Esteja ciente dos problemas gerais de segurana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Como o Debian controla a segurana do sistema? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 21

Antes e durante a instalao 3.1 3.2

Escolha uma senha para a BIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Particionando o sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2.1 Escolha um esquema de partio inteligente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.3 3.4 3.5 3.6

No conecte-se a internet at estar pronto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Congure a senha do root . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Ative os recursos senhas shadow e senhas MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Rode o mnimo de servios necessrios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.6.1 3.6.2 Desabilitando daemons de servio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Desabilitando o inetd ou seus servios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.7

Instale o mnimo de software necessrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.7.1 Removendo Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.8 4

Leia as listas de segurana do Debian (security mailing lists) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 27

Aps a instalao 4.1 4.2 4.3 4.4 4.5 4.6

Inscreva-se na lista de discusso Anncios de Segurana do Debian . . . . . . . . . . . . . . . . . . . . . . . 27 Executar uma atualizao de segurana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Altere a BIOS (de novo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Congurar a senha do LILO ou GRUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Remover o aviso de root do kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Desativando a inicializao atravs de disquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

SUMRIO 4.7 4.8 4.9

iii

Restringindo o acesso de login no console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Restringindo reinicializaes do sistema atravs da console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Montando parties do jeito certo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.9.1 4.9.2 Ajustando a opo noexec em /tmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Denindo o /usr como somente-leitura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4.10 Fornecendo acesso seguro ao usurio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.10.1 Autenticao do Usurio: PAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.10.2 Limitando o uso de recursos: o arquivo limits.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.10.3 Aes de login do usurio: edite o /etc/login.defs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.10.4 Restringindo o ftp: editando o /etc/ftpusers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.10.5 Usando su . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.10.6 Usando o sudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.10.7 Desativao de acesso administrativo remoto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.10.8 Restringindo acessos de usurios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.10.9 Auditoria do usurio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.10.10 Revisando pers de usurios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.10.11 Ajustando a umask dos usurios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.10.12 Limitando o que os usurios podem ver/acessar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.10.13 Gerando senhas de usurios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.10.14 Vericando senhas de usurios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.10.15 Logout de usurios ociosos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.11 Usando os tcpwrappers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.12 A importncia dos logs e alertas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.12.1 Usando e personalizando o logcheck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.12.2 Congurando para onde os alertas so enviados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.12.3 Usando um servidor de logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.12.4 Permisses dos arquivos de log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.13 Adicionando patches no kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.14 Protegendo-se contra estouros de buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.14.1 Patches de kernel para proteo contra estouros de buffer . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.14.2 Proteo da Libsafe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.14.3 Testando problemas de estouro em programas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.15 Transferncia segura de arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.16 Limitaes e controle do sistema de arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.16.1 Usando quotas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.16.2 Os atributos especcos do sistema de arquivos ext2 (chattr/lsattr) . . . . . . . . . . . . . . . . . . . . . 46 4.16.3 Vericando a integridade do sistema de arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.16.4 Congurando vericao de setuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.17 Tornando o acesso a rede mais seguro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.17.1 Congurando caractersticas de rede do kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.17.2 Congurando Syncookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.17.3 Tornando a rede segura em tempo de inicializao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

SUMRIO

iv

4.17.4 Congurando caractersticas do rewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.17.5 Desativando assuntos relacionados a weak-end de mquinas . . . . . . . . . . . . . . . . . . . . . . . . 49 4.17.6 Protegendo-se contra ataques ARP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.18 Fazendo um snapshot do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.19 Outras recomendaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.19.1 No use programas que dependem da svgalib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5 Tornando os servios em execuo do seu sistema mais seguros 5.1 53

Tornando o ssh mais seguro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 5.1.1 5.1.2 5.1.3 Executando o ssh em uma jaula chroot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Clientes do ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Desativando transferncias de arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

5.2 5.3 5.4

Tornando o Squid mais seguro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Tornando o FTP mais seguro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Tornando o acesso ao sistema X Window mais seguro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 5.4.1 Verique seu gerenciador de tela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

5.5 5.6

Tornando o servidor de impresso mais seguro (sobre o lpd e lprng) . . . . . . . . . . . . . . . . . . . . . . . . 58 Tornando o servio de e-mails seguro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.6.1 5.6.2 5.6.3 Congurando um programa de e-mails nulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Fornecendo acesso seguro s caixas de mensagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Recebendo mensagens de forma segura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

5.7

Tornando o BIND mais seguro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 5.7.1 5.7.2 5.7.3 Congurao do Bind para evitar m utilizao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Alterando o usurio do BIND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Executando o servidor de nomes em uma jaula chroot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5.8

Tornando o Apache mais seguro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 5.8.1 5.8.2 5.8.3 Proibindo a publicao de contedo dos usurios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Permisses de arquivos de log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Arquivos da Web Publicados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

5.9

Tornando o nger mais seguro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

5.10 Parania geral do chroot e suid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5.10.1 Criando automaticamente ambientes chroots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 5.11 Parania geral sobre senhas em texto puro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 5.12 Desativando o NIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 5.13 Tornando servios RPC mais seguros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.13.1 Desativando completamente os servios RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.13.2 Limitando o acesso a servios RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.14 Adicionando capacidades de rewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.14.1 Fazendo um rewall no sistema local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 5.14.2 Usando um rewall para proteger outros sistemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 5.14.3 Congurando o rewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

SUMRIO 6 Fortalecimento automtico de sistemas Debian 6.1 6.2 7

v 71

Harden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Bastille Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 73

Infraestrutura do Debian Security 7.1 7.2

O time Debian Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Debian Security Advisories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 7.2.1 7.2.2 Referncias sobre vulnerabilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Compatibilidade CVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

7.3

Infraestrutura da segurana Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 7.3.1 Guia dos desenvolvedores de atualizaes de seguranaa . . . . . . . . . . . . . . . . . . . . . . . . . . 76

7.4

Assinatura de pacote no Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 7.4.1 7.4.2 7.4.3 7.4.4 O esquema proposto para checagem de assinatura dos pacotes . . . . . . . . . . . . . . . . . . . . . . . 78 Checando releases das distribuies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Esquema alternativo de assinatura per-package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Pacotes experimentais apt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 83

Ferramentas de segurana no Debian 8.1 8.2 8.3 8.4 8.5

Ferramentas de vericao remota de vulnerabilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Ferramentas de varredura de rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Auditoria Interna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Auditoria de cdigo fonte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Redes Privadas Virtuais (VPN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 8.5.1 Tunelamento ponto a ponto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

8.6 8.7 8.8 8.9 9

Infra-estrutura de Chave Pblica (PKI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Infra-estrutura SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Ferramentas Anti-vrus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Agentes GPG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 89

Antes do comprometimento do sistema 9.1

Atualizando continuamente o sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 9.1.1 9.1.2 9.1.3 9.1.4 9.1.5 9.1.6 9.1.7 Vericando manualmente quais atualizaes de segurana esto disponveis . . . . . . . . . . . . . . . 89 Vericando automaticamente por atualizaes com o cron-apt . . . . . . . . . . . . . . . . . . . . . . . . 89 Usando o Tiger para vericar automaticamente atualizaes de segurana . . . . . . . . . . . . . . . . . 90 Outros mtodos para atualizaes de segurana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Evite usar verses instveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Evite usar verses em teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Atualizaes automticas no sistema Debian GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . 91

9.2 9.3

Faa vericaes de integridade peridicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Congure um sistema de Deteco de Intruso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 9.3.1 9.3.2 Deteco de intruso baseada em rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Deteco de intruso baseada em host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

9.4

Evitando os rootkits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

SUMRIO 9.4.1 9.4.2 9.5

vi Loadable Kernel Modules (LKM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Detectando rootkits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

Idias Geniais/Paranicas o que voc pode fazer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 9.5.1 Construindo um honeypot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 97

10 Depois do comprometimento do sistema (resposta a incidentes)

10.1 Comportamento comum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 10.2 Efetuando backup do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 10.3 Contate seu CERT local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 10.4 Anlise forense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 11 Questes feitas com freqncia (FAQ) 101

11.1 Tornando o sistema operacional Debian mais seguro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 11.1.1 A Debian mais segura que X? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 11.1.2 Existem muitas falhas no sistema de tratamento de falhas da Debian. Isto signica que muito vulnervel? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 11.1.3 A Debian possui qualquer certicao relacionada a segurana? . . . . . . . . . . . . . . . . . . . . . . . 102 11.1.4 Existe algum programa de fortalecimento para a Debian? . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 11.1.5 Eu desejo executar o servio XYZ, qual eu devo escolher? . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 11.1.6 Como eu posso tornar o servio XYZ mais seguro na Debian? . . . . . . . . . . . . . . . . . . . . . . . . 103 11.1.7 Como posso remover todos os banners de servios? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 11.1.8 Todos os pacotes da Debian so seguros? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 11.1.9 Porque alguns arquivos de logs/congurao tem permisso de leitura para qualquer um, isto no inseguro? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 11.1.10 Porque o /root/ (ou UsuarioX) tem permisses 755? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 11.1.11 Aps instalar o grsec/rewall, comecei a receber muitas mensagens de console! como remov-las? . . 104 11.1.12 Usurios e grupos do sistema operacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 11.1.13 Porque existe um novo grupo quando adiciono um novo usurio? (ou porque a Debian cria um novo grupo para cada usurio?) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 11.1.14 Questes relacionadas a servios e portas abertas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 11.1.15 Assuntos comuns relacionados a segurana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 11.1.16 Como posso congurar um servio para meus usurios sem lhes dar uma conta de acesso ao shell? . . 109 11.2 Meu sistema vulnervel! (Voc tem certeza?) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 11.2.1 O scanner de vulnerabilidade X diz que meu sistema Debian vulnervel! . . . . . . . . . . . . . . . . 109 11.2.2 Eu vi um ataque em meus logs de sistema. Meu sistema foi comprometido? . . . . . . . . . . . . . . . . 110 11.2.3 Eu vi algumas linhas estranhas MARK em meus logs: Eu fui comprometido? . . . . . . . . . . . . . . 110 11.2.4 Encontrei usurios usando o su em meus logs: Eu fui comprometido? . . . . . . . . . . . . . . . . . . 110 11.2.5 Encontrei um possvel SYN ooding em meus logs: Estou sob um ataque? . . . . . . . . . . . . . . . 110 11.2.6 Encontrei sees de root estranhas em meus logs: Eu fui comprometido? . . . . . . . . . . . . . . . . . . 111 11.2.7 Sofri uma invaso, o que fao? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 11.2.8 Como posso rastrear um ataque? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 11.2.9 O programa X na Debian vulnervel, o que fazer? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 11.2.10 O nmero de verso de um pacote indica que eu ainda estou usando uma verso vulnervel! . . . . . . 111 11.2.11 Programas especcos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

SUMRIO

vii

11.3 Questes relacionadas ao time de segurana da Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 11.3.1 O que um Aviso de Segurana da Debian (Debian Security Advisory - DSA)? . . . . . . . . . . . . . . 112 11.3.2 As assinaturas nos avisos de segurana da Debian no so vericados corretamente! . . . . . . . . . . . 112 11.3.3 Como a segurana tratada na Debian? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 11.3.4 Porque vocs esto trabalhando em uma verso antiga daquele pacote? . . . . . . . . . . . . . . . . . . 112 11.3.5 Qual a poltica para um pacote corrigido aparecer em security.debian.org? . . . . . . . . . . . . . . . . 113 11.3.6 O nmero de verso de um pacote indica que eu ainda estou usando uma verso vulnervel! . . . . . . 113 11.3.7 Como a segurana tratada na testing e unstable? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 11.3.8 Eu uso uma verso antiga da Debian, ela suportada pelo time de segurana? . . . . . . . . . . . . . . 113 11.3.9 Porque no existem mirrors ociais de security.debian.org? . . . . . . . . . . . . . . . . . . . . . . . . . 113 11.3.10 Eu vi o DSA 100 e DSA 102, o que aconteceu com o DSA 101? . . . . . . . . . . . . . . . . . . . . . . . . 113 11.3.11 Como posso contactar o time de segurana? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 11.3.12 Qual a diferena entre security@debian.org e debian-security@lists.debian.org? . . . . . . . . . . . . . 114 11.3.13 Como posso contribuir com o time de segurana da Debian? . . . . . . . . . . . . . . . . . . . . . . . . . 114 11.3.14 quem compe o time de segurana? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 11.3.15 O time de segurana verica cada novo pacote que entra na Debian? . . . . . . . . . . . . . . . . . . . . 114 11.3.16 Quanto tempo a Debian levar para resolver a vulnerabilidade XXXX? . . . . . . . . . . . . . . . . . . . 114 A Passo-a-passo do processo de fortalecimento B Checklist de congurao C Congurando um IDS stand-alone D Congurando uma ponte rewall 117 119 123 127

D.1 Uma ponte fornecendo capacidades de NAT e rewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 D.2 Uma ponte fornecendo capacidades de rewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 D.3 Regras bsicas do IPtables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 E Exemplo de script para alterar a instalao padro do Bind. F Atualizao de segurana protegida por um rewall G Ambiente chroot para SSH 131 135 137

G.1 Congurando automaticamente o ambiente (a maneira fcil) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 G.2 Aplicando patch no SSH para ativar a funcionalidade do chroot . . . . . . . . . . . . . . . . . . . . . . . . . . 139 G.3 Ambiente feito a mo (a maneira difcil) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 H Ambiente chroot para Apache 145

H.1 Introduao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 H.1.1 Licena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 H.2 Instalando o servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 H.3 Veja tambm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

SUMRIO

viii

Captulo 1

Introduo
Uma das coisas mais difceis sobre escrever documentos relacionado a segurana que cada caso nico. Duas coisas que deve prestar ateno so o ambiente e as necessidades de segurana de um site, mquina ou rede. Por exemplo, a segurana necessria para um usurio domstico completamente diferente de uma rede em um banco. Enquanto a principal preocupao que um usurio domstico tem confrontar o tipo de cracker script kiddie, uma rede de banco tem preocupao com ataques diretos. Adicionalmente, o banco tem que proteger os dados de seus consumidores com preciso aritmtica. Em resumo, cada usurio deve considerar o trajeto entre a usabilidade e parania/segurana. Note que este manual somente cobre assuntos relacionados a software. O melhor software do mundo no pode te proteger se algum puder ter acesso fsico a mquina. Voc pode coloca-la sob sua mesa, ou voc pode coloca-la em um cofre fechado com uma arma de frente para ela. No obstante a computao desktop pode ser muito mais segura (do ponto de vista do software) que uma sicamente protegida caso o desktop seja congurado adequadamente e o programa na mquina protegida esteja cheio de buracos de segurana. Obviamente, voc dever considerar ambos os casos. Este documento apenas lhe dar uma viso do que pode aumentar em segurana no sistema Debian GNU/Linux. Se ler outros documentos relacionados a segurana em Linux, voc ver que existem assuntos comuns que se cruzaro com os citados neste documento. No entanto, este documento no tentar ser a ltima fonte de informaes que dever estar usando, ele tentar adaptar esta mesma informao de forma que seja til no sistema Debian GNU/Linux. Distribuies diferentes fazem coisas de forma diferente (inicializao de daemons um exemplo); aqui, voc encontrar materiais que so apropriados para os procedimentos e ferramentas da Debian.

1.1

Autores

O mantenedor atual deste documento Javier Fernndez-Sanguino Pea (mailto:jfs@debian.org). Por favor encaminhe a ele quaisquer comentrios, adies e sugestes, e ele considerar a incluso em lanamentos futuros deste manual. Este manual foi iniciado como um HOWTO por Alexander Reelsen (mailto:ar@rhwd.de). Aps ter sido publicado na Internet, Javier Fernndez-Sanguino Pea (mailto:jfs@debian.org) o incorporou no Projeto de Documentao da Debian (http://www.debian.org/doc). Um nmero de pessoas tem contribudo com este manual (todos os contribuidores esto listados no changelog) mas os seguintes merecem especial meno pois zeram contribuies signicantes, sees completas, captulos ou apndices): Stefano Canepa Era Eriksson Carlo Perassi Alexandre Ratti Jaime Robles Yotam Rubin Frederic Schutz Pedro Zorzenon Neto Oohara Yuuma Davor Ocelic

Captulo 1. Introduo

1.2

Como obter o manual

Voc poder baixar ou ver a verso mais nova do Manual Como Tornar a Debian mais Segura no Projeto de Documentao da Debian (http://www.debian.org/doc/manuals/securing-debian-howto/). Sinta-se l livre para checar o sistema de controle de verses atravs do endereo servidor CVS (http://cvs.debian.org/ddp/manuals.sgml/ securing-howto/?cvsroot=debian-doc). Voc poder tambm baixar uma verso texto (http://www.debian.org/doc/manuals/securing-debian-howto/ securing-debian-howto.ptbr.txt) do site do projeto de Documentao da Debian. Outros formatos, com o PDF, (ainda) no esto disponveis. No entanto, voc poder baixar ou instalar o pacote harden-doc (http://packages. debian.org/harden-doc) que contm o mesmo documento em formatos HTML, txt e PDF. Note no entanto, que o pacote pode no estar completamente atualizado com o documento fornecido pela Internet (mas voc sempre poder usar o pacote fonte para construir voc mesmo uma verso atualizada).

1.3

Notas de organizao/Retorno

Agora a parte ocial. No momento, eu (Alexandre Reelsen) escrevi a maioria dos pargrafos deste manual, mas em minha opinio este no deve ser o caso. Eu cresci e vivi com software livre, ele parte do meu dia a dia e eu acho que do seu tambm. Eu encorajo a qualquer um para me enviar retorno, dicas, adies ou qualquer outra sugesto que possa ter. Se achar que pode manter melhor uma certa seo ou pargrafo, ento escreva um documento ao maintainer (mantenedor) e voc ser bem vindo a faze-lo. Especialmente se voc encontrar uma seo marcada como FIXME, que signica que os autores no tem tempo ainda ou precisam de conhecimento sobre o tpico, envie um e-mail para eles imediatamente. O tpico deste manual torna isto bastante claro que importante mant-lo atualizado, e voc pode fazer sua parte. Por favor contribua.

1.4

Conhecimento necessrio

A instalao do sistema Debian GNU/Linux no muito difcil e voc dever ser capaz de instala-lo. Se voc j tem algum conhecimento sobre o Linux ou outros tipo de Unix e voc est um pouco familiar com a segurana bsica, ser fcil entender este manual, como este documento no explicar cada detalhe pequeno de caractersticas (caso contrrio voc ter um livro ao invs de um manual). Se no estiver familiar, no entanto, voc poder dar uma olhada em Esteja ciente dos problemas gerais de segurana on page 17 para ver onde achar informaes atualizadas.

1.5

Coisas que precisam ser escritas (FIXME/TODO)

Esta seo descreve todas as coisas que precisam ser corrigidas neste manual. Alguns pargrafos incluem as tags FIXME ou TODO descrevendo qual contedo esta faltando (ou que tipo de trabalho precisa ser feito). O propsito desta seo descrever todas as coisas que precisam ser includas em um lanamento futuro do Manual, ou melhorias que precisam ser feitas (ou que so interessantes de serem adicionadas). Se sente que pode fornecer ajuda contribuindo com a correo de contedo em qualquer elemento desta lista (ou anotaes inline), contacte o autor principal (Autores on the preceding page Expanda informaes de resposta a incidentes, talvez adicione algumas idias vindas do guia de segurana da Red Hat captulo sobre resposta a incidentes (http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/ security-guide/ch-response.html). Escreva sobre ferramentas de monitoramento remoto (para vericar a disponibilidade do sistema) tal como monit, daemontools e mon. Veja http://linux.oreillynet.com/pub/a/linux/2002/05/09/sysadminguide. html. Considere escrever uma seo sobre como fazer operaes em rede com redes baseadas em sistemas Debian (com informaes tal como o sistema bsico, equivs e FAI). Verique se http://www.giac.org/practical/gsec/Chris_Koutras_GSEC.pdf tem informaes relevantes ainda no cobertas aqui.

Captulo 1. Introduo

Adicione informaes sobre como congurar um notebook com a Debian http://www.giac.org/practical/ gcux/Stephanie_Thomas_GCUX.pdf Adicione informaes sobre como fazer um rewall usando o sistema Debian GNU/Linux. A seo relacionada a rewall orientada atualmente sobre um sistema simples (no protegendo outros. . . ) tambm fale sobre como testar a congurao. Adicionar informaes sobre como congurar um rewall proxy com a Debian GNU/Linux iniciando especicamente com pacotes fornecendo servios proxy (como xfwp, xproxy, ftp-proxy, redir, smtpd, nntp-cache, dnrd, jftpgw, oops, pdnsd, perdition, transproxy, tsocks). Dever ser apontado para um manual com mais informaes. Note que o zorp esta agora disponvel como um pacote da Debian e um rewall proxy (ele tambm fornece pacotes upstream da Debian). Informaes sobre a congurao de servios com o le-rc Verique todas as URLs de referncia e remova/corrija as que no esto mais disponveis. Adicione informaes sobre as substituies disponveis (na Debian) para servios padres que so teis para funcionalidades limitadas. Exemplos: lpr local com o cups (pacote)? lpr remota com o lpr bind com dnrd/maradns apache com dhttpd/thttpd/wn (tux?) exim/sendmail com ssmtpd/smtpd/postx squid com tinyproxy ftpd com oftpd/vsftp ... Mais informaes sobre patches do kernel relacionadas a segurana, incluindo os acima e informaes especcas de como ativar estes patches em um sistema Debian. Deteco de Intruso do Linux (lids-2.2.19) Linux Trustees (no pacote trustees) NSA Enhanced Linux (http://www.coker.com.au/selinux/) kernel-patch-2.2.18-openwall (http://packages.debian.org/kernel-patch-2.2.18-openwall) kernel-patch-2.2.19-harden kernel-patch-freeswan, kernel-patch-int Detalhes sobre como desligar servios desnecessrios (como o inetd), parte do procedimento de fortalecimento mas pode ser um pouco mais abrangente. Informaes relacionadas a rotacionamento de senhas que diretamente relacionada a poltica. Policy, e educao de usurios sobre a poltica. Mais sobre tcpwrappers, e wrappers em geral? O arquivo hosts.equiv e outros maiores buracos de segurana. Assuntos relacionados a servios de compartilhamento de arquivos tais como Samba e NFS? suidmanager/dpkg-statoverrides. lpr e lprng. Desligar os tens do gnome relacionados a IP Falar sobre o pam_chroot (ver http://lists.debian.org/debian-security/2002/ debian-security-200205/msg00011.html) e como ele til para limitao de usurios. Introduzir informaes relacionadas ao http://online.securityfocus.com/infocus/1575. Pdmenu, por exemplo est disponvel na Debian (enquanto o ash no).

Captulo 1. Introduo

Falar sobre como executar servios em ambiente chroot, mais informaes em http://www.linuxfocus.org/ English/January2002/article225.shtml, http://www.nuclearelephant.com/papers/chroot.html e http://www.linuxsecurity.com/feature_stories/feature_story-99.html Fale sobre programas para fazer jaulas chroot. Compartment e chrootuid esto aguardando na incoming. Alguns outros como o (makejail, jailer) podem tambm serem introduzidos. Adicionar informaes fornecidas por Pedro Zorzenon sobre como fazer chroot do Bind 8 somente para a :(, veja http://people.debian.org/~pzn/howto/chroot-bind.sh.txt ( incluir todo o roteiro?). Mais informaes relacionadas a programas de anlise de logs (i.e. logcheck e logcolorise). roteamento avanado (policiamento de trfego relacionado a segurana) limitando o acesso do ssh a executar somente certos comandos. usando o dpkg-statoverride. mtodos seguros de compartilhar um gravador de CD entre usurios. mtodos seguros de fornecer som em rede em adio a caractersticas display (assim o som de clientes X so enviados para o hardware de som do servidor X). tornando navegadores mais seguros. congurando ftp sobre ssh. usando sistemas de arquivos loopback criptogrcos. encriptando todo o sistema de arquivos. ferramentas de steganograa. ajustando um PKA para uma empresa. usando o LDAP para gerenciar usurios. Existe um howto do ldap+kerberos para o Debian em www.bayour.com escrito por Turbo Fredrikson. Como remover informaes de utilidade reduzida em sistemas de produo tal como /usr/share/doc, /usr /share/man (sim, segurana pela obscuridade). Mais informaes baseadas em ldap dos pacotes contendo os arquivos README (bem, no ainda, mas veja Bug #169465 (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=169465)) e a partir do artigo LWN: desenvolvimento do Kernel (http://lwn.net/1999/1202/kernel.php3). Adicionar o artigo do Colin sober como congurar um ambiente chroot para um sistema sid completo (http:// people.debian.org/~walters/chroot.html) Adicionar informaes sobre como executar mltiplos sensores do snort em um determinado sistema (checar pelos relatrios de falhas enviados para o snort) Adicionar informaes sobre como congurar um honeypot (honeyd) Descrever situaes sobre o (orphaned) e OpenSwan. A seo sobre VPN precisa ser reescrita.

1.6
1.6.1

Alteraes/Histrico
Verso 3.1 (Janeiro de 2005)

Alteraes feitas por Javier Fernndez-Sanguino Pea Adicionado esclarecimentos a /usr somente leitura com o patch de Joost van Baal Aplicao do do patch de Jens Seidel corrigindo alguns erros. FreeSWAN est morto, longa vida ao OpenSWAN. Adicionadas informaes sobre a restrio de acessos a servios RPC (quando no podem ser desativados) includo tambm o patch fornecido por Aarre Laakso.

Captulo 1. Introduo Atualizao do script apt-check-sigs do aj. Aplicao do patch de Carlo Perassi corrigindo URLs.

Aplicao do patch de Davor Ocelic corrigindo muitos erros, enganos, urls, gramtica e FIXMEs. Tambm adicionadas mais informaes adicionais a respeito de algumas sees. Reescrita a seo sobre auditoria do usurio, destacando o uso do script que no tem as mesmas restries associadas ao histrico do shell.

1.6.2

Verso 3.0 (Dezembro de 2004)

Alteraes feitas por Javier Fernndez-Sanguino Pea Reescrita as informaes sobre auditoria de usurio incluindo exemplos de como usar o script.

1.6.3

Verso 2.99 (Maro de 2004)

Alteraes feitas por Javier Fernndez-Sanguino Pea Adicionadas informaes sobre referncias nos DSAs e compatibilidade com o CVE. Adicionadas informaes a respeito do apt 0.6 (apt-secure colocado na experimental) Corrigida a localizao do HOWTO sobre como executar daemons em ambiente chroot como sugerido por Shuying Wang. Alterada a linha do APACHECTL no exemplo de chroot do Apache (at se no for usado) como sugerido por Leonard Norrgard. Adicionada uma nota de rodap a respeito de ataques usando hardlinks caso as parties no fossem conguradas adequadamente. Adicionada passos faltantes para executar o bind como named como descrito por Jeffrey Prosa. Adicionada notas sobre o Nessus e Snort desatualizados na woody e disponibilidade de pacotes portados para esta verso. Adicionado um captulo a respeito da checagem de integridade peridica. Esclarecido o estado de testes a respeito de atualizaes de segurana. (Debian bug 233955) Adicionadas mais informaes a respeito de contedo esperado em securetty (pois especcas de kernel). Adicionadas referncias ao snoopylogger (bug da Debian 179409) Adicionadas referncias ao guarddog (bug da Debian 170710) Apt-ftparchive est no pacote apt-utils, no no apt (obrigado por Emmanuel Chantreau apontar isto) Removido o jvirus da lista AV.

1.6.4

Verso 2.98 (Dezembro de 2003)

Alteraes por Javier Fernndez-Sanguino Pea Corrigidas URLs como sugerido por Frank Lichtenheld. Corrigido o erro PermitRootLogin como sugerido por Stefan Lindenau.

Captulo 1. Introduo

1.6.5

Verso 2.97 (Setembro de 2003)

Alteraes feitas por Javier Fernndez-Sanguino Pea Adicionadas as pessoas que zeram as contribuies mais signicantes a este manual (por favor, envie um e-mail se achar que deveria estar nesta lista e no est). Adicionadas algumas notas a respeito de FIXME/TODOs Movidas informaes a respeito de atualizaes de segurana para o inicio da seo como sugerido por Elliott Mitchell. Adicionado o grsecurity a lista de patches do kernel para segurana, mas adicionada uma nota de rodap sobre situaes atuais como sugerido por Elliott Mitchell. Removidos os loops (echo para todos) no script de segurana de rede do kernel, como sugerido por Elliott Mitchell. Adicionadas informaes (atualizadas) na seo sobre antivirus. Reescrita da seo de proteo contra buffer overows e adicionadas mais informaes sobre patches no compilador para ativar este tipo de proteo.

1.6.6

Verso 2.96 (Agosto de 2003)

Alteraes feitas por Javier Fernndez-Sanguino Pea Removido (e ento novamente adicionado) apndice sobre como rodar o Apache em ambiente chroot. O apndice agora tem dupla licena.

1.6.7

Verso 2.95 (Junho de 2003)

Alteraes feitas por Javier Fernndez-Sanguino Pea Corrigido erros enviados por Leonard Norrgard. Adicionada uma seo sobre como contactar o CERT para manipulao de incidentes (#after-compromise) Mais informaes sobre como tornar um proxy mais seguro. Adicionada uma referncia e removido um FIXME. Agradecimentos a Helge H. F. Corrigido um erro (save_inactive) observado por Philippe Faes. Corrigido diversos erros descobertos por Jaime Robles.

1.6.8

Verso 2.94 (Abril de 2003)

Alteraes feitas por Javier Fernndez-Sanguino Pea Segundo as sugestes de Maciej Stachuras, expandi a seo sobre limitao de usurios. Corrigidos erros relatados por Wolfgang Nolte. Corrigidos os links com o patch contribudo por Ruben Leote Mendes. Adicionado um link para o excelente documento de David Wheeler na footnote sobre a contagem de vulnerabilidade de segurana.

1.6.9

Verso 2.93 (Maro de 2003)

Alteraes feitas por Frdric Schtz. reescrita toda a seo sobre atributos ext2 (lsattr/chattr)

Captulo 1. Introduo

1.6.10

Verso 2.92 (Fevereiro de 2003)

Alteraes feitas por Javier Fernndez-Sanguino Pea e Frdric Schtz. Unio da seo 9.3 (patches teis do kernel) na seo 4.13 (Adicionando patches no kernel), e adicionado algum contedo. Adicionados alguns TODOs adicionais Adicionadas informaes sobre como checar manualmente por atualizaes e tambm sobre o cron-apt. Desta forma, o Tiger no declarado como o nico mtodo de vericao de atualizaes. Regravao da seo sobre a execuo de atualizaes de segurana devido aos comentrios de Jean-Marc Ranger. Adicionada uma nota sobre a instalao da Debian (que sugere que o usurio execute uma atualizao de segurana aps a instalao).

1.6.11

Verso 2.91 (Janeiro/Fevereiro de 2003)

Alteraes feitas por Javier Fernndez-Sanguino Pea. Adicionado um patch contribudo por Frdric Schtz. Adicionadas algumas referncias sobre capacidades. Agradecimentos a Frdric. Pequenas alteraes na seo sobre o bind adicionando uma referncia sobre a documentao on-line do BIND9 e referncias apropriadas na primeira rea (oi Pedro!) Corrigida a data do changelog - ano novo :-) Adicionada uma referncia sobre o artigo do Colins para os TODOs. Removida a referncia para o antigo patch ssh+chroot Mais patches de Carlo Perassi. Correo de enganos (recursivo no Bind recurso), apontados por Maik Holtkamp.

1.6.12

Verso 2.9 (Dezembro de 2002)

Alteraes feitas por Javier Fernndez-Sanguino Pea (me). Reorganizadas informaes sobre o chroot (unidas duas sees, no tem muito sentido t-las em separado) Adicionada as notas sober como executar o Apache em ambiente chroot por Alexandre Ratti. Aplicao de patches contribudos por Guillermo Jover.

1.6.13

Verso 2.8 (Novembro de 2002)

Alteraes feitas por Javier Fernndez-Sanguino Pea (me). Aplicados patches de Carlo Perassi, as correes incluem: nova quebra de linhas, correes de URL, e corrigidos alguns FIXMEs. Atualizado o contedo da FAQ do time de segurana da Debian. Adicionado um link para a FAQ do time de segurana da Debian e da referncia do desenvolvedor da Debian, as sees duplicadas podem (apenas podem) serem removidas no futuro. Corrigida a seo sobre auditoria manual com comentrios de Michal Zielinski. Adicionado links para lista de palavras (contribudos por Carlo Perassi) Corrigidos alguns enganos (outros mais esto por vir). Corrigidos links TCP como sugerido por John Summereld.

Captulo 1. Introduo

1.6.14

Verso 2.7 (Outubro de 2002)

Alteraes feitas por Javier Fernndez-Sanguino Pea (me). Nota: Eu ainda tenho vrias correes pendentes em minha caixa postal (que tem atualmente o tamanho de 5MB). Algumas correes de erros contribudas por Tuyen Dinh, Bartek Golenko e Daniel K. Gebhart. Nota sobre rootkits relacionados com /dev/kmem contribudo por Laurent Bonnaud Corrigidos enganos e FIXMEs contribudos por Carlo Perassi.

1.6.15

Verso 2.6 (Setembro de 2002)

Alteraes feitas por Chris Tillman, tillman@voicetrak.com. Alteraes para melhorar a gramtica/ortograa. s/host.deny/hosts.deny/ (1 local) Aplicado o patch de Larry Holishs (um pouco grande, corrige diversos FIXMEs)

1.6.16

Verso 2.5 (Setembro de 2002)

Alteraes feitas por Javier Fernndez-Sanguino Pea (me). Corrigidos alguns pequenos erros enviados por Thiemo Nagel. Adicionada uma footnote sugerida por Thiemo Nagel. Corrigido um link de URL.

1.6.17

Verso 2.5 (Agosto de 2002)

Alteraes feitas por Javier Fernndez-Sanguino Pea (me). Existem muitas coisas aguardando em minha caixa postal para serem includos. assim estarei fazendo isso no lanamento de volta da lua de mel :) Aplicado um patch enviado por Philipe Gaspar com relao ao Squid que tambm fecha um FIXME. Sim, outro item da FAQ com relao a banners de servios pego da lista de segurana debian-security (thread Telnet information iniciada em 26 de Julho de 2002). Adicionada uma note com relao a referncias cruzadas do CVE no item da FAQ Quanto tempo o time de segurana da Debian. . . . Adicionada uma nova seo relacionada a ataques ARP contribuda por Arnaud Arhuman Assad. Novo item da FAQ com relao ao dmesg e logind e console pelo kernel. Pequenos detalhes de informaes relacionadas a checagem de assinaturas em pacotes (ele parecia no ter uma verso beta passada). Novo item da FAQ com relao a falso positivo de ferramentas de checagem de vulnerabilidades. Adicionadas nova sees ao captulo que contm informaes sobre assinatura de pacotes e reorganizando-as como um novo captulo sobre Infraestrutura de Segurana na Debian. Novo tem da FAQ com uma comparao da Debian com outras distribuies Linux. Nova seo sobre agentes de mensagem de usurios com funcionalidade GPG/PGP no captulo ferramentas de segurana. Esclarecimentos de como ativa senhas MD5 na woody, adicionadas referncias PAM assim tambm como uma nota relacionada a denio de max na PAM.

Captulo 1. Introduo

Adicionado um novo apndice sobre como criar um ambiente chroot (aps brigar um pouco com makejail e corrigindo, tambm, alguns de seus bugs), integradas informaes duplicadas em todo o apndice. Adicionadas mais informaes relacionadas ao chroot de SSH e seu impacto na transferncia segura de arquivos. Algumas informaes que foram pegas da lista de discusso debian-security (da thread de Junho de 2002: transferncias de arquivos seguras). Novas sees sobre como fazer atualizaes automticas em sistemas Debian assim tambm como dicas de uso de testing ou unstable relacionadas com atualizaes de segurana. Nova seo relacionada sobre como manter-se atualizado com patches de segurana na seo Antes do comprometimento assim como uma nova seo sobre a lista de discusso debian-security-announce mailing. Adicionadas informaes sobre como gerar automaticamente senhas fortes. Nova seo com relao a usurios inativos. Reorganizao da seo sobre como tornar um servidor de mensagens mais seguro com base na discusso sobre instalao Segura/fortalecida/mnima da Debian (Ou Porque o sistema bsico do jeito que ?) que ocorreu na lista debiansecurity (em Maio de 2002). Reorganizao da seo sobre parmetros de rede do kernel, com dados fornecidos pela lista de discusso debiansecurity (em Maio de 2002, syn ood attacked?) e tambm adicionado um novo tem da FAQ. Nova seo sobre com vericar senhas de usuarios e que pacotes instalar para fazer isto. Nova seo sobre a criptograa PPTP com clientes Microsoft discutido na lista debian-security (em Abril de 2002). Adicionada uma nova seo descrevendo que problemas existem quando direciona um servio a um endereo IP especco, esta informao foi escrita baseada em uma lista de discusso da bugtraq com a thread: Linux kernel 2.4 weak end host (anteriormente discutida na debian-security como problema no) (iniciada em 9 de Maio de 2002 por Felix von Leitner). Adicionadas informaes sobre o protocolo verso 2 do ssh. Adicionadas duas sub-sees relacionadas a conguraes seguras do Apache (coisas especcas a Debian, claro). Adicionada uma nova FAQ relacionada a soquetes simples, um relacionado a /root, um tem relacionado ao grupo users e outra relacionada a log e permisses de arquivos de congurao. Adicionada uma referncia ao problem na libpam-cracklib que ainda pode estar aberto. . . (precisa ser vericado) Adicionadas mais informaes com relao a anlise forense (pendente mais informaes sobre ferramentas de inspeo de pacotes como tcpflow). Alterado o tem o que posso fazer com relao a comprometimento na listagem e adicionado mais contedo. Adicionadas mais informaes sobre como congurar o Xscreensaver para bloquear a tela automaticamente aps um tempo limite estabelecido. Adicionada uma nota relacionada a utilitrios que no deve instalar no sistema. Inclui uma nota relacionada ao Perl e porque ele no pode ser facilmente removido da Debian. A idia veio aps ler documentos do Intersects relacionado com o fortalecimento do Linux. Adicionadas informaes sobre o lvm e sistemas de arquivos com journaling, o ext3 recomendado. No entanto, as informaes l devem ser muito genrica. Adicionado um link para a verso texto on-line (vericar). Adicionados mais alguns materiais com relao a informaes sobre como fazer um rewall em um sistema local, levado por um comentrio feito por Huber Chan na lista de discusso. Adicionadas mais informaes sobre a limitao do PAM e ponteiros aos documentos de Kurt Seifrieds (relacionada a uma postagem por ele na bugtrack em 4 de Abril de 2002 respondendo a uma pessoa que descobriu uma vulnerabilidade na Debian GNU/Linux relacionada a esgotamento de recursos). Como sugerido por Julin Muoz, fornecidas mais informaes sobre a umask padro da Debian e o que um usurio pode acessar se tiver um shell em um sistema (provided more information on the default Debian umask and what a user can access if he has been given a shell in the system Incluir uma nota na seo sobre senha de BIOS devido a um comentrio de Andreas Wohlfeld.

Captulo 1. Introduo Incluir patches fornecido por Alfred E. Heggestad corrigindo muitos dos erros ainda presentes no documento.

10

Adicionada uma referncia ao changelog na seo crditos, pois muitas pessoas que contribuem esto listadas aqui (e no l). Adicionadas algumas notas a mais sobre a seo chattr e uma nova seo aps a instalao falando sobre snapshots do sistema. Ambas idias foram contribudas por Kurt Pomeroy. Adicionada uma nova seo aps a instalao apenas para lembrar os usurios de alterar a seqncia de partida. Adicionados alguns itens a mais no TODO, fornecidos por Korn Andras. Adicionado uma referncia as regras do NIST sobre como tornar o DNS mais seguro, fornecidas por Daniel Quinlan. Adicionado um pequeno pargrafo relacionado com a infraestrutura de certicados SSL da Debian. Adicionadas sugestes de Daniel Quinlans com relao a autenticao ssh e congurao de relay do exim. Adicionadas mais informaes sobre como tornar o bind mais seguro incluindo alteraes propostas por Daniel Quinlan e um apndice com um script para fazer algumas das alteraes comentadas naquela seo. Adicionado um ponteiro a outro tem relacionado a fazer chroot do Bind (precisam ser unidas). Adicionada uma linha contribuda por Cristian Ionescu-Idbohrn para pegar pacotes com o suporte a tcpwrappers. Adicionada um pouco mais de informaes sobre a congurao padro de PAM da Debian. Includa uma questo da FAQ sobre o uso de PAM para fornecer servios sem contas shell. movidos dois itens da FAQ para outra seo e adicionada uma nova FAQ relacionada com deteco de ataques (e sistemas comprometidos). Includas informaes sobre como congurar uma rewall ponte (incluindo um Apndice modelo). Obrigado a Francois Bayart quem enviou isto para mim em Maro. Adicionada uma FAQ relacionada com o syslogd MARK heartbeat de uma questo respondida por Noah Meyerhans e Alain Tesio em Dezembro de 2001. Includas informaes sobre proteo contra buffer overow assim como mais informaes sobre patches de kernel. Adicionadas mais informaes e reorganizao da seo sobre rewall. Atualizao da informao com relao ao pacote iptables e geradores de rewall disponveis. Reorganizao das informaes disponveis sobre checagem de logs, movidas as informaes sobre checagem de logs de deteco de intruso de mquinas para aquela seo. Adicionadas mais informaes sobre como preparar um pacote esttico para o bind em chroot (no testado). Adicionado um tem da FAQ relacionado com servidores/servios mais especcos (podem ser expandidos com algumas das recomendaes da lista debian-security). Adicionadas mais informaes sobre os servios RPC (e quando so necessrios). Adicionadas mais informaes sobre capacidades (e o que o lcap faz). Existe alguma boa documentao sobre isto? e no encontrei qualquer documentao em meu kernel 2.4 Corrigidos alguns enganos.

1.6.18

Verso 2.4

Alteraes feitas por Javier Fernndez-Sanguino Pea. Parte da seo sobre BIOS foi reescrita

Captulo 1. Introduo

11

1.6.19

Verso 2.3

Alteraes feitas por Javier Fernndez-Sanguino Pea. Trocadas algumas localizaes de arquivos com a tage de arquivo. Corrigido problema noticado por Edi Stojicevi. Leve alterao na seo sobre ferramentas de auditoria remota. Adicionados alguns itens para fazer. Adicionadas mais informaes com relao a impressoras e o arquivo de congurao do cups (pego de uma thread na debian-security). Adicionado um patch enviado por Jesus Climent com relao ao acesso de usurios vlidos ao sistema no proftpd quando se est congurando um servidor annimo. Pequena alterao nos esquemas de partio para o caso especial de servidores de mensagens. Adicionado uma referncia do livro Hacking Linux Exposed na seo livros. Corrigido um erro de diretrio noticado por Eduardo Prez Ureta. Corrigido um erro na checklist do /etc/ssh observado por Edi Stojicevi.

1.6.20

Verso 2.3

Alteraes feitas por Javier Fernndez-Sanguino Pea. Corrigida a localizao do arquivo de congurao do dpkg. Remoo do Alexander das informaes de contato. Adicionado um endereo alternativo de e-mails. Corrigido o endereo de e-mail do Alexander Corrigida a localizao das chaves de lanamento (agradecimentos a Pedro Zorzenon por nos apontar isto).

1.6.21

Verso 2.2

Alteraes feitas por Javier Fernndez-Sanguino Pea. Corrigidos problemas, agradecimentos a Jamin W. Collins. Adicionada uma referncia a pgina de manual do apt-extracttemplate (documenta a congurao do APT::ExtractTemplate). Adicionada uma seo sobre o SSH restrito. Informaes baseadas naquilo postadas por Mark Janssen, Christian G. Warden e Emmanuel Lacour na lista de segurana debian-security. Adicionadas informaes sobre programas de anti-vrus. Adicionada uma FAQ: logs do su devido a execuo do cron como usurio root.

1.6.22

Verso 2.1

Alteraes feitas por Javier Fernndez-Sanguino Pea. Alterado o FIXME a partir do lshell agradecimentos a Oohara Yuuma. Adicionados pacote a sXid e removido comentrio pois ele *est* disponvel. Corrigido um nmero de erros descobertos por Oohara Yuuma. ACID est agora disponvel na Debian (a partir do pacote acidlab) obrigado a Oohara Yuuma por noticar isto. Correo dos links da LinuxSecurity (agradecimentos a Dave Wreski pelo aviso).

Captulo 1. Introduo

12

1.6.23

Verso 2.0

Alteraes feitas por Javier Fernndez-Sanguino Pea. Eu queria altera-la para 2.0 quanto todos os FIXMEs estivessem corrigidos, mas esgotei os nmeros 1.9x :( Converso do HOWTO em um Manual (agora eu poderei propriamente dizer RTFM) Adicionadas mais informaes com relao ao tcp wrappers e a Debian (agora mutos servios so compilados com suporte a eles assim no ser mais um assunto relacionado ao inetd). Esclarecidas informaes sobre a desativao de servios para torna-lo mais consistente (informaes sobre o rpc ainda referenciadas ao update-rc.d) Adicionada uma pequena nota sobre o lprng. Adicionadas ainda mais informaes sobre servidores comprometidos (ainda de uma forma grossa), Corrigidos problemas reportados por Mark Bucciarelli. Adicionados mais alguns passos sobre a recuperao de senhas para cobrir os casos onde o administrador tem a opo paranoid-mode=on ativada. Adicionadas mais informaes sobre como denir paranoid-mode=on quando executa o logon em um console. Novo pargrafo para introduzir congurao de servios. Reorganizao da seo Aps a instalao assim ela ser quebradas em diversos assuntos e ser facilmente lida. Escrever informaes sobre como congurar rewalls com a congurao padro da Debian 3.0 (pacote iptables). Pequeno pargrafo explicando porque a instalao conectada a Internet no uma boa idia e como evitar isto usando ferramentas da Debian. Pequeno pargrafo sobre patching referenciando um paper do IEEE. Apndice de como congurar uma mquina Debian com o snort, baseada no que Vladimir enviou para a lista de segurana debian-security (em 3 de Setembro de 2001) Informaes sobre como o logcheck congurado na Debian e como ele pode ser congurado para realizar HIDS. Informaes sobre contabilizao de usurios e anlise de pers. Includa a congurao do apt.conf para /usr somente leitura copiada da postagem de Olaf Meeuwissens para a lista de discusso debian-security. Nova seo sobre VPN com alguns ponteiros e pacotes disponveis na Debian (precisa contedo sobre como congurar VPNs e assuntos especcos da Debian), baseada na postagem de Jaroslaw Tabors e Samuli Suonpaas post na lista debian-security. Pequena nota com relao a alguns programas que podem construir automaticamente jaulas chroot. Novo tem da FAQ relacionado a ident, baseado em uma discusso na lista de discusso debian-security (em Fevereiro de 2002, iniciada por Johannes Weiss). Novo tem da FAQ com relao ao inetd baseada em uma discusso da lista de discusso debian-security (em Fevereiro de 2002). Introduzida uma nota ao rcconf na seo desabilitando servios. Variao da abordagem com relao a LKM, agradecimentos a Philipe Gaspar Adicionado ponteiros a documentos do CERT e recursos

Captulo 1. Introduo

13

1.6.24

Verso 1.99

Alteraes feitas por Javier Fernndez-Sanguino Pea. Adicionado um novo tem da FAQ com relao ao tempo para se corrigir vulnerabilidades de segurana. Reorganizada as sees da FAQ. Iniciada a escrita de uma seo com relao a rewall na Debian GNU/Linux (pode ser um pouco alterada). Corrigidos problemas enviados por Matt Kraai Corrigidas informaes relacionadas a DNS Adicionadas informaes sobre o whisker e nbtscan na seo auditoria. Corrigidas algumas URLs incorretas

1.6.25

Verso 1.98

Alteraes feitas por Javier Fernndez-Sanguino Pea. Adicionada uma nova seo sobre auditoria usando Debian GNU/Linux. Adicionadas informaes relacionadas ao daemon do nger a partir da lista de segurana.

1.6.26

Verso 1.97

Alteraes feitas por Javier Fernndez-Sanguino Pea. Corrigido o link para o Linux trustees Corrigidos problemas (patches de Oohara Yuuma e Pedro Zorzenon)

1.6.27

Verso 1.96

Alteraes feitas por Javier Fernndez-Sanguino Pea. Reorganizada a instalao e remoo de servios e adicionadas algumas novas notas. Adicionadas algumas notas com relao ao uso de vericadores de integridade como ferramentas de deteco de intruso. Adicionado um captulo com relao a assinatura de pacotes.

1.6.28

Verso 1.95

Alteraes feitas por Javier Fernndez-Sanguino Pea. Adicionadas notas com relao a segurana no Squid enviada por Philipe Gaspar. Corrigido os links sobre rootkit agradecimentos a Philipe Gaspar.

1.6.29

Verso 1.94

Alteraes feitas por Javier Fernndez-Sanguino Pea. Adicionadas algumas notas com relao ao Apache e o Lpr/lprng. Adicionadas mais informaes com relao as parties noexec e read-only. Reescrita a parte sobre como os usurios podem ajudar a Debian em assuntos relacionados a segurana (item da FAQ).

Captulo 1. Introduo

14

1.6.30

Verso 1.93

Alteraes feitas por Javier Fernndez-Sanguino Pea. Corrigida a localizao do programa mail. Adicionados alguns novos itens na FAQ.

1.6.31

Verso 1.92

Alteraes feitas por Javier Fernndez-Sanguino Pea. Adicionada uma pequena seo sobre como a Debian trabalha com a segurana Esclarecimentos sobre as senhas MD5 (agradecimentos a rocky) Adicionadas mais informaes com relao ao harden-X de Stephen van Egmond Adicionados alguns novos itens a FAQ

1.6.32

Verso 1.91

Alteraes feitas por Javier Fernndez-Sanguino Pea. Adicionadas mais informaes de forense enviadas por Yotam Rubin. Adicionadas informaes sobre como construir um honeypot usando a Debian GNU/Linux. Adicionados alguns TODOS a mais. Corrigidos mais problemas (agradecimentos a Yotam!)

1.6.33

Verso 1.9

Alteraes feitas por Javier Fernndez-Sanguino Pea. Adicionado um patch para corrigir problemas de escrita e algumas informaes novas (contribudas por Yotam Rubin) Adicionadas referncias a outras documentaes online (e ofine) ambas na seo (veja Esteja ciente dos problemas gerais de segurana on page 17) e junto com o texto em outra sees. Adicionadas algumas informaes sobre a congurao de opes do Bind para restringir o acesso ao servidor DNS. Adicionadas informaes sobre como fortalecer automaticamente um sistema Debian (com relao ao pacote harden e o bastille). Removido alguns TODOs fechados e adicionados alguns novos.

1.6.34

Verso 1.8

Alteraes feitas por Javier Fernndez-Sanguino Pea. Adicionada a lista padro de usurios/grupos fornecidas por Joey Hess a lista de discusso debian-security. Adicionadas informaes a respeito de root-kits LKM (Loadable Kernel Modules (LKM) on page 94) contribudo por Philipe Gaspar. Adicionada informao a respeito do Proftp contribudo por Emmanuel Lacour. Apndice de checklist recuperado de Era Eriksson. Adicionados alguns novos itens na lista TODO e removidos outros. Incluir manualmente os patches e Era pois nem todos foram includos na seo anterior.

Captulo 1. Introduo

15

1.6.35

Verso 1.7

Alteraes feitas por Era Eriksson. Correo de erros e alteraes de palavras Alteraes feitas por Javier Fernndez-Sanguino Pea. Pequenas mudanas em tags para manter a remoo de tags tt e sua substituio por tags prgn/package.

1.6.36

Verso 1.6

Alteraes feitas por Javier Fernndez-Sanguino Pea. Adicionado ponteiro para documentos como publicado na DDP (dever substituir o original em um futuro prximo). Iniciada uma mini-FAQ (dever ser expandida) com algumas questes recuperadas de minha caixa de mensagens. Adicionadas informaes gerais que devem ser consideradas durante a segurana. Adicionado um pargrafo relacionado a entrega de mensagens locais (entrada). Adicionadas algumas referncias a mais informaes. Adicionadas informaes com relao ao servio de impresso. Adicionada uma lista de checagem de fortalecimento de segurana. Reorganizadas as informaes a respeito de NIS e RPC. Adicionadas mais novas notas durante a leitura deste documento em meu novo visor :-) Corrigidas algumas linhas mal formatadas. Corrigidos alguns problemas. Adicionada a idia do Genus/Parania contribuda por Gaby Schilders.

1.6.37

Verso 1.5

Alteraes feitas por Josip Rodin e Javier Fernndez-Sanguino Pea. Adicionados pargrafos relacionados ao BIND e alguns FIXMEs.

1.6.38

Verso 1.4

Pequeno pargrafo sobre checagem de setuid Vrias pequenas limpezas Encontrado como usar o sgml2txt -f para fazer a verso texto

1.6.39

Verso 1.3

Adicionada uma atualizao de segurana aps o pargrafo de instalao Adicionado um pargrafo relacionado ao proftpd Agora realmente escrevia algo sobre o XDM, desculpe pelo atraso

Captulo 1. Introduo

16

1.6.40

Verso 1.2

Vrias correes gramaticais feitas por James Treacy, novo pargrafo sobre o XDM

1.6.41

Verso 1.1

Correo de erros, adies diversas

1.6.42

Verso 1.0

Lanamento inicial

1.7

Crditos e Agradecimentos!

Alexander Reelsen escreveu o documento original. Javier Fernndez-Sanguino adicionou mais informaes ao documento original. Robert van der Meulen forneceu pargrafos relacionados a quota e muitas boas idias. Ethan Benson corrigiu o pargrafo sobre PAM e adicionou boas idias. Dariusz Puchalak contribuiu com algumas informaes para vrios captulos. Gaby Schilders contribuiu com uma bela idia geniosa/paranica. Era Eriksson suavizou idiomas em vrios lugares e contribuiu com o apndice com a lista de checagens. Philipe Gaspar escreveu detalhes sobre LKM. Yotam Rubin contribuiu com correes para muitos erros assim como com informaes relacionadas a verses do bind e senhas md5. Todas as pessoas que zeram sugestes para melhorias que (eventualmente) sero includas aqui (veja Alteraes/Histrico on page 4) (Alexander) todas as pessoas que me encorajaram a escrever este HOWTO (que mais adiante se tornou em um Manual). A todo o projeto Debian.

17

Captulo 2

Antes de voc iniciar


2.1 Para que nalidade voc quer este sistema?

A segurana no Debian no to diferente da segurana em qualquer outro sistema; para implementar a segurana de maneira adequada, voc deve primeiro decidir o que voc pretende fazer com seu sistema. Aps isto, voc ter que considerar que as seguintes tarefas precisam ser executadas com cuidado se voc realmente quer ter um sistema seguro. Durante a leitura deste manual voc ver tarefas para fazer antes, durante e aps voc instalar seu sistema Debian. As tarefas so aes como: Decidir quais servios voc necessita e limitar o sistema a eles. Isto inclui desativar/desinstalar servios desnecessrios e adicionar ltros como rewall ou tcpwrappers. Limitar usurios e permisses em seu sistema. Proteger os servios oferecidos de modo que, em caso de problemas com um servio, o impacto em seu sistema seja minimizado. Utilizar ferramentas apropriadas para garantir que o uso desautorizado seja detectado, de modo que voc possa tomar as medidas apropriadas.

2.2

Esteja ciente dos problemas gerais de segurana

Este manual normalmente no entra em detalhes do porque algumas coisas so consideradas risco de segurana. Porm, voc deve procurar algum conhecimento a mais sobre segurana em sistemas UNIX e em sistemas Linux especicamente. Reserve algum tempo para ler alguns documentos sobre segurana, de modo que voc decida conscientemente quando se deparar com diferentes escolhas. O Debian baseado no kernel do Linux, ento voc deve procurar muita informao sobre kernel Linux, Debian, outras distribuies e sobre segurana UNIX (mesmo que as ferramentas usadas ou os programas disponveis sejam diferentes). Alguns documentos teis incluem: O Linux Security HOWTO (http://www.tldp.org/HOWTO/Security-HOWTO/) (tambm disponvel em LinuxSecurity (http://www.linuxsecurity.com/docs/LDP/Security-HOWTO.html)) uma das melhores referncias sobre Segurana Linux. O Security Quick-Start HOWTO for Linux (http://www.tldp.org/HOWTO/Security-Quickstart-HOWTO/) tambm um excelente ponto de partida para usurios novos em Linux e em segurana. O Linux Security Administrators Guide (http://seifried.org/lasg/) (fornecido no Debian atravs do pacote lasg) um guia completo que aborda tudo relacionado a segurana Linux, da segurana do kernel at VPNs. importante observar que este guia no atualizado desde 2001, mas algumas informaes ainda so relevantes. 1 O Securing Linux Step by Step (http://seifried.org/security/os/linux/ 20020324-securing-linux-step-by-step.html) de Kurt Seifried.
1 Por um tempo ele foi substitudo pelo Linux Security Knowledge Base. Esta documentao era fornecida no Debian atravs do pacote lskb. Agora ela voltou ao pacote Lasg novamente.

Captulo 2. Antes de voc iniciar

18

Em Securing and Optimizing Linux: RedHat Edition (http://www.tldp.org/links/p_books.html# securing_linux) voc pode encontrar uma documentao similar a este manual mas relacionada ao Red Hat, alguns assuntos no so especcos de distribuio e podem ser aplicados tambm ao Debian. IntersectAlliance publicou alguns documentos que podem ser usados como referncia para reforar a segurana em servidores linux (e seus servios), os documentos esto disponveis em their site (http://www. intersectalliance.com/projects/index.html). Para administradores de rede, uma boa referncia para construir uma rede segura o Securing your Domain HOWTO (http://www.linuxsecurity.com/docs/LDP/Securing-Domain-HOWTO/). Se voc quer avaliar os programas que pretende usar (ou quer construir seus prprios programas) voc deve ler o Secure Programs HOWTO (http://www.tldp.org/HOWTO/Secure-Programs-HOWTO/) (uma cpia est disponvel em http://www.dwheeler.com/secure-programs/, ela inclui slides e comentrios do autor, David Wheeler) Se voc est considerando instalar um rewall, voc deve ler o Firewall HOWTO (http://www.tldp.org/HOWTO/ Firewall-HOWTO.html) e o IPCHAINS HOWTO (http://www.tldp.org/HOWTO/IPCHAINS-HOWTO.html) (para kernels anteriores ao 2.4). Finalmente, uma boa fonte de consulta para manter em mos o Linux Security ReferenceCard (http://www. linuxsecurity.com/docs/QuickRefCard.pdf) Em qualquer caso, existe mais informao sobre os servios explanados aqui (NFS, NIS, SMB. . . ) em muitos HOWTOs de The Linux Documentation Project (http://www.tldp.org/). Alguns destes documentos falam em segurana relacionada a um determinado servio, ento certique-se de procurar com cuidado. Os documentos HOWTO do Projeto de Documentao do Linux (Linux Documentation Project) esto disponveis no Debian GNU/Linux atravs dos pacotes doc-linux-text (verso texto) ou doc-linux-html (verso html). Aps a instalao estes documetnos estaro disponveis em /usr/share/doc/HOWTO/en-txt e /usr/share/doc/HOWTO/en-html, respectivamente. Outros livros sobre Linux recomendados: Maximum Linux Security : A Hackers Guide to Protecting Your Linux Server and Network. Annimo. Paperback 829 pginas. Sams Publishing. ISBN: 0672313413. Julho 1999. Linux Security By John S. Flowers. New Riders; ISBN: 0735700354. Maro 1999 Hacking Linux Exposed (http://www.linux.org/books/ISBN_0072127732.html) de Brian Hatch. McGrawHill Higher Education. ISBN 0072127732. Abril, 2001. Outros livros (que podem ser relacionados a assuntos sobre UNIX e segurana e no especicamente sobre Linux): Practical Unix and Internet Security (2nd Edition) (http://www.ora.com/catalog/puis/noframes.html) Garnkel, Simpson, and Spafford, Gene; OReilly Associates; ISBN 0-56592-148-8; 1004pp; 1996. Firewalls and Internet Security Cheswick, William R. and Bellovin, Steven M.; Addison-Wesley; 1994; ISBN 0-20163357-4; 320pp. Alguns Web sites teis sobre segurana para manter-se atualizado: NIST Security Guidelines (http://csrc.nist.gov/fasp/index.html). Security Focus (http://www.securityfocus.com) o servidor que hospeda o banco de dados e a lista do Bugtraq e fornece informaes gerais, notcias e relatrios sobre segurana. Linux Security (http://www.linuxsecurity.com/). Informaes gerais sobre segurana(ferramentas, notcias,. . . ). A pgina mais til main documentation (http://www.linuxsecurity.com/resources/ documentation-1.html) . Linux rewall and security site (http://www.linux-firewall-tools.com/linux/). Informaes gerais sobre rewalls Linux e ferramentas para control-los e administr-los.

Captulo 2. Antes de voc iniciar

19

2.3

Como o Debian controla a segurana do sistema?

Agora que voc tem uma viso geral da segurana no Debian GNU/Linux observe mais algumas consideraes para construir um sistema seguro: Problemas do Debian so sempre discutidos abertamente, mesmo os relacionados a segurana. Problemas relacionados a segurana so discutidos abertamente na lista debian-security e so publicados no servidor como prev o Debian Social Contract (http://www.debian.org/social_contract): Ns no esconderemos problemas Ns manteremos nosso banco de dados de bugs e relatrios abertos ao pblico durante todo o tempo. Relatrios que os usurios enviarem estaro imediatamente on-line para que os outros tenham acesso. O Debian sempre procura corrigir os problemas de segurana. A equipe de segurana verica muitas fontes relacionadas a segurana, a mais importante sendo Bugtraq (http://www.securityfocus.com/cgi-bin/vulns.pl), sempre a procura de pacotes que aumentem a segurana e que possam ser includos. Atualizaes de seguranaa esto em primeira prioridade. Quando um problema aparece em um pacote Debian, a atualizao de segurana preparada o mais rpido possvel e includa nas distribuies estvel e instvel para todas as arquiteturas. Informaes sobre segurana esto centralizadas em http://security.debian.org/. O Debian est sempre tentando aumentar sua segurana atravs de novos projetos como o mecanismo automtico de vericao de assinatura dos pacotes. O Debian fornece um grande nmero de ferramentas de segurana para administrao de monitoramento do sistema. Desenvolvedores tentam integrar estas ferramentas com a distribuio para fazer um sistema opeacional cada vez mais seguro. Estas ferramentas incluem: vericao da integridade do sistema, rewall, deteco de intrusos, etc. Mantenedores de pacote esto cientes dos problemas de segurana. Isto leva a pensar que algumas restries poderiam ser impostas para alguns servios em seu uso normal. O Debian, porm, tenta balancear segurana e facilidade de administrao - os programas no so desativados quando voc os instala (como o caso nas distribuies da famlia BSD). Em qualquer caso, implementaes de segurana tipo programas setuid so parte da poltica Debian Policy (http://www.debian.org/doc/debian-policy/). Publicando informaes de segurana especca para o Debian e complementando outros documentos relacionados a segurana (veja Esteja ciente dos problemas gerais de segurana on page 17), este documento ajuda a produzir sistemas mais seguros.

Captulo 2. Antes de voc iniciar

20

21

Captulo 3

Antes e durante a instalao


3.1 Escolha uma senha para a BIOS

Antes de instalar qualquer sistema operacional em seu computador, congure uma senha para a BIOS. Aps a instalao (uma vez que voc tenha habilitado o boot a partir do HD) voc deve voltar a BIOS e alterar a sequncia de boot desabilitando o boot a partir do disquete (oppy), cdrom e outros dispositivos. Se voc no zer assim, um cracker s precisar de acesso fsico e um disco de boot para acessar o sistema inteiro. Desabilitar o boot a menos que uma senha seja fornecida bem melhor. Isto pode ser muito ecaz num servidor, porque ele no reiniciado constantemente. A desvantagem desta ttica que o reincio exige interveno humana, o que pode causar problemas se a mquina no for facilmente acessvel. Observao: muitas BIOS vem de fbrica com senhas padro bem conhecidas e existem programas que recuperam estas senhas, ou seja, alteram a senha atual para a senha original, para o caso de uma perda da senha pelo administrador. Assim, no dependa desta medida para proteger o acesso ao sistema.

3.2
3.2.1

Particionando o sistema
Escolha um esquema de partio inteligente

Um esquema de partio inteligente depende de como a mquina ser usada. Uma boa regra ser razoavelmente generoso com suas parties e prestar ateno aos seguintes fatores: Qualquer diretrio que um usurio tenha permisses de escrita, como o /home, /tmp e o /var/tmp/, devem estar separados em uma partio. Isto reduz o risco de um usurio malicioso utilizar o DoS (Denial of Service) para encher seu diretrio raiz ( / ) e tornar o sistema inutilizvel (Observao: isto no totalmente verdade uma vez que sempre existe algum espao reservado para o usurio root que o usurio normal no pode preencher), e tambm previne ataques tipo hardlink. 1 Qualquer partio com dados variveis, isto , /var (especialmente /var/log) tambm deve estar numa partio separada. Em um sistema Debian voc deve criar /var um pouco maior que em outros sistemas porque o download de pacotes (cache do apt) armazenado em /var/cache/apt/archives. Qualquer partio onde voc queira instalar software que no padro da distribuio deve estar separada. De acordo com a Hierarquia Padro do Sistema de Arquivos, estas so /opt ou /usr/local. Se estas parties esto separadas, elas no sero apagadas se voc (tiver que) reinstalar o Debian. Do ponto de vista da segurana, sensato tentar mover os dados estticos para sua prpria partio e ento montar esta partio somente para leitura. Melhor ainda ser colocar os dados numa mdia somenta para leitura. Veja abaixo para mais detalhes.
1 Um bom exemplo deste tipo de ataque usando /tmp detalhado em The mysteriously persistently exploitable program (contest) (http: //www.hackinglinuxexposed.com/articles/20031111.html) e The mysteriously persistently exploitable program explained (http://www. hackinglinuxexposed.com/articles/20031214.html) (Observe que o incidente um relato Debian) Ele basicamente um ataque no qual um usurio local usa uma aplicao setuid vulnervel atravs de um hard link para ela analisando qualque atualizao (ou remoo) do prprio binrio feita pelo administrador do sistema. Dpkg foi recentemente corrigido para prevenir isto (veja 225692 (http://bugs.debian.org/225692)) mas outros binrios setuid (no controlados pelo gerenciador de pacotes) correm o risco se as parties no estiverem conguradas corretamente.

Captulo 3. Antes e durante a instalao

22

No caso de um servidor de email importante ter uma partio separada para o spool de email. Usurios remotos (conhecidos ou no) podem encher o spool de email (/var/mail e/ou /var/spool/mail). Se o spool est em uma partio separada, esta situao no tornar o sistema inutilizvel. Porm (se o diretrio de spool est na mesma partio que /var) o sistema pode ter srios problemas: log no sero criados, pacotes podem no ser instalados e alguns programas podem ter problemas ao iniciar (se eles usam /var/run). Para parties que voc no tem certeza do espao necesrio, voc pode instalar o Logical Volume Manager (lvm-common e os binrios necessrio para o kernel, estes podem ser lvm10, lvm6, ou lvm5). Usando lvm, voc pode criar grupos de volume que expandem mltiplos volumes fsicos. Escolhendo o sistema de arquivos apropriado Durante o particionamento do sistema voc tambm tem que decidir qual sistema de arquivos usar. O sistema de arquivos padro em uma instalao Debian para parties Linux o ext2. Porm recomendado alterar para um sistema de arquivos journalling como ext3, reiserfs, jfs ou xfs, para minimizar os problemas derivados de uma quebra do sistema nos seguintes casos: Para laptops em todos os sistemas de arquivos instalados. Assim se acabar a bateria inesperadamente ou o sistema congelar voc correr menos risco de perda de dados durante a reinicializao do sistema. para sistemas que armazenam grande quantidade de dados (como servidores de email, servidores ftp, sistemas de arquivos de rede . . . .). Assim, em caso de queda, menos tempo ser gasto para o servidor checar o sistema de arquivos e a probabilidade da perda de dados ser menor. Deixando de lado a performance dos sistemas journalling (uma vez que isto pode iniciar uma verdadeira guerra), normalmente melhor usar o ext3. A razo para isto que ele compatvel com o antigo ext2, assim se existe alguma parte do seu sistema com journalling voc pode desabilitar este recurso e ainda ter um sistema em condies de trabalhar. Tambm, se voc precisar recuperar o sistema com um disco de boot (ou CDROM) voc no precisa personalizar o kernel. Se o kernel 2.4, o suporte a ext3 j est disponvel, se um kernel 2.2 voc ser capaz de iniciar o sistema de arquivos mesmo se perder as capacidades journalling. Se voc estiver usando outro sisteama journalling diferente do ext3, voc pode no ser capaz de recuperar o sistema a menos que voc tenha um kernal 2.4 com os mdulos necessrios instalados. Se seu disco de resgate tem o kernel 2.2 pode ser mais difcil acessar sistemas reiserfs ou xfs. Em qualquer caso, a integridade dos dados pode ser melhor usando ext3 uma vez que ele usa le-data journalling enquanto outros usam apenas meta-data journalling, veja http://lwn.net/2001/0802/a/ext3-modes.php3.

3.3

No conecte-se a internet at estar pronto

O sistema no deve ser imediatamente conectado a internet durante a instalao. Isto pode parecer estpido mas intalao via internet um mtodo comum. Uma vez que o sistema instalar e ativar servios imediatamente, se o sistema estiver conectado a internet e os servios no estiverem adequadamente congurados, voc estar abrindo brechas para ataques. Observe tambm que alguns servios podem ter vulnerabilidades de segurana no corrigidas nos pacotes que voc estiver usando para a instalao. Isto normalmente ser verdade se voc estiver instalando a partir de mdia antiga (como CDROMs). Neste caso, o sistema poderia estar comprometido antes de terminar a instalao! Uma vez que a instalao e atualizaes do Debian podem ser feitas pela internet voc pode pensar que uma boa idia usar este recurso na instalao. Se o sistema est diretamente conectado (e no est protegido por um rewall ou NAT), melhor instalar sem conexo com a grande rede usando um mirror local com os pacotes do Debian e as atualizaes de segurana. Voc pode congurar mirrors de pacotes usando outro sistema conectado com ferramentas especcas do Debian (se ele um sistema tipo Debian) como apt-move ou apt-proxy, ou outras, para fornecer os arquivos para o sistema instalado. Se no puder fazer isto, voc pode congurar regras de rewall para limitar o acesso ao sistema enquanto estiver atualizando (veja Atualizao de segurana protegida por um rewall on page 135).

3.4

Congure a senha do root

Congurar uma boa senha para o root o requerimento mais bsico para ter um sistema seguro. Veja passwd(1) para mais dicas de como criar boas senhas. Voc tambm pode usar um programa gerador de senhas para fazer isto para voc (veja Gerando senhas de usurios on page 38).

Captulo 3. Antes e durante a instalao

23

Muita informao sobre a escolha de boas senhas pode ser encontrada na internet; dois locais que fornecem um sumrio decente e racional so How to: Pick a Safe Password (http://wolfram.org/writing/howto/password.html) do Eric Wolfram e Unix Password Security (http://www.ja.net/CERT/Belgers/UNIX-password-security.html) do Walter Belgers.

3.5

Ative os recursos senhas shadow e senhas MD5

No nal da instalao, voc ser perguntado se senhas shadow deve ser habilitada. Responda sim (yes), ento as senhas sero mantidas no arquivo /etc/shadow. Apenas o root e o grupo shadow ter acesso de leitura a estes arquivo, assim nenhum usurio ser capaz de pegar uma cpia deste arquivo para rodar um cracker de senhas nele. Voc pode alternar entre senhas shadows e senhas normais a qualquer hora usando shadowconfig. Leia mais sobre senhas Shadow em Shadow Password (http://www.tldp.org/HOWTO/Shadow-Password-HOWTO. html) (/usr/share/doc/HOWTO/en-txt/Shadow-Password.txt.gz). Alm disso, voc perguntado durante a insatalao se quer usar senhas MD5 .. Isto geralmente uma boa idia uma vez que permite senhas longas e melhor encriptao. MD5 permite o uso de senhas com mais de 8 caracteres. Isto, se usado sabiamente, pode tornar mais difcil ataques as senhas do sistema. MD5 a opo padro quando instalando a ltima verso do pacote password. Voc pode alterar isto a qualquer hora aps a instalao executando dpkg-reconfigure --priority=low passwd. Voc pode reconhecer senhas md5 no arquivo /etc/shadow pelo prexo $1$. Isto modica todos arquivos sob /etc/pam.d pela substituio da linha de senha e incluso do md5 nela:
password requer pam_unix.so md5 nullok obscure min=6 max=16

Se max no est congurado para mais de 8 a alterao no ser til. Para mais informaes leia Autenticao do Usurio: PAM on page 32. Observao: o padro de congurao do Debian, mesmo quando ativada a senha MD5, no modica o valor max previamente congurado.

3.6

Rode o mnimo de servios necessrios

Servios so programas como servidores ftp e servidores web. Uma vez que eles tem que estar escutando por conexes que requisitem o servio, computadores externos podem conectar-se a eles. Servios algumas vezes so vulnerveis (i.e. podem estar comprometidos sobre um certo ataque) e oferecem risco a segurana. Voc no deve instalar servios que no so necessrios em sua mquina. Todo servio instalado pode introduzir novos, talvez no bvios ou conhecidos, buracos de segurana em seu computador. Como voc j deve saber, quando voc instala um servio o padro ele ser ativado. Em uma instalao Debian padro, sem nenhum servio a mais instalado, o footprint de servios rodando baixo mesmo quando falamos de servios oferecidos para a rede. o footprint no Debian 2.1 no to rme quanto no Debian 2.2 (alguns servios do inetd foram habilitados por padro) e no Debian 2.2 o rpc portmapper habilitado logo aps a installation. Rpc instalado por padro porque ele necessrio para muitos servios, NFS por exemplo. Ele pode ser facilmente removido, porm, veja Desabilitando daemons de servio on this page como desabilit-lo. Quando voc instala um novo servio de rede (daemon) em seu sistema Debian GNU/Linux ele pode ser habilitado de duas maneiras: atravs do superdaemon inetd (uma linha ser adicionada ao /etc/inetd.conf) ou atravs de um programa que serve de interface. Estes programas so controlados pelos arquivos /etc/init.d, que so chamados no momento da inicializao atravs do mecanismo SysV (ou outro alternativo) pelo uso de symlinks em /etc/rc?.d/* (para mais informaes de como isto feito leia /usr/share/doc/sysvinit/README.runlevels.gz). Se voc quer manter algum servio, mas que ser usado raramente, use os comandos update, isto , update-inetd e update-rc.d para remov-los do processo de inicializao.

3.6.1

Desabilitando daemons de servio

Desabilitar um daemon de servio simples. Existem vrios mtodos: remover ou renomear os links de /etc/rc${runlevel}.d/ de modo que eles no iniciem com a letra S

Captulo 3. Antes e durante a instalao

24

mover ou renomear o script /etc/init.d/_service_name_ pra outro nome, por exemplo /etc/init.d /OFF._service_name_ remover a permisso de execuo do arquivo /etc/init.d/_service_name_. editar o script /etc/init.d/_service_name_ para parar o servio imediatamente. Voc pode remover os links de /etc/rc${runlevel}.d/ manualmente ou usando update-rc.d (veja update-rc.d(8)). Por exemplo, voc pode desabilitar um servio do runlevel multiusurio executando:
update-rc.d stop XX 2 3 4 5 .

Observe que, se voc no est usando file-rc, update-rc.d -f _service_ remove no trabalhar apropriadamente, pois embora todos links sejam removidos, aps reinstalao ou upgrade do pacote estes links sero regenerados (provavelmente no o que voc quer). Se pensa que isto no intuitivo voc provavelmente est certo (veja Bug 67095 (http://bugs.debian.org/67095)). Texto da manpage:
Se qualquer arquivo /etc/rcrunlevel.d/[SK]??name j existe ento update-rc.d no faz nada. desta maneira que o administrador do sistema pode reorgananizar os links, contanto que eles deixem pelo menos um link remanescente, sem ter sua configurao reescrita.

Se voc est usando file-rc, toda informao sobre servios manipulada por um arquivo de congurao comum e mantida mesmo se os pacotes forem removidos do sistema. Voc pode usar a TUI (Text User Interface) fornecida por rcconf para fazer todas estas alteraes facilmente (rcconf trabalha com runlevels file-rc e System V). Outro mtodo (no recomendado) de desabilitar servios : chmod 644 /etc/init.d/daemon (mas exibe uma mensagem de erro quando iniciando o sistema), ou modicando o script /etc/init.d/daemon (adicionando exit 0 no incio ou comentando a instruo start-stop-daemon). Como os arquivos do init.d so arquivos de congurao, eles no sero reescritos por ocasio da upgrade. Infelizmente, diferente de outros sistemas operacionanais tipo UNIX, os servios no Debian no podem ser desabilitados pela modicao dos arquivos em /etc/default/_servicename_. FIXME: Adicione mais informao sobre manipulao de daemons usando le-rc

3.6.2

Desabilitando o inetd ou seus servios

Voc deve checar se realmente precisa do daemon inetd. Inetd sempre foi uma maneira de compensar decincias do kernel, mas estas decincias foram corrigidas. Existe possibilidade de ataques DoS (Denial of Service) contra o inetd, ento prefervel usar daemons individuais do que rodar um servio do inetd. Se voc ainda quer rodar algum servio do inetd, ento no mnimo alterne para um daemon mais congurvel como xinetd, rlinetd ou openbsd-inetd. Voc deve parar todos os servios Inetd desnecessrios, como echo, chargen, discard, daytime, time, talk, ntalk e r-services (rsh, rlogin e rcp) os quais so considerados ALTAMENTE inseguros (use ssh no lugar destes). Voc pode desabilitar os servios editando o arquivo /etc/inetd.conf diretamente, mas o Debian fornece uma alternativa melhor: update-inetd (o qual comenta os servios de modo que eles possam facilmente ser reativados). Voc pode remover o daemon telnet para alterar o arquivo de congurao e reiniciar o daemon (neste caso o servio telnet desabilitado):
/usr/sbin/update-inetd --disable telnet

Se voc quer um servio, mas no o quer disponvel para todos os IP do seu host, voc deve usar um recurso no documentado no inetd (substitua o nome do servio por servio@ip) ou use um daemon alternativo como xinetd.

3.7

Instale o mnimo de software necessrio

O Debian vem com uma grande quantidade de software, por exemplo o Debian 3.0 woody inclui quase 6 CD-ROMs de software e milhares de pacotes. Apesar da grande quantidade de software, a instalao do sistema base utiliza poucos pacotes. 2 voc pode estar mal informado e instalar mais que o realmente necessrio para seu sistema.
2 Por

exemplo, no Debian Woody ela gira em torno de 40Mbs, tente isto para ver quanto os pacotes necessrios ocupam no sistema:

$ size=0 $ for i in grep -A 1 -B 1 "^Section: base"/var/lib/dpkg/available | grep -A 2 "^Priority: requiredgrep "^Installed-Sizecut -d : -f 2 ; do size=$(($size+$i)); done $ echo $size 34234

Captulo 3. Antes e durante a instalao

25

Sabendo o que seu sistema realmente precisa, voc deve instalar apenas o que for realmente necessrio para seu trabalho. Qualquer ferramenta desnecessria pode ser usada por um usurio malicioso para comprometer o sistema ou por um invasor externo que tenha acesso ao shell (ou cdigo remoto atravs de servios explorveis). A presena, por exemplo, de utilitrios de desenvolvimento (um compilador C) ou linguagens interpretadas (como perl, python, tcl. . . ) pode ajudar um atacante a comprometer o sistema da seguinte maneira: permitir a ele fazer escalao de privilgios. Isto facilita, por exemplo, rodar exploits locais no sistema se existe um depurador e compilador prontos para compilar e testar. fornecer ferramentas que poderiam ajudar um atacante a usar o sistema comprometido como base de ataque contra outros sistemas 3 claro que um invasor com acesso ao shell local pode baixar suas prprias ferramentas e execut-las, alm disso o prprio shell pode ser usado para fazer complexos programas. Remover software desnecessrio no impedir o problema mas dicultar a ao de um possvel atacante. Ento, se voc deixar disponveis ferramentas em um sistema de produo que poderiam ser usadas remotamente para um ataque (veja Ferramentas de vericao remota de vulnerabilidades on page 83), pode acontecer de um invasor us-las.

3.7.1

Removendo Perl

Remover o perl pode no ser fcil em um sistema Debian pois ele muito usado. O pacote perl-base tem prioridade classicada como requerida (Priority: required), o que j diz tudo. Voc pode remov-lo mas no ser capaz de rodar qualquer aplicao perl no sistema; voc ainda ter que enganar o sistema de gerenciamento de pacotes para ele pensar que o perl-base ainda est instalado. 4 Quais utilitrios usam perl? Voc mesmo pode vericar:
$ for i in /bin/* /sbin/* /usr/bin/* /usr/sbin/*; do [ -f $i ] && { type=file $i | grep -il perl; [ -n "$type" ] && echo $i; }; done

Estes incluem os seguintes utilitrios em pacotes com prioridade required ou important: /usr/bin/chkdupexe do pacote util-linux. /usr/bin/replay do pacote bsdutils. /usr/sbin/cleanup-info do pacote dpkg. /usr/sbin/dpkg-divert do pacote dpkg. /usr/sbin/dpkg-statoverride do pacote dpkg. /usr/sbin/install-info do pacote dpkg. /usr/sbin/update-alternatives do pacote dpkg. /usr/sbin/update-rc.d do pacote sysvinit. /usr/bin/grog do pacote groff-base. /usr/sbin/adduser do pacote adduser. /usr/sbin/debconf-show do pacote debconf. /usr/sbin/deluser do pacote adduser. /usr/sbin/dpkg-preconfigure do pacote debconf. /usr/sbin/dpkg-reconfigure do pacote debconf. /usr/sbin/exigrep do pacote exim. /usr/sbin/eximconfig do pacote exim.
3 Muitas invases so feitas mais para acessar os recursos e executar atividades ilcitas (ataques denial of service, spam, rogue ftp servers, poluio dns. . . ) do que para obter dados condenciais dos sistemas comprometidos. 4 Voc pode fazer (em outro sistema) um pacote dummy com o equivs

Captulo 3. Antes e durante a instalao /usr/sbin/eximstats do pacote exim. /usr/sbin/exim-upgrade-to-r3 do pacote exim. /usr/sbin/exiqsumm do pacote exim. /usr/sbin/keytab-lilo do pacote lilo. /usr/sbin/liloconfig do pacote lilo. /usr/sbin/lilo_find_mbr do pacote lilo. /usr/sbin/syslogd-listfiles do pacote sysklogd. /usr/sbin/syslog-facility do pacote sysklogd. /usr/sbin/update-inetd do pacote netbase.

26

Assim, sem Perl e, a menos que voc recompile estes utilitrios em um script shell, voc provavelmente no ser capaz de gerenciar nenhum pacote (assim voc tambm no ser capaza de atualizar o sistema, o que no uma coisa boa). Se voc est determinado a remover o Perl do Debian e tem tempo de sobra, envie os relatrios de bugs referentes aos pacotes acima referidos incluindo possveis substituies para os utilitrios escritas em shell.

3.8

Leia as listas de segurana do Debian (security mailing lists)

Nunca demais dar uma olhada na lista debian-security-announce, onde avisos e correes dos pacotes so anunciadas pela equipe de segurana do Debian, ou na mailto:debian-security@lists.debian.org, onde voc pode participar de discusses sobre assuntos relacionados a segurana Debian. Para receber importantes atualizaes de segurana e alertas envie email para debian-security-announcerequest@lists.debian.org (mailto:debian-security-announce-request@lists.debian.org) com a palavra subscribe como assunto. Voc tambm pode inscrever-se nesta lista no endereo http://www.debian.org/ MailingLists/subscribe Esta lista tem pouco volume de mensagens e assinando ela voc ser imediatamente alertado sobre atualizaes de segurana para a distribuio Debian. Isto lhe permitir rapidamente baixar os novos pacotes com atualizaes de segurana, as quais so muito importantes na manuteno de um sistema seguro. (Veja Executar uma atualizao de segurana on the facing page para detalhes de como fazer isto.)

27

Captulo 4

Aps a instalao
Assim que o sistema for instalado, voc ainda poder fazer mais para deix-lo mais seguro; alguns dos passos descritos neste captulo podem ser seguidos. claro que isto depende de sua congurao, mas para preveno de acesso fsico voc dever ler Altere a BIOS (de novo) on the next page,Congurar a senha do LILO ou GRUB on the following page,Remover o aviso de root do kernel on page 29, Desativando a inicializao atravs de disquetes on page 29, Restringindo o acesso de login no console on page 30 e Restringindo reinicializaes do sistema atravs da console on page 30. Antes de se conectar a qualquer rede, especicamente se for uma rede pblica, no mnimo execute uma atualizao de segurana (veja Executar uma atualizao de segurana on the current page). Opcionalmente, voc dever fazer um snapshot do seu sistema (veja Fazendo um snapshot do sistema on page 50).

4.1

Inscreva-se na lista de discusso Anncios de Segurana do Debian

Para receber informaes sobre atualizaes e alertas de segurana (DSAs) disponveis e DSAs voc dever se inscrever na lista de discusso debian-security-announce. Veja O time Debian Security on page 73 para mais informaes sobre como o time de segurana do Debian funciona. Para mais informaes sobre como se inscrever nas listas de discusses do Debian, leia http://lists.debian.org. Os DSAs so assinados pelo time de segurana do Debian e as assinaturas podem ser pegas atravs do endereo http: //security.debian.org. Voc dever considerar, tambm, em se inscrever na lista de discusso debian-security (http://lists.debian.org/ debian-security) para discusses gerais de problemas de segurana no sistema operacional Debian. Na lista voc poder entrar em contato com outros administradores de sistemas experientes, assim como tambm desenvolvedores do Debian e autores de ferramentas de segurana que podem responder suas questes e oferecer recomendaes. FIXME: tambm adicionar a chave aqui?

4.2

Executar uma atualizao de segurana

Assim que novos bugs so descobertos nos pacotes, os mantenedores do Debian e autores de software geralmente aplicam patches dentro de dias ou at mesmo horas. Aps uma falha ser corrigida, um novo pacote disponibilizado em http: //security.debian.org. Se estiver instalando um lanamento do Debian, voc dever ter em mente que desde que o lanamento foi feito devem existir atualizaes de segurana que podem determinar um pacote como vulnervel. Tambm existem lanamentos menores (foram sete no lanamento da 2.2 potato) que incluem estas atualizaes de pacotes. Voc precisa anotar a data em que a mdia removvel foi feita (se estiver usando uma) e vericar o site de segurana para ter certeza que existem atualizaes de segurana. Se existem atualizaes e voc no puder baixar os pacotes de um site security.debian.org em outro sistema (voc no est conectado na Internet ainda? est?) antes de se conectar a rede voc dever considerar (se no estiver protegido por um rewall, por exemplo) adicionar regras de rewall assim seu sistema somente poder se conectar a security.debian.org e ento executar a atualizao. Um modelo de congurao mostrado em Atualizao de segurana protegida por um rewall on page 135. Nota:Desde o Debian woody 3.0, aps a instalao voc ter a oportunidade de adicionar atualizaes de segurana ao sistema. Se disser sim a isto, o sistema de instalao tomar os passos apropriados para adicionar a fonte de origem

Captulo 4. Aps a instalao

28

para as atualizaes de segurana para sua origem de pacotes e seu sistema. Se j tiver uma conexo de Internet, o sistema baixar e instalar qualquer atualizao de segurana que produziu aps a mdia ser criada. Se estiver atualizando a partir de uma verso anterior do Debian, o perguntou ao sistema de instalao para no fazer isto, voc dever realizar os passos descritos aqui. Para atualizar manualmente o sistema, insira a seguinte linha em seu sources.list e voc obter as atualizaes de segurana automaticamente, sempre que atualizar seu sistema.
deb http://security.debian.org/ stable/updates main contrib non-free

Assim que instalar isto, voc poder usar ou o apt ou dselect para atualizar: Se quiser usar o apt simplesmente execute (como root):
# apt-get update # apt-get upgrade

Se quiser usar o dselect ento primeiro execute o [U]pdate, ento [I]nstall e depois, nalmente, [C]ongure pata instalar/atualizar os pacotes. Se quiser, voc tambm poder adicionar linhas deb-src ao seu arquivo /etc/apt/sources.list. Veja apt(8) para mais detalhes. Nota: Voc no precisa adicionar a seguinte linha:
deb http://security.debian.org/debian-non-US stable/non-US main contrib non-free

isto porque security.debian.org hospedado em uma localizao fora dos Estados Unidos e no possui um arquivo separado non-US.

4.3

Altere a BIOS (de novo)

Se lembra Escolha uma senha para a BIOS on page 21? Bem, ento voc deve agora, uma vez que no precisa inicializar atravs de uma mdia removvel, alterar a congurao padro da BIOS, desta forma ela poder somente inicializar a partir do disco rgido. Tenha certeza de que no perder a senha da BIOS, caso contrrio, se ocorrer uma falha no disco rgido voc no ser capaz de retornar a BIOS e alterar a congurao e recuper-la usando, por exemplo, um CD-ROM. Outro mtodo mais conveniente, mas menos seguro, alterar a congurao para ter o sistema inicializando a partir do disco rgido e, caso falhe, tentar a mdia removvel. Por agora, isto feito freqentemente porque a maioria das pessoas no usam a senha de BIOS com freqncia; pois se esquecem dela facilmente.

4.4

Congurar a senha do LILO ou GRUB

Qualquer um pode facilmente obter uma linha de comando de root e alterar sua senha entrando com o parmetro <name-of-your-bootimage> init=/bin/sh no aviso de boot. Aps alterar a senha e reiniciar o sistema, a pessoa ter acesso ilimitado como usurio root e poder fazer qualquer coisa que quiser no sistema. Aps este processo, voc no ter acesso root ao seu sistema, j que no saber mais sua senha. Para se assegurar que isto no ocorra, voc dever denir uma senha para o gerenciador de partida. Escolha entre uma senha global ou uma senha para determinada imagem. Para o LILO, voc precisar editar o arquivo de congurao /etc/lilo.conf e adicionar uma linha password e restricted como no exemplo abaixo.
image=/boot/2.2.14-vmlinuz label=Linux read-only password=mude-me restricted

Captulo 4. Aps a instalao

29

Quando terminar, re-execute o lilo. Caso omita restricted o lilo sempre perguntar por uma senha, no importando se foram passados parmetros de inicializao. As permisses padres do /etc/lilo.conf garantem permisses de leitura e gravao para o root e permite o acesso somente leitura para o grupo do lilo.conf, geralmente root. Caso utilize o GRUB ao invs do LILO, edite o /boot/grub/menu.lst e adicione as seguintes duas linhas no topo do arquivo (substituindo, claro mude-me pela senha designada). Isto evita que usurios editem os itens de inicializao. A opo timeout 3 especica uma espera de 3 segundos antes do grub inicializar usando o item padro.
timeout 3 password mude-me

Para fortalecer futuramente a integridade da senha, voc poder armazenar a senha em um formato criptografado. O utilitrio grub-md5-crypt gera um hash de senha que compatvel com o algoritmo de senha encriptada pelo grub (md5). Para especicar no grub que uma senha no formato md5 ser usada, use a seguinte diretiva:
timeout 3 password --md5 $1$bw0ez$tljnxxKLfMzmnDVaQWgjP0

O parmetro md5 foi adicionado para instruir o grub a fazer o processo de autenticao md5. A senha fornecida uma verso encriptada md5 do mude-me. O uso do mtodo de senhas md5 preferido em contrapartida da seleo de sua verso texto plano. Mais informaes sobre senhas do grub podem ser encontradas no pacote grub-doc.

4.5

Remover o aviso de root do kernel

Os kernels 2.4 do Linux oferecem um mtodo de acessar um shell de root durante a inicializao que ser logo mostrado aps de carregar o sistema de arquivos cramfs. Uma mensagem aparecer para permitir ao administrador entrar com um interpretador de comandos executvel com permisses de root, este shell poder ser usado para carregar manualmente mdulos quando a auto-deteco falhar. Este comportamento padro para o linuxrc do initrd. A seguinte mensagem ser mostrada:
Press ENTER to obtain a shell (waits 5 seconds)

Para remover este comportamento, voc precisar alterar o /etc/mkinitrd/mkinitrd.conf e denir:


# DELAY O nmero de segundos que o script linuxrc dever aguardar para # permitir ao usurio interrompe-lo antes do sistema ser iniciado DELAY=0

Ento gere novamente sua imagem do disco ram. Um exemplo de como fazer isto:
# cd /boot # mkinitrd -o initrd.img-2.4.18-k7 /lib/modules/2.4.18-k7

ou (preferido):
# dpkg-reconfigure -plow kernel-image-2.4.x-yz

Note que o Debian 3.0 woody permite aos usurios instalarem o kernel 2.4 (selecionando tipos de kernels), no entanto o kernel padro o 2.2 (salvo para algumas arquitetura no qual o kernel 2.2 ainda no foi portado). Se voc acha que isto um bug, veja Bug 145244 (http://bugs.debian.org/145244) antes de reporta-lo.

4.6

Desativando a inicializao atravs de disquetes

O MBR padro no Debian antes da verso 2.2 no atua como setor mestre de partida como recomendado e deixa aberto um mtodo de se fazer a quebra do sistema: Pressione shift durante a inicializao, e um aviso MBR aparecer Ento aperte F e o sistema inicializar pelo disquete. Isto pode ser usado para se obter acesso root ao sistema.

Captulo 4. Aps a instalao Este comportamento pode ser alterado com:


lilo -b /dev/hda

30

Agora o LILO foi colocado na MBR. Isto tambm pode ser feito adicionando-se boot=/dev/hda ao arquivo de congurao lilo.conf. Existe tambm outra soluo que desativa o prompt MBR completamente:
install-mbr -i n /dev/hda

Por outro lado, esta porta dos fundos, no qual muitas pessoas simplesmente no se preocupam, podem salvar pessoas que tiverem problemas com sua instalao por quaisquer razes. FIXME verique se isto realmente verdade no kernel 2.2, ou foi no 2.1? INFO: Os disquetes de inicializao no Debian 2.2 no instalam o mbr, mas somente o LILO.

4.7

Restringindo o acesso de login no console

Algumas polticas de segurana podem forar os administradores a entrar no sistema atravs do console com seus usurios/senhas e ento se tornar o superusurio (com o su ou sudo). Esta poltica implementada no Debian editando-se o arquivo /etc/login.defs ou /etc/securetty quando utilizar PAM. Em: login.defs, editando a varivel CONSOLE que dene um arquivo ou lista de terminais nos quais o login do root permitido securetty 1 adicionando/removendo os terminais nos quais o root tem permisso de acesso. Se voc deseja permitir somente acesso a console local ento voc precisa por console, ttyX 2 e vc/X (se estiver usando dispositivos devfs), voc pode querer adicionar tambm ttySX 3 se estiver usando um console serial para acesso local (onde X um inteiro, voc pode querer ter mltiplas instncias 4 dependendo do nvel de consoles virtuais que tem ativado no /etc/inittab 5 ). Para mais informaes sobre dispositivos de terminais, leia o Text-Terminal-HOWTO (http: //tldp.org/HOWTO/Text-Terminal-HOWTO-6.html) Quando utilizar PAM, outras alteraes no processo de login, que podem incluir restries a usurios e grupos em determinadas horas, podem ser congurados no /etc/pam.d/login. Uma caracterstica interessante que pode ser desativada a possibilidade de fazer login sem senhas. Esta caracterstica pode ser limitada removendo-se nullok da seguinte linha:
auth required pam_unix.so nullok

4.8

Restringindo reinicializaes do sistema atravs da console

Caso seu sistema tenha um teclado conectado, qualquer um (sim, qualquer um) poder reinicializar o sistema sem efetuar login. Isto pode se encaixar ou no em sua poltica de segurana. Se deseja restringir isto, voc dever alterar o arquivo /etc/inittab assim a linha que inclui a chamada para ctrlaltdel executar shutdown com a opo -a (lembre-se de executar o init q aps realizar qualquer modicao neste arquivo). O padro no Debian inclui esta opo:
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

Agora para permitir somente que alguns usurios possam desligar o sistema, como descreve a pgina de manual shutdown(8), voc dever criar o arquivo /etc/shutdown.allow e incluir l os nomes de usurios que podem reiniciar o sistema. Quando a combinao de trs teclas (a.k.a. Ctrl+Alt+del) for feita, o programa vericar se qualquer um dos usurios listados esto conectados ao sistema. Se nenhum deles estiver, o shutdown no reiniciar o sistema.
arquivo /etc/securetty um arquivo de congurao que pertence ao pacote login. ttyvX no GNU/FreeBSD, e ttyE0 no GNU/NetBSD. 3 Ou comX no GNU/Hurd, cuaaX no GNU/FreeBSD, e ttyXX no GNU/KNetBSD. 4 A congurao padro na woody incluem 12 tty e consoles vc locais. Na sarge a congurao padro oferece 64 consoles para consoles tty e vc. Voc pode remover seguramente isto se no estiver usando mais do que estas consoles. 5 Procure pelas chamadas getty.
2 Ou 1O

Captulo 4. Aps a instalao

31

4.9

Montando parties do jeito certo

Quando montar uma partio ext2, existem diversas opes adicionais que pode utilizar para a chamada de montagem ou para o /etc/fstab. Por exemplo, esta minha congurao do fstab para a partio /tmp:
/dev/hda7 /tmp ext2 defaults,nosuid,noexec,nodev 0 2

Observe as diferenas na seo opes. A opo nosuid ignore os bits setuid e setgid completamente, enquanto a noexec probe a execuo de qualquer programa naquele ponto de montagem, e a nodev ignora dispositivos. Isto soa muito bem, mas elas: somente se aplicam a sistemas de arquivos ext2 podem ser burlados facilmente A opo noexec evita que os binrios sejam executados diretamente, mas isto facilmente contornado:
alex@joker:/tmp# mount | grep tmp /dev/hda7 on /tmp type ext2 (rw,noexec,nosuid,nodev) alex@joker:/tmp# ./date bash: ./date: Permission denied alex@joker:/tmp# /lib/ld-linux.so.2 ./date Sun Dec 3 17:49:23 CET 2000

No entanto, muitos script kiddies tem exploits que tentam criar e executar arquivos em /tmp. se eles no tem conhecimento disto, caem nesta restrio. Em outras palavras, um usurio no pode ser convencido a executar um binrio alterado em /tmp e.g. quando acidentalmente adicionar /tmp em sua varivel PATH. Esteja j avisado que muitos scripts dependem de /tmp sendo executvel. Mais notavelmente, o Debconf tem (ainda?) alguns problemas relacionados a isto, para mais informaes veja o bug 116448 (http://bugs.debian.org/116448). A parte a seguir mais um tipo de exemplo. Uma nota, no entanto: /var pode ser ajustado para noexec, mas alguns programas 6 mantm seus programas sob /var. O mesmo se aplica a opo nosuid.
/dev/sda6 /dev/sda12 /dev/sda7 /dev/sda8 /dev/sda9 /dev/sda10 /dev/sda11 /dev/sda13 /dev/fd0 /dev/fd0 /dev/hda /usr /usr/share /var /tmp /var/tmp /var/log /var/account /home /mnt/fd0 /mnt/floppy /mnt/cdrom ext2 ext2 ext2 ext2 ext2 ext2 ext2 ext2 ext2 vfat iso9660 defaults,ro,nodev 0 2 defaults,ro,nodev,nosuid 0 2 defaults,nodev,usrquota,grpquota0 2 defaults,nodev,nosuid,noexec,usrquota,grpquota 0 defaults,nodev,nosuid,noexec,usrquota,grpquota 0 defaults,nodev,nosuid,noexec 0 2 defaults,nodev,nosuid,noexec 0 2 rw,nosuid,nodev,exec,auto,nouser,async,usrquota,grpquota defaults,users,nodev,nosuid,noexec 0 0 defaults,users,nodev,nosuid,noexec 0 0 ro,users,nodev,nosuid,noexec 0 0

2 2

4.9.1

Ajustando a opo noexec em /tmp

Tenha cuidado em ajustar a opo noexec em /tmp quando desejar instalar novos programas, pois alguns programas o utilizam para a instalao. O Apt um dos tais programas (veja http://bugs.debian.org/116448), isto pode ser resolvido alterando-se a varivel APT::ExtractTemplates::TempDir (veja apt-extracttemplates(1)). Voc poder denir esta varivel no arquivo /etc/apt/apt.conf apontando para outro diretrio com privilgio de execuo ao invs de /tmp. Com relao a noexec, esteja alertado que ela pode no oferecer tanta segurana assim. Considere este exemplo:
$ cp /bin/date /tmp $ /tmp/date (does not execute due to noexec) $/lib/ld-linux.so.2 /tmp/date (funciona, pois o comando date no executado diretamente)
6 Alguns destes incluem o gerenciador de pacotes dpkg pois os scripts de instalao (post,pre) e remoo (post,pre) esto em /var/lib/dpkg/ e tambm o Smartlist

Captulo 4. Aps a instalao

32

4.9.2

Denindo o /usr como somente-leitura

Se congurar o /usr como somente leitura, voc no ser capaz de instalar novos pacotes em seu sistema Debian GNU/Linux. Voc ter primeiro que remont-lo como leitura-gravao, instalar os pacotes e ento remont-lo como somente-leitura. A ltima verso do apt (no Debian woody 3.0) pode ser congurada para executar comandos antes e aps instalar pacotes, assim voc pode querer congur-lo corretamente. Para fazer isto, modique o /etc/apt/apt.conf e adicione:
DPkg { Pre-Invoke { "mount /usr -o remount,rw" }; Post-Invoke { "mount /usr -o remount,ro" }; };

Note que o Post-Invoke pode falhar com a mensagem de erro /usr busy. Isto acontece basicamente porque est usando arquivos durante a atualizao que foram atualizados. Voc encontrar estes programas executando
# lsof +L1

Interrompa ou reinicie estes programas e execute manualmente o Post-Invoke. Cuidado! Isto signica que voc provavelmente precisar reiniciar sua seo do X (se estiver executando uma) cada vez que zer uma grande atualizao em seu sistema. Voc dever levar em conta se um sistema de arquivos /usr somente-leitura adequado ao seu sistema. Veja tambm isto discussion on debian-devel about read-only /usr (http://lists.debian.org/debian-devel/2001/ 11/threads.html#00212).

4.10
4.10.1

Fornecendo acesso seguro ao usurio


Autenticao do Usurio: PAM

O PAM (mdulos de autenticao alterveis) permite ao administrador do sistema escolher como os aplicativos autenticaro os usurios. Note que o PAM no pode fazer nada caso o aplicativo no esteja compilado com suporte a PAM. A maioria dos aplicativos que vem com o Debian 2.2 tem este suporte ativado. Alm do mais, o Debian no tem suporte a PAM em verses anteriores a 2.2. A congurao atual para qualquer servio que tenha PAM ativado para emular a autenticao do UNIX (leia /usr/share/doc/libpam0g/Debian-PAM-MiniPolicy.gz para mais informaes sobre como os servios PAM devem funcionar no Debian). Cada aplicao com suporte a PAM fornece um arquivo de congurao em /etc/pam.d/ que pode ser usado para modicar seu comportamento: que mtodo usada para autenticao. que mtodo usada para sesses. como a checagem de senha se comportar. A seguinte descrio est longe de ser completa, para mais informaes voc deve ler o Guia do Administrador de Sistemas Linux-PAM (http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam.html) (presente no site primrio de distribuio do PAM (http://www.kernel.org/pub/linux/libs/pam/)). Este documento tambm pode ser encontrado no pacote do Debian libpam-doc. O PAM lhe oferece a possibilidade de utilizar vrios passos de autenticao de uma s vez, sem o conhecimento do usurio. Voc pode autenticar em um banco de dados Berkeley e no banco de dados no arquivo passwd padro, e o usurio somente entrar no sistema caso ele se autentique corretamente em ambos. Voc pode restringir muita coisa com o PAM, como tambm abrir bastante as portas do seu sistema. Assim, seja cauteloso. Uma linha de congurao tpica que tem o tempo de controle como seu segundo elemento: Geralmente ele deve ser ajustado para requisite, que retorna uma falha de login caso um dos mdulos falhe. A primeira coisa que eu gosto de fazer adicionar o suporte a MD5 nas aplicaes com suporte a PAM, pois isto nos ajuda a se proteger contra ataques de dicionrio (as senhas podem ser maiores se estiver usando MD5). As seguintes duas linhas podem ser adicionadas em todos os arquivos em /etc/pam.d/ que garantem acesso a mquina, como login e ssh.
# Tenha certeza de instalar primeiro o libpam-cracklib ou ento no ser capaz # de se logar no sistema password required pam_cracklib.so retry=3 minlen=12 difok=3 password required pam_unix.so use_authtok nullok md5

Captulo 4. Aps a instalao

33

Assim, o que este encanto faz? A primeira linha carrega o mdulo cracklib do PAM, que fornece checagem de senhas fracas, pergunta por uma nova senha com no mnimo de 12 caracteres, uma diferena de pelo menos 3 letras da antiga senha e permite 3 novas tentativas. O Cracklib depende do pacote wordlist (tal como wenglish, wspanish, wbritish, . . . ), assim tenha certeza de instalar um que seja apropriado a seu idioma ou o cracklib pode no ser totalmente til. 7 A segunda linha introduz o mdulo de autenticao padro com senhas MD5 e permite uma senha de tamanho zero. A diretiva use_authtok necessria para pegar a senha do mdulo anterior. Para se assegurar que o usurio root pode somente se logar no sistema de terminais locais, a seguinte linha dever ser ativada no /etc/pam.d/login:
auth requisite pam_securetty.so

Ento voc dever modicar a lista de terminais no qual o usurio root pode se logar no sistema no arquivo /etc /securetty. Alternativamente, voc poder ativar o mdulo pam_access e modicar o arquivo /etc/security /access.conf que possui um controle de acesso mais no e geral, mas (infelizmente) no possui mensagens de log decentes (o log dentro do PAM no padronizado e particularmente um problema a ser tratado). Ns voltaremos no arquivo access.conf um pouco mais a frente. Em seguida, a seguinte linha dever ser ativada no /etc/pam.d/login para ativar a restrio dos recursos do usurio.
session required pam_limits.so

Isto restringe os recursos do sistema que os usurios tm permisso (veja abaixo em Limitando o uso de recursos: o arquivo limits.conf on the following page ). Por exemplo, voc pode restringir o nmero de logins concorrentes (de um determinado grupo de usurios, ou de todo o sistema), nmero de processos, tamanho de memria, etc. Agora, edite o arquivo /etc/pam.d/passwd e altere a primeira linha. Voc dever adicionar a opo md5 para usar senhas MD5, altere o tamanho mnimo da senha de 4 para 6 (ou mais) e ajuste o tamanho mximo, se quiser. A linha resultante dever se parecer com isto:
password required pam_unix.so nullok obscure min=6 max=11 md5

Se planeja proteger o su, faa isto de forma que somente algumas pessoas possam us-lo para se tornar o usurio root em seu sistema, voc precisar adicionar um novo grupo chamado wheel em seu sistema (que o mtodo mais limpo, pois nenhum arquivo tem tal permisso deste grupo ainda). adicione neste grupo o root e outros usurios que devem ter permisso de su para se tornar root. Ento adicione a seguinte linha no /etc/pam.d/su:
auth requisite pam_wheel.so group=wheel debug

Isto assegura que somente algumas pessoas do grupo wheel podero usar su para se tornar o usurio root. Outros usurios no podero ser capazes de se tornar root. De fato eles obtero uma mensagem de acesso negado ao tentarem se tornar root. Se deseja que somente alguns usurios se autentiquem em um servio do PAM, muito fcil fazer isto usando arquivos onde os usurios que tem permisso de fazer login (ou no) so armazenados. Imagine que voc somente deseja permitir o usurio ref a fazer o login usando ssh. Assim, coloque o usurio no arquivo /etc/sshusers-allowed e escreva o seguinte no arquivo /etc/pam.d/ssh:
auth required pam_listfile.so item=user sense=allow file=/etc/sshusers-allowed onerr=fail

Depois crie o arquivo /etc/pam.d/other e entre com as seguintes linhas:


auth auth auth auth account account account password password password session session session required required required required required required required required required required required required required pam_securetty.so pam_unix_auth.so pam_warn.so pam_deny.so pam_unix_acct.so pam_warn.so pam_deny.so pam_unix_passwd.so pam_warn.so pam_deny.so pam_unix_session.so pam_warn.so pam_deny.so

Esta linhas lhe oferecero uma boa congurao padro para todas as aplicaes que suportam PAM (o acesso negado por padro).
7 Esta

dependncia no foi corrigida, no pacote do Debian 3.0. Por favor veja Bug #112965 (http://bugs.debian.org/112965).

Captulo 4. Aps a instalao

34

4.10.2

Limitando o uso de recursos: o arquivo limits.conf

Voc realmente dever dar uma olhada sria neste arquivo. Aqui voc poder limitar os recursos usados pelos usurios. Se utilizar PAM, o arquivo /etc/limits.conf ser ignorado e dever usar o /etc/security/limits.conf ao invs deste. Se voc no restringir o uso de recursos, qualquer usurio com um interpretador de comandos vlido em seu sistema (ou at mesmo um intruso que comprometeu o sistema atravs de um servio) pode usar a quantidade de CPU, memria, pilhas, etc. que o sistema puder fornecer. Este problema de exausto de recursos pode somente ser corrigido com o uso de PAM. Note que l existe um mtodo para adicionar limitao de recursos para alguns interpretadores de comandos (por exemplo, o bash possui ulimit, veja bash(1)), mas nem todos os interpretadores oferecem as mesmas limitaes e tambm o usurio pode mudar seu shell (veja chsh(1)). Ento melhor colocar as limitaes nos mdulos do PAM. Mais detalhes podem ser lidos em: artigo de congurao do PAM (http://www.samag.com/documents/s=1161/sam0009a/0009a.htm). Tornando o Linux mais seguro passo a passo (http://seifried.org/security/os/linux/ 20020324-securing-linux-step-by-step.html) na seo Limitando a viso dos usurios. LASG (http://seifried.org/lasg/users/) na seo Limitando e monitorando usurios. FIXME: Colocar um belo limits.conf acima deste local

4.10.3

Aes de login do usurio: edite o /etc/login.defs

O prximo passo editar a congurao e ao bsica que ser feita aps o login do usurio. Note que este arquivo no parte da congurao do PAM, um arquivo de congurao lido pelos programas login e su, assim no faz sentido congur-lo para casos onde nem um dos programas so indiretamente chamados (o programa getty que executado atravs do console e requer login e senha, executa o login).
FAIL_DELAY 10

Esta varivel deve se ajustada para um valor alto para tornar difcil ataques brute force atravs de tentativas de logon no terminal. Caso uma senha incorreta seja digitada, o possvel atacante (ou o usurio normal!) ter que aguardar 10 segundos para obter um novo aviso de login, que bastante tempo quando se utiliza programas automatizados para esta tarefa.
FAILLOG_ENAB yes

Se ativar esta varivel, as falhas nas tentativas de login sero registradas. importante mant-las para pegar algum que tente fazer um ataque brute force.
LOG_UNKFAIL_ENAB yes

Se ajustar a varivel FAILLOG_ENAB para yes, ento voc dever tambm ajustar esta varivel para yes. Isto gravar nomes de usurios desconhecidos caso o login falhar. Se zer isto, tenha certeza que os logs tenham permisses corretas (640 por exemplo, com a congurao apropriada de grupo tal como adm), pois os usurios podem acidentalmente entrar com suas senhas como se fossem nomes de usurios e voc no desejar que outros as vejam.
SYSLOG_SU_ENAB yes

Isto somente permite que sejam registradas tentativas do uso de su no syslog. Muito importante em mquinas em produo, mas note que isto pode criar tambm problemas de privacidade.
SYSLOG_SG_ENAB yes

O mesmo que SYSLOG_SU_ENAB mas se aplica ao programa sg.


MD5_CRYPT_ENAB yes

Como mencionado acima, as senhas em MD5 reduzem fortemente o problema de ataques de dicionrio, pois voc poder usar senhas grandes. Se estiver usando a verso slink, leia os documentos sobre MD5 antes de ativar esta opo. Caso contrrio, isto denido no PAM.
PASS_MAX_LEN 50

Caso senhas MD5 sejam ativadas em sua congurao do PAM, ento esta varivel dever ter o mesmo valor da que usada l.

Captulo 4. Aps a instalao

35

4.10.4

Restringindo o ftp: editando o /etc/ftpusers

O arquivo /etc/ftpusers contm uma lista de usurios que no podem logar no sistema usando ftp. Somente use este arquivo se voc realmente deseja permitir ftp (que no recomendado em geral, pois utiliza autenticao de senhas em texto plano). Caso seu daemon suporta PAM, voc poder tambm us-lo para permitir e bloquear usurios para certos servios. FIXME (BUG): m bug que o arquivo ftpusers padro no Debian no inclua todos os usurios administrativos (do base-passwd).

4.10.5

Usando su

Se voc realmente precisa que os usurios se tornem superusurio em seu sistema, e.g. para instalar pacotes ou adicionar usurios, voc pode usar o comando su para alterar sua identidade. Voc dever tentar evitar se logar como usurio root, usando o su ao invs disto. Atualmente a melhor soluo remover o su e utilizar os mecanismos do sudo que tem uma lgica mais geral e mais caractersticas que o su. No entanto, o su mais comum e usado em muitos outros sistemas Unix.

4.10.6

Usando o sudo

O programa sudo permite ao usurio executar comandos denidos com outra identidade de usurio, at mesmo como usurio root. Se o usurio for adicionado ao arquivo /etc/sudoers e se autenticar corretamente, ele ser capaz de executar comandos que foram denidos no /etc/sudoers. Violaes, tais com senhas incorretas ou tentativa de executar um programa que no tem permisses, so registradas e enviadas para o usurio root.

4.10.7

Desativao de acesso administrativo remoto

Voc dever modicar o /etc/security/access.conf para bloquear logins remotos para contas administrativas. Desta forma, usurios precisaro executar o su (ou sudo) para usar qualquer poder administrativo e traos para auditoria apropriada sempre sero gerados. Voc precisar adicionar a seguinte linha no arquivo /etc/security/access.conf, o arquivo padro de congurao do Debian tem a linha de exemplo comentada:
-:wheel:ALL EXCEPT LOCAL

Lembre-se de ativar o mdulo pam_access para cada servio (ou congurao padro) em /etc/pam.d/ se quiser que suas alteraes em /etc/security/access.conf sejam mantidas.

4.10.8

Restringindo acessos de usurios

Algumas vezes voc deve pensar que precisa ter seus usurios criados em seu sistema local para oferecer acesso a um determinado servio (servio de mensagens pop3 ou ftp). Antes de fazer isto, primeiro lembre-se que a implementao do PAM no Debian GNU/Linux lhe permite validar usurios em uma grande variedade de servios de diretrio externos (radius, ldap, etc.) atravs dos pacote libpam. Caso os usurios precisem ser criados e o sistema poder ser acessado remotamente, tenha em mente que os usurios podero ser capazes de se logar no sistema. Voc poder corrigir isto dando aos usurios um shell nulo (/dev/null) (ele no precisar estar listado no arquivo /etc/shells). Se deseja permitir aos usurios acessar o sistema mas com seus movimentos limitados, voc poder usar o /bin/rbash, que equivalente a adicionar a opo -r ao bash (RESTRICTED SHELL veja bash(1)). Por favor observe que at mesmo em um shell restrito, um usurio pode acessar um programa interativo (que pode permitir a execuo de um subshell) e poder pular as limitaes do shell. O Debian atualmente fornece em sua verso instvel (e poder ser includa em uma futura verso estvel) do mdulo pam_chroot (no pacote libpam-chroot). Uma alternativa a ele o chroot o servio que fornece log remoto (ssh, telnet).8 Se voc deseja restringir quando seus usurios podem acessar o sistema, voc dever personalizar o /etc/security /access.conf a suas necessidades. Informaes sobre como fazer chroot dos usurios acessando o sistema atravs do ssh descrito em Ambiente chroot para SSH on page 137.
8 Libpam-chroot

ainda no foi ainda testado, ele funciona com o login mas ele no fcil de ser congurado para funcionar com outros programas

Captulo 4. Aps a instalao

36

4.10.9

Auditoria do usurio

Se voc realmente paranico, pode querer adicionar uma congurao em todo o sistema para auditar o que os usurios esto fazendo no sistema. Esta seo mostra algumas dicas de utilitrios diversos que podero ser usados.

Auditoria de entrada e sada com o script Voc poder usar o comando script para auditar ambos o que os usurios executam e quais so os resultados destes comandos.No possvel denir o script como um interpretador de comandos (at mesmo se ele for adicionado ao arquivo /etc/shells). Mas voc poder ter o arquivo de inicializao do shell executando o seguinte:
umask 077 exec script -q -a "/var/log/sessions/$USER"

claro, se voc zer isto de forma que afete todo o sistema, signica que o shell no continuar lendo arquivos de conguraes pessoais (pois ele ser substitudo pelo script). Uma alternativa fazer isto nos arquivos de inicializao do usurio (mas ento o usurio poder remov-la, veja os comentrios sobre isto abaixo) Voc tambm precisa ajustar os arquivos no diretrio de auditoria (no exemplo /var/log/sessions/) assim os usurios podero gravar para ele, mas no podero remover o arquivo. Isto pode ser feito, por exemplo, criando os arquivos de seo de usurio antecipadamente e denindo a opo append-only usando o chattr. Uma alternativa til para administradores de sistemas, que inclui informaes sobre data, pode ser:
umask 077 exec script -q -a "/var/log/sessions/$USER-date +%Y%m%d"

Usando o arquivo de histrico do interpretador de comandos Se deseja rever o que o usurio est digitando no seu shell (mas no se sabe qual seu resultado) voc poder congurar um /etc/profile para todo o sistema que congura o ambiente de forma que todos os comandos so salvos em um arquivo de histrico. A congurao de todo o sistema precisa ser feita de forma que os usurios no possam remover as capacidades de auditoria em seu shell. Isto muitas vezes especca de cada shell assim tenha certeza que todos os usurios esto utilizando um shell que suporte isto. Por exemplo, para o bash, o /etc/profile dever ser ajustado da seguinte forma 9 :
HISTFILE=~/.bash_history HISTSIZE=10000 HISTFILESIZE=999999 # Dont let the users enter commands that are ignored # in the history file HISTIGNORE="" HISTCONTROL="" readonly HISTFILE readonly HISTSIZE readonly HISTFILESIZE readonly HISTIGNORE readonly HISTCONTROL export HISTFILE HISTSIZE HISTFILESIZE HISTIGNORE HISTCONTROL

Para isto funcionar, o usurio poder somente adicionar dados ao .bash_history. Voc tambm precisar ajustar a opo append-only usando o programa chattr para o .bash_history de todos os usurios. 10 . Note que voc poder introduzir as conguraes acima no arquivo .profile do usurio. Mas ento voc precisar ajustar permisses adequadamente de tal forma que isto prevenir que o usurio modique este arquivo. Isto inclui: ter os diretrios home dos usurios no pertencendo ao usurio (pois ele seria capaz de remover o arquivo) mas da mesma forma permitir ler o arquivo de congurao .profile e gravar no .bash_history. Seria bom ajustar a opo imutvel (usando tambm o chattr) tambm para o .profile se zer desta forma.
9 A denio de HISTSIZE para um nmero elevado poder causar problemas em algumas circunstncias, pois o histrico mantido em memria para cada sesso do usurio. Voc estar mais seguro caso dena esta varivel para um valor sucientemente grande e realizar o backup de arquivos de histrico de usurios (se precisar do histrico de todos os usurios por alguma razo). 10 Sem a opo append-only, os usurios podero ser capazes de apagar o contedo do arquivo de histrico executando > .bash_history

Captulo 4. Aps a instalao Auditoria completa do usurio com ferramentas de contabilizao

37

O exemplo anterior um mtodo simples de se congurar a auditoria do usurio, mas pode no ser til para sistemas complexos ou para este em que os usurios no precisam executar um shell (de forma exclusiva). Neste caso, voc precisar dar uma olhada no pacote acct, que contm ferramentas de contabilizao. Estes utilitrios registraro todos os comandos executados pelos usurios ou por processos no sistema, ao custo de espao em disco. Quando ativar a contabilizao, todas as informaes sobre processos e usurios so mantidas sob /var/account/, mais especicamente em pacct. O pacote de contabilizao inclui algumas ferramentas como (sa, ac e lastcomm) para realizar a anlise destes dados. Outros mtodos de auditoria do usurio Se voc for completamente paranico e deseja auditar cada comando do usurio, voc dever pegar o cdigo fonte do bash, edit-lo e assim ter ele enviando tudo o que o usurio digitar para outro arquivo. Ou ter o pacote ttysnoop monitorando constantemente qualquer novo ttys 11 e gravar sua sada para um arquivo. Outro programa til o snoopy (veja tambm the project page (http://sourceforge.net/projects/snoopylogger/)) que um programa transparente ao usurio que trabalha em cima de uma biblioteca fornecendo um gancho nas chamadas execve(), qualquer comando executado registrado no syslogd usando a facilidade authpriv (normalmente armazenada em /var/log/auth.log).

4.10.10

Revisando pers de usurios

Se deseja ver o que os usurios esto atualmente fazendo quando entram no sistema voc poder usar o banco de dados wtmp que inclui todas as informaes de login. Este arquivo pode ser processado por vrios utilitrios, entre eles o sac que pode enviar como sada um perl sobre cada usurio mostrando o intervalo de tempo que eles geralmente entram no sistema. No caso de ter a contabilizao ativada, voc tambm poder usar as ferramentas fornecidas por ele para ser capaz de determinar quando os usurios acessam o sistema e o que eles executam.

4.10.11

Ajustando a umask dos usurios

Dependendo de sua poltica de usurios voc pode querer alterar como as informaes so compartilhadas entre os usurios, o que signica, o que cada permisso padro permite. Esta alterao feita denindo uma congurao apropriada de umask para todos os usurios. Voc poder alterar a congurao de UMASK no arquivos /etc/limits.conf, /etc/profile, /etc/csh.cshrc, /etc/csh.login, /etc/zshrc e provavelmente em alguns outros (dependendo do tipo de shell que tem instalado em seu sistema). De todos estes, o ltimo executado tem preferncia. A ordem : limits.conf do PAM, o padro de congurao do sistema para o shell do usurio, o shell do usurio(seu ~/.profile, ~/.bash_profile. . . ) A congurao padro de umask no Debian 022 isto signica que o arquivo (e diretrios) podem ser lidos e acessados pelo grupo de usurio e por outros usurios no sistema. Se isto muito permissivo para o sistema voc ter que ajustar a congurao de umask para todos os shells (e para o PAM). No se esquea de modicar os arquivos sob /etc/skel/ pois estes se tornaro os novos padres do sistema quando criados pelo comando adduser. Note, no entanto que os usurios podem modicar sua prpria congurao de umask se desejarem, torn-la mais permissiva ou mais restritiva.

4.10.12

Limitando o que os usurios podem ver/acessar

FIXME: necessrio mais contedo. Falar das consequncias de alterar as permisses de pacotes quando atualiza o sistema (e administrao desta parania dever ser atravs de chroot em seus usurios). Se voc precisa garantir acesso dos seus usurios ao sistema usando um interpretador de comandos, pense sobre isto muito cuidadosamente. Um usurio pode por padro, a no ser que esteja em um ambiente severamente restrito (como uma jaula chroot), obter muitas informaes sobre o seu sistema, incluindo: alguns arquivos de congurao em /etc. No entanto, as permisses padres do Debian para alguns arquivos sensveis (que podem conter senhas, por exemplo), no tero acesso devido a informaes crticas. Para ver que arquivos
11 Ttys

so criados para logins locais e logins remotos durante sees do ssh e telnet

Captulo 4. Aps a instalao

38

so somente acessveis pelo usurio root, por exemplo, execute como superusurio o comando find /etc -type f -a -perm 600 -a -uid 0. voc instalou pacote, ou vendo no banco de dados de pacotes, ou no diretrio /usr/share/doc ou adivinhando olhando nos binrios e bibliotecas instalados em seu sistema. alguns arquivos de registro em /var/log. Tambm note que alguns arquivos de registro somente so acessveis aos usurios root e grupo adm (tente executar find /var/log -type f -a -perm 640) e alguns so somente disponveis ao usurio root (tente executar find /var/log -type f -a -perm 600 -a -uid 0). O que um usurio pode ver em seu sistema? Provavelmente muitas coisas, tente isto (faa uma breve parada):
find / -type f -a -perm +006 2>/dev/null find / -type d -a -perm +007 2>/dev/null

A sada mostra a lista de arquivos que um usurio pode ver e os diretrios que ele tem acesso. Limitando acesso a outras informaes de usurios Se voc ainda permite acesso a shell para os usurios voc dever querer limitar que informaes eles podem ver de outros usurios. Os usurios com acesso a shell tm a tendncia de criar um nmero de arquivos dentro do seu diretrio pessoal: caixas de correio, documentos pessoais, conguraes de aplicativos do X/GNOME/KDE. . . No Debian, cada usurio criado com um grupo associado e nunca dois usurios pertencero ao mesmo grupo. Este o comportamento padro: quando uma conta de usurio criada, um grupo com o mesmo nome tambm criado, e o usurio adicionado a ele. Isto evita o conceito do grupo users compartilhado, que torna mais difcil aos usurios ocultarem informaes de outros. No entanto, os diretrios de usurios em $HOME so criados com permisses 0755 (lido pelo grupo e por todos). As permisses de grupo no so crticas pois somente o usurio pertence ao grupo, no entanto as permisses de todos os outros pode (ou no) ser um problema dependendo de sua poltica local. Voc poder alterar este comportamento, assim a criao de usurios oferecer uma permisso diferente em $HOME. Para alterar o comportamento para novos usurios quando forem criados, altere DIR_MODE no arquivo de congurao /etc /adduser.conf para 0750 (sem acesso de leitura para todos). Os usurios ainda podero compartilhar informaes mas no diretamente em seus diretrios $HOME, a no ser que eles mudem suas permisses. Note que a desativao de leitura para todos em diretrios de usurios evitar que os usurios criem suas pginas pessoais no diretrio ~/public_html, pois o servidor web no ser capaz de ler um componente no path - seu diretrio $HOME. Se deseja permitir aos usurios publicar pginas HTML em seus diretrios ~/public_html,ento altere DIR_MODE para 0751. Isto permitir o servidor web acessar o diretrio nal public_html (que ter por si prprio a permisso) e oferecer o contedo publicado pelos usurios. claro, ns estamos somente falando aqui sobre uma congurao padro; os usurios podem geralmente ajustar os modos de seus prprios arquivos completamente a seu gosto, ou voc poder manter o contedo que tem a inteno de publicao na web em um diretrio separado que no seja um subdiretrio do diretrio de usurio $HOME.

4.10.13

Gerando senhas de usurios

Existem muitos casos quando um administrador precisa criar muitas contas de acesso de usurios e fornece senhas a a todas elas. claro, o administrador poderia somente ajustar a senha para ser a mesma da conta de usurio, mas isto no seria uma atitude muito segura. Uma alternativa melhor gerar um programa gerador de senhas. O Debian oferece os pacotes makepasswd, apg e pwgen que contm programas (o nome do programa o mesmo do pacote) que podem ser usados para este propsito. O makepasswd gerar senhas aleatrias reais com uma nfase em segurana at mesmo na pronunciabilidade, enquanto o pwgen tentar criar senhas pronunciveis ( claro que isto depender de sua lngua me). O apg tem algortmos para oferecer ambos (existe uma verso cliente/servidor deste programa mas no est includa no pacote do Debian). O passwd no permite que uma senha seja denida de forma interativa (pois ele utiliza acesso direto a tty). Se deseja alterar senhas quando cria um grande nmero de usurios, voc poder cri-las usando o adduser com a opo --disabled-login e ento usar o usermod ou chpasswd 12 (ambos vm no pacote passwd assim voc j os ter instalados). Se desejar usar um arquivo com todas as informaes dos usurios como um processo no interativo, ser melhor usar o newusers.
12 O chpasswd no trabalha com a gerao de senhas em md5, assim ele precisa ser informado que forma de criptograa das senhas ser utilizado, com a opo -e.

Captulo 4. Aps a instalao

39

4.10.14

Vericando senhas de usurios

Senhas de usurios podem algumas vezes ser o ponto vulnervel na segurana de um determinado sistema. Isto devido ao fato de que alguns usurios escolherem senhas fracas para suas contas (e quanto mais deles tm acesso ao sistema, maiores as chances disto acontecer). At mesmo se voc estabelecer checagens com o mdulo cracklib do PAM e limitaes de senhas como descrito em Autenticao do Usurio: PAM on page 32 os usurios ainda sero capazes de usar senhas simples. Pois o acesso a usurios remotos pode incluir acesso a um shell remoto (felizmente sobre ssh) tornando possvel deduzir a senha mais difcil para invasores remotos. Especialmente se eles so capazes de coletar informaes importantes, tais como nomes de usurios e at dos prprios arquivos passwd e shadow. Um administrador de sistema dever, dado um grande nmero de usurios, vericar se a senha que eles tm so consistentes com a poltica local de segurana. Como vericar? Tente quebr-las assim como um invasor faria se ele tivesse acesso ao hash de senhas (o arquivo /etc/shadow). Um administrador poderia usar o john ou crack (ambos crackers de senhas fora bruta) juntos com um dicionrio apropriado para procurar senhas de usurios e ter um plano de ao quando uma senha fraca for detectada. Voc pode procurar por pacote Debian que contm lista de palavras de dicionrio usando apt-cache search wordlist ou visitando os sites clssicos de pesquisas de dicionrio tais como ftp://ftp.ox.ac.uk/pub/wordlists ou ftp: //ftp.cerias.purdue.edu/pub/dict.

4.10.15

Logout de usurios ociosos

Usurios inativos geralmente so um risco de segurana, um usurio pode estar inativo porque saiu para comer ou porque ocorreu um problema com sua conexo remota, que no foi restabelecida. Por alguma razo, os usurios inativos podem levar a um comprometimento do sistema: porque o console do usurio pode ser destravado e pode ser acessado por um intruso. porque um intruso pode ser capaz de reconectar a si mesmo a uma conexo de rede fechada e enviar comandos ao shell remoto (isto muito fcil de ser feito caso o shell remoto no seja criptografado como no caso do telnet). Alguns sistemas remotos podem ter sido comprometidos atravs de uma screen inativa (ou desconectada). A desconexo automtica de usurios idle geralmente parte da poltica local de segurana que deve ser forada. Existem vrias formas de se fazer isto: Caso o interpretador de comandos do usurio seja o bash, o administrador do sistema poder denir um valor para a varivel TMOUT (veja bash(1)) que far o shell deslogar os usurios inativos automaticamente. Note que ela dever ser denida com a opo -o ou os usurios sero capazes de alter-la (ou desativ-la). Instale o timeoutd e congure /etc/timeouts de acordo com sua poltica de segurana local. O daemon observar usurios inativos e respectivamente far o logout de suas sees. Instale o autolog e o congure para remover usurios inativos. Os daemons timeoutd ou autolog so os mtodos preferidos, pois, aps tudo, os usurios podem alterar seu shell padro ou podem alterar para um outro shell que no possua tais controles.

4.11

Usando os tcpwrappers

Os TCP wrappers foram desenvolvidos quando no existiam ltros de pacotes disponveis e eram necessrios controle de acesso. Mesmo assim, eles ainda so muito interessantes e teis. Com os TCP wrappers possvel permitir ou negar um servio para uma mquina ou domnio e denir uma regra padro tambm para permitir ou negar (tudo feito a nvel de aplicao). Se desejar mais informaes, d uma olhada em hosts_access(5). Muitos dos servios instalados no Debian so executados de duas formas: carregados atravs do servio tcpwrappers (tcpd) compilados com o suporte a libwrapper embutido

Captulo 4. Aps a instalao

40

De um lado, para servios congurados no /etc/inetd.conf (isto inclui o telnet, ftp, netbios, swat e finger) voc ver que o arquivo de congurao executa primeiro o /usr/sbin/tcpd. De outro lado, at mesmo se um servio no for carregado pelo superdaemon inetd, o suporte a regras do tcp wrappers pode ser compilado nele. Os servios compilados com o tcp wrappers no Debian incluem o ssh, portmap, in.talk, rpc.statd, rpc.mountd, gdm, oaf (o daemon ativador do GNOME), nessus e muitos outros. Para ver que pacotes usam o tcpwrappers, execute:
$ apt-cache showpkg libwrap0 | egrep ^[[:space:]] | sort -u | \ sed s/,libwrap0$//;s/^[[:space:]]\+//

Leve isto em conta quando executar o tcpdchk (um vericar de sintaxe e regras de arquivos muito til que vem com o TCP wrappers). Quando adicionar servios stand-alone (que so ligados diretamente com a biblioteca wrapper) nos arquivos hosts.deny e hosts.allow, o tcpdchk dever te alertar que no capaz de encontrar o servio mencionado pois ele somente procura por eles no arquivo /etc/inetd.conf (a pgina de manual no totalmente precisa com relao a este ponto). Agora, vem uma pequena dica, e provavelmente o menor sistema de deteco de intruso disponvel. Em geral, voc dever ter uma poltica de rewall decente como primeira linha e o tcp wrappers como segunda linha de defesa. Um pequeno truque congurar um comando SPAWN 13 , no arquivo /etc/hosts.deny que envia uma mensagem para o root assim que for tentado acesso a um servio negado:
ALL: ALL: SPAWN ( \ echo -e "\n\ TCP Wrappers\: Connection refused\n\ By\: $(uname -n)\n\ Process\: %d (pid %p)\n\ User\: %u\n\ Host\: %c\n\ Date\: $(date)\n\ " | /usr/bin/mail -s "Conexo bloqueada para %d" root) &

Cuidado: O exemplo impresso acima aberto a um ataque DoS fazendo muitas conexes em um curto perodo de tempo. Muitos e-mails signicam muito I/O de arquivos pelo envio de poucos pacotes.

4.12

A importncia dos logs e alertas

fcil ver que o tratamento de mensagens de logs e alertas um assunto importante em um sistema seguro. Suponha que um sistema est perfeitamente congurado e 99% seguro. Se a probabilidade de 1% do ataque ocorrer e no existir medidas de segurana no lugar, para primeiro detectar e segundo disparar alarmes, o sistema no estar bem seguro. O Debian GNU/Linux fornece algumas ferramentas que fazem anlise de logs, mais notavelmente swatch, 14 logcheck ou log-analysis (todos precisaro de algumas personalizaes para que coisas desnecessrias sejam removidas do relatrio). Tambm pode ser til, se o sistema estiver visivelmente prximo, ter as mensagens do sistema mostradas em um console virtual. Isto til, pois voc pode (atravs de certa distncia) ver se o sistema est se comportando adequadamente. O /etc/syslog.conf do Debian vem com uma congurao padro comentada; para ativ-la, descomente as linhas e reinicie o syslogd (/etc/init.d/syslogd restart):
daemon,mail.*;\ news.=crit;news.=err;news.=notice;\ *.=debug;*.=info;\ /dev/tty8 *.=notice;*.=warn

Para tornar os logs coloridos, voc dever dar uma olhada nos pacotes colorize, ccze ou glark. Existe muita coisa sobre anlise de logs que no poder ser coberta aqui, assim uma boa fonte de informaes pode ser o site Log Analysis (http: //www.loganalysis.org/). Em qualquer caso, at mesmo ferramentas automatizadas no batem a melhor ferramenta de anlise: seu crebro.

4.12.1

Usando e personalizando o logcheck

O pacote logcheck no Debian dividido em trs pacotes: logcheck (o programa principal), logcheck-database (um banco de dados de expresses regulares de um programa) e logtail (mostra linhas de logs que ainda no foram lidas). O padro do Debian (em /etc/cron.d/logcheck) executar o logcheck a cada hora e aps reinicializaes.
13 tenha 14 existe

certeza de usar maisculas, pois spawn no executar fork um artigo muito bom, escrito por Lance Spitzner (http://www.spitzner.net/swatch.html)

Captulo 4. Aps a instalao

41

Esta ferramenta pode ser muito til se personalizada adequadamente para alertar ao administrador de eventos estranhos. O Logcheck pode ser totalmente personalizado assim enviar mensagens baseadas em eventos encontrados nos logs e passveis de ateno. A instalao padro inclui pers para eventos ignorados e violaes de polticas para trs diferentes conguraes (workstation, server e paranoid). O pacote do Debian inclui um arquivo de congurao /etc/logcheck/logcheck.conf, instalado pelo programa, que dene que usurio receber as vericaes. Ele tambm oferece um mtodo para os pacotes que fornecem servios para implementar novas polticas nos diretrios: /etc/logcheck/cracking.d/_packagename_, /etc/logcheck /violations.d/_packagename_, /etc/logcheck/violations.ignore.d/_packagename_, /etc/logcheck /ignore.d.paranoid/_packagename_, /etc/logcheck/ignore.d.server/_packagename_ e /etc/logcheck /ignore.d.workstation/_packagename_. No entanto, so poucos os pacotes que fazem isto. Se tiver uma poltica que pode ser til para outros, por favor envie-a como relatrio de falha para o pacote apropriado (como um bug wishlist). Para mais informaes, leia /usr/share/doc/logcheck/README.Debian. O melhor mtodo de congurar o logcheck editar seu arquivo principal de congurao /etc/logcheck /logcheck.conf aps a instalao. Altere o usurio padro (root) para quem o relatrio dever ser enviado. Voc dever ajustar o nvel de relatrio l tambm. O pacote logcheck-database possui trs nveis de relatrio para aumentar o detalhamento: workstation, server e paranoid. server (servidor) o nvel padro, paranoid (paranico) somente recomendado para mquinas de alta segurana executando poucos servios quanto forem possveis e workstation (estao de trabalho) para mquinas relativamente no crticas. Se desejar adicionar novos arquivos de logs, adicione-os em /etc /logcheck/logcheck.logfiles. Ele ajustado para a instalao padro do syslog. Assim que isto for feito, voc dever olhar se os e-mails so enviados, durante os primeiros dias/semanas/meses. Se voc achar que esto sendo enviadas mensagens que no deseja receber, apenas adicione as expresses regulares (veja regex(7) e egrep(1)) que correspondem a estas mensagens em /etc/logcheck/ignore.d.reportlevel/local. tente conferir com toda a linha de log. Detalhes sobre como escrever regras esto explicados em /usr/share/doc /logcheck-database/README.logcheck-database.gz. um processo de ajuste no constante; assim que as mensagens que so enviadas so sempre importantes, voc dever considerar este tunning nalizado. Note que se o logcheck no encontrar nada importante em seu sistema, ele no enviar um e-mail para voc mesmo se ele for executado (assim se voc obtiver somente um e-mail por semana, considere-se uma pessoa de sorte).

4.12.2

Congurando para onde os alertas so enviados

O Debian vem com uma congurao padro do syslog (em /etc/syslog.conf) que registra mensagens em arquivos apropriados dependendo da facilidade do sistema. Voc dever estar familiarizado com isto; d uma olhada no arquivo syslog.conf e na documentao caso no estiver registrando. Se voc tem a inteno de manter um sistema seguro voc dever se atentar aonde as mensagens de log so enviadas, assim elas no passaro desapercebidas. Por exemplo, o envio de mensagens para o console tambm uma congurao interessante para muitos sistemas a nvel de produo. Mas para muitos do sistemas tambm importante adicionar uma nova mquina que servir de servidor de logs (i.e. ela receber os logs de todos os outros sistemas). Os e-mails enviados para o root tambm devero ser considerados, muitos controles de segurana (como o snort) enviam alertas para a caixa de correios do root. Esta caixa de correios normalmente aponta para o primeiro usurio criado no sistema (verique no /etc/aliases). Tenha ateno de enviar as mensagens do root para algum lugar onde sejam lidas (ou localmente ou remotamente). Existem outras contas e aliases em seu sistema. Em um sistema pequeno, provavelmente o mtodo mais simples de ter certeza que todos estes aliases apontam para a senha de root, e aquele e-mail do root redirecionado para a caixa de mensagens pessoal do administrador do sistema. FIXME: seria interessante em falar como um sistema Debian pode enviar/receber traps SNMP relacionado a problemas de segurana (jfs). Checar: snmptraglogd, snmp e o snmpd.

4.12.3

Usando um servidor de logs

Um servidor de logs uma mquina que coleta dados do syslog remotamente atravs da rede. Se uma de suas mquinas for comprometida, o intruso no ser capaz de cobrir seus rastros, a no ser que ataque tambm o servidor de logs. Assim, esta mquina dever estar especialmente segura. Fazer uma mquina de loghost simples. Apenas inicie o syslogd com a opo syslogd -r e um novo servidor de logs nasce. Para tornar isto permanentemente na Debian, edite o arquivo /etc /init.d/sysklogd e adicione a linha
SYSLOGD=""

to

Captulo 4. Aps a instalao


SYSLOGD="-r"

42

Em seguida, congure as outras mquinas para enviar dados para o servidor de logs. Adicione uma entrada como a seguinte no arquivo /etc/syslog.conf:
facility.level @your_loghost

Veja a documentao sobre o que pode ser usado no lugar de facility e level (eles no devem ser usados na congurao que foi mostrada). Se quiser registrar tudo remotamente, apenas escreva:
*.* @your_loghost

em seu arquivo syslog.conf. O log remoto, assim como o local, a melhor soluo (o intruso pode presumir que cobriu seus rastros aps apagar os arquivos de log locais). Veja as pginas de manual syslog(3), syslogd(8) e syslog.conf(5) para informaes adicionais.

4.12.4

Permisses dos arquivos de log

No s importante decidir como os alertas so usados, mas tambm quem tem acesso a leitura/modicao dos arquivos de histrico (caso no estiver usando um servidor de logs remoto). No difcil alterar ou desativar os alertas de segurana em um evento de intruso. Voc tambm dever levar em conta que os arquivos de histrico podem revelar muitas informaes sobre o sistema para um intruso caso ele tenha acesso a eles. Algumas permisses de arquivos de log no so ideais aps a instalao (mas claro, isto depende da poltica de segurana local do sistema). Primeiro, os arquivos /var/log/lastlog e /var/log/faillog no precisam ser lidos por usurios normais. No arquivo lastlog voc pode ver quem entrou recentemente no sistema e no arquivo faillog ter um resumo de logins que falharam. O autor recomenda fazer um chmod 660 para ambos. De uma breve olhada em seus arquivos de log e decida cuidadosamente que arquivos de logs devero se tornar legveis para um usurio com um UID diferente de 0 e um grupo que no sejam adm ou root. Voc dever facilmente vericar isto em seu sistema com:
# find /var/log -type f -exec ls -l {} \; | cut -c 17-35 |sort -u (procura que usurios os arquivos em /var/log pertencem) # find /var/log -type f -exec ls -l {} \; | cut -c 26-34 |sort -u (procura que grupos os arquivos em /var/log pertencem) # find /var/log -perm +004 (procura que arquivos so lidos por qualquer usurio) # find /var/log \! -group root \! -group adm -exec ls -ld {} \; (procura por arquivos que no pertencem ao grupo root ou adm)

Para personalizar a forma que os arquivos de log so criados, voc provavelmente ter que personalizar o programa que os gera. Se os arquivos de log forem rotacionados, no entanto, voc poder personalizar o comportamento do rotacionamento e da criao.

4.13

Adicionando patches no kernel

O Debian GNU/Linux oferece alguns dos patches para o kernel do Linux que aumentam sua segurana. Estes incluem: Deteco de Intruso no Linux (no pacote lids-2.2.19), por Huagang Xie e Philippe Biondi. Este patch do kernel torna o processo de fortalecimento do seu sistema Linux uma tarefa fcil permitindo que voc restrinja, oculte e proteja processos, at mesmo do usurio root. Ele tambm permite que proteja ou oculte certos arquivos para que at mesmo o root no possa modic-los. Adicionalmente, voc poder tambm denir capacidades para certos processos. Um mximo para o administrador de sistema paranico. Pgina web http://www.lids.org Listas de Controle de Acessos POSIX (ACLs) para Linux (no pacote kernel-patch-acl). Este patch de kernel adiciona listas de controle de acesso, um mtodo avanado de restringir acesso a arquivos. Ele permite a voc um no controle de acesso a arquivos e diretrios. Este patch foi adicionado ao kernel 2.6. Pgina do projeto: http://acl.bestbits.at/ Linux Trustees (no pacote trustees). Este patch adiciona um gerenciamento avanado decente de permisses do sistema para o kernel do Linux. Objetos especiais (chamados trustees) so ligados a cada arquivo ou diretrio e so armazenados na memria do kernel, permitindo pesquisa rpida de todas as permisses. Homepage: http: //trustees.sourceforge.net/

Captulo 4. Aps a instalao

43

NSA Enhanced Linux (no pacote selinux tambm disponvel de the developers website (http://www.coker. com.au/selinux/)) kernel-patch-2.2.18-openwall, por Solar Designer. Este contm um conjunto til de restries do kernel, como links restritos, FIFOs em /tmp, um sistema de arquivos /proc restrito, manipulao especial de descritores de arquivos, rea no executvel de pilha do usurio e outras. Pgina: http://www.openwall.com/linux/ kernel-patch-2.4-grsecurity: O patch do Grsecurity 15 implementa Controle de Acesso Mandatrio, oferece proteo contra estouro de buffer, ACLs, network randomness (para tornar OS ngerprint mais difcil) e muito mais caractersticas (http://www.grsecurity.net/features.php). kernel-patch-2.2.19-harden. FIXME Adicionar contedo. suporte a kernel IPSEC (no pacote kernel-patch-freeswan). Se deseja usar o protocolo IPSec com o Linux, voc precisar deste patch. Voc poder criar VPNs com este muito facilmente, at em mquinas Windows, pois o IPsec um padro comum. As capacidades do IPsec foram adicionadas ao kernel de desenvolvimento 2.5, assim esta caracterstica estar presente por padro em um kernel 2.6 futuro. Pgina: http://www.freeswan.org. FIXME: Os ltimos kernels 2.4 contidos no Debian incluem o backport do cdigo ipsec do kernel 2.5. Comente sobre isto cryptoapi-core-source. Este patch adiciona capacidades de criptograa do kernel do Linux, como embaralhadores e funes digest. Usos tradicionais para estas funes so a criptograa de sistemas de arquivos ou swap. Note que no kernel 2.5.45, funcionalidades parecidas foram adicionadas ao fonte ocial do kernel do Linux, assim possvel que no precise mais deste patch em um kernel 2.6 futuro Nota: este pacote no existe em lanamentos do Debian antes da Sarge (http://www.debian.org/releases/sarge/). Homepage: http://www.kerneli.org/ cryptoloop-source. Este patch lhe permite usar as funes do pacote cryptoapi-core-source para criar sistemas de arquivos criptografados usando o dispositivo de loopback. kernel-patch-int. Este patch tambm adiciona capacidades criptogrcas ao kernel do Linux e foi til com lanamentos do Debian at a Potato. Ele no funciona com a Woody e se voc estiver usando a Sarge ou release mais novo, dever usar um pacote mais recente do cryptoapi-core-source. FIXME: adicionar mais contedo, explicar como estes patches especcos podem ser instalados no Debian usando os pacotes do kernel kernel-2.x.x-patch-XXX. FIXME: Dividir patches que se aplicam somente nos kernels 2.2, patches que se aplicam nos kernels 2.4 e os que funcionam com ambos. No entanto, alguns patches ainda no foram adicionados ainda no Debian. Se sentir que alguns destes devem ser includos, por favor pergunte por ele em Work Needing and Prospective Packages (http://www.debian.org/devel/wnpp/). Alguns destes pacotes so: patch do PaX (http://pageexec.virtualave.net/) patch HAP (http://www.theaimsgroup.com/~hlein/hap-linux/) Patch Stealth (http://www.energymech.net/madcamel/fm/) SubDomain. Uma extenso do kernel feita para oferecer connamento com poucas permisses para programas possivelmente inseguros. Complemento de subdomnio e extenso para controle de acesso nativo. Enquanto similar ao ambiente chroot, ele clama ser de fcil construo e mais exvel que um ambiente chroot. Contexts (ctx) patch. Uma extenso do kernel feita para implementar servidores privados virtuais. parecido com o jail no BSD. Homepage: http://www.immunix.org/subdomain.html UserIPAcct. No um patch realmente relacionado a segurana, mas ele lhe permite criar quotas de trfego por usurio em seu sistema. Voc tambm pode obter estatsticas sobre o trfego de usurio. Homepage: http:// ramses.smeyers.be/useripacct.
15 Note que, dependendo do pacote de fonte do kernel 2.4 que voc usar, voc poder encontrar problemas durante o patch de fontes de kernel. Se este for seu caso, voc precisa usar o kernel vanilla. Voc poder fazer isto com os seguintes passos:

# apt-get install kernel-source-2.4.22 kernel-patch-debian-2.4.22 # tar xjf /usr/src/kernel-source-2.4.22.tar.bz2 # cd kernel-source-2.4.22 # /usr/src/kernel-patches/all/2.4.22/unpatch/debian

Para mais detalhes veja #194225 (http://bugs.debian.org/194225), #199519 (http://bugs.debian. org/199519), #206458 (http://bugs.debian.org/206458), #203759 (http://bugs.debian.org/203759), #204424 (http://bugs.debian.org/204424), #210762 (http://bugs.debian.org/210762), #211213 (http: //bugs.debian.org/211213), e discussion at debian-devel (http://lists.debian.org/debian-devel/2003/ debian-devel-200309/msg01133.html)

Captulo 4. Aps a instalao

44

4.14

Protegendo-se contra estouros de buffer

O estouro de buffer (buffer overow) o nome de um comum ataque a softwares 16 que faz o uso de checagem insuciente de limites (um erro de programao, mais comum na linguagem C) para executar o cdigo de mquina atravs de entrada de programas. Estes ataques, contra programas de servidores que escutam conexes remotamente ou contra softwares locais que garantem altos privilgios aos usurios (setuid ou setgid) podem resultar no comprometimento de qualquer sistema determinado. Existem basicamente quatro mtodos de se proteger contra estouro de buffer: aplicar um patch no kernel para prevenir a execuo da pilha (voc pode usar os patches OpenWall ou Grsecurity) usar uma biblioteca, tal como a libsafe (http://www.research.avayalabs.com/project/libsafe/), para substituir funes vulnerveis e introduzir a checagem apropriada (para informaes sobre como instalar a libsafe leia isto (http://www.Linux-Sec.net/harden/libsafe.uhow2.txt)). corrigir o cdigo fonte usando ferramentas para encontrar fragmentos de onde pode introduzir esta vulnerabilidade. recompilar o cdigo fonte para adicionar checagens apropriadas que previnem buffer overows, usando, por exemplo, StackGuard (http://www.immunix.org/stackguard.html) (que usado pelo Immunix (http://www. immunix.org)) ou o patch Stack Smashing Protector (SSP) (http://www.research.ibm.com/trl/projects/ security/ssp/) para o GCC (que usado pelo Adamantix (http://www.adamantix.org)) O Debian GNU/Linux em seu lanamento 3.0, fornece software para introduzir todos estes mtodos exceto a proteo de compilao do cdigo fonte (mas isto foi requisitado no Bug #213994 (http://bugs.debian.org/213994)) Note que at mesmo se o Debian fornecer um compilador que possua proteo contra estouro de pilha/buffer, todos os pacotes precisariam ser recompilados para introduzir esta caracterstica. Isto , de fato, o que o Adamantix faz (entre outras caractersticas). O feito desta nova caracterstica na estabilidade do software algo que dever ser determinado (alguns programas ou arquiteturas de processador podem ter problemas com seu uso). Em qualquer caso, esteja alerta que at mesmo estas alternativas podem no prevenir buffer overows, pois existem formas de burl-los, como descrito na revista phracks issue 58 (http://packetstorm.linuxsecurity.com/mag/ phrack/phrack58.tar.gz) ou no aviso COREs Mltiplas vulnerabilidades nas tecnologias de proteo de pilha (http://onlne.securityfocus.com/archive/1/269246).

4.14.1

Patches de kernel para proteo contra estouros de buffer

Os patches do kernel relacionados a estouro de buffer incluem o patch Openwall que oferece proteo contra buffer overows nos kernels do Linux 2.2. Para kernels 2.4 ou superiores, utilize o patch Grsecurity (existente no pacote kernel-patch-2.4-grsecurity) que inclui o patch do Openwall e muito mais caractersticas (http://www. grsecurity.net/features.php) (incluindo ACLs e mtodos de rede que dicultam a realizao de OS ngerprinting), ou os mdulos de Segurana do Linux (nos pacotes kernel-patch-2.4-lsm e kernel-patch-2.5-lsm). Para mais informaes sobre como usar estes patch leia a seo Adicionando patches no kernel on page 42.

4.14.2

Proteo da Libsafe

A proteo do sistema Debian GNU/Linux com a libsafe bastante fcil, apenas instale o pacote e diga Sim para ter a biblioteca pr carregada globalmente. Tenha cuidado, no entanto, pois isto pode quebrar alguns programas (notavelmente, programas compilados usando a antiga libc5, assim tenha certeza de ler os relatrios de falhas reportadas (http:// bugs.debian.org/libsafe) antes e testar os programas mais crticos em seu sistema com o programa libsafe. Nota Importante: A proteo da Libsafe pode no ser efetiva atualmente como descrito em 173227 (http://bugs. debian.org/173227). Considere test-la antes de us-la em um ambiente de produo e no dependa exclusivamente dela para proteger seu sistema.
16 To comum, de fato, que eles so a base de 20% de vulnerabilidades reportadas de segurana todo ano, como determinado pelas estatsticas do banco de dados dde vulnerabilidades ICATs (http://icat.nist.gov/icat.cfm?function=statistics)

Captulo 4. Aps a instalao

45

4.14.3

Testando problemas de estouro em programas

O uso de ferramentas para deteco de estouro de buffer requer, em qualquer caso, conhecimento de programao para corrigir (e recompilar) o cdigo. O Debian contm, por exemplo: bfbtester (um vericar de estouro de buffer que faz ataques de fora bruta em binrios e estouro de ambiente) e o njamd. Outros pacotes de interesse podem tambm ser o rats, pscan, flawfinder e o splint.

4.15

Transferncia segura de arquivos

Durante a administrao normal do sistema, sempre so necessrias transferncias de arquivos de um sistema para outro. A cpia de arquivos de maneira segura de um sistema para outro pode ser feita usando o pacote do servidor sshd. Outra possibilidade usar o ftpd-ssl, um servidor ftp que faz uso da Camada de Conexes Seguras para encriptar as transmisses. Qualquer um destes mtodos precisam de clientes especiais. O Debian fornece programas clientes, como scp no pacote ssh, que trabalha como o rcp mas completamente criptografada, assim os maus meninos no podero nem saber O QUE voc copia. Tambm existe o pacote ftp-ssl para o servidor equivalente. Voc poder encontrar clientes para estes softwares at mesmo para outros sistemas operacionais (no-UNIX), o putty e o winscp fornecem implementaes de cpia segura para qualquer verso do sistema operacional da Microsoft. Note que o uso de scp fornece acesso dos usurios a todos os arquivos do sistema a no ser que esteja dentro de um chroot como descrito em Executando o ssh em uma jaula chroot on page 55. O acesso FTP pode ser feito usando chroot, possivelmente mais fcil dependendo do daemon escolhido, como descrito em Tornando o FTP mais seguro on page 56. Se est preocupado sobre usurios navegando em seus arquivos locais e deseja ter comunicao encriptada, voc poder usar um daemon FTP com suporte a SSL ou combinar ftp texto plano com uma congurao de VPN (veja Redes Privadas Virtuais (VPN) on page 85).

4.16
4.16.1

Limitaes e controle do sistema de arquivos


Usando quotas

importante se ter uma boa poltica de quotas, pois ela evita que os usurios ocupem todo o(s) disco(s) rgido(s). Voc poder usar dois sistemas diferentes de quota: quota do usurio e quota do grupo. Voc provavelmente notar que limites de quota de usurios denem o espao que o usurio pode utilizar, a quota de grupo equivalente para grupos. Mantenha isto em mente quando estiver trabalhando com tamanhos de quota. Existem alguns pontos importantes que devem ser pensados sobre a congurao de um sistema de quotas: Mantenha as quotas sucientemente pequenas, assim os usurios no podero acabar com todo seu espao em disco. Mantenha as quotas grande o bastante, assim os usuarios no se importaro ou sua quota de e-mails os proibir de receber mensagens por um longo perodo. Use quotas em todas as reas gravveis por usurios, em /home como tambm em /tmp. Cada partio ou diretrio no qual os usurios tem acesso completo a gravao devero ter a quota ativada. Calcule e dena um tamanho de quota funcional para estas parties e diretrios que combinam utilizao e segurana. Assim, voc deseja usar quotas. A primeira coisa que precisa checar, se ativou o suporte a quotas em seu kernel. Se no ativou, voc ter que recompil-lo. Aps isto, verique se o pacote quota est instalado. Caso negativo, voc ter que instal-lo. Ativar as quotas para um respectivo sistema de arquivos muito fcil, bastando modicar as conguraes de defaults para defaults,usrquota em seu arquivo /etc/fstab. Se voc precisar de quota de grupo, substitua usrquota por grpquota. Voc tambm poder usar ambos. Ento crie os arquivos vazios quota.user e quota.group no raiz do sistema de arquivos que deseja ativar as quotas (e.g. touch /home/quota.user /home/quota.group, para um sistema de arquivos /home). Reinicie o sistema de quota executando /etc/init.d/quota stop;/etc/init.d/quota start. Agora o sistema de quotas dever estar funcionando e os tamanhos de quotas podero ser denidos. A edio de quotas de um usurio especco poder ser feita atravs de edquota -u <user>. As quotas de grupos podem ser modicadas com edquota -g <group>. Ento ajuste a quota soft e hard e/ou quotas de inodes se necessrio.

Captulo 4. Aps a instalao

46

Para mais detalhes sobre quotas, leia a pgina de manual do quota, e o mini-howto do quota (/usr/share/doc/HOWTO /en-html/mini/Quota.html). Voc pode ou no gostar do lshell, pois ele viola a FHS. Tambm tenha em mente que o pam_limits.so pode fornecer a mesma funcionalidade e lshell est atualmente orfanado (http://bugs.debian.org/93894)

4.16.2

Os atributos especcos do sistema de arquivos ext2 (chattr/lsattr)

Em adio as permisses atuais do Unix, os sistemas de arquivos ext2 e ext3 oferecem um conjunto de atributos especcos que lhe do mais controle sobre os arquivos em seu sistema. De forma contrria a permisses bsicas, estes atributos no so mostrados com o tradicional comando ls -l ou alterados usando-se o chmod, e voc precisar de dois utilitrios diferentes, o lsattr e o chattr (que esto no pacote e2fsprogs) para gernci-los. Note que isto signica que estes atributos normalmente no sero salvos quando zer o backup do seu sistema, assim se alterar qualquer um deles, ser um tormento salvar comandos chattr sucessivos em um script que ser usado depois de ter restaurado o backup. Entre todos os atributos disponveis, os dois abaixo so os mais importantes para aumentar a segurana e so referenciados pelas letras i e a e podem ser somente denidos (ou removidos) pelo superusurio: O atributo i (imutvel): um arquivo com este atributo no pode ser modicado, excludo ou renomeado, e nenhum link poder ser criado para ele, at mesmo pelo superusurio. O atributo a (incremental): este atributo tem o mesmo efeito do atributo imutvel, exceto que voc ainda poder abrir o arquivo em modo incremental. Isto signica que voc poder adicionar mais contedo a ele, mas ser impossvel modicar o contedo anterior. Este atributo especialmente til para arquivos de log armazenados em /var /log/, assim voc dever considerar que eles sero movidos sempre devido aos scripts de rotacionamento de logs. Estes atributos tambm podem ser denidos para diretrios, neste caso ningum ter o direito de modicar o contedo de um diretrio (eg. renomear ou excluir um arquivo, . . . ). Quando aplicado a um diretrio, o atributo incremental permite somente a criao de arquivos. fcil ver porque o atributo a aumenta a segurana, dando a programas que no esto rodando sob o superusurio a capacidade de adicionar dados a um arquivo sem modicar seu contedo anterior. Por outro lado, o atributo i parece ser menos interessante: depois de tudo, somente o superusurio poder usar as permisses bsicas do Unix para restringir o acesso a um arquivo, e um intruso que teria acesso a uma conta de superusurio poderia sempre usar o programa chattr para remover o atributo. Tal intruso cara primeiramente confuso quando se ver no ser capaz de remover um arquivo, mas ele devero no assumir que ele est blindado - acima de tudo, ele entrou no seu sistema! Alguns manuais (incluindo a verso anterior deste documento) sugerem remover os programas chattr e lsattr do sistema para aumentar a segurana, mas este tipo de estratgia, conhecida tambm por segurana pela obscuridade, deve ser absolutamente evitada, pois ela fornece uma falsa sensao de segurana. Um mtodo de resolver isto usar as capacidades do kernel do Linux, como descrito em Defesa pr-ativa on page 94. A capacidade de interesse aqui chamada CAP_LINUX_IMMUTABLE: se remov-la do conjunto de capacidades (usando por exemplo,o comando lcap CAP_LINUX_IMMUTABLE) no ser possvel alterar qualquer atributo a ou i em seu sistema, at mesmo pelo superusurio! Uma estratgia completa pode ser a seguinte: 1 Dena os atributos a e i nos arquivos que deseja; 2 Execute o comando lcap CAP_LINUX_IMMUTABLE (tambm como lcap CAP_SYS_MODULE, como sugerido em Defesa pr-ativa on page 94) a um dos scripts de inicializao; 3 Dena o atributo i neste script e em outros arquivos de inicializao, assim tambm como no prprio binrio lcap; 4 Execute manualmente o comando acima (ou reinicie o seu sistema para ter certeza que tudo funciona como planejado). Agora que a capacidade foi removida do seu sistema, um intruso no poder alterar qualquer atributo em arquivos protegidos, e assim no poder alterar ou excluir os arquivos. Se ele forar a mquina a reiniciar (que o nico mtodo de restaurar o conjunto de capacidades), ele ser facilmente detectado, e a capacidade ser removida novamente assim que o sistema for reiniciado. O nico mtodo de alterar um arquivo protegido seria inicializar o sistema em modo monousurio ou usar outro disco de inicializao. Duas operaes que requerem acesso fsico a mquina!

Captulo 4. Aps a instalao

47

4.16.3

Vericando a integridade do sistema de arquivos

Voc tem certeza que o /bin/login em seu disco rgido ainda o binrio que instalou alguns meses atrs? Se ele for uma verso hackeada, que armazena a senha que digitou em um arquivo oculto ou o envia por e-mails em texto plano atravs da Internet? O nico mtodo que tem algum tipo de proteo vericar seus arquivos a cada hora/dia/ms (eu prero diariamente) comparando o md5 do atual e do antigo. Dois arquivos nunca tm o mesmo md5sum (o digest do MD5 de 128 bits, assim a chance de arquivos terem o mesmo md5sum 3.4e3803), assim, voc est do lado seguro aqui, a no ser que algum tenha hackeado o algoritmo que cria md5sums em sua mquina. Isto , bem, extremamente difcil e muito improvvel. Voc realmente dever considerar esta auditoria de seus binrios como muito importante, pois um mtodo fcil de reconhecer alteraes. Ferramentas padres usadas para isto so sXid, AIDE (Ambiente Avanado de Deteco de Intruses), TripWire, integrit e samhain. A instalao do debsums ajudar a vericar a integridade do sistema de arquivos, comparando o md5sum de cada arquivo com o md5sum usado no arquivo de pacotes do Debian. Tenha cuidado, estes arquivos podem ser facilmente alterados. Voc pode querer usar o locate para indexar todo o sistema de arquivos, se zer isto, considere as implicaes disto. O pacote locate no Debian executado como usurio nobody, e assim ele somente indexa arquivos que so visveis para todos. No entanto, se voc alterar seu comportamento, voc tornar todas as localizaes de arquivos visveis para todos os usurios. Se deseja indexar todo o sistema de arquivos (no os poucos que o usurio nobody pode ver) voc poder substituir o locate pelo slocate. O slocate tem a etiqueta de uma verso avanada e segura do locate da GNU, mas ele atualmente fornece funcionalidade adicional de localizao de arquivos. Quando usar o slocate, o usurio somente ver os arquivos que ele tem acesso e voc poder ignorar qualquer arquivo ou diretrio no sistema. O pacote slocate executa seus privilgios de atualizao com altos privilgios se comparado ao locate e indexa cada arquivo. Os usurios so ento capazes de localizar rapidamente cada arquivo que podem ver. O slocate no lhes permitem ver novos arquivos; ele faz a ltragem da sada baseado em sua UID. FIXME: colocar referncias ao snapshot feito aps a instalao. FIXME: Adicionar uma nota com relao a pacotes que no fornecem debsums de aplicativos instalados (no mandatrio). FIXME: Mencionar binrios assinados usando digamos, bsign ou elfsign

4.16.4

Congurando vericao de setuid

O Debian oferece um trabalho do cron que executado diariamente no arquivo /etc/cron.daily/standard. Esta tarefa do cron executar o script /usr/sbin/checksecurity que armazena informaes destas alteraes. Para esta vericao ser feita, voc dever denir CHECKSECURITY_DISABLE="FALSE" no /etc /checksecurity.conf. Note que, este o padro, assim a no ser que tenha alterado algo, esta opo j estar denida para FALSE. O comportamento padro no enviar esta mensagem para o superusurio, mas ao invs disto manter cpias dirias das alteraes em /var/log/setuid.changes. Voc dever alterar o CHECKSECURITY_EMAIL (no /etc /checksecurity.conf) para root para ter estes dados enviados por e-mail para ele. Veja checksecurity(8) para mais detalhes.

4.17

Tornando o acesso a rede mais seguro

FIXME. Necessrio mais contedo (especco o Debian)

4.17.1

Congurando caractersticas de rede do kernel

FIXME: Faltando contedo Muitas caractersticas do kernel podem ser modicadas usando comandos echo no sistema de arquivos /proc ou usando o sysctl. Executando o /sbin/sysctl -A voc poder ver o que pode ser congurado e que opes existem, e elas podem ser modicadas executando /sbin/sysctl -w varivel=valor (veja sysctl(8)). Somente em raros casos voc precisar editar algo aqui, mas voc poder aumentar tambm a segurana desta forma. Por exemplo:
net/ipv4/icmp_echo_ignore_broadcasts = 1

Captulo 4. Aps a instalao

48

Este um emulador de Windows pois ele atua como o Windows em ping broadcast caso esta opo seja ajustada para 1. Que , requisies ICMP_ECHO enviadas para o endereo de broadcast sero ignoradas. Caso contrrio, ela no faz nada. Se quer evitar que o seu sistema responda requisies ICMP, apenas ative esta opo de congurao:
net/ipv4/icmp_echo_ignore_all = 1

Para registrar pacotes com endereos impossveis (devido a roteamento incorreto) em seu sistema, use:
/proc/sys/net/ipv4/conf/all/log_martians = 1

Para mais informaes sobre que coisas podem ser feitas com /proc/sys/net/ipv4/* leia /usr/src/linux /Documentation/filesystems/proc.txt. Todas as opes esto descritas atravs do /usr/src/linux /Documentation/networking/ip-sysctl.txt 17 .

4.17.2

Congurando Syncookies

Esta opo uma faca de dois gumes. De um lado ela protege o seu sistema contra ood de pacotes syn; por outro lado ela viola os padres denidos (RFCs).
net/ipv4/tcp_syncookies = 1

Se deseja alterar esta opo cada vez que o kernel estiver funcionando, voc precisar alter-la em /etc/network/options denindo syncookies=yes. Ela far efeito sempre quando /etc/init.d/networking for executado (que tipicamente feito durante a inicializao do sistema) enquanto o seguinte comando far efeito imediatamente at a reinicializao:
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

Esta opo somente estar disponvel caso o kernel tenha sido compilado com a opo CONFIG_SYNCOOKIES. Todos os kernels do Debian so compilados com esta opo embutida, mas voc poder veric-la executando:
$ sysctl -A |grep syncookies net/ipv4/tcp_syncookies = 1

Para mais informaes sobre os syncookies TCP, leia http://cr.yp.to/syncookies.html.

4.17.3

Tornando a rede segura em tempo de inicializao

Quando denir opes de congurao do kernel para a rede, voc precisar congur-la de forma que seja carregada sempre que o sistema for iniciado. O seguinte exemplo ativa muitas das opes anteriores assim como outras opes teis. FIXME Ao invs de fornecer este script, fornecer uma congurao modelo para o sysctl.conf (veja: sysctl.conf(5)). Tambm envie isto como um bug wishlist para o pacote. Crie um script em /etc/network/interface-secure (o nome dado como um exemplo) e o execute do arquivo /etc /network/interfaces desta forma:
auto eth0 iface eth0 inet static address xxx.xxx.xxx.xxx netmask 255.255.255.xxx broadcast xxx.xxx.xxx.xxx gateway xxx.xxx.xxx.xxx pre-up /etc/network/interface-secure

#!/bin/sh # Nome do Script: /etc/network/interface-secure # Modifica o comportamento padro para tornar o sistema seguro contra # alguns tipos de ataques TCP/IP spoofing # some TCP/IP spoofing & attacks # # Contribudo por Dariusz Puchalak
17 No Debian o pacote kernel-image instala o fonte sob /usr/src/kernel-source-2.X.X, apenas subistitua linux com o tipo de kernel que est instalado

Captulo 4. Aps a instalao


# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # proteo contra broadcast de ECHO echo 0 > /proc/sys/net/ipv4/ip_forward # desativao de forward de ip echo 1 > /proc/sys/net/ipv4/tcp_syncookies # Proteo contra syn cookies ativada echo 1 >/proc/sys/net/ipv4/conf/all/log_martians # Registra pacotes estranhos # (isto inclui pacotes falsos, pacotes com a rota de origem alterada e pacotes redirecionados) # mas tenha cuidado com isto em servidores web carregados echo 1 > /proc/sys/net/ipv4/ip_always_defrag # opo de desfragmentao sempre ativada echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses # proteo ativada contra mensagens de erro incorretas # proteo contra ip spoofing echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter # e finalmente mais coisas: # No aceita redirecionamento de ICMP echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects # Desativa pacotes com rota de origem echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route echo 1 > /proc/sys/net/ipv4/conf/all/log_martians

49

Voc tambm poder criar um script em init.d que executado na inicializao (usando o update-rc.d para criar os links apropriados em rc.d).

4.17.4

Congurando caractersticas do rewall

Para ter capacidades de rewall, ou para proteger o sistema local ou outros atrs dele, o kernel precisa ser compilado com capacidades de rewall. O kernel padro do Debian 2.2 (tambm 2.2) fornece o ltro de pacotes chamado ipchains, o Debian 3.0 usando o kernel padro (kernel 2.4) oferece um ltro de pacotes de estado chamado iptables (netlter). As distribuies antigas do Debian precisaro de um patch apropriado no kernel (o Debian 2.1 usa o kernel 2.0.34). De qualquer forma, muito fcil usar um kernel diferente do fornecido pelo Debian. Voc poder encontrar um kernel pr-compilado como pacotes que podero facilmente instalar em seu sistema Debian. Voc tambm poder copiar os fontes do kernel usando os pacotes kernel-source-X e construir pacotes de kernel personalizados usando o make-kpkg. A congurao de rewalls no Debian discutida mais precisamente em Adicionando capacidades de rewall on page 67.

4.17.5

Desativando assuntos relacionados a weak-end de mquinas

Sistemas com mais de uma interface de rede em diferentes redes podem ter os servios congurados de forma que escutem somente a um determinado endereo IP. Isto normalmente evita o acesso a servios quando so requisistados atravs de qualquer outro endereo. No entanto, isto no signica (que foi at mesma uma concepo correta que tive) que o servio oferecido ao endereo de hardware (interface de rede). 18 Isto no um assunto relacionado a ARP e no uma violao da RFC (isto chamado mquina weak end na RFC1122 (ftp://ftp.isi.edu/in-notes/rfc1122.txt), seo 3.3.4.2). Lembre-se, endereos IP no tem nada a ver com a interface fsica. Nos kernels da srie 2.2 (e anteriores) isto pode ser corrigido com:
# echo 1 > /proc/sys/net/ipv4/conf/all/hidden # echo 1 > /proc/sys/net/ipv4/conf/eth0/hidden # echo 1 > /proc/sys/net/ipv4/conf/eth1/hidden .....

Em outros kernels, isto pode ser corrigido com uma das alternativas: regras do iptables. roteamento corretamente congurado.
18 Para

19

reproduzir isto (exemplo oferecido por Felix von Leitner na lista de discusso bugtraq):

mquina A (eth0 conectada a eth0 da mquina B): ifconfig eth0 10.0.0.1 ifconfig eth1 23.0.0.1 tcpserver -RHl localhost 23.0.0.1 8000 echo fnord mquina B: ifconfig eth0 10.0.0.2 route add 23.0.0.1 gw 10.0.0.1 telnet 23.0.0.1 8000

Parece, no entanto, no funcionar com servios funcionando na interface 127.0.0.1, voc precisar fazer os testes usando soquetes simples.
19 O

fato deste comportamento ser alterado atravs do roteamento foi descrito por Matthew G. Marsh na thread do bugtraq:

Captulo 4. Aps a instalao Patch do kernel 20

50

Junto com este texto, existiro algumas ocasies em que ser mostrado como congurar alguns servios (servidor sshd, apache, servio de impresso. . . ) para t-los escutando em um determinado endereo, o leitor dever ter em mente que, sem as correes fornecidas aqui, a correo no evitar acesso de dentro do mesmo segmento de rede (local). 21 FIXME: os comentrios na bugtraq indicam que l existe um mtodo especco do Linux para escutar em uma determinada interface. FIXME: Enviar um bug contra o netbase, assim a correo de roteamento ser o comportamento padro no Debian?

4.17.6

Protegendo-se contra ataques ARP

Quando no cona em outras mquinas na sua rede (que deve sempre ser o caso, por ser uma atitude mais segura) voc dever proteger a si mesmo de vrios ataques ARP existentes. Como deve saber, o protocolo ARP usado para ligar endereos IP a endereos MAC. (veja RFC826 (ftp://ftp.isi. edu/in-notes/rfc826.txt) para todos os detalhes). Cada vez que enviar um pacote para um endereo IP uma resoluo arp feita (primeiro procurando no cache ARP local, ento se o endereo IP no estiver presente no cache faz o broadcast de uma requisio arp) para encontrar o endereo de hardware alvo. Todos os pacotes ARP tentam deixar sua mquina ingnua fazendo-a pensar que o endereo IP da mquina B associado com o endereo MAC da mquina do invasor. Ento cada pacote que deseja enviar para o endereo IP associado com a mquina B, ser enviado para a mquina do invasor. Estes ataques (envenenamento e cache, falsicao ARP. . . ) permitem ao invasor capturar o trfego at mesmo em redes com switches, para facilmente roubar conexes, para desconectar qualquer mquina da rede. . . ataques arp so poderosos e fceis de serem implementados, e existem diversas ferramentas, tais como arpspoof atravs do pacote dsniff. No entanto, sempre existe uma soluo: Use um cache arp esttico. Voc pode congurar entradas estticas em seu cache arp:
arp -s host_name hdwr_addr

Congurando entradas estticas para cada mquina importante em sua rede voc se assegura de que ningum poder criar/modicar uma entrada (falsa) para estas mquinas (entradas estticas no expiram e no podem ser modicadas) e respostas arp falsicadas sero ignoradas. Detectar trfego ARP suspeito. Voc poder usar o pacote arpwatch, karpski ou ferramentas IDS mais gerais que tambm podero detectar trfego arp suspeitos como (snort, prelude (http://www.prelude-ids.org). . . ). Implementando ltragem na validao de trfego IP no endereo MAC.

4.18

Fazendo um snapshot do sistema

Antes de por o sistema em produo voc dever tirar um snapshot de todo o sistema. Este snapshot dever ser usado em um evento de compromisso (veja Depois do comprometimento do sistema (resposta a incidentes) on page 97). Voc dever refazer este upgrade assim que o sistema for atualizado, especialmente se seu upgrade for para uma novo lanamento do Debian. Para isto voc dever usar uma mdia removvel gravvel que poder ser congurada como somente-leitura, isto poder ser feito em um disquete (proteja como somente leitura aps o uso) ou uma unidade de CD-ROM (voc poder usar um CD-ROM regravvel assim poder at mesmo manter backups de md5sums em diferentes datas). O seguinte script criar o snapshot:
eth0 = 1.1.1.1/24 eth1 = 2.2.2.2/24 ip rule add from 1.1.1.1/32 dev lo table 1 prio 15000 ip rule add from 2.2.2.2/32 dev lo table 2 prio 16000 ip route add default dev eth0 table 1 ip route add default dev eth1 table 2
20 Existem alguns patches disponveis para este comportamento como descrito na discusso do bugtraq em http://www.linuxvirtualserver. org/~julian/#hidden e http://www.fefe.de/linux-eth-forwarding.diff. 21 Um invasor pode ter muitos problemas para contornar o acesso atravs da escuta de endereos IP se ele no est no mesmo domnio de broadcast (mesma rede) que a mquina que ser atacada. Se a invaso for atravs do roteador, ser bastante difcil as repostas retornarem a algum lugar.

Captulo 4. Aps a instalao


#!/bin/bash /bin/mount /dev/fd0 /mnt/floppy /bin/cp /usr/bin/md5sum /mnt/floppy echo "Calculando banco de dados md5" >/mnt/floppy/md5checksums.txt for dir in /bin/ /sbin/ /usr/bin/ /usr/sbin/ /lib/ /usr/lib/ do find $dir -type f | xargs /usr/bin/md5sum >>/mnt/floppy/md5checksums-lib.txt done /bin/umount /dev/fd0 echo "Ps instalao do banco de dados md5 calculada"

51

Note que o binrio md5sum colocado em uma unidade de disquetes assim ele poder ser usado depois para vericar binrios no sistema (como no caso de ser atacado por um trojan). O snapshot no inclui os arquivos sob /var/lib/dpkg/info que incluem os hashs md5 de pacotes instalados (em arquivos que nalizam com .md5sums). Voc poder copiar esta informao tambm, no entanto voc dever saber: os md5sums fornecidos por pacotes do Debian incluem todos os arquivos fornecidos por eles, que torna o banco de dados grande (5 MB contra 600Kb em um sistema Debian GNU/Linux com um sistema grco e com aproximadamente 2.5 Gb de programas instalados) nem todos os pacotes do Debian contm md5sums de arquivos que foram instalados pois esta no (atualmente) a poltica mandatria. Assim que o snapshot for feito voc dever se assegurar de proteger a mdia como somente leitura. Voc poder ento armazen-la para backup ou coloc-la na unidade e us-la fazendo uma vericao com o cron toda a noite comparando os md5sums originais com estes no snapshot.

4.19
4.19.1

Outras recomendaes
No use programas que dependem da svgalib

A Svgalib muito bonita para amantes de console, como eu, mas no passado ela provou diversas vezes que muito insegura. Foram lanadas exploraes de vulnerabilidades contra o zgv e era simples se tornar usurio root. Tente evitar o uso de programas usando Svgalib sempre que possvel.

Captulo 4. Aps a instalao

52

53

Captulo 5

Tornando os servios em execuo do seu sistema mais seguros


Os servios podem ser deixados mais seguros de duas formas: Tornando-os somente acessveis em pontos de acessos (interfaces) que so utilizados. Congurando-os adequadamente, desta forma eles podero somente ser usados por usurios legtimos de forma autorizada. A restrio de servios de forma que possam somente ser acessados de um determinado lugar pode ser feito restringindo o acesso a eles no nvel de kernel (i.e. rewall), congure-os para operar somente em interfaces denidas (alguns servios podem no ter esta caracterstica) ou usando algum outro mtodo, por exemplo o patch vserver do Linux (para 2.4.16) pode ser usado para forar o kernel a utilizar somente uma interface de rede. Com relao a servios sendo executados a partir do inetd (telnet, ftp, finger, pop3. . . ) importante notar que o inetd pode ser congurado para que os servios somente executem em uma interface denida (usando a sintaxe servio@ip) mas esta uma caracterstica no documentada. Um de seus substitutos, o meta-daemon xinetd inclui uma opo chamada bind apenas para controlar este comportamento. Veja xinetd.conf(5).
service nntp { socket_type = stream protocol = tcp wait = no user = news group = news server = /usr/bin/env server_args = POSTING_OK=1 PATH=/usr/sbin/:/usr/bin:/sbin/:/bin +/usr/sbin/snntpd logger -p news.info bind = 127.0.0.1 }

As seguintes sees detalham como alguns servios individuais podem ser congurados adequadamente conforme sua utilizao.

5.1

Tornando o ssh mais seguro

Caso ainda estiver usando o telnet ao invs do ssh, voc dever dar uma parada na leitura deste manual e alterar isto. O ssh deve ser usado para qualquer login remoto ao invs do telnet. Em uma era onde fcil capturar o trfego que circula na internet e obter senhas em texto plano, voc dever usar somente protocolos que utilizam criptograa. Assim, execute um apt-get install ssh agora em seu sistema. Encoraje todos os usurios em seu sistema para utilizarem o ssh ao invs do telnet, ou at mesmo melhor, remova o telnet/telnetd. Em adio, voc dever evitar entrar no sistema usando o ssh como usurio root e ao invs disto, usar mtodos alternativos para se tornar o root, como o su ou sudo. Finalmente, o arquivo sshd_config no diretrio /etc/ssh, tambm dever ser modicado para aumentar a segurana:

Captulo 5. Tornando os servios em execuo do seu sistema mais seguros ListenAddress 192.168.0.1

54

Especica que o ssh somente funcionar na interface especicada, caso tenha mais de uma interface (e no deseja que o ssh funcione atravs delas) ou em caso de adio de uma futura interface de rede (onde no deseja receber conexes ssh atravs dela). PermitRootLogin no Tenta no permitir o login do usurio Root sempre que possvel. Se algum quiser se tornar o usurio root usando ssh, agora dois logins so necessrios e o ataque de fora bruta no ter efeito no root via SSH. Listen 666 Altera a porta do programa, assim o intruso no ter completa certeza de onde o daemon sshd executado (esteja avisado, isto segurana por obscuridade). PermitEmptyPasswords no Senhas em branco tornam a segurana do seu sistema um asco. AllowUsers alex ref me@algumlugar Permite somente certos usurios tero acesso via ssh a esta maquina. usuario@maquina pode tambm ser usado para restringir um determinado usurio de acessar somente atravs de uma maquina especicada. AllowGroups wheel admin Permite somente membros de certos grupos de terem acesso ao ssh nesta maquina. AllowGroups e AllowUsers possuem diretivas equivalentes para bloquear o acesso a maquina. No se surpreenda por eles serem chamados de DenyUsers e DenyGroups. PasswordAuthentication yes Esta escolha ca completamente por sua conta. mais seguro somente permitir o acesso a maquina de usurios com chaves ssh colocadas em ~/.ssh/authorized_keys. Se deseja isto, ajuste esta opo para no. Desative quaisquer outras formas de autenticao que realmente no precisa, se no usar, por exemplo RhostsRSAAuthentication, HostbasedAuthentication, KerberosAuthentication ou RhostsAuthentication, voc dever desativa-las, at mesmo se forem usadas por padro (veja a pgina de manual sshd_config(5)). Protocol 2 Desative o protocolo da verso 1, pois ele tem alguns problemas de design que torna fcil a descoberta de senhas. Para mais informaes leia documento relacionando problemas do protocolo ssh (http://earthops.net/ ssh-timing.pdf) ou o aviso Xforce (http://xforce.iss.net/static/6449.php). Banner /etc/some_file Adiciona um banner (ele ser lido de um arquivo) para usurios se conectando ao servidor ssh, em alguns pases o envio de avisos antes de acessar um determinado sistema alertando sobre acesso no autorizado ou monitoramento de usurios dever ser emitido para ter proteo legal. Voc tambm poder restringir o acesso ao servidor ssh usando o pam_listfile ou pam_wheel no arquivo de controle PAM para o ssh restringir os logins ssh. Por exemplo, se quiser manter qualquer pessoa no listada em /etc/loginusers adicionando esta linha no /etc/pam.d/ssh:
auth required pam_listfile.so sense=allow onerr=fail item=user file=/etc/loginusers

Como nota nal, tenha ateno que estas diretivas so vlidas para um arquivo de congurao do OpenSSH. Atualmente, no freqentemente usados trs tipos de implementaes conhecidas do daemon: ssh1, ssh2 e OpenSSH feito pelo time do OpenBSD. O ssh1 foi o primeiro daemon disponvel e ainda o mais usado (existem rumores que at existe um porte para Windows). O ssh2 possui mais vantagens sobre o ssh2, exceto que ele lanado sob uma licena fonte fechado. O OpenSSH um daemon ssh completamente livre, que suporta ambos os protocolos ssh1 e ssh2. O OpenSSH a verso instalada junto o Debian quando o pacote ssh escolhido. Voc pode ler mais informaes sobre como congurar um SSH com suporte a PAM em arquivos da lista de segurana (http://lists.debian.org/debian-security/2001/debian-security-200111/msg00395.html).

Captulo 5. Tornando os servios em execuo do seu sistema mais seguros

55

5.1.1

Executando o ssh em uma jaula chroot

O OpenSSH atualmente no suporta um mtodo de chroot automtico durante a conexo do usurio (a verso comercial oferece esta funcionalidade). No entanto existe um projeto para fornecer esta funcionalidade tambm para o ssh, veja http: //chrootssh.sourceforge.net, atualmente ele no esta empacotado para o Debian. Voc poder usar, no entanto, o mdulo pam_chroot como descrito em Restringindo acessos de usurios on page 35. Em Ambiente chroot para SSH on page 137 voc ter diversas opes para criar um ambiente chroot para o SSH.

5.1.2

Clientes do ssh

Se estiver usando um cliente SSH com um servidor SSH, voc dever ter certeza que ele suporta os mesmos protocolos que so especicados no servidor. Por exemplo, se utilizar o pacote mindterm, ele somente utiliza a verso 1 . No entanto, o servidor ssh utiliza, por padro, a congurao para aceitar somente conexes para o protocolo da verso 2 (por razes de segurana).

5.1.3

Desativando transferncias de arquivos

Se no quiser que seus usurios transram arquivos do servidor ssh, voc precisar restringir acesso ao sftp-server e ao scp. Voc poder restringir o sftp-server congurando o sub-sistema Subsystem no arquivo /etc/ssh /sshd_config. No entanto para restringir o acesso ao scp voc dever: bloquear o login de usurios ao servidor ssh (como descrito acima no arquivo de congurao ou congurao do PAM). no fornecer shells validas para usurios que no tem permisso de realizar transferncias de arquivos seguras. O shell fornecido, no entanto, programas que podem tornar a conexo ao ssh til, como o menu (estilo BBS). Caso contrrio, a opo anterior a preferida.

5.2

Tornando o Squid mais seguro

O Squid um dos servidores proxy/cache mais populares e existem algumas consideraes de segurana que devem ser levadas em conta. O arquivo de congurao padro do squid nega todas as requisies de usurios. No entanto, o pacote do Debian permite o acesso atravs de localhost, voc apenas precisa congurar seu navegador adequadamente. Congure o Squid para permitir acesso aos usurios conveis, mquinas ou redes denindo uma lista de controle de acesso no arquivo /etc/squid.conf, veja o endereo Guia do Usurio Squid (http://squid-docs.sourceforge. net/latest/html/book1.html) para mais informaes sobre a denio de regras de ACLs. Note que o Debian oferece uma congurao mnima para o Squid que prevenir tudo, exceto a conexo de localhost em seu servidor proxy (que executado na porta padro 3128) necessria a personalizao do arquivo de congurao /etc/squid.conf como necessrio. A congurao mnima recomendada (fornecida com o pacote) mostrada abaixo:
acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # portas no registradas acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT (...) # Somente permite acesso do cachemgr vindos de localhost http_access allow manager localhost http_access deny manager # Somente permite requisies de purge vindas de localhost http_access allow purge localhost http_access deny purge # Bloqueia requisies para portas desconhecidas http_access deny !Safe_ports # Bloqueia CONNECT a portas que no sejam SSL

Captulo 5. Tornando os servios em execuo do seu sistema mais seguros


http_access deny CONNECT !SSL_ports # # INSIRA SUAS PRPRIAS REGRAS AQUI PARA PERMITIR O ACESSO DE SEUS CLIENTE # http_access allow localhost # E finalmente bloqueia qualquer outro acesso a este proxy http_access deny all #Padro: # icp_access deny all # #Permite requisies ICQ vindas de qualquer pessoa icp_access allow all

56

Voc tambm dever congurar o Squid baseado nos recursos do seu sistema, incluindo a memria cache (opo cache_mem), localizao dos arquivos de cache e quantidade de espao que utilizaro no disco (opo cache_dir). Note que, se no for corretamente congurado, algum poder enviar mensagens de e-mail atravs do squid, pois os protocolos HTTP e SMTP tem design similar. O arquivo de congurao padro do Squid bloqueia o acesso a porta 25. Se desejar permitir conexes a porta 25, apenas adicione-a a lista Safe_ports. No entanto, isto NO recomendado. Ajustar e congurar um servidor proxy/cache apenas parte da tarefa de manter um site seguro. Outra tarefa necessria a anlise dos logs do Squid para ter certeza que todas as coisas esto funcionando como deveriam estar. Existem alguns pacotes no Debian GNU/Linux que podem ajudar o administrador a fazer isto. Os seguintes pacotes esto disponveis na woody (Debian 3.0): calamaris - Analisador de arquivos de log para o Squid ou log do proxy Oops modlogan - Um analisador de arquivos e log modular. squidtaild - Programa de monitoramento de logs do Squid. Quando estiver usando o squid em modo acelerador, ele atuar como servidor web tambm. Ativando esta opo, a complexidade do cdigo aumenta, tornando-a menos convel. Por padro, o squid no congurado para atuar como um servidor web, assim no precisar se preocupar com isto. Note que se quiser usar esta caracterstica, tenha certeza que realmente necessria. Para encontrar mais informaes sobre o modo acelerador do Squid, veja Squid Users Guide #Chapter9 (http://squid-docs.sourceforge.net/latest/html/c2416.html).

5.3

Tornando o FTP mais seguro

Se realmente precisar usar o FTP (sem transport-lo com sslwrap ou dentro de um tunel SSL ou SSH), voc dever fazer um chroot dentro do diretrio de usurios do ftp, assim o usurio ser incapaz de ver qualquer coisa que no seja seu prprio diretrio. Caso contrrio, ele poder atravessar seu sistema de arquivos raz como se tivesse uma conta shell. Voc poder adicionar a seguinte linha no seu arquivo proftpd.conf na sua seo global para ativar esta caracterstica chroot:
DefaultRoot ~

Reinicie o proftpd executando /etc/init.d/proftpd restart e verique se agora pode escapar do seu diretrio de usurio. Para prevenir ataques DoS usando ../../.., adicione a seguinte linha no seu arquivo /etc/proftpd.conf: DenyFilter \*.*/ Lembre-se sempre que o FTP envia o login e senhas de autenticao em texto plano (isto no um problema se estiver oferecendo acesso a servios pblicos. Entretanto existem alternativas melhores no Debian para isto, como o sftp (fornecido pelo pacote ssh). Tambm existem implementaes livres do ssh para outros sistemas operacionais, por exemplo: putty (http://www.chiark.greenend.org.uk/~sgtatham/putty/) e o cygwin (http://www.cygwin.com). No entanto, se voc ainda mantm um servidor FTP enquanto disponibiliza o acesso atravs do SSH voc deve encontrar um problema tpico. Usurios acessando servidores FTP annimos dentro de sistemas protegidos com o SSH devem tentar efetuar o login no FTP server. Enquanto o acesso ser recusado, as senhas nunca sero enviadas na rede de forma desprotegida. Para evitar isto, o desenvolvedor TJ Sauders do ProFTPd , criou um patch que evita que os usurios utilizem um servidor FTP annimo com uma conta vlida do ssh. Mais informaes e o patch esto disponveis em: ProFTPD Patches (http://www.castaglia.org/proftpd/#Patches). Este patch tambm foi reportado para o Debian, veja Bug #145669 (http://bugs.debian.org/145669).

Captulo 5. Tornando os servios em execuo do seu sistema mais seguros

57

5.4

Tornando o acesso ao sistema X Window mais seguro

Hoje em dia, terminais do X so usados por mais e mais empresas onde necessrio para vrias estaes de trabalho. Isto pode ser perigoso, porque voc precisa permitir o servidor de arquivos a se conectar aos clientes (a partir do ponto de vista do servidor X, o X altera a denio de cliente e servidor). Se voc seguir a (pssima) sugesto de muitas documentaes voc digitar xhost + em sua mquina. Isto permitir qualquer cliente do X a se conectar em seu sistema. Para ter um pouco mais de segurana, voc dever usar o comando xhost +hostname ao invs de somente permitir acessos atravs de mquinas especcas. Uma soluo muito mais segura, no entanto, usar o ssh para fazer o tnel do X e criptograa para toda a seo. Isto feito automaticamente quando voc faz um ssh para a outra mquina. Para isto funcionar, voc ter que congurar ambos o cliente ssh e o servidor ssh. No cliente ssh, a opo ForwardX11 dever estar ajustada para yes no arquivo /etc/ssh/ssh_config. No servidor ssh, a opo X11Forwarding dever estar ajustada para yes no arquivo /etc /ssh/sshd_config e o pacote xbase-clients dever estar instalado, pois o servidor ssh utiliza o /usr/X11R6/bin /xauth quando est congurando uma tela de pseudo terminal do X. Nos tempos do SSH, agora voc dever deixar de usar o controle de acesso baseado em xhost completamente. Para melhor segurana, voc no precisar permitir o acesso ao X a partir de outras mquinas, isto feito desativando o servidor na porta 6000 simplesmente digitando:
$ startx -- -nolisten tcp

Este o comportamento padro do Xfree 4.1.0 (o Xserver fornecido no Debian 3.0). Se estiver executando o Xfree 3.3.6 (i.e. voc tem o Debian 2.2 instalada) voc poder editar o arquivo /etc/X11/xinit/xserverrcc e fazer a alterao nestas seguintes linhas:
#!/bin/sh exec /usr/bin/X11/X -dpi 100 -nolisten tcp

Se estiver usando o conjunto do XDM altere no arquivo /etc/X11/xdm/Xservers para: :0 local /usr/bin/X11/X vt7 -dpi 100 -nolisten tcp. Se estiver usando o Gdm tenha certeza que a opo -nolisten tcp est denida no arquivo /etc/gdm/gdm.conf (que o padro no Debian) tal como esta:
[server-Standard] name=Standard Server command=/usr/bin/X11/X -nolisten tcp

Voc tambm poder congurar o timeout padro para o travamento do xscreensaver. At mesmo se o usurio substituir este valor, voc poder editar o arquivo /etc/X11/app-defaults/XScreenSaver e alterar a linha:
*lock: False

(que padro no Debian) para:


*lock: True

FIXME: adicionar informaes sobre como desativar as protees de tela que mostra o desktop do usurio (que pode conter informaes sensveis). Leia mais sobre a segurana em servidores X Window em XWindow-User-HOWTO (http://www.tldp.org/HOWTO/ XWindow-User-HOWTO.html) (/usr/share/doc/HOWTO/en-txt/XWindow-User-HOWTO.txt.gz). FIXME: Adicionar informaes sobre a discusso na debian-security sobre como alterar os arquivos de congurao no servidor XFree 3.3.6 para fazer isto.

5.4.1

Verique seu gerenciador de tela

Se somente quiser ter um gerenciador de tela instalado para uso local (tendo um lindo login grco) tenha certeza que tudo que estiver relacionado com o XDMCP (X Display Manager Control Protocol) est desativado. No XDM voc poder fazer isto atravs da linha em /etc/X11/xdm/xdm-config:
DisplayManager.requestPort: 0

Normalmente, todos os gerenciadores de tela esto congurados para no iniciar servios do XDMCP por padro no Debian.

Captulo 5. Tornando os servios em execuo do seu sistema mais seguros

58

5.5

Tornando o servidor de impresso mais seguro (sobre o lpd e lprng)

Imagine, voc chegando ao trabalho e a impressora jogando fora uma quantidade impressionante de papel porque algum esta fazendo um DoS em seu daemon de impresso. Desagradvel, no ? Em qualquer arquitetura de impresso do unix, dever existir uma forma de enviar os dados do cliente para o servidor de impresso. No tradicional lpr e lp, os comandos do cliente copiam ou fazem um link simblico de dados no diretrio de spool (este o motivo porque estes programas normalmente so SUID ou SGID). Para evitar quaisquer anormalidade, voc dever manter o seu servidor de impresso especialmente seguro. Isto signica que precisa congurar seu servio de impresso de forma que s permita conexes de um conjunto de mquinas conveis. Para fazer isto, adicione os servidores que deseja permitir a impresso em seu arquivo /etc/hosts.lpd. No entanto, at mesmo se zer isto, o lpr aceitar conexes de entrada na porta 515 de qualquer interface. Voc dever considerar fazer um rewall das conexes de redes/hosts que no tenham permisso de impresso (o daemon lpr no tem a possibilidade de aceitar conexes em somente um determinado endereo IP). O Lprng dever ser o preferido em cima do lpr pois ele pode ser congurado para fazer controle de acesso por IP. E voc poder especicar qual interface escutar por conexes (embora algumas vezes parea um pouco estranho). Se utilizar uma impressora em seu sistema, mas somente localmente, voc no desejar compartilhar este servio atravs de uma rede. Voc poder considerar o uso de outros sistemas de impresso, tal como o fornecido pelo pacote cups ou pelo PDQ (http://pdq.sourceforge.net/) que baseado em permisses do usurio no dispositivo /dev/lp0. No cups, os dados de impresso so transferidos ao servidores via protocolo http. Isto signica que o programa cliente no precisa de qualquer privilgio especial, mas requer que o servidor escute em uma porta, em algum lugar. No entanto, se quiser usar o cups, mas somente localmente, voc poder congura-lo para escutar na interface loopback alterando o arquivo de congurao /etc/cups/cupsd.conf:
Listen 127.0.0.1:631

Existem muitas outras opes de segurana como permitir ou bloquear redes e mquinas neste arquivo de congurao. No entanto, se voc no precisar delas, ser melhor que limite simplesmente a porta onde o programa espera por conexes. O Cups tambm serve documentaes atravs da porta HTTP. Se no quiser revelar informaes teis em potencial para invasores externos tambm adicione:
<Location /> Order Deny,Allow Deny From All Allow From 127.0.0.1 </Locationi>

Este arquivo de congurao pode ser modicado para adicionar algumas outras caractersticas incluindo certicados SSL/TLS e criptograa. Os manuais esto disponveis em http://localhost:631/ ou em cups.org. FIXME: Adicionar mais contedo (o artigo em Amateur Fortress Building (http://www.rootprompt.org) fornecendo vises mais interessantes). FIXME: Vericar se o PDG est disponvel no Debian, e se estiver, sugerir como sistema de impresso preferido. FIXME: Vericar se o Farmer/Wietse possui um substituto para daemon de impresso e se est disponvel no Debian.

5.6

Tornando o servio de e-mails seguro

Se seu servidor no for um servidor de mensagens, e realmente no precisa ter um programa esperando por conexes de entradas, mas deseja que as mensagens locais sejam entregues, por exemplo, para recebimento de mensagens do usurio root de qualquer alerta de segurana que tenha no local. Se tiver o exim voc no precisar do daemon funcionando para fazer isto, pois o pacote padro do cron esvazia a la de mensagens. Veja Desabilitando daemons de servio on page 23 para saber como fazer isto.

5.6.1

Congurando um programa de e-mails nulo

Voc pode querer ter um daemon de mensagens locais assim ele poder repassar os e-mails enviados localmente para outro sistema. Isto comum quando voc tem que administrar um nmero de mquinas e no quer conectar a cada uma delas

Captulo 5. Tornando os servios em execuo do seu sistema mais seguros

59

para ler as mensagens enviadas localmente. Assim como todos os logs de cada sistema individual podem ser centralizados usando um servidor de logs central, as mensagens podem ser enviadas para um servidor de mensagens central. Tal sistema somente-repasse dever ser congurado adequadamente para fazer isto. O daemon poder, tambm, ser congurado para somente esperar por conexes no endereo de loopback. FIXME: Isto dever ser atualizado para o exim4, que o MTA padro da sarge e distribuies mais atuais (e espera por conexes somente em localhost na congurao padro mnima) Para fazer isto em um sistema Debian 3.0 usando o pacote exim, voc ter que remover o daemon smtp do inetd:
$ update-inetd --disable smtp

e congurar o daemon de mensagens para somente esperar por conexes na interface loopback. No exim (o MTA padro) voc poder fazer isto editando o arquivo de congurao /etc/exim.conf e adicionando a seguinte linha:
local_interfaces = "127.0.0.1"

Reinicie ambos os daemons (inetd e exim) e voc ter o exim esperando por conexes somente no soquete 127.0.0.1:25. Seja cauteloso e desative primeiro o inetd, caso contrrio, o exim no iniciar pois o daemon do inetd j est esperando por conexes de entrada. Para o postfix, edite o arquivo /etc/postfix/main.conf:
inet_interfaces = localhost

Se quiser somente mensagens locais, este mtodo melhor que utilizar o mtodo tcp wrappers no daemon de mensagens ou adicionar regras de rewall para que ningum acesse-o. No entanto, se precisar que ele escute em outras interfaces, voc dever considerar carrega-lo a partir do inetd e adicionar um tcp wrapper, assim as conexes de entradas so vericadas nos arquivos /etc/hosts.allow e /etc/hosts.deny. Tambm, voc dever estar atento sobre acessos no autorizados sendo tentados sobre o seu daemon de mensagens, se congurar adequadamente o log de mensagens do seu sistema para qualquer um dos mtodos acima. Em qualquer caso, para rejeitar tentativas de repasse de mensagens a nvel SMTP, voc dever alterar o arquivo /etc/exim /exim.conf para incluir:
receiver_verify = true

At mesmo se seu servidor de e-mails no repassar a mensagem, este tipo de congurao necessrio para o teste de relay em http://www.abuse.net/relay.html para determinar que seu servidor no capaz de repassar mensagens. No entanto, se desejar uma congurao somente de leitura, voc poder considerar a alterao do daemon de mensagens para programas que podem somente ser congurados para redirecionar as mensagens para servidores de mensagens remotas. O Debian atualmente oferece o pacote ssmtp e o nullmailer para este propsito. Em qualquer caso, voc dever avaliar por si mesmo quaisquer dos agentes de transporte de mensagens 1 fornecido com o Debian. Veja que programa atende melhor aos propsitos do sistema.

5.6.2

Fornecendo acesso seguro s caixas de mensagens

Se quiser oferecer acesso remoto s caixas de mensagens, existe um nmero de daemons POP3 e IMAP disponveis 2 . No entanto, se voc oferecer acesso a IMAP, note que ele um protocolo de acesso a arquivos, ele pode se tornar equivalente a um acesso shell porque os usurios podem ser capazes de obter qualquer arquivo atravs dele. Tente, por exemplo, congurar como seu caminho para a inbox{servidor.com}/etc/passwd, se ele abrir o arquivo com sucesso seu daemon IMAP no est corretamente congurado para prevenir este tipo de acesso.
1 para

obter uma lista de todos os daemons de mensagens disponveis no Debian, execute o comando:

$ apt-cache search mail-transport-agent

A lista no incluir o qmail, que distribudo somente como cdigo fonte no pacote qmail-src.
2 Uma

lista de servidores/daemons que suportam estes protocolos podem ser obtidos com:

$ apt-cache search pop3-server $ apt-cache search imap-server

Captulo 5. Tornando os servios em execuo do seu sistema mais seguros

60

Dos servidores de IMAP existentes no Debian, o servidor cyrus (do pacote cyrus-imapd) contorna isto tendo todos os acessos sendo em um banco de dados mantido em uma parte restrita do sistema de arquivos. Tambm o uw-imapd (ou instale o uw-imapd ou melhor, se seus clientes IMAP o suportam, uw-imapd-ssl) poder ser congurado para fazer o chroot do diretrio dos usurios de mensagens mas isto no ativado por padro. A documentao fornecida oferece mais informaes sober como congura-lo. Tambm, voc pode tentar executar um servidor IMAP que no precisa de usurios vlidos sendo criados no sistema local (que tambm oferece acesso a shell). Ambos os pacotes courier-imap (para IMAP) e courier-pop teapop (para o POP3) e o cyrus-imapd (para ambos POP3 e IMAP) fornecem servidores com mtodos de autenticao que no dependem de contas locais de usurios. O cyrus pode usar qualquer mtodo de autenticao que possa ser congurado atravs do PAM tal como o teapop pode usar bancos de dados (tal como o postgresql e o mysql) para autenticao do usurio. FIXME: Verique: uw-imapd tambm precisa ser congurado com autenticao do usurio atravs de PAM. . .

5.6.3

Recebendo mensagens de forma segura

A leitura/recebimento de mensagens o protocolo de texto puro mais comum. Se usar ou POP3 ou IMAP para obter suas mensagens, voc enviar sua senha em texto plano atravs da rede, assim praticamente qualquer um poder ler suas mensagens de agora em diante. Ao invs disto, utiliza-se SSL (Secure Sockets Layer) para receber seus e-mails. A outra alternativa utilizar o ssh, se tiver uma conta shell na mquina que atua como seu servidor POP ou IMAP. Aqui est um arquivo de congurao fetchmailrc bsico para demonstrar isto:
poll my-imap-mailserver.org via "localhost" with proto IMAP port 1236 user "ref" there with password "hackme" is alex here warnings 3600 folders .Mail/debian preconnect ssh -f -P -C -L 1236:my-imap-mailserver.org:143 -l ref my-imap-mailserver.org sleep 15 </dev/null > /dev/null

A linha preconnect importante. Ela executa uma seo ssh e cria o tnel necessrio, que automaticamente redireciona conexes para localhost da porta 1236 para o servidor de mensagens IMAP, mas de forma criptografada. Outra possibilidade ser usar o fetchmail com caractersticas ssl. Se deseja fornecer servios de mensagens criptografadas como POP e IMAP,apt-get install stunnel e inicie seus daemons da seguinte forma:
stunnel -p /etc/ssl/certs/stunnel.pem -d pop3s -l /usr/sbin/popd

Este comando direciona as conexes do daemon fornecido (-l) para a porta (-d) e utiliza o certicado ssl especicado (-p).

5.7

Tornando o BIND mais seguro

Existem diferentes mtodos que podem ser usados para deixar o daemon de servios de Domnio mais seguro, que so parecidos com os mostrados considerados quando tornamos qualquer determinado servio mais seguro: congurando o prprio daemon adequadamente assim ele no poder ser abusado de fora (veja Congurao do Bind para evitar m utilizao on this page) Isto inclui limitar requisies de clientes: transferncias de zonas e pesquisas recursivas. limitar o acesso do daemon ao prprio servidor assim se ele for usado para um corrompimento, a falha no sistema ser limitada. Isto inclui executar o daemon como um usurio no-privilegiado (veja Alterando o usurio do BIND on page 62) e fazer ele rodar dentro um chroot (see Executando o servidor de nomes em uma jaula chroot on page 63)

5.7.1

Congurao do Bind para evitar m utilizao

Voc dever restringir algumas das informaes que so servidas pelo BIND para clientes externos, assim no podero ser usadas para obter informaes sobre sua empresa que no deseja dar. Isto inclui adicionar as seguintes opes: allowtransfer, allow-query, allow-recursion e version. Voc pode ou limitar esta seo global (assim aplicando a todas as zonas que so servidas) ou por zona. Esta informao est includa no pacote bind-doc, leia mais sobre isto em /usr/share/doc /bind/html/index.html assim que o pacote for instalado. Imagine que seu servidor (um servidor bsico contendo mltiplos endereos) est conectado Internet e sua rede interna (seu endereo IP 192.168.1.2), voc no vai querer oferecer qualquer servio para os computadores. Voc poder restringir o bind incluindo o seguinte no /etc/bind/named.conf:

Captulo 5. Tornando os servios em execuo do seu sistema mais seguros


options { allow-query { 192.168.1/24; } ; allow-transfer { none; } ; allow-recursion { 192.168.1/24; } ; listen-on { 192.168.1.2; } ; forward { only; } ; forwarders { A.B.C.D; } ; };

61

A opo listen-on faz o BIND ser executado somente na interface que tem o endereo interno, mas, at mesmo se esta interface for a mesma que te conecta a internet (caso estiver usando NAT, por exemplo), as requisies sero aceitas somente se estiverem vindo de suas mquinas internas. Se o sistema tiver mltiplas interfaces e a opo listen-on no estiver presente, somente usurios internos podero fazer requisies, mas, como a porta est acessvel para possveis invasores externos, eles podem tentar travar (ou tentar realizar ataques de estouro de buffer) no servidor DNS. Voc poderia at faz-lo escutar somente em 127.0.0.1, se no estiver oferecendo o servio de DNS em qualquer outro sistema alm do seu. O registro version.bind na classe chaos contm a verso do processo do bind atualmente em execuo. Esta informao freqentemente usada por scaneadores automticos e individualmente por pessoas maliciosas que desejam determinar se o bind vulnervel a um ataque especco. Oferecendo informaes falsas ou no fornecendo informaes ao registro version.bind, diminui a probabilidade que o servidor seja atacado baseado na verso publicada. Para fornecer sua prpria verso, use a diretiva version da seguinte forma:
options { ... vrias opes aqui ... version "No disponvel."; };

A alterao do registro version.bind no oferece proteo atualmente contra ataques, mas pode ser considerado til para a segurana. Um arquivo simples de congurao named.conf pode ser o seguinte:
acl internal { 127.0.0.1/32; 10.0.0.0/8; aa.bb.cc.dd; }; acl friendly { ee.ff.gg.hh; aa.bb.cc.dd; 127.0.0.1/32; 10.0.0.0/8; }; // localhost // interna // IP da eth0

// // // //

DNS escravo IP da eth0 localhost interna

options { directory "/var/cache/bind"; allow-query { internal; }; allow-recursion { internal; }; allow-transfer { none; }; }; // A partir daqui, a zona mysite.bogus // basicamente uma verso no modificada do padro do Debian logging { category lame-servers { null; }; category cname { null; }; }; zone "." { type hint; file "/etc/bind/db.root"; }; zone "localhost" { type master; file "/etc/bind/db.local"; }; zone "127.in-addr.arpa" { type master; file "/etc/bind/db.127"; }; zone "0.in-addr.arpa" { type master; file "/etc/bind/db.0"; }; zone "255.in-addr.arpa" { type master; file "/etc/bind/db.255"; }; // zones I added myself zone "mysite.bogus" {

Captulo 5. Tornando os servios em execuo do seu sistema mais seguros


type master; file "/etc/bind/named.mysite"; allow-query { any; }; allow-transfer { friendly; }; };

62

Por favor (novamente) verique o Sistema de Tratamento de Falhas a respeito do bind, especicamente Bug #94760 (relacionado com ACLs em transferncia de zonas) (http://bugs.debian.org/94760). Sinta-se livre para contribuir para relatar falhas se achar que podem adicionar informaes teis.

5.7.2

Alterando o usurio do BIND

Com relao a limitao de privilgios do BIND, voc dever estar ciente que se um usurio no root executa o BIND, ento o BIND no detectar novas interfaces automaticamente, por exemplo, se colocar uma placa PCMCIA no notebook. Verique o arquivo README.Debian na documentao do named veja o diretrio (/usr/share/doc/bind/README.Debian) para mais informaes sobre este assunto. Ocorreram muitos problemas de segurana recentes relacionados com o BIND, assim a alterao do usurio mais til quando possvel. Ns detalharemos os passos para fazer isto, no entanto, se quiser fazer isto de uma forma automtica, tente o script fornecido em Exemplo de script para alterar a instalao padro do Bind. on page 131. Para executar o BIND sob um usurio diferente, primeiro crie um usurio separado e um grupo (no uma boa idia usar o nobody ou nogroup para cada servio que no estiver sendo executado como root). Neste exemplo, o usurio e grupo named sero usados. Voc poder fazer isto da seguinte forma:
addgroup named adduser --system --home /home/named --no-create-home --ingroup named \ --disabled-password --disabled-login named

Note que o usurio named ser bastante restringido. Se voc quiser, por alguma razo, ter uma congurao menos restrita, utilize:
adduser --system --ingroup named named

Agora, edite o arquivo /etc/init.d/bind com seu editor favorito e altere a linha que comea com
start-stop-daemon --start

para3
start-stop-daemon --start --quiet --exec /usr/sbin/named -- -g named -u named

Altere as permisses dos arquivo que so usados pelo Bind, incluindo /etc/bind/rndc.key:
-rw-r----1 root named 77 Jan 4 01:02 rndc.key

e onde o bind cria seu arquivo de pid, usando, por exemplo, /var/run/named ao invs de /var/run:
$ mkdir /var/run/named $ chown named.named /var/run/named $ vi /etc/named.conf [ ... atualize o arquivo de configurao para sua nova localizao ...] options { ... pid-file "/var/run/named/named.pid"; }; [ ... ]

Tambm, para evitar a execuo de tudo como usurio root, altere a linha reload comentando-a:
reload) /usr/sbin/ndc reload

E altere para:
3 Note que dependendo de sua verso do BIND voc pode no ter a opo -g, mais precisamente se estiver usando a woody e instalando o bind9 (9.2.1-2.woody).

Captulo 5. Tornando os servios em execuo do seu sistema mais seguros


reload) $0 stop sleep 1 $0 start

63

Nota: Dependendo de sua verso do Debian, voc dever tambm alterar a linha restart. Isto foi corrigido na verso do Bind do Debian 1:8.3.1-2. Tudo que precisa fazer agora reiniciar o bind via /etc/init.d/bind restart, e ento procurar em seu syslog pelas seguintes duas linhas, como estas:
Sep Sep 4 15:11:08 nexus named[13439]: group = named 4 15:11:08 nexus named[13439]: user = named

Voil! Seu named agora no executado como root. Se desejar ler mais informaes sobre porque o BIND no pode ser executado por um usurio no-root em sistemas Debian, verique o sistema de tratamento de falhas, especicamente Bug #50013: bind should not run as root (http://bugs.debian.org/50013) e Bug #132582: Default install is potentially insecure (http://bugs.debian.org/132582), Bug #53550 (http://bugs.debian.org/53550), Bug #128120 (http://bugs.debian.org/52745), e Bug #128120 (http://bugs.debian.org/128129). Sinta-se livre para contribuir para os relatrios de falhas se achar que pode adicionar informaes teis.

5.7.3

Executando o servidor de nomes em uma jaula chroot

Para obter o mximo de segurana no BIND, agora construa uma jaula chroot (veja Parania geral do chroot e suid on page 65) em torno do seu daemon. Existe um mtodo fcil de se fazer isto: a opo -t (veja a named(8) pgina de manual ou a pgina 100 do Documentao do Binds 9 (PDF) (http://www.nominum.com/content/documents/bind9arm. pdf)). Isto instruir o Bind a fazer uma jaula de si mesmo em um diretrio especicado sem a necessidade de congurar uma jaula chroot e se preocupar com as bibliotecas dinmicas. Os nicos arquivos que precisam estar na jaula so:
dev/null etc/bind/ - dever ter o named.conf e todas as zonas do servidor sbin/named-xfer - se fizer transferncias de nomes var/run/named/ - dever ter a pid e o nome do servidor de cache (se tiver) este diretrio precisa ter permisses de gravao para o usurio named. var/log/named - se configurar o log para um arquivo, este precisa ter permisses de gravao para o usurio named dev/log - o syslogd dever estar escutando aqui caso o named estiver configurado para realizar logs atravs dele.

Para seu daemon do Bind funcionar adequadamente, ele precisar de permisses nos arquivos do named. Esta uma tarefa simples, pois os arquivos de congurao esto sempre localizados em /etc/named/. Tenha em mente que ele somente precisa de acesso de leitura aos arquivos de zonas, a no ser que seja um DNS secundrio ou servidor de cache de nomes. Se este seu caso, voc ter que dar permisses completas para as zonas necessrias (assim as zonas transferidas do servidor principal funcionaro). Adicionalmente, mais detalhes sobre o Bind e chroot pode ser encontrados no Chroot-BIND-HOWTO (http://www. tldp.org/HOWTO/Chroot-BIND-HOWTO.html) (relacionado com o Bind 9) e Chroot-BIND8-HOWTO (http://www. tldp.org/HOWTO/Chroot-BIND8-HOWTO.html) (relacionado com o Bind 8). Este mesmo documento dever estar disponvel atravs da instalao do doc-linux-text (verso texto) ou doc-linux-html (verso html). Outro documento til http://web.archive.org/web/20011024064030/http://www.psionic.com/papers/dns/dns-linux. Se estiver congurando uma jaula completa do chroot (i.e. no somente -t) para o Bind 8.2.3 no Debian (potato), tenha certeza de possuir os seguintes arquivos nela:
dev/log - o syslogd dever estar escutando aqui dev/null etc/bind/named.conf etc/localtime etc/group - com somente uma linha simples: "named:x:GID:" etc/ld.so.cache - gerado com o ldconfig lib/ld-2.1.3.so lib/libc-2.1.3.so lib/ld-linux.so.2 - link simblico para ld-2.1.3.so lib/libc.so.6 - link simblico para libc-2.1.3.so sbin/ldconfig - pode ser apagado aps configurar a jaula chroot sbin/named-xfer - se fizer transferncias de nomes var/run/

Captulo 5. Tornando os servios em execuo do seu sistema mais seguros

64

Tambm modique o syslogd para escutar no $CHROOT/dev/log assim o servidor de nomes poder gravar entradas do syslog no log local do sistema. Se deseja evitar problemas com bibliotecas dinmicas, voc poder compilar o binrio estaticamente. Voc poder usar o apt-get para fazer isto, com a opo source. Ele pode at mesmo baixar os pacotes que precisa para compila-los adequadamente. Voc dever fazer algo similar a isto:
$ apt-get --download-only source bind build-dep bind $ cd bind-8.2.5-2 (edite o Makefile.in assim CFLAGS incluir a opo -static antes da definio @CFLAGS@ substituda pelo autoconf) $ dpkg-buildpackage -rfakeroot $ cd .. $ dpkg -i bind-8.2.5-2*deb

Aps a instalao, voc precisar mover os arquivos para a jaula chroot 4 voc poder manter os scripts do init.d em /etc/init.d assim o sistema ir iniciar automaticamente o servidor de nomes, mas edite-os para adicionar --chroot /location_of_chroot nas chamadas para start-stop-daemon nestes scripts. Para mais informaes sobre como congurar jaulas chroot veja Parania geral do chroot e suid on the next page. FIXME, merge info from http://people.debian.org/~pzn/howto/chroot-bind.sh.txt, http://www. cryptio.net/~ferlatte/config/ (Debian-specic), http://web.archive.org/web/20021216104548/ http://www.psionic.com/papers/whitep01.html and http://csrc.nist.gov/fasp/FASPDocs/ NISTSecuringDNS.htm.

5.8

Tornando o Apache mais seguro

FIXME: Adicionar contedo: os mdulos fornecidos com a instalao padro do Apache (sob /usr/lib/apache/X.X/mod_*) e mdulos que podem ser instalados separadamente pelos pacotes libapache-mod-XXX. Voc poder limitar o acesso ao servidor Apache se voc somente deseja usar ele internamente (para propsitos de testes, para acessar os arquivos do doc-central, etc..) e no deseja que pessoas de fora o acessem. Para fazer isto, use as diretivas Listen ou BindAddress no /etc/apache/http.conf. Using Listen:
Listen 127.0.0.1:80

Using BindAddress:
BindAddress 127.0.0.1

Ento reinicie o apache com /etc/init.d/apache restart e voc ver que ele somente esperar por requisies na interface loopback. Em qualquer caso, se no estiver usando todas as funcionalidades fornecidas pelo Apache, voc poder querer dar uma olhada em outros servidores web fornecidos no Debian, como o dhttpd. A Documentao do Apache (http://httpd.apache.org/docs/misc/security_tips.html) fornece informaes relacionadas com medidas de segurana a serem tomadas no servidor web Apache (estes mesmos passos so oferecidos no Debian atravs do pacote apache-doc). Mais informaes sobre restries do Apache congurando uma jaula chroot so mostradas em Ambiente chroot para Apache on page 145.

5.8.1

Proibindo a publicao de contedo dos usurios

A instalao padro do Apache no Debian permite que usurios publiquem contedo sob o diretrio $HOME /public_html. Este contedo pode ser pego remotamente usando uma URL tal como: http://your_apache_server/~user. Se no quiser permitir isto, voc dever alterar o arquivo de congurao /etc/apache/http.conf comentando a linha:
LoadModule userdir_module /usr/lib/apache/1.3/mod_userdir.so
4a

no ser que utilize a opo instdir quando executar o dpkg mas ento a jaula chroot ser um pouco mais complexa

Captulo 5. Tornando os servios em execuo do seu sistema mais seguros

65

Mas se um mdulo foi includo estaticamente (voc poder checar isto executando apache -l) voc dever utilizar a seguinte tcnica:
Userdir disabled

Nota: A palavra chave disabled est somente disponvel nas verses do Apache 1.3 e superior. Se estiver usando verses antigas do apache, voc dever alterar o arquivo de congurao e adicionar:
<Directory /home/*/public_html> AllowOverride None Order deny,allow Deny from all </Directory>

Um invasor ainda pode usar enumerao de usurio, pois a resposta do servidor ser um 403 Permisso negada e no um 404 No disponvel.

5.8.2

Permisses de arquivos de log

Os arquivos de log do Apache, desde a 1.3.22-1, tem como dono o usurio root e grupo adm com permisses 640, estas permisses so alteradas aps o rotacionamento de logs. Um intruso que acessou o sistema atravs do servidor web no ser capaz (sem escalao de privilgios) de remover entradas antigas do log.

5.8.3

Arquivos da Web Publicados

Os arquivos do Apache esto localizados sob /var/www. Apenas aps a instalao o arquivo de congurao padro fornecer algumas informaes sobre o sistema (principalmente que um sistema Debian executando o Apache). As pginas web padres tem como dono o usurio root e grupo root por padro, enquanto o processo do Apache executado como o usurio e grupo www-data. Isto torna difcil para invasores que comprometem o sistema atravs do servidor web, desgurarem o site. Voc dever, claro, substituir as pginas padres por suas prprias (que fornecem informaes que no deseja mostrar para pessoas de fora).

5.9

Tornando o nger mais seguro

Se desejar executar o servio nger, primeiro pergunte a voc mesmo porque o deseja. Se precisar dele, voc ver que o Debian fornece vrios daemons de nger (sada do comando apt-cache search fingerd): cngerd - Daemon de nger congurvel engerd - Outro daemon de nger para unix, capaz de ajustes nos em sua sada. fngerd - um daemon seguro do nger ngerd - Servidor remoto de informaes do usurio. xngerd - BSD-like daemon de nger com suporte a qmail. O ffingerd o daemon de nger recomendado se estiver usando-o em servios pblicos. Em qualquer caso, voc encorajado, quando estiver congurando atravs do inetd, xinetd ou tcpserver, a: limitar o nmero de processos que podem ser executados ao mesmo tempo, limitando o acesso ao daemon de nger de um nmero determinado de mquinas (usando o tcp wrappers) e escutando somente nas interfaces onde deve operar.

5.10

Parania geral do chroot e suid

O chroot uma das mais poderosas possibilidades para restringir um daemon, ou um usurio ou outro servio. Apenas imagine uma jaula em torno de seu alvo, onde o alvo no pode escapar dela (normalmente, mas existem vrias condies que permitam que um escape de tal jaula). Se no cona em um usurio ou em um servio, voc poder criar um ambiente root modicado para ele. Isto poder usar algum espao do disco para copiar todos os executveis requeridos, assim como bibliotecas, na jaula. Mas ento, at mesmo se o usurio zer algo malicioso, o escopo do ano limitado a jaula.

Captulo 5. Tornando os servios em execuo do seu sistema mais seguros

66

Muitos servios executados como daemons podero se beneciar deste tipo de tcnica. Os daemons que voc instala no Debian no viro, no entanto, dentro de chroot 5 por padro. Isto inclui: servidores de nomes (tal como o bind), servidores web (tal como o apache), servidores de mensagens (tal como o sendmail e servidores ftp (tal como o wu-ftpd). Provavelmente basta dizer que a complexibilidade do BIND a razo de que ele foi exposto a vrios ataques nos ltimos anos (see Tornando o BIND mais seguro on page 60). No entanto, o Debian no oferece muitos programas que podem ajuda-lo a congurar um ambiente chroot. Veja Criando automaticamente ambientes chroots on this page. De qualquer maneira, se executar qualquer servio em seu sistema, considere torn-lo mais seguro o possvel. Isto inclui: revogar os privilgios de root, execut-lo em um ambiente seguro (tal como uma jaula chroot) ou substitu-lo por um equivalente mais seguro. No entanto, j esteja avisado que uma jaula chroot pode ser quebrada se o usurio dentro dela for o superusurio. Assim voc dever estar certo que o servio est sendo executado por um usurio no privilegiado. Limitando seu ambiente, estar limitando os arquivos lidos/executveis que o servio poder acessar, assim, limitando as possibilidade de uma escalao privilegiada usar as vulnerabilidade de segurana locais do sistema. At mesmo nesta situao, voc no poder ter certeza completa de que l no existe mtodos para um invasor inteligente quebrar a jaula. Usando somente programas de servidor que tem a reputao de serem seguidos uma boa medida adicional. At mesmo minsculos furos como arquivos abertos podem serem usados por um invasor com conhecimentos para quebrar o sistema. Aps tudo isto, o chroot no foi designado como uma ferramenta de segurana, mas como uma ferramenta de testes.

5.10.1

Criando automaticamente ambientes chroots

Existem diversos programas que fazem automaticamente o chroot de servidores e servios. O Debian atualmente (aceita em maio de 2002) fornece o Wietse Venemas chrootuid no pacote chrootuid, assim como o pacote compartment e makejail. Estes programas podem criar um ambiente restritivo para a execuo de qualquer programa (chrootuid lhe permite at executa-lo como um usurio restrito). Algumas destas ferramentas podem ser usadas para criar facilmente um ambiente chroot. O programa makejail por exemplo, pode criar e atualizar uma jaula chroot com arquivos de congurao pequenos (ele fornece modelos de congurao para o bind, apache, postgresql e mysql). Ele tenta adivinhar e instalar na jaula todos os arquivos requeridos pelo daemon usando o strace, stat e dependncias de pacotes do Debian. Mais informaes podem ser obtidas em http://www.floc.net/makejail/. O Jailer uma ferramenta similar que pode ser obtida de http://www.balabit.hu/downloads/jailer/ e tambm est disponvel como um pacote do Debian GNU.

5.11

Parania geral sobre senhas em texto puro

Voc dever tentar evitar qualquer servio de rede que envia e receba senhas em texto puro atravs da rede, como o FTP/Telnet/NIS/RPC. O autor recomenda usar o ssh ao invs de telnet e ftp para qualquer um. Tenha em mente que migrando do telnet para o ssh, mas continuando a usar outros protocolos de texto puro no aumenta sua segurana de qualquer modo! O melhor remover o ftp, telnet, pop, imap, http e substitu-los por seus respectivos servios criptografados. Voc dever considerar mover estes para suas verses SSL, ftp-ssl, telnet-ssl, pop-ssl, https . . . A maioria dos listados acima se aplicam para cada sistema Unix (voc os encontrar se ler qualquer documento relacionado a tornar um sistema Linux (e outros tipos e Unix) mais seguro.

5.12

Desativando o NIS

Voc no dever usar o NIS, o Servio de Informaes de Rede, se possvel, pois ele permite o compartilhamento de senha. Isto pode ser altamente inseguro se sua congurao for corrompida. Se precisar de compartilhamento de senhas entre mquinas, voc dever considerar a adoo de outras alternativas. Por exemplo, a congurao de um servidor LDAP e o PAM para contactar o servidor LDAP para autenticao dos usurios. Voc poder encontrar uma congurao detalhada na LDAP-HOWTO (http://www.tldp.org/HOWTO/LDAP-HOWTO. html) (/usr/share/doc/HOWTO/en-txt/LDAP-HOWTO.txt.gz). Mais detalhes sobre a segurana em NIS podem ser encontradas em NIS-HOWTO (http://www.tldp.org/HOWTO/ NIS-HOWTO.html) (/usr/share/doc/HOWTO/en-txt/NIS-HOWTO.txt.gz).
5 Eles no tentaro ser executados sob mnimo privilgio que inclui a execuo de daemons com seus prprios usurios ao invs de t-los executando como root

Captulo 5. Tornando os servios em execuo do seu sistema mais seguros FIXME (jfs): Adicionar detalhes de como congurar isto no Debian

67

5.13

Tornando servios RPC mais seguros

Voc dever desativar RPC se no precisar dele. Chamadas de Procedimentos Remotos (RPC) um protocolo que os programas podem usar para solicitar servios de outros programas localizados em diferentes computadores. O servio portmap controla os servios RPC mapeando nmeros de programas RPC em nmeros de portas DARPA; ele dever estar sendo executado para executar chamadas RPC. Servios baseados em RPC tem tido um mal histrico de falhas de segurana, no entanto, o portmapper por si no (mas ainda fornece informaes teis ao atacante remoto). Note que alguns dos ataques DDoS (negao de servio distribudos) usam exploits rpc para entrar no sistema e atuar como o assim chamado agente/manipulador. Voc somente precisar do RPC se estiver usando um servio baseado em RPC. Os servios mais comuns baseados em RPC so o NFS (Network File System) e NIS (Network Information System). Veja a seo anterior para mais informaes sobre o NIS. O Monitor de alteraes de Arquivos (FAM) fornecido pelo pacote fam tambm um servio RPC, e assim depende do pacote portmap. Os servios NFS so muito importante em algumas redes. Se este for o caso para voc, ento ter que encontrar um balanceamento de segurana e usabilidade para sua rede. (Voc poder ler mais sobre a segurana em NFS no NFS-HOWTO (http://www.tldp.org/HOWTO/NFS-HOWTO.html) (/usr/share/doc/HOWTO/en-txt/NFS-HOWTO.txt.gz).)

5.13.1

Desativando completamente os servios RPC

A desativao do portmap bem simples. Existem diversos diferentes mtodos. O mais simples no sistema Debian 3.0 e mais novos desistalar o pacote portmap. Se estiver executando uma verso antiga do Debian, ter que desativar o servio como visto em Desabilitando daemons de servio on page 23, porque o programa parte do pacote net-base (que no pode ser removido sem quebrar o sistema). Isto de fato remove cada link relacionado ao portmap em /etc/rc${runlevel}.d/, que algo que pode fazer manualmente. Outra possibilidade executar um chmod 644 /etc/init.d/portmap, mas isto mostrar uma mensagem de erro durante a inicializao. Voc tambm poder comentar a parte start-stop-daemon no script /etc/init.d /portmap.

5.13.2

Limitando o acesso a servios RPC

Infelizmente em alguns casos a remoo dos servios RPC no uma opo. Alguns servios de desktop locais (notavelmente o fam da SGI) so baseados em RPC e assim precisam de um portmapper local. Isto signica que sob algumas situaes, os usurios que estiverem instalando um ambiente de desktop (como o GNOME) instalaro tambm o portmapper. Existem diversas formas de limitar o acesso ao portmapper e aos servios de RPC: Bloqueando o acesso as portas usadas por estes servios com um rewall local (veja Adicionando capacidades de rewall on this page). Bloquear o acesso a estes servios usando tcp wrappers, pois o portmapper (e alguns servios RPC) so compilados com a libwrap (veja Usando os tcpwrappers on page 39. Isto signica que voc poder bloquear o acesso a eles atravs do hosts.allow e hosts.deny na congurao do tcp wrappers. Desde a verso 5-5, o pacote portmap pode ser congurado para somente realizar conexes na interface loopback. Para fazer isto, modique o arquivo /etc/default/portmap, e descomente a seguinte linha: #OPTIONS=-i 127.0.0.1" e reinicie o portmapper. Isto suciente para permitir que servios RPC locais funcionem enquanto ao mesmo tempo evite que sistemas remotos os acessem (no entanto, veja Desativando assuntos relacionados a weakend de mquinas on page 49.

5.14

Adicionando capacidades de rewall

O sistema Debian GNU/Linux tem as capacidades embutidas fornecidas pelo kernel do GNU/Linux. Isto signica que se voc instalar o sistema potato (Debian 2.2), que vem com o kernel padro 2.2, voc ter as capacidades do rewall

Captulo 5. Tornando os servios em execuo do seu sistema mais seguros

68

ipchains no kernel, voc precisar ter o pacote ipchains, que dever, devido a sua prioridade, j estar instalado. Se estiver instalando o sistema woody (Debian 3.0), que vem com o kernel padro 2.4, voc ter o rewall iptables (netlter) disponvel. A principal diferena entre o ipchains e iptables que o ltimos baseado em inspeo de estado de pacotes que lhe oferece conguraes mais seguras (e fceis de construir) de ltragem.

5.14.1

Fazendo um rewall no sistema local

Voc poder usar regras de rewall como uma forma de restringir o acesso a seu sistema local e, at mesmo, limitar comunicaes feitas atravs dele. As regras de rewall tambm podem ser usadas para proteger processos que podem no estar corretamente congurados, no fornecendo servios para algumas redes, endereos IP, etc. . . No entanto, este passo mostrado por ltimo neste manual basicamente porque muito melhor no depender solenemente das capacidades de rewall para proteger um dado sistema. A segurana em um sistema feita atravs de camadas, o rewall deve ser a ltima a ser adicionada, uma vez que todos os servios foram ajustados para serem mais seguros. Voc pode facilmente imaginar uma congurao em que o administrador descuidadamente remove as regras de rewall por alguma razo (problemas com a congurao, descuido, erro humano . . . ), este sistema pode estar aberto para um ataque se no existir outro reforo no sistema para protege-lo. Por outro lado, tendo regras de rewall no sistema local tambm evita que coisas ruins aconteam. At mesmo se os servios fornecidos esto congurados de forma segura, um rewall pode proteger de m conguraes ou de servios instalados recentemente que ainda no foram congurados adequadamente. Tambm, uma congurao forte evitar que cavalos de tria chamem a origem de funcionarem a no ser que o cdigo do rewall seja removido. Note que um intruso no precisa de acesso de superusurio para instalar um cavalo de tria localmente que pode ser controlado remotamente (pois a escuta a porta permitido caso no sejam portas privilegiadas e as capacidades no foram removidas). Assim, uma congurao apropriada de rewall aquela com a poltica padro deny, que : conexes de entrada so permitidas somente para servios locais por mquinas permitidas. conexes de sada somente so permitidas para servios usados pelo seu sistema (DNS, web browsing, pop, email. . . .)
6

a regra forward bloqueia tudo (a no ser que esteja protegendo outros sistemas, veja abaixo). todas as outras conexes de entrada ou sada so negadas.

5.14.2

Usando um rewall para proteger outros sistemas

Um rewall tambm pode ser instalado no Debian para proteger, com regras de ltragem, o acesso a sistemas atravs dela, limitando sua exposio na Internet. O rewall pode ser congurado para evitar que sistemas de fora da rede local acesse servios (portas) que no so pblicas. Por exemplo, em um servidor de mensagens, somente a porta 25 (onde o servio de e-mail foi denido) precisa ser acessada de fora. Um rewall pode ser congurado para, at mesmo se existem outros servios disponibilizados publicamente, descartar qualquer pacote (isto conhecido como ltragem) direcionado a mquina. Voc pode at mesmo congurar a mquina Debian GNU/Linux como uma rewall bridge, i.e. um rewall de ltragem completamente transparente para a rede que deixa de lado um endereo IP e assim no pode ser atacada diretamente. Dependendo do kernel que tiver instalado, voc poder precisar fazer a instalao do patch de bridge no rewall e ento ir para a seo 802.1d Ethernet Bridging quando estiver congurando o kernel e uma nova opo netlter ( rewalling ) support. Veja Congurando uma ponte rewall on page 127 para mais detalhes sobre como fazer isto em um sistema Debian GNU/Linux).

5.14.3

Congurando o rewall

claro que a congurao do rewall sempre dependente de sistema e rede. Um administrador dever conhecer de antemo qual a estrutura da rede e os sistemas que deseja proteger, os servios que precisam ser acessados e se ou no outras consideraes de rede (como NAT ou roteamento) devem ser levadas em conta. Seja cuidadoso quando congurar seu rewall, como Laurence J. Lane diz no pacote iptables: As ferramentas podem ser facilmente mal utilizadas, causando uma enorme quantidade de peso na conscincia e cortando o acesso a um sistema. No terrivelmente incomum para um administrador de sistemas remotos travar si prprio fora de um sistema centenas de
6 De forma diferente de rewalls pessoais em outros sistemas operacionais, o Debian GNU/Linux (ainda) no fornece uma interface de gerao de rewall que possa fazer regras de limitao por processo ou usurio. No entanto, o cdigo do iptables pode fazer isto (veja o mdulo owner na pgina de manual iptables(8))

Captulo 5. Tornando os servios em execuo do seu sistema mais seguros

69

milhares de milhas de distncia. tambm possvel que algum deixe ele prprio fora de um computador em que o teclado est sob seus dedos. Por favor, use com a devida precauo. Lembre-se disto: apenas a instalao do iptables (ou do antigo cdigo de rewall) no oferece qualquer proteo, apenas fornece o programa. Para ter um rewall, voc precisa congur-lo! Se no souber muito sobre rewall, leia o Firewalling-HOWTO que pode ser encontrado no pacote doc-linux-text (outros formatos de documentos tambm esto disponveis). Veja Esteja ciente dos problemas gerais de segurana on page 17 para mais referncias (gerais). Fazendo pelo mtodo Debian Se estiver usando o Debian 3.0, voc notar que tem o pacote iptables instalado. Este para suporte da implementao netlter de kernels 2.4.4 e superiores. Pois apenas aps a instalao o sistema pode no saber que regras de rewall (regras de rewall so bastante dependentes de sistema) voc tem para ativar o iptables. No entanto, os scripts foram congurados de uma forma que o administrador possa congurar as regras de rewall e ento ter os scripts de inicializao sempre aprendendo-as e usando sempre como congurao do rewall. Para fazer isto voc dever: Congurar o pacote, assim ele ser iniciado com o sistema. Nas verses novas (desde a 1.2.6a-1) isto feito quando o pacote instalado. Voc poder congur-lo aps isto com dpkg-reconfigure -plow iptables. Nota: em verses antigas, isto pode ser feito editando-se o arquivo /etc/default/iptables e vericando se a varivel enable_iptables_initd foi denida para true (ativo). crie uma congurao de rewall usando o iptables, voc poder usar a linha de comando (veja iptables(8)) ou algumas outras ferramentas fornecidas pelos pacotes de Firewall do Debian (veja Usando pacotes de Firewall on the current page). Voc precisar criar um conjunto de regras de rewall para ser usado quando o rewall estiver em estado ativo e outro para ser usado no estado inativo do rewall (podem ser simplesmente regras vazias). salve as regras que criou usando o /etc/init.d/iptables save_active e /etc/init.d/iptables save_inactive executando estes scripts com as regras de rewall que deseja iniciar. Assim que tiver terminado, sua congurao de rewall estar salva no diretrio /var/lib/iptables/ e ser executado quando o sistema inicializar (ou quando executar o script initd com os argumentos start e stop). Por favor note que a congurao padro do Debian inicia o cdigo de rewall em nveis de execuo multiusurio (2 a 5) e em breve (10). Tambm, ele interrompido em modo monousurio (1), altere isto caso no conra com suas polticas locais. Se no tiver uma dica de como congurar regras de rewall manualmente, consulte o documento Packet Filtering HOWTO e NAT HOWTO fornecidas pelo iptables para leitura ofine em /usr/share/doc/iptables/html/. O arquivo de congurao /etc/default/iptables tambm fornece vrias informaes a respeito deste pacote. Usando pacotes de Firewall A congurao manual de um rewall pode ser complicada para o administrador novato (e muitas vezes para at mesmo o expert). No entanto, a comunidade de software livre tem criado um nmero de ferramentas que podem ser usadas para congurar facilmente um rewall local. Esteja avisado desde j que algumas destas ferramentas so orientadas somente para a proteo local (tambm chamadas de rewall pessoal) e algumas so mais versteis e podem ser usadas para congurar regras complexas para proteger todas as redes. Alguns softwares que podem ser usados para congurar regras de rewall em um sistema Debian so: firestarter orientado a usurios nais, inclui um assistente para denir regras de rewall rapidamente. knetfilter fwbuilder uma GUI orientada a objetos que inclui compiladores de polticas para vrias plataformas de rewalls incluindo o iptables assim como listas de acesso do roteador. A funcionalidade completa do fwbuilder tambm est disponvel atravs da linha de comando shorewall que oferece suporte a IPsec com um suporte bem limitado para controle de trfego tambm como uma denio de regras de rewall. mason, que prope regras de rewall baseados no trfego de rede que seu sistema enxerga.

Captulo 5. Tornando os servios em execuo do seu sistema mais seguros

70

bastille (entre os passos de fortalecimento que podem fazer as novas verses do bastille, a possibilidade de se adicionar regras de rewall ao sistema que sero executadas na inicializao) guarddog, um pacote de congurao de rewall baseada no KDE (alternativa/competidor ao pacote knetlter) ferm fwctl easyfw firewall-easy ipac-ng gfcc lokkit ou gnome-lokkit Os ltimos pacotes: gfcc,restarter e knetlter so interfaces de administrao GUI usando ou o GNOME (os dois primeiros) ou o KDE (o ltimo) que so muito mais orientados a usurios (para usurios domsticos) que outros pacotes da lista que so mais orientadas a administradores. Esteja j avisado que alguns pacotes destacados anteriormente iro provavelmente introduzir a scripts de rewall que sero executados quando o sistema for inicializado, isto sem dvida alguma conitar com a congurao padro (se estiver congurada) e ter efeitos indesejados. Normalmente os scripts de rewall que so executados por ltimo sero os que conguraro o rewall do sistema (que pode no ser o que voc deseja). Consulte a documentao do pacote e use ou uma desta conguraes. Geralmente, outros programas que te ajudam a congurar regras de rewall podem pesquisar outros arquivos de congurao. FIXME: Adicionar mais informaes a respeito destes pacotes FIXME: Procure por informaes sobre rewall no Debian e o que/como fazer sua alterao para outras distribuies. FIXME: Onde o cdigo de rewall personalizado poder ser ativado (FAQ padro na debian-rewall?) FIXME: Adicionar informaes sobre Zorp (http://www.balabit.hu/downloads/zorp/stable/deb/) no Debian (veja Bug #88347 (http://bugs.debian.org/88347). Os pacotes do Debian so fornecidos, mas eles dependem da libglib1.3 que no est disponvel na distribuio Debian.

71

Captulo 6

Fortalecimento automtico de sistemas Debian


Aps ler todas as informaes dos captulos anteriores voc deve estar pensando Eu tenho que fazer muitas coisas para ter meu sistema fortalecido, estas coisas no poderiam ser automatizadas?. A resposta sim, mas tenha cuidado com ferramentas automatizadas. Algumas pessoas acreditam que uma ferramenta de fortalecimento no elimina a necessidade de uma boa administrao. Assim no seja tolo em pensar que pode automatizar todo o processo e corrigir todos os problemas relacionados a ele. Segurana um processo progressivo no qual o administrador deve estar participando e no somente car a espera deixando que as ferramentas faam todo o trabalho, j que nenhuma ferramenta poderia fazer: todas as implementaes de polticas de segurana possveis, cobrindo todos os ataques e todos os ambientes. Desde a woody (Debian 3.0) existem dois pacotes especcos que so teis para o fortalecimento do sistema. O pacote harden que tem sua estratgia baseada na dependncia de pacotes para rapidamente instalar pacotes de segurana importantes e remover os que tem problemas de segurana, a congurao de pacotes deve ser feita pelo administrador. O pacote bastille que implementa uma dada poltica de segurana no sistema local baseada na congurao anterior do administrador (a construo da congurao pode ser feita usando um processo guiado com questes simples no estilo sim/no).

6.1

Harden

O pacote harden tenta tornar a instalao e administrao fcil para mquinas que precisam de boa segurana. Este pacote deve ser usado por pessoa que desejam uma ajuda rpida para melhorar a segurana do sistema. Para fazer isto, ele conita com pacotes com falhas conhecidas, incluindo (mas no limitado a): falhas conhecidas de segurana (como estouro de buffer), uso de senhas em texto plano, esquecimento de controle de acesso, etc. Ele automaticamente instala algumas ferramentas que aumentam a segurana de alguma forma: ferramentas de deteco de intruso, ferramentas de anlise de segurana, etc. O Harden instala os seguintes pacotes virtuais (por exemplo pacotes sem contedo, que apenas dependem de outros): harden-tools: ferramentas para aumentar a segurana do sistema (vericadores de integridade, detectores de intruso, patches de kernel. . . ) harden-doc: fornece este mesmo manual e outros pacotes de documentao relacionados a segurana. harden-environment: ajuda a congurar um ambiente fortalecido (atualmente vazio). harden-servers: servidores remotos considerados inseguros por alguma razo. harden-clients: exclui clientes considerados inseguros por alguma razo. harden-remoteflaws: exclui pacotes com furos de segurana conhecidos que podem ser usados por um invasor para comprometer o sistema (usa Conicts: sobre verses). harden-localflaws: exclui pacotes com problemas de segurana que podem ser usados por um invasor local para comprometer o sistema (usa Conicts: sobre verses). harden-remoteaudit: ferramentas para fazer a auditoria remota de um sistema. Tenha cuidado se tiver um programa que precisa (e que no deseja desinstalar por alguma razo) e que ele conite com alguns dos pacotes acima, assim no ser capaz de fazer uso completo do harden. Os pacotes do harden no fazem (diretamente) coisa alguma. Eles realizam, no entanto, conitos com pacotes conhecidamente inseguros. Desta forma, o sistema de empacotamento da Debian no aprovar a instalao destes pacotes. Por exemplo, quando tenta instalar um daemon telnet com o harden-servers o apt dir:

Captulo 6. Fortalecimento automtico de sistemas Debian


# apt-get install telnetd The following packages will be REMOVED: harden-servers The following NEW packages will be installed: telnetd Do you want to continue (Y/n)

72

Isto dever deixar o administrador mais tranqilo, reconsiderando suas aes que sero tomadas.

6.2

Bastille Linux

O Bastille Linux (http://www.bastille-unix.org) uma ferramenta de fortalecimento originalmente orientada sobre as distribuies RedHat e Mandrake. No entanto o pacote bastille fornecido com a Debian (desde a woody) adaptado para fornecer a mesma funcionalidade para o sistema Debian GNU/Linux. O Bastille pode ser usado com diferentes interfaces com o usurio (todas so documentadas em sua prpria pgina de manual no pacote da Debian) que permite o administrador a: Responder questes passo InteractiveBastille(8)) a passo sobre a segurana requerida pelo seu sistema (usando

Usar a congurao padro de segurana (entre trs: Fraca, Moderada, e Paranica) em um determinado sistema (servidor e estao de trabalho) e deixar o Bastille decidir que poltica de segurana que ser implementada (usando BastilleChooser(8)) Pegar um arquivo de congurao pr-denido (deve ser fornecido pelo Bastille ou feito pelo administrador) e implementar uma poltica de segurana determinada (usando AutomatedBastille(8))

73

Captulo 7

Infraestrutura do Debian Security


7.1 O time Debian Security

O Debian tem um Security Team (Time de Segurana), composto por cinco membros e duas secretrias que manipulam a segurana na distribuio stable (estvel). Manipular a segurana signica que eles acompanham as vulnerabilidades que aparecem nos software (vendo foruns como bugtraq o vuln-dev) e determinam se a distribuio stable afetada por eles. O Debian Segurity Team tambm o contato para problemas que so coordenados pelos desenvolvedores ou organizaes como CERT (http://www.cert.org) que podem afetar muitos vendedores. Isto , quando os problemas no so especcos do Debian. Existem dois contatos com o Security Team: team@security.debian.org (mailto:team@security.debian.org) o qual s lido pelos membros do security team . security@debian.org (mailto:security@debian.org) o qual lido por todos os desenvolvedores Debian (incluindo o security team). Emails enviados para esta lista no so publicados na internet (esta no uma lista de email pblica). Informaes sensveis devem ser enviadas para o primeiro email e, em alguns casos, deve ser encriptada com a Debian Security Contact key (key ID 363CCD95). Quando um provvel problema for recebido pelo Security Team, ele investigar se a distribuio stable foi afetada e, caso positivo, uma correo ser feita no cdigo fonte base. Esta correo algumas vezes incluir algum patch (que normalmente mais recente que a verso distribuda pelo Debian). Aps o teste da correo, novos pacotes so preparados e publicados em security.debian.org e podem ser baixados com o apt (veja Executar uma atualizao de segurana on page 27). Ao mesmo tempo um Debian Security Advisory (DSA) publicado no web site e enviado para a listas de email incluindo debian-security-announce (lists.debian.org/debian-security-announce) e bugtraq. Outras perguntas frequentes do Debian Security Team podems er encontradas em Questes relacionadas ao time de segurana da Debian on page 112.

7.2

Debian Security Advisories

Debian Security Advisories so avisos emitidos quandos uma vulnerabilidade de segurana que afeta um pacote Debian descoberta. Estes avisos, assinados por um membro do Security Team, inclui informao das verses afetadas assim como a localizao das atualizaes e seus MD5sums. Esta informao consiste de: nmero da verso para correo. tipo de problema. se ele remoto ou localmente explorvel. pequena descriod do pacote. descrio do problema. descrio da explorao.

Captulo 7. Infraestrutura do Debian Security descrio da correo.

74

DSAs so publicados em Debians mainserver frontpage (http://www.debian.org/) e em Debian security pages (http://www.debian.org/security/). Normalmente isto no feito at a reconstruo diria do website, ento eles podem no estar presentes imediatamente, o canal preferido a debian-security-announce mailing list. Usurios interessados podem, porm, usar o canal RDF para baixar automaticamente as DSAs para seu computador. Algumas aplicaes, como o Evolution (um cliente de email e assistente de informaes pessoais) e o Multiticker (um applet do GNOME), podem ser usados para baixar os avisos automaticamente. O canal RDF est disponvel em http://www.debian.org/security/dsa.rdf. Os DSAs publicados no website podem ser atualizados aps enviados para as listas de email. Uma atualizao comum adicionada atravs de referncias ao banco de dados de vulnerabilidades de segurana. Alm disso, tradues 1 dos DSAs no so enviadas para as listas de email mas so diretamente includas no site.

7.2.1

Referncias sobre vulnerabilidades

Debian fornece uma referncia completa em crossreferenced table (http://www.debian.org/security/ crossreferences) incluindo todas as remomendaes publicadas desde 1998. Esta tabela fornecida em complemento a reference map available at CVE (http://cve.mitre.org/cve/refs/refmap/source-DEBIAN.html). Voc notar que esta tabela fornece referncias aos bancos de dados como Bugtraq (http://www.securityfocus. com/bid), CERT/CC Advisories (http://www.cert.org/advisories/) and US-CERT Vulnerability Notes Database (http://www.kb.cert.org/vuls) assim como aos nomes CVE (veja abaixo). Estas referncias so fornecidas para uso, porm apenas referncias CVE so periodicamente revisadas e includas. Este recurso foi adicionado ao website em junho de 2002. Uma das vantagens de adicionar referncias ao banco de dados de vulnerabilidades que: torna fcil aos usurios Debian ver e tratar com recomendaes publicadas que j tenham sido resolvidas pelo Debian. administradores de sistema podem aprender mais sobre vulnerabilidades e seu impacto atravs das referncias. esta informao pode ser usada para a checagem de vulnerabilidades referentes ao CVE e detectar avisos falsos. (veja O scanner de vulnerabilidade X diz que meu sistema Debian vulnervel! on page 109).

7.2.2

Compatibilidade CVE

As recomendaes de segurana, Debian Security Advisories eram declared CVE-Compatible (http://www.debian. org/security/CVE-certificate.jpg)2 em fevereiro de 2004. Desenvolvedores Debian entendeream que precisavam fornecer precisas e atualizadas informaes de segurana para a distribuio, permitindo aos usurios gerenciar o risco associado com novas vulnerabilidades. CVE fornece referncias padronizadas que permitem aos usurios desenvolver um CVE-enabled security management process (http://www.cve. mitre.org/compatible/enterprise.html). O projeto Common Vulnerabilities and Exposures (CVE) (http://cve.mitre.org) mantido pela MITRE Corporation e fornece uma lista de nomes padronizados para vulnerabilidades e exposies de segurana. Debian acredita que fornecer aos usurios informaes relacionadas a segurana que afetem a distribuio extremamente importante. A incluso dos nomes CVE em avisos ajudam os usurios a associar vulnerabilidades genricas com atualizaes especcas, com reduo do tempo gasto para manusear as vulnerabilidades. Alm disso, fcil o gerenciamento da segurana em um ambiente onde j existem ferramentas que utilizam o CVE, como redes ou sistemas de detecco de invaso, ou ferramentas de avalio de vulnerabilidades, mesmo que elas no sejam baseadas em uma distribuio Debian. Debian iniciou adicionando nomes CVE aos DSAs em junho de 2002 e agora fornecer para todos os DSAs lanados desde setembro de 1998 aps a reviso iniciada em agosto de 2002. Todos os avisos podem ser recuperados do website do Debian e notcias relacionadas a novas vulnerabilidades incluindo nomes CVE se disponveis na poca de seu lanamento. Avisos associados com um dado nome CVE pode ser procurado diretamente atravs do search engine (http://search.debian. org/). Usurios que querem procurar por um nome CVE em particular podem usar o sistema de busca disponvel em debian.org para recuperar avisos disponveis (em ingls e traduzidos para outros idiomas). Uma busca pode ser feita para um nome
1 Tradues 2O

esto disponveis em dez idiomas completo capability questionnaire (http://cve.mitre.org/compatible/phase2/SPI_Debian.html) estava disponvel para o CVE

Captulo 7. Infraestrutura do Debian Security

75

especco (como aviso CAN-2002-0001 (http://search.debian.org/?q=advisory+%22CAN-2002-0001%22ps= 50o=1m=all)) ou para nomes parciais (como todos os avisos de 2002 para CAN-2002 (http://search.debian.org/ ?q=advisory+%22CAN-2002%22ps=50o=1m=all)). Observe que voc precisa entrar com a palavra advisory junto com o nome CVE para recuperar apenas avisos de segurana. Em alguns casos voc pode nO encontrar um CVE em avisos publicados porque: No Debian os produtos no so afetados pela vulnerabilidades. Ainda no existe uma viso abordando a vulnerabilidade (ele pode ter sido informado para a security bug (http: //bugs.debian.org/cgi-bin/pkgreport.cgi?tag=security) mas uma correo ainda no ter sido testada a atualizada) Um aviso foi publicado antes que um CVE fosse assinado para a vulnerabilidade em questo (procure por uma atualizao no web site)

7.3

Infraestrutura da segurana Debian

Uma vez que o Debian normalmente suportado em um grande nmero de arquiteturas, administradores algumas cam admirados se uma dada arquitetura levar mais tempo para receber atualizaes de segurana. De fato, exceto em raras circunstncias, atualizaes esto disponveis para todas as arquiteturas ao mesmo tempo. Enquanto antigamente a tarefa de construir atualizaes de segurana era feita a mo, hoje no mais (como Anthony Towns descreve em a mail (http://lists.debian.org/debian-devel-announce/2002/ debian-devel-announce-200206/msg00002.html), enviado para a lista debian-devel-announce em 6 de junho de 2002.) Pacotes atualizados pelo time de segurana (para security.debian.org:/org/security.debian.org/queue/ unchecked ou ftp://security.debian.org/pub/SecurityUploadQueue) tem suas assinaturas checada com um patch adequado dentro de quinze minutos, uma vez isto feito eles so adicionados a lista de auto construtores. Ento, os pacotes podem ser disponibilizados para todas as arquiteturas num tempo de trinta minutos a uma hora do momento em que foram atualizados. Porm, atualizaes de segurana so um pouco diferentes da atualizao normal envidada pelos mantenedores de pacotes, uma vez que, em alguns casos, antes de ser publicadas, elas precisam esperar at serem testadas, um aviso ser escrito ou, ainda, precisam esperar uma semana ou mais para evitar publicao da falhar at que todos os vendedores tenham chance de corrig-la. Assim, a atualizao de segurana trabalha da seguinte maneira (chamada Accepted-Autobuilding): Algum encontra um problema de segurana. Algum corrige o problema e atualiza security.debian.org (este algum normalmente um membro do Time de Segurana mas pode ser tambm um mantenedor de pacote com uma correo apropriada que contactou o time de segurana previamente). O Changelog inclui uma indicao testing-security ou stable-security. Ocorre o upload checado e processado por um sistema Debian e movido para queue/accepted, e buildds so noticados. Arquivos aqui podem ser acessados pelo time de segurana e (indiretamente) pelos buildds. O Security-enable buildds pega o pacote fonte (que tem prioridade sobre os builds normais), o constri, e envia logs para o time de segurana. O time de segurana reproduz os logs, e novos pacotes construdos so enviados para queue/unchecked, onde so processados pelo sistema Debian, e movidos para queue/accepted. Quando o time de segurana verica que o pacote fonte est aceitvel (isto , ele foi corretamente construdo para todas as arquiteturas, corrigiu os problemas de segurana e no introduziu novos problemas) eles rodam um script que: instala o pacote em um arquivo de segurana. atualiza os pacotes, fontes e release les de security.debian.org de uma maneira normal (dpkg-scanpackages, dpkg-scansources. . . ) congura um aviso modelo que o time de seguranaa pode encerrar os trabalhos. (opcionalmente) envia os pacotes para as atualizaes adequadas e eles podem ser includos assim que for possvel. Este procedimento, antes feito a mo, foi testado e usado completamente durante o estgio freeze do Debian 3.0 Woody (Julho de 2002). Graas a esta infraestrutura do Security Team foi possvel ter pacotes atualizados prontos para o apache e OpenSSH para todas as arquiteturas suportadas (quase vinte) em menos de um dia.

Captulo 7. Infraestrutura do Debian Security

76

7.3.1

Guia dos desenvolvedores de atualizaes de seguranaa

Este email foi enviado por Wichert Akkerman para Debian-devel-announce mailing list (http://lists.debian.org/ debian-devel-announce/2002/debian-devel-announce-200206/msg00004.html) a m de descrever o comportamento do desenvolvedor Debian para manipulao de problemas de segurana em seus pacotes. Ele est publicado aqui tanto para os desenvolvedores quanto os usurios entenderem melhor como a segurana manipulada no Debian. Por favor observe que a ltima referncia para esta informao Debian Developers Reference (http://www.debian. org/doc/manuals/developers-reference/ch-pkgs#bug-security), esta seo ser removida em futuro prximo. Coordenando com o time de segurana Se um desenvolvedor tem conhecimento de um problema de segurana, seja em seu pacote seja em outro, ele deve sempre contactar o time de segurana (atravs de team@security.debian.org). Eles mantm controle dos problemas de segurana, podem ajudar mantenedores, corrigir os problemas, so responsveis por enviar os avisos e manter o security.debian.org. Observe que os avisos de segurana no so feitos apenas para releases, no apenas para testing, unstable (veja Como a segurana tratada na testing e unstable? on page 113) ou distribuies antigas (veja Eu uso uma verso antiga da Debian, ela suportada pelo time de segurana? on page 113). Tomando conhecimento dos problemas de segurana Como um desenvolvedor toma conhecimento de um problema de segurana: ele observa em um frum pblico (mailing list, website, etc.): algum arquiva um bugreport (um tag Security deve ser usada, ou adicionada) algum o informa via email. Nos dois primeiros casos a informao pblica e importante ter uma correo o mais rpido possvel. Em ltimo caso porm ela pode no ser uma informao pblica. Neste caso existem poucas opes para tratar o problema: Se um problema trivial (como arquivos inseguros temporrios) no h necessidade de manter o problema secreto e a correo deve ser feita e lanada. se o problema grave (explorao remota, possibilitando adquirir privilgios de root) prefervel compartilhar a informao com outros vendedores e coordenar o lanamento. O time de segurana mantm contato com vrias organizaes e indivduos e cuidadoso com isto. Em todos os casos, se a pessoa que reporta o problema pede para no divulgar a informao, deve ser respeitada, com execeo bviade informar ao time de segurana (o desenvolvedor deve estar certo que ele disse ao time de segurana que a informao no deve ser divulgada). Por favor observe que se o segredo necessrio o desenvolvedor pode tambm no atualizar uma correo para a unstable (ou qualquer outra), uma vez que o chagelog para a unstable uma informao pblica. Existem duas razes para o lanamento da informao mesmo se o segredo solicitado: o problema torna-se conhecido por muitos, ou a informao torna-se pblica. Construindo um pacote A mais importante guideline quando fazendo um novo pacote que corrige um problema de segurana mazer o mnimo de alteraes necessrio. As pessoas sabem exatamente o comportamento de um lanamento, assim qualquer alterao feita pode quebrar o sistema de algum. Isto especialmente verdade para bibliotecas: o desenvolvedor deve estar certo de nunca alterar a API ou a ABI, mesmo que seja uma pequena mudana. Isto signica que mudar para uma nova verso no uma boa soluo, em vez disto s as alteraes relevantes devem ser feitas. Geralmente os mantenedores esto dispostos a ajudar que precisa, se no, o time de segurana da Debian pode. Em alguns casos no possvel fazer o backport de uma correo de segurana, por exemplo quando uma grande quantidade do cdigo fonte precisa ser modicado ou reescrito. Se isto acontece pode ser necessrio mover para uma nova verso, mas isto deve sempre ser coordenado com o time de segurana.

Captulo 7. Infraestrutura do Debian Security

77

Relacionado a isto existe outro importante aspecto: desenvolvedores devem sempre testar suas alteraes. Se existe uma falha que permita explorao, o desenvolvedor deve testar e vericar se ela aconteceu em um pacote no corrigido ou em um pacote corrigido. O desenvolvedor deve tentar o uso normal tambm, algumas vezes uma correo de segurana pode quebrar o uso normal sutilmente. Finalmente algumas coisas que os desenvolvedores devem ter em mente: Esteja certo que voc assinalou a distribuio correta em seu debian/changelog. Para a distrituio estvel (stable) voc deve assinalar como stable-security e para a distribuio em teste, testing-security. No assinale <codename>proposed-updates. Verique o nmero da verso. Ele deve ser maior que o pacote atual, mas menor que verses do pacote em distribuies anteriores. Para a distribuio testing isto signica que deve haver uma verso maior na distribuio unstable. Se ainda no existe (testing e unstable tem a mesma verso por exemplo) atualize a nova verso para a unstable primeiro. No faa atualizaes source-only se seu pacote tem alguns pacotes binary-all. A infraestrutura de construo no construir aqueles. Quando compilar um pacote fao isto em um sistema limpo, o qual tem s tem instalados pacotes da distribuio para a qual voc est construindo. Se voc no tem um sistema assim pode tentar a debian.org machine (veja http://db.debian.org/machines.cgi) ou congurar um chroot (os pacotes pbuilder e debootstrap podem ajudar neste caso). Realizando o uplaod com as correes de segurana Aps o desenvolvedor ter criado e testado um novo pacote ele precisa realizar o upload pois assim a correa ser instalada nos archives. Por segurana os arquivos para upload devem ser colocados em ftp://security.debian.org/pub/SecurityUploadQueue/ . Uma vez que o upload foi aceito o pacote ser automaticamente reconstrudo para todas as arquiteturas e armazenado para verirao pelo time de segurana. Uploads aguardando por aceitao e vericao s so acessveis pelo time de segurana. Isto necessrio uma vez que podem ser correes para problemas de segurana que ainda no foram descobertos. SE um mebro do time de segurana aceita um pacote ele ser instalado em security.debian.org assim como o apropriado <codename>-proposed-updates em ftp-master ou non-US archive. O aviso de segurana Os avisos de segurana so escritos e postados pelo time de segurana. Porm, eles certamente no pensam se um mantenedor pode fornecer o texto para eles (pelo menos uma parte). As informaes que devem fazer parte de um aviso so descritas em Debian Security Advisories on page 73.

7.4

Assinatura de pacote no Debian

Esta seo tambm pode ser chamada como atualizar seu sistema Debian GNU/Linux em segurana e meree sua prpria seo basicamente porque uma parte importante da infraestrutura de segurana. Assinatura de pacote uma coisa importante porque evita alteraes de pacotes distribudos em mirros. Atualizao automatica de software um recurso importante mas tambm importante remover ameaas de segurana que poderiam ajudar a distribuir cavalos de tria e comprometer os sistemas durante as atualizaes. 3 . Atualmente (maio de 2005) o Debian no fornece assinatura de pacotes para as distribuies lanadas woody ou sarge (3.0 ou 3.1). Elas no possuem este recurso. Existe uma soluo para isto que ser fornecida na prxima distribuio (codename etch). Este novo recurso estar disponvel no apt 0.6 (atualmente disponvel numa distribuio experimental, veja Pacotes experimentais apt on page 82). Isto melhor descrito em Strong Distribution HOWTO (http://www.cryptnet.net/fdp/crypto/strong_distro. html) por V. Alex Brennen.
3 Alguns sistemas operacionais j tiveram problemas com atualizaes automticas como Mac OS X Software Update vulnerabity (http://www. cunap.com/~hardingr/projects/osx/exploit.html). FIXME: probably the Internet Explorer vulnerability handling certicate chains has an impact on security updates on Microsoft Windows.

Captulo 7. Infraestrutura do Debian Security

78

7.4.1

O esquema proposto para checagem de assinatura dos pacotes

O esquema atual para checagem da assinatura dos pacotes usando apt : o arquivo lanado incluir o md5sum do Packages.gz (que contm os md5sum dos pacotes) e ser assinado. A assinatura de uma fonte certicada. A arquivo assinado baixado pelo apt-get update a armazenado com o Packages.gz. Quando o pacote est sendo instalado, ele primeiro baixado, ento o md5sum gerado. A assinatura checada (assinatura ok) e extrado o md5sum do arquivo Pakages.gz, este por sua vez gerado e (se ok) o md5sum do pacote baixado extrado. Se o md5sum do pacote baixado o mesmo que o do Packages.gz, o pacote ser instalado. Caso contrrio o administrador ser alertado e o pacote ser colocado num cache (e o administrador pode decidir se instalar o pacote ou no). Se o pacote no estiver no Packages.gz e o administrador tiver congurado o sistema para s instalar pacotes checados, o pacote no ser instalado. A sequncia seguinte de checagens MD5 do apt capaz de vericar se o pacote origina de um release especco. Isto menos exvel que a assinatura de cada pacote, mas pode ser combinada com este esquema tambm (veja abaixo). Atualmente, este esquema fully implemented (http://lists.debian.org/debian-devel/2003/ debian-devel-200312/msg01986.html) no apt 0.6 par mais informaes veja Pacotes experimentais apt on page 82. Pacotes que fornecem um front-end para o apt precisam ser modicados para adaptar este novo recurso, isto o caso do aptitude o qual tem feito modied (http://lists.debian.org/debian-devel/2005/03/msg02641.html) para adaptar-se a este esquema. Assinatura de pacotes foi discutido no Debian por um bom tempo, para mais informaes leia: http://www.debian. org/News/weekly/2001/8/ e http://www.debian.org/News/weekly/2000/11/.

7.4.2

Checando releases das distribuies

Caso voc queira adicionar os novos recursos de checagem de segurana e no queira rodar a verso experimental do apt (embora ns realmente apreciemos o teste dele) voc pode usar o script abaixo, fornecido por Anthony Towns. Este script pode automaticamente fazer algumas novas checagens de segurana para permitir ao usurio certicar-se que o software que est baixando corresponde aquele distribudo pelo Debian. Isto para desenvolvedores Debian usarem em sistemas sem a funcionalidade de uploading dos sistemas tradicionais, ou mirrors que tem quase tudo mas no como o Debian, ou mirrors que fornecem dados da verso unstable sem conhecimento dos problemas de segurana. Este cdigo, renomeado como apt-check-sigs, deve ser usado da seguinte maneira:
# apt-get update # apt-check-sigs (...resultados...) # apt-get dist-upgrade

Primeiro voc precisa: pagar as chaves para assinar os Release les, http://ftp-master.debian.org/ziyi_key_2003.asc e adicion-las a ~/.gnupg/trustedkeys.gpg (que gpgv usa por padro).
gpg --no-default-keyring --keyring trustedkeys.gpg --import ziyi_key_2003.asc

remover qualquer linha do /etc/apt/sources.list que no usa a estrutura normal de dist, ou alterar o script para ele trabalhe com elas. estar preparado para ignorar o fato que o Debian security updates no assinou os Release les, e que os Sources les no tem os checksums apropriados no Release le (ainda). estar preparado para checar se as fontes esto assinadas com as chaves apropriadas. Este o cdigo de exemplo do apt-check-sigs, a ltima verso pode ser conseguida de http://people.debian. org/~ajt/apt-check-sigs. Este cdigo atualmente est em beta, para mais informaes leia http://lists. debian.org/debian-devel/2002/debian-devel-200207/msg00421.html.

Captulo 7. Infraestrutura do Debian Security


#!/bin/bash # # # # # # # # # # # Copyright (c) 2001 Anthony Towns <ajt@debian.org> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

79

rm -rf /tmp/apt-release-check mkdir /tmp/apt-release-check || exit 1 cd /tmp/apt-release-check >OK >MISSING >NOCHECK >BAD arch=dpkg --print-installation-architecture am_root () { [ id -u -eq 0 ] } get_md5sumsize () { cat "$1" | awk /^MD5Sum:/,/^SHA1:/ | MYARG="$2" perl -ne @f = split /\s+/; if ($f[3] eq $ENV{"MYARG"}) { print "$f[1] $f[2]\n"; exit(0); } } checkit () { local FILE="$1" local LOOKUP="$2" Y="get_md5sumsize Release "$LOOKUP"" Y="echo "$Y" | sed s/^ *//;s/ */ /g" if [ ! -e "/var/lib/apt/lists/$FILE" ]; then if [ "$Y" = "" ]; then # No file, but not needed anyway echo "OK" return fi echo "$FILE" >>MISSING echo "MISSING $Y" return fi if [ "$Y" = "" ]; then echo "$FILE" >>NOCHECK echo "NOCHECK" return fi X="md5sum < /var/lib/apt/lists/$FILE | cut -d\ -f1 wc -c < /var/lib /apt/lists/$FILE" X="echo "$X" | sed s/^ *//;s/ */ /g" if [ "$X" != "$Y" ]; then echo "$FILE" >>BAD echo "BAD" return fi echo "$FILE" >>OK echo "OK" } echo echo "Checking sources in /etc/apt/sources.list:" echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" echo (echo "You should take care to ensure that the distributions youre downloading " echo "are the ones you think you are downloading, and that they are as up to" echo "date as you would expect (testing and unstable should be no more than" echo "two or three days out of date, stable-updates no more than a few weeks" echo "or a month)." ) | fmt echo cat /etc/apt/sources.list | sed s/^ *// | grep ^[^#] | while read ty url dist comps; do if [ "${url%%:*}" = "http" -o "${url%%:*}" = "ftp" ]; then baseurl="${url#*://}" else continue fi echo "Source: ${ty} ${url} ${dist} ${comps}"

Captulo 7. Infraestrutura do Debian Security


rm -f Release Release.gpg lynx -reload -dump "${url}/dists/${dist}/Release" >/dev/null 2>&1 wget -q -O Release "${url}/dists/${dist}/Release" if ! grep -q ^ Release; then echo " * NO TOP-LEVEL Release FILE" >Release else origline=sed -n s/^Origin: *//p Release | head -1 lablline=sed -n s/^Label: *//p Release | head -1 suitline=sed -n s/^Suite: *//p Release | head -1 codeline=sed -n s/^Codename: *//p Release | head -1 dateline=grep "^Date:" Release | head -1 dscrline=grep "^Description:" Release | head -1 echo " o Origin: $origline/$lablline" echo " o Suite: $suitline/$codeline" echo " o $dateline" echo " o $dscrline" if [ "${dist%%/*}" != "$suitline" -a "${dist%%/*}" != "$codeline" ]; then echo " * WARNING: asked for $dist, got $suitline/$codeline" fi lynx -reload -dump "${url}/dists/${dist}/Release.gpg" >/dev/null 2>&1 wget -q -O Release.gpg "${url}/dists/${dist}/Release.gpg"

80

gpgv --status-fd 3 Release.gpg Release 3>&1 >/dev/null 2>&1 | sed -n "s/^\[GNUPG:\] //p" | (okay=0; err=""; while rea if [ "$gpgcode" = "GOODSIG" ]; then if [ "$err" != "" ]; then echo " * Signed by ${err# } key: ${rest#* }" else echo " o Signed by: ${rest#* }" okay=1 fi err="" elif [ "$gpgcode" = "BADSIG" ]; then echo " * BAD SIGNATURE BY: ${rest#* }" err="" elif [ "$gpgcode" = "ERRSIG" ]; then echo " * COULDNT CHECK SIGNATURE BY KEYID: ${rest %% *}" err="" elif [ "$gpgcode" = "SIGREVOKED" ]; then err="$err REVOKED" elif [ "$gpgcode" = "SIGEXPIRED" ]; then err="$err EXPIRED" fi done if [ "$okay" != 1 ]; then echo " * NO VALID SIGNATURE" >Release fi)

fi okaycomps="" for comp in $comps; do if [ "$ty" = "deb" ]; then X=$(checkit "echo "${baseurl}/dists/${dist}/${comp}/binary-${arch}/Release" | sed s,//*,_,g" "${comp}/bin Y=$(checkit "echo "${baseurl}/dists/${dist}/${comp}/binary-${arch}/Packages" | sed s,//*,_,g" "${comp}/bi if [ "$X $Y" = "OK OK" ]; then okaycomps="$okaycomps $comp" else echo " * PROBLEMS WITH $comp ($X, $Y)" fi elif [ "$ty" = "deb-src" ]; then X=$(checkit "echo "${baseurl}/dists/${dist}/${comp}/source/Release" | sed s,//*,_,g" "${comp}/source/Rele Y=$(checkit "echo "${baseurl}/dists/${dist}/${comp}/source/Sources" | sed s,//*,_,g" "${comp}/source/Sour if [ "$X $Y" = "OK OK" ]; then okaycomps="$okaycomps $comp" else echo " * PROBLEMS WITH component $comp ($X, $Y)" fi fi done [ "$okaycomps" = "" ] || echo " o Okay:$okaycomps" echo done echo "Results" echo "~~~~~~~" echo allokay=true cd /tmp/apt-release-check diff <(cat BAD MISSING NOCHECK OK | sort) <(cd /var/lib/apt/lists && find . -type f -maxdepth 1 | sed s,^\./,,g | grep _ | sort) cd /tmp/apt-release-check if grep -q ^ UNVALIDATED; then allokay=false (echo "The following files in /var/lib/apt/lists have not been validated." echo "This could turn out to be a harmless indication that this script" echo "is buggy or out of date, or it could let trojaned packages get onto" echo "your system." ) | fmt

Captulo 7. Infraestrutura do Debian Security


echo sed s/^/ echo fi if grep -q ^ BAD; then allokay=false (echo "The contents of the following files in /var/lib/apt/lists does not" echo "match what was expected. This may mean these sources are out of date," echo "that the archive is having problems, or that someone is actively" echo "using your mirror to distribute trojans." if am_root; then echo "The files have been renamed to have the extension .FAILED and" echo "will be ignored by apt." cat BAD | while read a; do mv /var/lib/apt/lists/$a /var/lib/apt/lists/${a}.FAILED done fi) | fmt echo sed s/^/ / < BAD echo fi if grep -q ^ MISSING; then allokay=false (echo "The following files from /var/lib/apt/lists were missing. This" echo "may cause you to miss out on updates to some vulnerable packages." ) | fmt echo sed s/^/ / < MISSING echo fi if grep -q ^ NOCHECK; then allokay=false (echo "The contents of the following files in /var/lib/apt/lists could not" echo "be validated due to the lack of a signed Release file, or the lack" echo "of an appropriate entry in a signed Release file. This probably" echo "means that the maintainers of these sources are slack, but may mean" echo "these sources are being actively used to distribute trojans." if am_root; then echo "The files have been renamed to have the extension .FAILED and" echo "will be ignored by apt." cat NOCHECK | while read a; do mv /var/lib/apt/lists/$a /var/lib/apt/lists/${a}.FAILED done fi) | fmt echo sed s/^/ / < NOCHECK echo fi if $allokay; then echo Everything seems okay! echo fi rm -rf /tmp/apt-release-check

81

/ < UNVALIDATED

Voc pode precisar aplicar o seguinte patch para sid uma vez que md5sum adiciona um - aps o sum quando a entrada stdin:
@@ -37,7 +37,7 @@ local LOOKUP="$2" Y="get_md5sumsize Release "$LOOKUP"" Y="echo "$Y" | sed s/^ *//;s/ */ /g" Y="echo "$Y" | sed s/-//;s/^ *//;s/ */ /g"

if [ ! -e "/var/lib/apt/lists/$FILE" ]; then if [ "$Y" = "" ]; then @@ -55,7 +55,7 @@ return fi X="md5sum < /var/lib/apt/lists/$FILE wc -c < /var/lib/apt/lists/$FILE" X="echo "$X" | sed s/^ *//;s/ */ /g" + X="echo "$X" | sed s/-//;s/^ *//;s/ */ /g" if [ "$X" != "$Y" ]; then echo "$FILE" >>BAD echo "BAD"

7.4.3

Esquema alternativo de assinatura per-package

The additional scheme of signing each and every packages allows packages to be checked when they are no longer referenced by an existing Packages le, and also third-party packages where no Packages ever existed for them can be also used in Debian but will not be default scheme.

Captulo 7. Infraestrutura do Debian Security

82

Este esquema de assinatura pode ser implementado usando debsig-verify e debsigs. Estes dois pacotes podem assinar e vericar assinaturas embutidas em pacotes .deb. Debian j tem a capacidade de fazer sito, mas a implementao de policiamento e ferramentas no ser iniciada at as releases posteriores ao woody. As ltimas verses do dpkg (a partir de 1.9.21) incorporam um patch (http://lists.debian.org/debian-dpkg/ 2001/debian-dpkg-200103/msg00024.html) que fornece esta funcionalidade to logo debsig-verify seja instalado. NOTA: Atualmente /etc/dpkg/dpkg.cfg trabalha com no-debsig como padro. NOTA 2: Signatures from developers are currently stripped when they enter off the package archive since the currently preferred method is release checks as described previously.

7.4.4

Pacotes experimentais apt

O release do apt 0.6 inclui apt-secure que uma ferramenta que permitir a um administrador de sistema testar a integridade dos pacotes baixados atravs do esquema acima. Esta release inclui a ferramenta apt-key para adicionar novas chaves ao chaveiro do apt, o qual por padro inclui apenas o arquivo de assinatura de chaves atual do Debian. Se quer testar este recurso voc precisa adicionar a distribuio experimental ao seu sources.list e rodar
# apt-get -t experimental install apt

Estas alteraes so baseadas no patch para apt (disponvel em Bug #203741 (http://bugs.debian.org/cgi-bin/ bugreport.cgi?bug=203741)) o qual fornece esta implementao. Este recurso ainda est em desenvolvimento, se voc acredita que pode encontrar bugs nele por favor tenha certeza que est usando a ltima verso e, se estiver rodando a ltima verso, envie o bug para o pacote apt package usando a tag experimental. Observe que, usar esta verso experimental do apt no exige nada mais de sua parte a menos que voc no use sources Debian, neste caso um passo extra de conrmao ser requerido pelo apt-get. Isto evitado fornecendo Release e Release.gpg em non-Debian sources. O arquivo Release pode ser gerado com apt-ftparchive (disponvel em apt-utils 0.5.0 e posteriores), o Release.gpg apenas uma assinatura destacada. Para gerar ambos siga este simples procedimento:
$ rm -f dists/unstable/Release $ apt-ftparchive release dists/unstable > dists/unstable/Release $ gpg --sign -ba -o dists/unstable/Release.gpg dists/unstable/Release

83

Captulo 8

Ferramentas de segurana no Debian


FIXME: Necessrio mais contedo. Debian fornece tambm uma srie de ferramentas de segurana que podem tornar uma mquina com o sistema Debian adaptada para os propsitos de segurana. Estes propsitos incluem proteo dos sistemas de informao atravs de rewalls (de pacotes ou de aplicao), deteco de intruso (baseados em rede e host), vericao de vulnerabilidades, antivirus, redes privadas, etc. Desde o Debian 3.0 (woody), a distribuio caracteriza-se pelo software de criptograa integrado com a distribuio principal. OpenSSH e GNU Privacy Guard esto includos na instalao padro, e criptograa forte est agora presente em navegadores e servidores Web, bancos de dados, e assim por diante. Alm disso, a integrao de criptograa est planejada para futuros lanamentos. Este software, devido as restries de exportao nos EUA no foi distribudo com a distribuio principal, sendo disponvel apenas em sites non-US.

8.1

Ferramentas de vericao remota de vulnerabilidades


1

As ferramentas fornecidas pelo Debian para realizar vericao remota de vulnerabilidade so: nessus raccess whisker nikto (substituto de whisker) bass (non-free) satan (non-free)

A ferramenta mais completa e atualizada , de longe, o nessus que composta por um cliente (nessus) usado com uma GUI e um servidor (nessusd) que inicia os ataques programados. Nessus inclui vericao de vulnerabilidades remotas para a grande maioria de sistemas incluindo dispositivos de rede, servidores ftp e www, etc. Os ltimos plugins de segurana tem a capacidade de analisar um stio Web e tentar descobrir as pginas interativas disponveis que podem ser atacadas. Existem tambm clientes Java e Win32 (no incluidas no Debian) que podem ser usados para acessar o servidor de gerenciamento. Note que se voc est usando woody, os pacotes do Nessus esto realmente desatualizados (veja bug #183524 (http:// bugs.debian.org/183524)). No difcil portar os pacotes disponveis no unstable para woody, mas se voc encontrar diculdades, pode pensar em usar os pacotes portados fornecidos por um dos co-mantenedores e disponveis em http: //people.debian.org/~jfs/nessus/ (essas verses podem no estar atualizadas como as verses disponveis no unstable). Whisker um varredor de vericao de vulnerabilidades Web, que inclui tticas anti-IDS (a maioria no so mais antiIDS). um dos melhores varreadores baseados em CGI disponveis, sendo capaz de detectar servidores WWW e iniciar um dado conjunto de ataques contra ele. O banco de dados usado para a varredura pode ser facilmente modicado para fornecer novas informaes.
1 Algumas

delas so fornecidas na instalao do pacote harden-remoteaudit.

Captulo 8. Ferramentas de segurana no Debian

84

Bass (Bulk Auditing Security Scanner - BULK Varreador de auditoria de segurana) e SATAN (Security Auditing Tool for Analyzing Networks - Ferramenta de auditoria de segurana para anlise de redes) devem ser na opinio da maioria das pessoas, mais como programas de provas de conceitos do que como ferramentas para serem usadas em auditorias. Ambas so bastantes antigas e no so mais atualizadas. Contudo, SATAN foi a primeira ferramenta para fornecer avaliao das vulnerabilidades de maneira simples (atravs de uma GUI) e Bass ainda uma ferramenta de avaliao de alta performace.

8.2

Ferramentas de varredura de rede

Debian fornece algumas ferramentas usadas para a varredura remota de hosts (mas no para vericao de vulnerabilidades). Estas ferramentas so, em alguns casos, usadas pelos vericadores de vulnerabilidades como o primeiro tipo de ataque executado contra os hosts remotos na tentativa de determinar os servios disponveis. Atualmente Debian fornece os seguintes programas: nmap xprobe queso knocker isic icmpush nbtscan (para auditorias NetBIOS) fragrouter strobe (do pacote netdiag) hping2 (Nota: desatualizado) Enquanto o queso e o xprobe fornecem apenas deteco remota de sistema operacional (usando TCP/IP ngerprinting), nmap e knocker fazem, ambos, deteco de sistema operacional e varreadura de portas nos hosts remotos. Por outro lado, hping2 e icmpush podem ser usados nas tcnicas de ataque ICMP remoto. Desenvolvido especicamente para redes Netbios, nbtscan pode ser usado para varrer redes IP e recuperar informaes de nome de servidores samba habilitados, incluindo nomes de usurios e de rede, endereos MAC. . . Por outro lado, fragrouter pode ser usado para testar sistemas de deteco de instruso e ver se o NIDS pode ser iludido com ataques de fragmentao. FIXME: Vericar Bug #153117 (http://bugs.debian.org/153117) (ITP fragrouter) para ver se est includo. FIXME adicionar informaes baseadas em Debian Linux Laptop for Road Warriors (http://www.giac.org/ practical/gcux/Stephanie_Thomas_GCUX.pdf) que descreve como usar Debian e um laptop para varrer redes wireless (Link no existe mais).

8.3

Auditoria Interna

Atualmente, somente a ferramenta tiger utilizada no Debian pode ser usada para executar auditorias internas de hosts (tambm chamadas de caixa branca) de fato para determinar se o sistema de arquivos est corretamente congurado, que processos esto rodando no hosts, etc..

8.4

Auditoria de cdigo fonte

Debian fornce trs pacotes que podem ser utilizados para auditar cdigos fontes em C/C++ e encontrar erros de programao que podem conduzir para potenciais falhas de segurana: awnder rats splint

Captulo 8. Ferramentas de segurana no Debian

85

8.5

Redes Privadas Virtuais (VPN)

Uma rede privada virtual (VPN - Virtual Private Network) um grupo de dois ou mais sistemas computacionais, tipicamente conectados a uma rede privada com acesso pblico de rede limitado, que se comunicam seguramente atravs de uma rede pblica. VPNs podem conectar um simples computador a uma rede privada (cliente-servidor), ou uma LAN remota a uma rede privada (servidor-servidor). VPNs, muitas vezes, incluem o uso de criptograa, autenticao forte de usurios ou hosts remotos, e mtodos para esconder a topologia da rede privada. Debian fornece a maioria dos pacotes para congurar uma rede privada virtual criptografada: vtun tunnelv cipe vpnd tinc secvpn pptpd freeswan, que est obsoleto e substituido por openswan (http://www.openswan.org/) FIXME: Atualizar as informaes aqui j que foram escritas com o FreeSWAN em mente. Vericar Bug #237764 e a mensagem: <200412101215.04040.rmayr@debian.org>. O pacote OpenSWAN provavelmente a melhor escolha, desde que ele promete interoperar com quase tudo que usa o protocolo IP seguro, IPSec (RFC 2411). Entretanto, os outros pacotes listados acima podem tambm ajud-lo a ter um tnel seguro rapidamente. O protocolo de tunelamento ponto a ponto (PPTP) um protocolo para VPN proprietrio da Microsoft. suportado no Linux, mas conhecido por ter srios problemas de segurana. Para mais informaes veja VPN-Masquerade HOWTO (http://www.tldp.org/HOWTO/VPN-Masquerade-HOWTO. html) (cobrindo IPSec e PPTP), VPN HOWTO (http://www.tldp.org/HOWTO/VPN-HOWTO.html) (cobrindo PPP sobre SSH), e Cipe mini-HOWTO (http://www.tldp.org/HOWTO/mini/Cipe+Masq.html), e PPP and SSH miniHOWTO (http://www.tldp.org/HOWTO/mini/ppp-ssh/index.html). Tambm vale a pena vericar o Yavipin (http://yavipin.sourceforge.net/), mas este programa ainda no possue um pacote Debian disponvel.

8.5.1

Tunelamento ponto a ponto

Se voc deseja fornecer um servidor de tunelamento para um ambiente misto (com clientes Microsoft e Linux) e IPSec no uma opo (desde que s fornecido no Windows 2000 e Windows XP), voc pode usar PoPToP (Servidor de Tunelamento Ponto a Ponto) disponvel no pacote pptpd. Se voc deseja usar autenticao e criptograa da Microsoft com o servidor fornecido pelo pacote ppp, veja o seguinte trecho do FAQ:
O uso do PPP 2.3.8 s faz-se necessrio se voc deseja ter autenticao e criptografia MSCHAPv2/MPPE compatveis com a Microsoft. A razo para isto que o patch MSCHAPv2/MPPE atualmente aplicado (19990813) est sobre o PPP 2.3.8. Se voc no precisa de autenticao/criptografia compatvel com a Microsoft, qualquer verso 2.3.X do fonte do PPP ser suficiente.

Entretanto, voc tambm ter que aplicar o patch para o kernel fornecido no pacote kernel-patch-mppe, que contm o mdulo pp_mppe para o pppd. Saiba que a criptograa no ppptd fora o armazenamento de senhas de usurios em texto limpo, e o protocolo MS-CHAPv2 contm furos de segurana conhecidos (http://mopo.informatik.uni-freiburg.de/pptp_mschapv2/).

Captulo 8. Ferramentas de segurana no Debian

86

8.6

Infra-estrutura de Chave Pblica (PKI)

Infra-estrutura de Chave Pblica (PKI - Public Key Infrastructure) uma arquitetura de segurana introduzida para fornecer um nvel adicional de conana para trocas de informao em redes inseguras. Utiliza os conceitos de chaves de criptograa pblica e privada para vericar a identidade de um remetente (assinatura) e para assegurar a privacidade (criptograa). Quando considerar uma PKI, voc encontrar uma variedade de situaes: uma Autoridade Certicadora (CA - Certicate Authority) que pode distribuir e vericar certicados, e que pode trabalhar sobre uma dada hierarquia. um Diretrio para manter certicados pblicos de usurio um Banco de Dados (?) para manter Listas de Revogao de Certicados (CRL - Certicate Revocation Lists) dispositivos que interagem com a CA a m de imprimir em smart cards/ tokens USB ou qualquer outra forma para armazenar seguramente os certicados. aplicaes aptas a utilizarem certicados que podem usar certicados fornecidos por uma CA para realizar uma comunicao criptografada e vericar certicados dados contra CRL (para solues de autenticao e assinatura de uma nica vez completa) uma autoridade de marcao de tempo para assinar documentos digitalmente um console de gerenciamento a partir do qual tudo isso pode ser corretamente usado (gerao de certicados, controle de lista de revogaes, etc. . . ) Debian GNU/Linux tem pacotes de software para ajudar voc com alguns desses pontos da PKI. Eles incluem OpenSSL (para gerao de certicados), OpenLDAP (como um diretrio para manter os certicados), gnupg e openswan (com suporte para o padro X.509). Entretanto, como na verso Woody (Debian 3.0), Debian no tem nenhuma das autoridades certicadoras disponveis gratuitamente como pyCA, OpenCA (http://www.openca.org) ou os exemplos de CA do OpenSSL. Para mais informaes, leia o livro Open PKI (http://ospkibook.sourceforge.net/).

8.7

Infra-estrutura SSL

Debian fornece alguns certicados SSL com a distribuio de modo que eles podem ser instalados localmente. Eles so encontrados no pacote ca-certificates, que fornece um repositrio central dos certicados que foram submetidos para o Debian e aprovados (ou seja, vericados) pelo mantenedor do pacote e utis para qualquer aplicao OpenSSL que verica conexes SSL. FIXME: leia o debian-devel para vericar se algo foi adicionado a ele.

8.8

Ferramentas Anti-vrus

No existem muitas ferramentas anti-vrus includas no Debian GNU/Linux, provavelmente porque os usurios GNU/Linux no so aborrecidos com vrus. O modelo de segurana dos UN*X fazem uma distino entre os processos privilegiados (root) e os processos de usurio, ento quando um executvel hostil criado ou recebido por um usurio no-root e ento executado, no pode infectar ou manipular o sistema em questo. Entretanto, worms e vrus no GNU/Linux existem, embora eles no tenham (ainda, esperanosamente) se espalhado em nenhuma distribuio Debian. Em qualquer caso, administradores podem querer construir gateways anti-vrus que os protejam contra vrus enviados para outros sistemas mais vulnerveis em suas redes. Debian GNU/Linux atualmente fornece as seguintes ferramentas para a construo de ambientes anti-vrus: Clam Antivirus (http://clamav.elektrapro.com/), fornecido no Debian sarge (futura verso 3.1). Pacotes so fornecidos tanto para o varredor de vrus (clamav), quanto para o daemon varredor (clamav-daemon) e para os arquivos de dados necessrios para o varredor. Como a atualizao do anti-vrus crtica para o seu funcionamento, h duas formas diferentes de faz-la: clamav-freshclam fornece um modo para atualizao do banco de dados automaticamente atravs da Internet e clamav-data que fornece os arquivos de dados diretamente. 2
2 Se voc usar este ltimo pacote e estiver usando um Debian ocial, o banco de dados no ser atualizado com as atualizaes de segurana. Voc poder usar o clamav-freshclam e o clamav-getfiles para gerar novos pacotes clamav-data ou atualizar do repositrio do mantenedor, atravs da localizao:

deb http://people.debian.org/~zugschlus/clamav-data/ / deb-src http://people.debian.org/~zugschlus/clamav-data/ /

Captulo 8. Ferramentas de segurana no Debian

87

mailscanner um gateway de email com varredor de vrus e detector de spam. Usando o sendmail ou Exim como sua base, ele pode usar mais de 17 diferentes mecanismos de varredura de vrus (incluindo clamav) libfile-scan-perl que fornece File::Scan, uma extenso Perl para a varredura de arquivos em busca de vrus. Este mdulo pode ser usado para fazer varredores de vrus independentes de plataforma. Amavis Nova Gerao (http://www.sourceforge.net/projects/amavis), fornecido no pacote amavis-ng e disponvel no sarge, um varredor de vrus em emails que integrado com diferentes MTAs (Exim, Sendmail, Postx, ou Qmail) e suporta cerca de quinze mecanismos de varredura de vrus (incluindo clamav, File::Scan e openantivirus). sanitizer (http://packages.debian.org/sanitizer), uma ferramenta que usa o pacote procmail que pode varrer anexos de email em busca de vrus, bloquear anexos baseados em seus nomes de arquivos e outras opes. amavis-postx (http://packages.debian.org/amavis-postfix), um script que fornece uma interface de um agente de transporte de email para um ou mais varredores de vrus comerciais (este pacote construdo para suportar apenas o MTA postfix). exiscan, um varreador de e-mails escrito em Perl que funciona com o Exim. sanitizer, um varreador de emails que pode remover anexos potencialmente perigosos. blackhole-qmail um ltro de spam para o Qmail que foi construdo com suporte para o Clamav. Alguns daemons de gateways j suportam extenses de ferramentas para construir ambientes anti-virus, incluindo exim4-daemon-heavy (a verso pesada do MTA Exim), frox (um servidor proxy e cache transparente para ftp), messagewall (um daemon proxy SMTP) e pop3vscan (um proxy transparente POP3). Como voc pode ver, Debian no fornece atualmente nenhum software anti-vrus em sua distribuio ocial principal (3.0 no momento da escrita desse documento), mas fornece mltiplas interfaces para a construo de gateways anti-vrus. O varredor Clamav estar disponvel na prxima verso ocial. Alguns outros projetos anti-vrus livres que podem ser includos numa futura verso Debian GNU/Linux: Open Antivirus (http://sourceforge.net/projects/openantivirus/) (veja Bug #150698 (ITP oavscannerdaemon (http://bugs.debian.org/150698) e Bug #150695 (ITP oav-update (http://bugs.debian. org/150695) ). Existe tambm um pacote virussignatures, que fornece assinaturas para todos os pacotes. Este pacote contm um script para fazer o download das ltimas assinaturas de virus de http://www.openantivirus.org/latest.php. FIXME: Vericar se scannerdaemon o mesmo que o daemon varredor open anti-virus (ver ITPs). Por outro lado, Debian nunca ir fornecer softwares anti-vrus comerciais como: Panda Antivirus, NAI Netshield, Sophos Sweep (http://www.sophos.com/), TrendMicro Interscan (http://www.antivirus.com), ou RAV (http: //www.ravantivirus.com). Para mais apontadores veja em Linux antivirus software mini-FAQ (http://www. computer-networking.de/~link/security/av-linux_e.txt). Isto no signifca que estes softwares possam ser instalados corretamente em um sistema Debian. Para mais informaes de como congurar um sistema de deteco de vrus, veja o artigo de Dave Jones Building an E-mail Virus Detection System for Your Network (http://www.linuxjournal.com/article.php?sid=4882).

8.9

Agentes GPG

muito comum, atualmente, assinar digitalmente (e algumas vezes criptografar) e-mails. Voc pode, por exemplo, vericar que muitas pessoas participando em listas de discusso assinam seus e-mails. Assinaturas de chave pblica so atualmente o nico mecanismo para vericar que um email foi enviado pelo remetente e no por qualquer outra pessoa. Debian GNU/Linux fornece clientes de emails com funes embutidas para assinatura de emails que interagem com o gnupg ou pgp: Evolution. mutt. kmail.

Captulo 8. Ferramentas de segurana no Debian

88

sylpheed. Dependendo de como a verso estvel deste pacote evolua, voc pode precisar usar a verso bleeding edge, sylpheed-claws. gnus, que quando instalado com o pacote mailcrypt , uma interface emacs interface para o gnupg. kuvert, que fornece esta funcionalidade independentemente do agente de email do usurio (MUA - Mail User Agente) escolhido j que interage com o agente de transporte de email (MTA - Mail Transport Agente). Servidores de chave permitem voc fazer o download de chaves pblicas publicadas que podem ento vericar assinaturas. Um desses servidores de chaves http://wwwkeys.pgp.net. gnupg pode automaticamente buscar chaves pblicas que no esto em seu chaveiro pblico. Por exemplo, para congurar gnupg para usar o servidor de chaves acima, edite o arquivo ~/.gnupg/options e adicione a seguinte linha: 3
keyserver wwwkeys.pgp.net

A maioria dos servidores de chaves esto ligados, logo quando uma chave pblica adicionada em um servidor, esta propagada para todos os outros servidores de chaves pblicas. Existem tambm um pacote Debian debian-keyring, que fornece todas as chaves pblicas dos desenvolvedores Debian. Os chaveiros do gnupg so instalados em /usr/share /keyrings/. Para mais informaes: GnuPG FAQ (http://www.gnupg.org/faq.html). GnuPG Handbook (http://www.gnupg.org/gph/en/manual.html). GnuPG Mini Howto (English) (http://www.dewinter.com/gnupg_howto/english/GPGMiniHowto.html). comp.security.pgp FAQ (http://www.uk.pgp.net/pgpnet/pgp-faq/). Keysigning Party HOWTO (http://www.cryptnet.net/fdp/crypto/gpg-party.html).

3 Para

mais exemplos de como congurar o gnupg, veja /usr/share/doc/mutt/examples/gpg.rc.

89

Captulo 9

Antes do comprometimento do sistema


9.1 Atualizando continuamente o sistema

Voc deve fazer as atualizaes de segurana frequentemente. A grande maioria de exploits existentes resultado de vulnerabilidades conhecidas que no foram corrigidas a tempo, como este paper by Bill Arbaugh (http://www.cs.umd.edu/ ~waa/vulnerability.html) (apresentando no IEEE Symposium on Security and Privacy em 2001) explica. Atualizaes esto descritas em Executar uma atualizao de segurana on page 27.

9.1.1

Vericando manualmente quais atualizaes de segurana esto disponveis

O Debian oferece uma ferramenta especca para vericar se o sistema precisa de atualizao (veja o programa Tiger abaixo), mas muitos usurios preferem vericar manualmente se as atualizaes de segurana esto disponveis. Se voc congurou o seu sistema como descrito em Executar uma atualizao de segurana on page 27 voc s precisa fazer:
# apt-get update # apt-get upgrade -s

O primeiro comando baixa a lista de pacotes disponveis nos sources de pacotes congurados. A opo -s faz somente uma simulao, isto , no baixa ou instala os pacotes e sim diz quais devem ser baixados/instalados. Voc poder saber que pacotes foram consertados pelo Debian e esto disponveis para atualizao. Por exemplo:
# apt-get upgrade -s Reading Package Lists... Done Building Dependency Tree... Done 2 packages upgraded, 0 newly installed, 0 to remove and 0 Inst cvs (1.11.1p1debian-8.1 Debian-Security:3.0/stable) Inst libcupsys2 (1.1.14-4.4 Debian-Security:3.0/stable) Conf cvs (1.11.1p1debian-8.1 Debian-Security:3.0/stable) Conf libcupsys2 (1.1.14-4.4 Debian-Security:3.0/stable)

not upgraded.

Neste exemplo, voc pode observar que precisa atualizar os pacotes cvs e cupsys, os quais esto sendo retornados do arquivo de atualizao de segurana do woody. Se quiser entender porque estes pacotes so necessrios, v em http: //security.debian.org e verique quais Alertas de Segurana do Debian foram publicados e esto relacionados com esses pacotes. Neste caso, os alertas relacionados so DSA-233 (http://www.debian.org/security/2003/dsa-233) (para cvs) e DSA-232 (http://www.debian.org/security/2003/dsa-232) (para cupsys).

9.1.2

Vericando automaticamente por atualizaes com o cron-apt

Um outro mtodo para atualizao de segurana automtica uso do cron-apt. Este pacote fornece uma ferramente para atualizar o sistema em intervalos regulares (usando um job do cron). Ele faz a atualizao da lista de pacotes e baixa os pacotes novos por padro. Ele tambm pode ser congurado para enviar mails para o administrador do sistema. Note que voc pode querer vericar a verso da distribuio, como descrito em Checando releases das distribuies on page 78, se voc pretende atualizar automaticamente o seu sistema (mesmo somente baixando pacotes). Caso contrrio voc no ter certeza que os pacotes baixados realmente so de origem convel.

Captulo 9. Antes do comprometimento do sistema

90

9.1.3

Usando o Tiger para vericar automaticamente atualizaes de segurana

Se voc est procurando por uma ferramenta que rapidamente verique e relate vulnerabilidades de segurana do sistema, tente o pacote tiger. Este pacote fornece um conjunto de scripts shell, programas em C e arquivos de dados usados para realizar auditorias de segurana. O pacote do Debian GNU/Linux tem melhorias adicionais voltadas para a distribuio Debian, provendo mais funcionalidade do que os scripts Tiger fornecidos por TAMU (ou at TARA, uma verso do tiger distribuida por ARSC). Veja o arquivo README.Debian e a pgina de manual tiger(8) para mais informaes. Uma dessas melhorias o script deb_checkadvisories. Este script recebe uma lista de DSAs (Alertas de Segurana do Debian) e verica com a base de pacote instalada, informando quaisquer pacotes que esto vulnerveis conforme o Time de Segurana do Debian. Ele um pouco mais genrico do que o script check_signatures implementado pelo Tiger, pois este capaz de vericar MD5sums de programas vulnerveis conhecidos. J que o Debian atualmente no distribui uma lista de MD5sums de programas vulnerveis conhecidos (utilizado por algum outro sistema operacional como Sun Solaris), a soluo check-against-DSA usada. Ambas as solues DSA e MD5sums sofrem do problema de que as assinaturas devem ser atualizadas regularmente. Atualmente esse problema resolvido fazendo novas verses do pacote Tiger, mas o mantenedor do pacote nem sempre pode fazer uma nova verso toda vez que um DSA anunciado. Uma melhoria interessante, que ainda no est implementada, poderia fazer este trabalho pr-ativamente. Isto , fazer o download dos DSAs da web, construir a lista de DSAs e ento rodar a vericao. Os DSAs so atualmente atualizados pelo mantenador do CVS local das fontes WML utilizadas para desenvolver http://security.debian.org (o servidor web). Um programa para analisar sintaticamente os DSAs publicados, receber atravs de e-mail ou disponibilizar no security.debian.org, e ento gerar o arquivo usado pelo deb_checkadvisories para conrmar vulnerabilidades seria bemvindo. Envie-o como um relatrio de bug para o pacote tiger. Uma vez instalado, a vericao mencionada denida pela congurao padro do programa (veja /etc/tiger /cronrc):
# Check for Debian security measures every day at 1 AM # 1 * * deb_checkmd5sums deb_nopackfiles deb_checkadvisories #

Existe uma vericao adicional que voc pode querer acrescentar apesar de ainda no fazer parte dos scripts padres do cron. O script check_patches funciona da seguinte maneira: execute apt-get update verique se h novos pacotes disponveis Se voc estiver rodando o Debian estvel e adicionar a linha de fonte apt security.debian.org em /etc/apt /sources.list (como descrito em Executar uma atualizao de segurana on page 27), este script ser capaz de informar se existem pacotes novos que devem ser instalados. Desde que somente os pacotes com conguraes modicadas so atualizaes de segurana, ento voc tem apenas tudo o que queria. Claro que isso no funcionar se voc estiver rodando a verso testing ou sid/unstable, j que atualmente, os novos pacote provavelmente tm mais funcionalidades que as atualizao de segurana. Voc pode adicionar este script para realizar as vericaes em um cron job (no arquivo de congurao) e no tigercron poder enviar um email (para o endereo especicado na diretiva Tiger_Mail_RCPT em /etc/tiger/tigerrc) com os novos pacotes:
# Check for Debian security measures every day at 1 am # 1 * * deb_checkmd5sums deb_nopackfiles check_patches #

9.1.4

Outros mtodos para atualizaes de segurana

Voc tambm pode dar uma olhada em secpack (http://therapy.endorphin.org/secpack/) que um programa no-ocial escrito por Fruhwirth Clemens e usado para fazer atualizaes de segurana a partir do site security.debian.org com suporte a vericao de assinaturas.

Captulo 9. Antes do comprometimento do sistema

91

9.1.5

Evite usar verses instveis

Ao menos que voc tenha tempo para aplicar patches de segurana toda vez que uma vulnerabilidade descoberta, voc no deve usar a verso instvel do Debian para sistemas em produo. A principal razo para isto que no h atualizaes de segurana para a verso unstable (veja Como a segurana tratada na testing e unstable? on page 113). O fato que algumas questes relacionadas segurana podem surgir na distribuio instvel e no na stable. Isto porque novas funcionalidades so constantemente adicionadas s aplicaes, assim como novas aplicaes so includas sem serem totalmente testadas. Para se fazer atualizaes de segurana na verso unstable, voc pode fazer uma atualizao completa para nova verso (que atualiza muito mais do que somente os pacotes afetados). Embora existam algumas excees, patches de segurana geralmente s so portadas para a verso stable. A idia principal que entre as atualizaes, nenhum cdigo novo deve ser adicionado, somente consertos para questes importantes.

9.1.6

Evite usar verses em teste

Se voc estiver utilizando uma verso em testing, existem algumas questes relacionadas disponibilidade das atualizaes de segurana que devem ser levadas em conta: Quando um conserto de segurana preparado, o Time de Segurana lana o patch para a verso stable (desde que a estvel geralmente algumas verses menor ou maior atrs). Os mantenedores de pacotes so responsveis por preparar o patch para a verso unstable, geralmente baseado nos novos lanamentos. Algumas vezes as alteraes acontecem quase ao mesmo tempo e em outras um dos lanamentos disponibiliza o conserto de segurana antes. Os pacotes para a distribuio stable so testados bem mais a fundo do que para a unstable, j que esta ir fornecer na maioria dos casos a ltima verso do lanamento (que pode incluir novos e desconhecidos bugs) Atualizaes de segurana esto disponveis para a verso unstable geralmente quando os mantenedores fazem um novo pacote e para a verso stable quando o Time de Segurana publica um DSA e faz um novo upload. Observe que nada disso altera a verso em testing. Se nenhum (novo) bug detectado na verso unstable do pacote, ele passa para a verso em testing depois de algum tempo. Este tempo geralmente de dez dias, embora dependa de algumas coisas como a prioridade de upload e se o pacote est ou no bloqueado para entrar em teste por causa de dependncias. Note que se o pacote estiver bloqueado, a prioridade de upload no afetar o tempo que ele leva para entrar na verso em teste. Esse comportamento pode ser alterado conforme o estado de lanamento da distribuio. Quando uma distribuio est perto de ser lanada, o Time de Segurana ou os mantenedores dos pacotes devem fornecer atualizaes de segurana diretamente para a verso em teste.

9.1.7

Atualizaes automticas no sistema Debian GNU/Linux

Primeiro de tudo, atualizaes automticas no so recomendadas, j que o administrador deve revisar os DSAs (alertas de segurana do Debian) e entender o impacto causado pela atualizao de segurana no sistema. Para atualizar o seu sistema automaticamente voc deve: Congurar o apt para que os pacotes que voc no queria atualizar continuem na mesma verso, usando o recurso de pinning do apt ou marcando-os como hold no dpkg ou dselect. Para xar os pacotes em uma determinada verso, voc deve editar o arquivo /etc/apt/preferences (veja apt_preferences(5)) e adicionar:
Package: * Pin: release a=stable Pin-Priority: 100

FIXME: verifcar se a congurao est OK. Voc tambm pode usar o cron-apt como descrito em Vericando automaticamente por atualizaes com o cron-apt on page 89. Ative-o para instalar os pacotes baixados ou adicione uma entrada no cron para que a atualizao seja feita diariamente, por exemplo:
apt-get update && apt-get -y upgrade

Captulo 9. Antes do comprometimento do sistema

92

A opo -y faz com que o apt assuma sim para todos os prompts que aparecero durante a atualizao. Em alguns casos, melhor voc usar a opo --trivial-only em vez de --assume-yes (equivalente a -y). 1 Congure o cron para que o debconf no faa nenhuma pergunta durante as atualizaes, funcionando de forma no-interativa. 2 Verique os resultados da execuo do cron, que enviar um mail para o superusurio (ao menos que a varivel de ambiente MAILTO seja alterada no script). Uma alternativa mais segura seria usar a opo -d (ou --download-only), que ir fazer o download dos pacotes necessrios mas no os instalar. Ento se a execuo do cron mostrar que o sistema precisa ser atualizado, esta atualizao pode ser feita manualmente. E para nalizar estas tarefas, o sistema deve ser congurado apropriadamente para fazer o download das atualizaes de segurana como discutido no Executar uma atualizao de segurana on page 27. Entretanto, isto no recomendado para a verso unstable sem que haja uma anlise cuidadosa, uma vez que pode tornar o seu sistema inutilizvel se algum pacote importante que estiver com um bug srio for instalado. A testing um pouco mais segura com relao a isto, j que os bugs srios podem ser detectados antes do pacote ser movido para a verso em teste (embora, voc no tenha atualizaes de segurana disponveis para todos). Se voc tem uma distribuio mista, isto , uma instalao stable com alguns pacotes atualizados para a verso em testing ou unstable, voc pode utilizar o recurso de pinning assim como a opo --target-release do apt para atualizar somente aqueles pacotes que devem ser atualizados. 3

9.2

Faa vericaes de integridade peridicas

A vericao de integridade feita baseada na informao completa do sistema gerada depois da instalao (ex. o snapshot descrito em Fazendo um snapshot do sistema on page 50) e deve ser feita de tempos em tempos. Com a vericao de integridade possvel detectar modicaes no sistema de arquivos feitas por um intruso ou por algum erro do administrador do sistema. As vericaes de integridade devem ser, se possvel, feitas ofine 4 . Isto , utilizar outro sistema operacional para fazer a vericao, evitando assim um falso senso de segurana (ex. falsos negativos) produzido por, por exemplo, rootkits instalados. A base de dados de integridade vericada pelo sistema tambm deve ser usada em uma mdia somente leitura. Voc deve considerar fazer a vericao online utilizando qualquer ferramenta de vericao de integridade do sistema de arquivos disponveis (descrito em Vericando a integridade do sistema de arquivos on page 47), se voc no puder deixar o sistema fora do ar. Entretanto, algumas precaues devem ser levadas em conta como a utilizao de uma base de dados da integridade somente para leitura e assegurar que a ferramenta de vericao de integridade (e o kernel do sistema operacional) no esteja sendo usada. Algumas das ferramentas citadas nesta seo, como aide, integrit ou samhain j esto preparadas para fazer revises peridicas (atravs do crontab nas duas primeiras e atravs de um daemon standalone na samhain) e pode avisar o administrador por diferentes canais (geralmente e-mail, mas samhain tambm pode enviar pages, traps SNMP ou alertas do syslog) quando ocorrem alteraes no sistema de arquivos. Claro que se voc for executar uma atualizao do sistema, deve ser tirado novamente um snapshot para acomodar as alteraes sofridas durante a atualizao de segurana.

9.3

Congure um sistema de Deteco de Intruso

O Debian GNU/Linux inclue ferramentas para deteco de intruso, que nada mais do que a prtica de detectar atividades imprprias ou maliciosas no seu sistema local, ou outros sistemas que estejam na sua rede privada. Este tipo de defesa importante se o sistema for altamente crtico ou voc for realmente paranico. Os tipos mais comuns de deteco de intruso so deteco estatstica de anomalias e deteco baseada em algum padro.
1 Voc tambm pode optar por usar a opo --quiet (-q) para diminuir a quantidade de informaes de sada do apt-get. Caso nenhum pacote esteja sendo instalado, nenhuma informao mostrada na tela. 2 Note que alguns pacotes podem no usar o debconf e a atualizaes iro parar para que o usurio entre com alguma congurao. 3 Isso uma prtica comum, j que muitos usurios preferem manter o sistema estvel, podendo atualizar alguns pacotes para a verso unstable para obter novas funcionalidades. Esta necessidade surge devido ao desenvolvimento de alguns projetos ser mais rpido que o tempo gasto entre os lanamentos da verso stable do Debian. 4 Uma maneira fcil de fazer isso utilizar um Live CD, tipo o Knoppix Std (http://www.knoppix-std.org/) que inclue ambas as ferramentas de vericao de arquivos e a base de dados de integridade do seu sistema.

Captulo 9. Antes do comprometimento do sistema

93

Sempre tenha em mente que para melhorar a segurana do sistema com a instalao de uma dessas ferramentas, voc deve ter um mecanismo de alertas e respostas elaborado. Deteco de intruso perda de tempo se voc no for alertar ningum. Quando um ataque em particular for detectado, a maioria das ferramentas de deteco de intruso ir tanto gerar um log do evento com o syslogd enviar um e-mail para o super-usurio (o destinatrio geralmente congurvel). Um administrador precisa congurar propriamente as ferramentas para que falsos positivos no gerem alertas. Alertas tambm devem informar um ataque que pode estar acontecendo e ele no ser til, digamos, um dia depois que ocorrer. Ento tenha certeza que existe uma poltica apropriada para tratar os alertas e que os mecanimos tcnicos para implementar essa poltica sejam viveis. Uma fonte interessante de informaes CERTs Intrusion Detection Checklist (http://www.cert.org/tech_tips/ intruder_detection_checklist.html)

9.3.1

Deteco de intruso baseada em rede

As ferramentas de deteco de intruso baseada em rede monitoram o trfego em um segmento de rede e utilizam essas informaes como fonte dos dados para serem analisados. Especicamente, os pacotes da rede so examinados, e eles so vericados para ver se existe uma certa assinatura de pacotes maliciosos. O Snort um sniffer de pacotes bastante exvel ou logger que detecta os ataques utilizando um dicionrio de assinatura de ataques. Ele detecta uma variedade de ataques e probes, como estouro de buffer, varredores de portas stealth, ataques CGI, probes SMB e muito mais. O Snort tambm tem a capacidade de gerar alertas em tempo real. Voc pode usar o snort tanto para uma srie de mquinas na sua rede quanto para o seu prprio servidor. Ele uma ferramenta que deve ser instalada em todos os roteadores para manter os olhos na rede. Para instal-lo basta usar o apt-get install snort, seguir as perguntas, e vericar o log. Para um arcabouo de segurana um pouco mais amplo, veja Prelude (http: //www.prelude-ids.org). O pacote snort do Debian tem diversas conguraes de segurana ativadas por padro. Entretanto, voc deve customizar o programa tendo em mente os servios particulares que voc roda no seu sistema. Tambm seria interessante procurar algumas vericaes especcas para estes servios. Nota: Os pacotes do snort disponveis no woody no esto to atualizados e podem at estar bugados (http:// lists.debian.org/debian-devel/2003/debian-devel-200308/msg02105.html), voc pode obter um backport (e assinatura) do Snort fornecido pelo mantenedor do pacote em http://people.debian.org/~ssmeenk/ snort-stable-i386/. Existem outras ferramentas mais simples que podem ser utilizadas para detectar ataques em rede. O portsentry um pacote interessante que pode ajudar a descobrir varreduras contra seus hosts. Outras ferramentas como ippl ou iplogger tambm podem detectar alguns ataques IP (TCP e ICMP), mesmo que eles no forneam os tipos de tcnicas que o snort fornece. Voc pode testar qualquer uma dessas ferramentas com o pacote do Debian idswakeup, um script em shell que gera alarmes falsos e inclue muitas assinaturas de ataques comuns.

9.3.2

Deteco de intruso baseada em host

A deteco de intruso baseada em host envolve o carregamento de um software no sistema a ser monitorado e que utiliza arquivos de log e/ou os programas de auditoria de sistema como uma fonte de dados. Ele procura por processos suspeitos, monitora acesso ao host e pode at monitorar alteraes em arquivos crticos do sistema. O tiger uma antiga ferramenta de deteco de intruso que foi portado para o Debian desde a verso do Woddy. Ele fornece vericaes de casos comuns relacionados a furo de segurana, como uso de fora bruta nas senhas, problemas no sistema de arquivo, comunicao de processos e outras formas de comprometer o superusurio. Este pacote tambm inclue vericaes de segurana especcas para o Debian como: vericaes de MD5sums de arquivos instalados, localizao de arquivos que no pertencem a nenhum pacote e anlise de processos locais que esto em estado de escuta. A instalao padro congura o tiger para rodar diariamente, gerando um relatrio que enviado para o superusurio sobre possveis comprometimentos no sistema. Ferramentas de anlise de log, como logcheck tambm podem ser usadas para detectar tentativas de intruso. Veja Usando e personalizando o logcheck on page 40. Em adio, pacotes que monitoram a integridade do sistema de arquivo (veja Vericando a integridade do sistema de arquivos on page 47) podem ser perfeitamente teis na deteco de anomalias em um ambiente seguro. muito provvel que uma intruso efetiva ir modicar alguns arquivos no sistema de arquivo local para driblar a poltica de segurana local, instalar Trojans, ou criar usurios. Tais eventos podem ser detectados com os programas para vericao de integridade do arquivo.

Captulo 9. Antes do comprometimento do sistema

94

9.4
9.4.1

Evitando os rootkits
Loadable Kernel Modules (LKM)

Loadable kernel modules so arquivos contendo componentes carregados dinamicamente no kernel e so usados para expandir a funcionalidade do mesmo. O benefcio principal de se usar mdulos a habilidade de adicionar dispositivos adicionas, como uma placa de rede Ethernet ou uma placa de som, sem ter que aplicar um patch no cdigo-fonte e recompilar todo o kernel. Entretanto, os crackers vm usando os LKMs para criar rootkits (knark e adore), abrindo backdoors nos sistemas GNU/Linux. Os backdoors LKM esto cada vez mais sosticados e mais difceis de serem detectados que os rootkits tradicionais. Eles podem esconder processos, arquivos, diretrios e at mesmo conexes sem precisar modicar o cdigo fonte dos binrios. Por exemplo, um LKM malicioso pode forar o kernel a esconder processos especcos do procfs, ento mesmo uma cpia original do binrio ps pode no listar informaes precisas sobre os processos que esto rodando no sistema.

9.4.2

Detectando rootkits

Existem duas estratgias para defender seu sistema de rootkits LKM, a defesa pr-ativa e a reativa. O trabalho de deteco pode ser simples e fcil, ou difcil e cansativo, dependendo da estratgia escolhida. Defesa pr-ativa A vantagem para este tipo defesa que ela previne qualquer dano ao sistema logo de incio. Uma estratgia para esse tipo de defesa conhecida como pegar eles primeiro, que carregar na memria um mdulo LKM designado para proteger o sistema de outros LKMs maliciosos. A segunda estratgia remover algumas funcionalidades do prprio kernel. Por exemplo, voc pode desabilitar a opo de carrergar mdulos no kernel. Entretanto, note que existem rootkits que podem funcionar at mesmo neste caso. Alguns deles podem mexer com o /dev/kmem (memria do kernel) diretamente para torn-los indetectveis. O Debian GNU/Linux tem poucos pacotes que podem ser usados para montar uma defesa pr-ativa: kernel-patch-2.4-lsm - LSM o arcabouo para os Mdulos de Segurana do Linux. lcap - Uma interface amigvel para remover as funcionalidades (controle de acesso) do kernel, fazendo o sistema mais seguro. Por exemplo, executando lcap CAP_SYS_MODULE 5 ir remove a funcionalidade de carregar mdulos (mesmo para o super-usurio). 6 Para mais informaes sobre as funcionalidades do kernel voc deve vericar a seo Kernel development (http://lwn.net/1999/1202/kernel.php3) de Jon Corbet na LWN (Dezembro 1999) Se voc realmente no precisa de muitos recursos do kernel no seu sistema GNU/Linux, voc pode desabilitar o suporte aos mdulos carregveis durante a congurao do kernel. Para desabilitar este suporte, somente altere o CONFIG_MODULES=n durante o estgio de congurao da construo do seu kernel, ou no arquivo .config. Isto ir prevenir os rootkits LKM, mas voc ir perder esta funcionalidade poderosa no kernel do Linux. Desabilitar a opo para carregar mdulos no kernel pode muitas vezes sobrecarregar o kernel. Neste caso, melhor deixar o kernel com o suporte. Defesa reativa A vantagem da defesa reativa que ela no consome os recursos do sistema. Ela trabalha comparando a tabela de chamadas ao sistema com uma cpia autntica conhecida, o arquivo em disco System.map. Claro que a defesa reativa somente noticar ao administrador do sistema depois que o sistema j estiver sido comprometido. A deteco de alguns root-kits no Debian pode ser efetuada com o pacote chkrootkit. O programa Chkrootkit (http: //www.chkrootkit.org) verica por sinais de diversos rootkits conhecidos no sistema alvo, mas isto no deve ser um teste nal. Uma outra ferramenta auxiliar o KSTAT (http://www.s0ftpj.org/en/site.html) (Kernel Security Therapy Anti Trolls) feita pelo grupo S0ftproject. O KSTAT busca na rea de memria do kernel (/dev/kmem) informaes sobre o host alvo para ajudar o administrador do sistema a encontrar e remover LKMs maliciosos.
5 Existem mais de 28 funcionalidades includas: CAP_BSET, CAP_CHOWN, CAP_FOWNER, CAP_FSETID, CAP_FS_MASK, CAP_FULL_SET, CAP_INIT_EFF_SET, CAP_INIT_INH_SET, CAP_IPC_LOCK, CAP_IPC_OWNER, CAP_KILL, CAP_LEASE, CAP_LINUX_IMMUTABLE, CAP_MKNOD, CAP_NET_ADMIN, CAP_NET_BIND_SERVICE, CAP_NET_RAW, CAP_SETGID, CAP_SETPCAP, CAP_SETUID, CAP_SYS_ADMIN, CAP_SYS_BOOT, CAP_SYS_CHROOT, CAP_SYS_MODULE, CAP_SYS_NICE, CAP_SYS_PACCT, CAP_SYS_PTRACE, CAP_SYS_RAWIO, CAP_SYS_RESOURCE, CAP_SYS_TIME, and CAP_SYS_TTY_CONFIG. Todas elas podem ser desativadas para melhorar a segurana do seu kernel. 6 Voc no precisa instalar o lcap para fazer isto, mas melhor do que congurar o /proc/sys/kernel/cap-bound na mo.

Captulo 9. Antes do comprometimento do sistema

95

9.5

Idias Geniais/Paranicas o que voc pode fazer

Esta provavelmente a mais instvel e divertida seo, apenas espero que algumas das ideias duh, isso parece loucura possam ser realizadas. A seguir algumas idias para melhorar a segurana talvez geniais, paranicas, loucas ou at inspiradas dependendo do seu ponto de vista. 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 atravs de impresso digital ou vericao de retina ou carto de criptograa (por que usei a conjuno OU em vez de E?). Gravao fascista de logs. Eu prero me referir toda discusso anterior acima como um esquema leve de logs. Se voc quiser fazer um esquema real de logs, pegue uma impressora com papel de formulrio contnuo, e envie todos os logs para ela. Parece engraado, mas realmente convel e as informaes no podem ser sobrescritas ou apagadas. Distribuio de CD. Essa idia muito simples de se realizar e oferece uma boa segurana. Crie uma distribuio Debian segura, com as regras de rewall apropriadas. Coloque ela em uma imagem ISO inicializvel e grave em um CDROM. Agora voc tem uma distribuio somente leitura, com mais ou menos 600 MB de espao para os servios. Tenha certeza de que todos os dados que devem ser escritos sejam feitos pela rede. impossvel para um intruso ter acesso de leitura/escrita no sistema, e qualquer alterao feita pelo intruso pode ser desfeita em uma reinicilizao do sistema. Desabilite a capacidade de carregar mdulos. Como discutido anteriormente, quando voc desabilita o uso de mdulos em tempo de compilao do kernel, muitos backdoors baseados em kernel cam impossveis de serem implementados, pois a maioria deles baseada na instalao de mdulos do kernel modicados. Grave os logs por um cabo serial. (contribuido por Gaby Schilders) J que os servidores ainda tm portas serial, imagine ter um sistema de gravao de logs para um srie 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 faa com que todos os seus servidores gravem o log atravs da porta serial. A mquina 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 mxima da mdia. Altere as atribuies do arquivo usando chattr. (dica tirada do Tips-HOWTO, escrito por Jim Dennis). Depois de uma instalao limpa e congurao inicial, use o programa chattr com o atributo +i para que os arquivos no sejam modicados (o arquivo no pode ser apagado, renomeado, criado link ou escrito algo nele). Dena este atributo em todos os arquivos que esto em /bin, /sbin/, /usr/bin, /usr/sbin, /usr/lib e tambm nos arquivos do kernel no root. Voc tambm pode fazer uma cpia de todos os arquivos do /etc/, usando o tar ou algo do tipo e marcar o arquivo comprimido como imutvel. Esta estratgia ir ajudar a limitar o estrago que voc poder causar estando logado como root. Voc no poder sobrescrever arquivos por engano, nem deixar o sistema inoperante digitando por engano um espao no comando rm -fr (voc pode ainda fazer um monte de estragos no seus dados mas suas bibliotecas e seus binrios estaro seguros.) Esta estratgia tambm faz com que uma variedade de exploits de segurana e de negao de servios (DoS) sejam difceis ou impossveis de serem realizados (j que a maioria deles conta com a permisso de sobrescrever um arquivo atravs de algum programa SETUID que a princpio no esteja fornecendo um comando shell arbitrrio). Uma inconvenincia desse tipo de estratgia aparece durante a compilao e instalao de alguns binrios do sistema. Por outro lado, isso previne que um comando make install sobrescreva os arquivos. Quando voc se esquece de ler o Makele e executa um chattr -i nos arquivos a serem sobrescritos, (tambm nos diretrios nos quais sero adicionados os arquivos) - o comando make falha. Ento voc deve usar o comando chattr para desativar a ag de imutvel e rodar o make novamente. Voc tambm pode optar por mover os binrios e as bibliotecas antigas para dentro de um diretrio .old/ ou para um arquivo tar por exemplo. Note que esta estratgia tambm impede que voc atualize seu prprio sistema de pacotes, j que os arquivos que os pacotes a serem atualizados fornecem no podem ser sobrescritos. Voc pode fazer um script ou usar outro mecanismo parecido para desativar a permisso de imutvel em todos os binrios antes de fazer um apt-get update. Voc pode brincar um pouco com o cabeamento UTP cortando 2 ou 4 os, tornando um cabo de trfego unidirecional. Ento use pacotes UDP para enviar informao para uma mquina de destino que atuaria como um servidor de log seguro ou at mesmo um sistema de armazenamento de cartes de crdito.

Captulo 9. Antes do comprometimento do sistema

96

9.5.1

Construindo um honeypot

FIXME: preciso de contedo mais especco para o Debian Um honeypot um sistema feito para auxiliar os administradores de sistemas a descobrir como os crackers sondam a mquina em busca de exploits. O sistema congurado com a expectativa e objetivo de ser sondado, atacado e potencialmente invadido. Aprendendo as ferramentas e os mtodos empregados pelo cracker, um administrador de sistema pode saber como melhor proteger seus sistemas e a rede. Um sistema Debian GNU/Linux pode ser facilmente congurado como um honeypot, se voc dedicar tempo para implementar e monitor-lo. Simplesmente congure o servidor falso com um rewall e algumas ferramentas de deteco de intruso de rede, coloque ele na Internet, e espere. Tome o cuidado de que se o sistema for invadido voc seja imediatamente alertado (veja A importncia dos logs e alertas on page 40), desta forma voc poder tomar providncias necessrias e paralizar a invaso quando tiver informaes sucientes. Abaixo esto alguns dos pacotes e questes importantes quando estiver congurando seu honeypot: A tecnologia de rewall que ir usar (fornecidade pelo kernel do Linux). syslog-ng, til para enviar logs do honeypot para um servidor syslog remoto. snort, para congurar a captura de todo o trfego de rede de entrada para o honeypot e detectar os ataques. osh, um SETUID root, segurana aprimorada, shell restrita com sistema de log (veja o artigo de Lance Spitzner abaixo). Claro que todos os daemons sero usados por seu servidor honeypot falso (ento no assegurar o honeypot). The Deception Toolkit, que utiliza um sistema de induo ao erro para reagir aos ataques. Homepage: Deception Toolkit (http://all.net/dtk/dtk.html) Vericadores de integridade (veja Vericando a integridade do sistema de arquivos on page 47) e o Toolkit do Coroner (tct) para fazer auditorias ps-ataque. Voc pode ler mais sobre como construir honeypots no excelente artigo de Lanze Spitzner To Build a Honeypot (http: //www.net-security.org/text/articles/spitzner/honeypot.shtml) (das sries Know your Enemy), ou de David Raikow Building your own honeypot (http://www.zdnetindia.com/techzone/resources/security/ stories/7601.htm). O Projeto Honeynet (http://project.honeynet.org/) tambm fornece informaes valiosas relacionadas construo de honeypots e auditoria dos ataques feitos nelas.

97

Captulo 10

Depois do comprometimento do sistema (resposta a incidentes)


10.1 Comportamento comum

Se voc estiver sicamente presente quando o ataque ocorrer, sua primeira obrigao tirar a mquina da rede desconectando o cabo de rede da placa (se isso no for inuenciar nas transaes dos negcios). Desativando a rede na camada 1 a nica forma de manter o invasor longe da mquina comprometida (conselho sbio de Philip Hofmesiter). Entretanto, alguns rootkits ou back doors so capazes de detectar este tipo de evento e reagir a ele. Ver um rm -rf / sendo executado quando voc desativa a rede no muito engraado. Se voc se nega a correr o risco e tem certeza que o sistema foi comprometido, voc deve desconectar o cabo de energia (todos eles se existirem mais de um) e cruzar os dedos. Isso pode ser extremo mas, de fato, ir evitar qualquer bomba lgica que o invasor possa ter programado. Nesses casos, o sistema comprometido no deve ser reiniciado. Os discos rgidos tambm devem ser colocados em outro sistema para serem analisados, ou deve ser usado outro tipo de mdia (um CD-ROM) para inicializar o sistema e analis-lo. Voc no deve usar os discos de recuperao do Debian para inicializar o sistema, mas voc pode utilizar o shell fornecido pelos discos de instalao (use Alt+F2 para acess-lo) para analisar o sistema. 1 O mtodo mais recomendado para restaurar um sistema comprometido utilizar um CDROM com todas as ferramentas (e mdulos do kernel) necessrias para acessar o sistema. Voc pode utilizar o pacote mkinitrd-cd para compilar tal CDROM2 . Voc tambm pode achar o CDROM FIRE (http://biatchux.dmzs.com/) til, j que um live CDROM com ferramentas para anlise forense ideal neste tipo de situao. No existe (ainda) uma ferramenta baseada no Debian como esta, nem uma maneira fcil de compilar o CDROM com pacotes especcos e com mkinitrd-cd (ento voc ter que ler a documentao fornecida com o programa para fazer seus prprios CDROMs). Se voc realmente quer consertar um sistema comprometido rapidamente, voc deve tirar o sistema da sua rede e reinstalar todo o sistema operacional do zero. Claro, isto pode no ser efetivo porque voc no saber como o invasor comprometeu o sistema. Neste caso, voc deve vericar tudo: rewall, integridade de arquivos, host de log, arquivos de log entre outros. Para mais informaes do que fazer siga um guia, veja Sans Incident Handling Guide (http://www.sans.org/y2k/ DDoS.htm) ou CERTs Steps for Recovering from a UNIX or NT System Compromise (http://www.cert.org/tech_ tips/root_compromise.html). Algumas perguntas freqentes de como lidar com um sistema Debian GNU/Linux esto disponveis em Meu sistema vulnervel! (Voc tem certeza?) on page 109.

10.2

Efetuando backup do sistema

Lembre-se que se voc tem certeza de que o sistema foi comprometido voc no pode conar no software instalado ou em qualquer informao retornada por ele. Aplicaes podem ser alteradas, mdulos do kernel podem ser instalados e etc. A melhor coisa a se fazer uma cpia de backup completa do sistema de arquivo (usando o dd) depois de inicializar o sistema de uma mdia segura. Os CDROMs do Debian GNU/Linux podem ser utilizados para isto, j que eles fornecem
voc for aventureiro, voc pode efetuar o logon no sistema e salvar as informaes de todos os processos em execuo (vrias dessas informaes esto em /proc/nnn/). possvel pegar todo cdigo executvel da memria, mesmo se o invasor tiver excludo os arquivos executveis do disco. Ento puxe o cabo de fora. 2 . De fato, esta a ferramenta usada para compilar os CDROMs para o projeto Gibraltar (http://www.gibraltar.at/) (um rewall em um live-CD baseado na distribuio Debian).
1 Se

Captulo 10. Depois do comprometimento do sistema (resposta a incidentes)

98

um shell no console 2 quando a instalao iniciada (acesse atravs do Alt+2 e pressione Enter). Do shell, efetue o backup das informaes para outro host se possvel (talvez um servidor de arquivos de rede atravs de NFS/FTP). Ento qualquer anlise da invaso ou reinstalao pode ser feita enquanto o sistema comprometido est off-line. Se voc tiver certeza de que um mdulo do kernel com trojan comprometeu o sistema, voc pode usar a imagem do kernel do CDROM do Debian no modo rescue. Inicie o GNU/Linux no modo single user para que nenhum outro processo com trojan seja executado depois do kernel.

10.3

Contate seu CERT local

O CERT (Computer and Emergency Response Team) uma organizao que pode te ajudar a recuperar o sistema comprometido. Existem CERTs espalhados por todo o mundo 3 e voc deve contatar seu CERT local caso ocorra algum incidente de segurana que comprometa seu sistema. As pessoas do CERT local so orientadas ajud-los. Fornecer informaes sobre os incidentes de segurana para o CERT local (ou o centro de coordenao do CERT), mesmo que voc no precise de assistncia, pode ajudar os outros a determinar se uma vulnerabilidade est disseminada na Internet e indicar que novas ferramentas de combate ao worm esto sendo utilizadas. Estas informaes so usadas para fornecer comunidade da Internet alertas sobre as atividades atuais dos incidentes de segurana (http://www.cert.org/ current/), e para publicar notas sobre incidentes (http://www.cert.org/incident_notes/) e at mesmo alertas de segurana (http://www.cert.org/advisories/). Para informaes mais detalhadas de como (e porqu) relatar um incidente leia o CERTs Incident Reporting Guidelines (http://www.cert.org/tech_tips/incident_reporting. html). Voc pode usar mecanismos menos formais se precisar de ajuda na recuperao de um sistema comprometido ou quiser discutir informaes do incidente. Estes mecanismos incluem a lista de discusso sobre incidentes (http://marc. theaimsgroup.com/?l=incidents) e a lista de discusso sobre intrusos (http://marc.theaimsgroup.com/?l= intrusions).

10.4

Anlise forense

Se voc deseja recolher mais informaes do ataque, o pacote tct (O Coroners Toolkit de Dan Farmer e Wietse Venema) contm utilitrios que realizam uma anlise pstuma do sistema. O tct permite que o usurio colete informaes sobre arquivos excludos, processos em execuo e muito mais. Veja a documentao para mais informaes. Voc tambm pode conferir os pacotes similares Sleuthkit and Autopsy (http://www.sleuthkit.org/) desenvolvidos por Brian Carrier. Algumas outras ferramentas que podem ser usadas para anlise forense tambm so fornecidas pela distribuio Debian: Fenris. Strace. Ltrace. Qualquer um desses pacotes podem ser usados para analisar binrios anmalos (como os backdoors) para determinar como eles funcionam e o que eles fazem no sistema. Outras ferramentas comuns so o ldd (no pacote libc6), strings e objdump (ambos no pacote binutils). Se voc tentar fazer uma anlise forense de um sistema comprometido com backdoors ou binrios suspeitos, voc deve faz-la em um ambiente seguro (por exemplo em uma imagem bochs ou flex86, ou em um ambiente chroot utilizando um usurio com poucos privilgios). Caso contrrio seu prprio sistema pode ser comprometido tambm! Tambm, lembre-se que a anlise forense deve ser feita sempre na cpia de backup dos dados, nunca nos dados originais, em caso dos dados serem alterados durante a anlise e as evidncias serem perdidas. FIXME: This paragraph will hopefully provide more information about forensics in a Debian system in the coming future.
a lista de alguns CERTS, para uma lista completa veja o FIRST Member Team information (http://www.first.org/about/ organization/teams/index.html) (FIRST signica Forum of Incident Response and Security Teams): AusCERT (http://www.auscert.org.au) (Austrlia), UNAM-CERT (http://www.unam-cert.unam.mx/) (Mxico) CERT-Funet (http://www.cert.funet.fi) (Finlndia), DFN-CERT (http://www.dfn-cert.de) (Alemanha), RUS-CERT (http://cert.uni-stuttgart.de/) (Alemanha), CERT-IT (http://idea.sec.dsi. unim.it) (Itlia), JPCERT/CC (http://www.jpcert.or.jp/) (Japo), UNINETT CERT (http://cert.uninett.no) (Noruega), HR-CERT (http: //www.cert.hr) (Crocia) CERT Polskay (http://www.cert.pl) (Polnia), RU-CERT (http://www.cert.ru) (Rssia), SI-CERT (http://www. arnes.si/si-cert/) (Eslovnia) IRIS-CERT (http://www.rediris.es/cert/) (Espanha), SWITCH-CERT (http://www.switch.ch/cert/) (Suia), TWCERT/CC (http://www.cert.org.tw) (Taiwan), e CERT/CC (http://www.cert.org) (US).
3 Esta

Captulo 10. Depois do comprometimento do sistema (resposta a incidentes)

99

FIXME: talk on how to do a debsums on a stable system with the MD5sums on CD and with the recovered le system restored on a separate partition. FIXME add pointers to forensic analysis papers (like the Honeynets reverse challenge or David Dittirchs papers (http: //staff.washington.edu/dittrich/).

Captulo 10. Depois do comprometimento do sistema (resposta a incidentes)

100

101

Captulo 11

Questes feitas com freqncia (FAQ)


Este captulo introduz algumas das questes mais freqentes da lista Debian security. Voc dever l-las antes de postar l ou seno as pessoas lhe diro RTFM.

11.1
11.1.1

Tornando o sistema operacional Debian mais seguro


A Debian mais segura que X?

Um sistema to seguro quanto um administrador capaz de faze-lo. A instalao padro dos servios da Debian tenta ser secura, mas pode no ser paranica como outros sistemas operacionais que instalam todos os servios desativados por padro. Em qualquer caso, o administrador de sistemas precisa adaptar a segurana do sistema a sua poltica de segurana local. Para uma coleo de dados envolvendo vulnerabilidades de segurana de muitos sistemas operacionais, veja http:// securityfocus.com/vulns/stats.shtml. Estes dados so teis? O site lista diversos fatores a considerar quando estiver interpretando dados, e alerta que os dados no podem ser usados para comparar vulnerabilidades de um sistema operacional versus outro. 1 Tambm, tenha em mente que algumas das vulnerabilidades reportadas via bugs com relao a Debian, se aplicam somente ao repositrio unstable (rea de desenvolvimento).

A Debian mais segura que as outras distribuies Linux (tal como Red Hat, SuSE. . . )? Realmente no existem muitas diferenas entre as distribuies Linux, com exceo da instalao bsica e do sistema de gerenciamento de pacotes. A maioria das distribuies compartilham muitos dos aplicativos, com a diferena bsica nas verses em que estes aplicativos so oferecidos com o lanamento da distribuio estvel. Por exemplo, o kernel, Bind, Apache, OpenSSH, XFree, gcc, zlib, etc. so todos idnticos entre as distribuies de Linux. Por exemplo, a Red Hat foi infeliz e ofereceu quando 1.2.3 era a atual, que em seguida foram encontrados problemas de segurana. Na Debian, por outro lado, foi sortuda e forneceu 1.2.4 que j possui a correo da falha. Este foi o caso no grande problema do rpc.statd (http://www.cert.org/advisories/CA-2000-17.html) diversos anos atrs. Existe muita colaborao entre os respectivos times de segurana das maiores distribuies Linux. Atualizaes de segurana conhecidas so raramente, se existirem, deixadas de lado por desenvolvedores de uma distribuio. O conhecimento de uma vulnerabilidade de segurana nunca mantida isolada do conhecimento de desenvolvedores de outra distribuio, pois as correes so normalmente coordenadas com o autor ou atravs do CERT (http://www.cert.org). Como um resultado, as atualizaes necessrias de segurana so geralmente lanadas ao mesmo tempo e a segurana relativa de diferentes distribuies so bem parecidas. Uma das principais vantagens da Debian com relao a segurana a facilidade de atualizaes do sistema atravs do uso do apt. Aqui existem muitos outros aspectos da segurana na Debian a serem considerados: A Debian fornece mais ferramentas de segurana que outras distribuies, veja Ferramentas de segurana no Debian on page 83.
1 Neste exemplo, baseado nos dados da Securityfocus, pode ser visto que o Windows NT mais seguro que o Linux, o que uma armao questionvel. Apesar de tudo, as distribuies do Linux geralmente oferecem mais aplicaes comparadas ao Windows NT da Microsoft. Estas situaes de contagem de vulnerabilidades so melhor descritas em Why Open Source Software / Free Software (OSS/FS)? Look at the Numbers! (http://www.dwheeler.com/oss_fs_why.html#security) por David A. Wheeler

Captulo 11. Questes feitas com freqncia (FAQ)

102

A instalao padro da Debian pequena (menos funcionalidades), e assim mais segura. Outras distribuies, em nome da funcionalidade, tem a tendncia de instalarem diversos servios por padro e algumas vezes no esto corretamente congurados (lembre-se dos worms Ramen ou Lion (http://www.sans.org/y2k/lion.htm)). A instalao da Debian no limitada como o OpenBSD (no existem daemons ativos por padro), mas tem um bom compromisso. 2 A Debian documenta as melhores prticas de segurana em documentos como este.

11.1.2

Existem muitas falhas no sistema de tratamento de falhas da Debian. Isto signica que muito vulnervel?

A distribuio Debian conta com um nmero grande e crescente de pacotes de software, provavelmente mais do que os fornecidos por muitos sistemas operacionais proprietrios. Quanto mais pacotes instalados, maior o potencial de falhas de segurana em um determinado sistema. Mais e mais pessoas esto examinando o cdigo fonte por problemas. Existem muitos alertas relacionados com a auditoria de cdigo fonte dos maiores componentes de software includos na Debian. Desta forma, tais auditorias de software mostram brechas de segurana, elas so corrigidas e um aviso enviado para listas tal como Bugtraq. Falhas que esto presentes na distribuio Debian normalmente tambm afetam outros distribuidores e vendedores. Verique a seo Especco da Debian: yes/no no topo de cada aviso de segurana (DSA).

11.1.3

A Debian possui qualquer certicao relacionada a segurana?

Resposta curta: no. Resposta longa: certicao custa dinheiro (especialmente se for uma certicao de segurana sria), ningum dedicou seus recursos para para certicar a Debian GNU/Linux em qualquer nvel de, por exemplo, Critrios comuns (http://niap. nist.gov/cc-scheme/st/). Se estiver interessado em ter uma distribuio de GNU/Linux seguramente certicada, tente fornecer os recursos necessrios para tornar isto possvel. Existem pelo menos duas distribuies de Linux certicadas em diferentes nveis EAL (http://en.wikipedia.org/ wiki/Evaluation_Assurance_Level). Note que alguns dos testes CC esto sendo integrados no Linux Testing Project (http://ltp.sourceforge.net) que est disponvel na Debian atravs do pacote ltp.

11.1.4

Existe algum programa de fortalecimento para a Debian?

Sim. Bastille Linux (http://www.bastille-unix.org), originalmente orientado para outras distribuies de Linux (Red Hat e Mandrake), atualmente funciona com a Debian. Alguns passos esto sendo feitos para integrar as alteraes feitas com a verso do autor no pacote da Debian, tendo o nome de bastille. Algumas pessoas, no entanto, acreditam que uma ferramenta de fortalecimento no elimina a necessidade de se ter uma boa administrao.

11.1.5

Eu desejo executar o servio XYZ, qual eu devo escolher?

Um dos grandes potenciais da Debian a grande variedade de escolhas disponveis entre pacotes que oferecem a mesma funcionalidade (servidores de DNS, servidores de e-mail, servidores ftp, servidores web, etc.). Isto pode confundir o administrador novato ao tentar determinar que pacote o mais adequado para voc. O melhor para uma determinada situao depende de um balanceamento entre suas caractersticas e necessidades de segurana. Aqui esto algumas questes que devem ser feitas a voc mesmo quando decidir entre pacotes parecidos: Existem um maintainer do cdigo fonte do programa? Quando foi o ltimo lanamento? O pacote est maduro? o nmero de verso realmente no mostra sua maturidade. Tente analisar o histrico de atualizaes do software. Este programa atormentado por falhas? Tem avisos de segurana relacionados a ele? Este programa oferece todas as funcionalidades que precisa? ele oferece mais do que voc realmente precisa?
2 Sem mencionar o fato que algumas distribuies, tal como a Red Hat ou Mandrake, tambm esto permitindo que o usurio selecione pers de segurana ou usando assistentes para ajudar na congurao de rewalls pessoais.

Captulo 11. Questes feitas com freqncia (FAQ)

103

11.1.6

Como eu posso tornar o servio XYZ mais seguro na Debian?

Voc encontrar informaes neste documento sobre como tornar alguns servios (FTP, Bind) mais seguros na Debian GNU/Linux. Para servios no cobertos aqui, verique a documentao do programa, ou informaes gerais sobre o Linux. Muitas das regras de segurana para sistemas Unix tambm se aplicam a Debian. Na maioria dos casos, o mtodo para tornar um servio X mais seguro na Debian parecido com torn-lo mais seguro em qualquer outra distribuio de Linux (ou Unix, nesta importncia).

11.1.7

Como posso remover todos os banners de servios?

Se no gosta que os usurios que se conectam ao seu servio de POP3 recebam informaes sobre seu sistema (por exemplo), voc pode querer remover (ou alterar) o banner que este servio mostra para os usurios. 3 Fazer isto depende do programa que est executando para um determinado servio. Por exemplo, no postfix, voc poder ajustar o banner SMTP no arquivo /etc/postfix/main.cf:

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)

Outros softwares no so fceis de serem alterados. O OpenSSH precisar ser recompilado para alterar a verso que ele exibe. Tenha cuidado para no remover a primeira parte do banner (SSH-2.0), pois os clientes utilizam para identicar que protocolo suportado por seu pacote.

11.1.8

Todos os pacotes da Debian so seguros?

O time de segurana da Debian no tem a possibilidade de analisar todos os pacotes includos na Debian procurando por vulnerabilidades de segurana em potencial, pois no existem recursos para auditar o cdigo fonte de todo o projeto. No entanto, a Debian se benecia da auditoria de cdigo fonte feita por desenvolvedores que criam o programa. Como um fato de importncia, um desenvolvedor da Debian pode distribuir um Trojan em um pacote e no existe possibilidade de vericar isto. At mesmo se for introduzido na estrutura da distribuio, seria impossvel identicar todas as situaes onde o trojan seria executado. Este o motivo porque a Debian vem com a clusula de licena sem garantias. No entanto, os usurios da Debian podem ter conana no fato que que cdigo estvel tem uma audincia ampla e a maioria dos problemas foram descobertos durante o uso. A instalao de verses no testadas de programas em sistemas crticos algo no recomendado (se no puder fornecer a auditoria de cdigo necessria). Em qualquer caso, se for descoberta uma vulnerabilidade de segurana introduzida na distribuio, o processo usado para incluir pacote (usando assinaturas digitais) se certica que o problema pode ser rastreado at o desenvolvedor. O projeto Debian no tem examinado isto levemente.

11.1.9

Porque alguns arquivos de logs/congurao tem permisso de leitura para qualquer um, isto no inseguro?

claro, voc pode alterar as permisses padres da Debian em seu sistema. A poltica atual relacionada com arquivos de log e congurao que eles sejam lidos por todos a no ser que eles contenham informaes sensveis. Tenha cuidado se zer estas alteraes pois: Alguns processos podem no ser capazes de gravar arquivos de log se restringir suas permisses. Alguns aplicativos podem deixar de funcionar se o arquivo de congurao que eles dependem no puder ser lido. Por exemplo, se voc remover a permisso de leitura para todos do /etc/samba/smb.conf, o smbclient deixar de funcionar se for executado por um usurio normal. FIXME: Vericar se isto est escrito na Poltica. Alguns pacotes (i.e. daemons de ftp) parecem forar permisses diferentes.
3 Note

que isto segurana pela obscuridade e provavelmente este esforo no valer a pena em longo termo.

Captulo 11. Questes feitas com freqncia (FAQ)

104

11.1.10

Porque o /root/ (ou UsuarioX) tem permisses 755?

Como fato de importncia, as mesmas questes so vlidas para qualquer outro usurio. Como a instalao da Debian no coloca qualquer arquivo sob aquele diretrio, no existe informaes sensveis a serem protegidas l. Se voc sentir que estas permisses so muito largas para seu sistema, considere altera-las para 750. Para os usurios, leia Limitando acesso a outras informaes de usurios on page 38. A lista de discusso Debian security thread (http://lists.debian.org/debian-devel/2000/ debian-devel-200011/msg00783.html) tem mais sobre este assunto.

11.1.11

Aps instalar o grsec/rewall, comecei a receber muitas mensagens de console! como remov-las?

Se estiver recebendo mensagens de console e congurou o /etc/syslog.conf para redirecion-las ou para arquivos ou para um TTY especial, voc pode ver mensagens sendo direcionadas para a console. O nvel de registro padro do console para qualquer kernel 7, o que signica que qualquer mensagem que tem prioridade menor aparecer no console. Normalmente, os rewalls (a regra LOG) e algumas outras ferramentas de segurana registram eventos em uma prioridade menor que esta, e assim, so enviadas diretamente para a console. Para reduzir as mensagens enviadas para a console, voc pode usar a opo dmesg (-n, veja dmesg(8)), que examina e controla o buffer do kernel. Para alterar isto aps a prxima reinicializao, altere o /etc/init.d/klogd de:
KLOGD=""

para:
KLOGD="-c 4"

Use um nmero menor para -c se estiver ainda vendo as mensagens. Uma descrio dos diferentes nveis de logs podem ser encontrados no arquivo /usr/include/sys/syslog.h:
#define #define #define #define #define #define #define #define LOG_EMERG LOG_ALERT LOG_CRIT LOG_ERR LOG_WARNING LOG_NOTICE LOG_INFO LOG_DEBUG 0 1 2 3 4 5 6 7 /* /* /* /* /* /* /* /* o sistema est inutilizvel */ uma ao deve ser tomada imediatamente */ condies crticas */ condies de erro */ condies de alerta */ condio normal mas significante */ informativas */ mensagens a nvel de depurao */

11.1.12

Usurios e grupos do sistema operacional

Todos os usurios do sistema so necessrios? Sim e no. A Debian vem com alguns usurios pr-denidos (identicao de usurios (UID) < 99 como descritos na Debian Policy (http://www.debian.org/doc/debian-policy/) ou /usr/share/doc/base-passwd/README) para facilitar a instalao de alguns servios que requerem que sejam executados sob um usurio/UID apropriado. Se no tem a inteno de instalar novos servios, voc pode seguramente remover estes usurios que no so donos de qualquer arquivo em seu sistema e no executam qualquer servio. Em qualquer caso, o comportamento padro que UIDs de 0 a 99 so reservadas para a Debian, e UIDs de 100 a 999 so criados por pacotes na instalao (e apagados quando o pacote e suas conguraes so removidos do sistema). Para encontrar facilmente que usurios no so donos de arquivos no sistema, execute o seguinte comando (execute-o como root, pois um usurio comum pode no ter permisses suciente para entrar atravs de alguns diretrios sensveis):
cut -f 1 -d : /etc/passwd | \ while read i; do find / -user "$i" | grep -q . && echo "$i"; done

Estes usurios so fornecidos pelo pacote base-passwd. Olhe em sua documentao por mais informaes sobre como estes usurios so manipulados pelo sistema Debian. A lista de usurios padres (com o grupo correspondente) segue: root: O root (tipicamente) o superusurio.

Captulo 11. Questes feitas com freqncia (FAQ)

105

daemon: Alguns daemons no privilegiados que precisam gravar em arquivos no disco so executados como daemon.daemon (e.g., portmap, atd, provavelmente outros). Os daemons que no precisam ser donos de quaisquer arquivos so executados sob nobody.nogroup e daemons mais complexos ou com segurana em mente so executados como usurios dedicados. O usurio do daemon prtico para daemons instalados localmente. bin: mantido por razes histricas. sys: mesmo que bin. No entanto. /dev/vcs* e /var/spool/cups tem como donos o grupo sys. sync: O interpretador de comandos do usurio sync /bin/sync. Assim se sua senha for ajustada para algo fcil de adivinhar (tal como ), qualquer um pode fazer sync no sistema pela console, at mesmo se no possuir uma conta. games: Muitos jogos so SETGID para games assim eles podem gravar seus arquivos de pontuaes. Isto explicado na policy. man: O programa man (algumas vezes) executado como usurio man, assim ele poder gravar pginas de manuais em /var/cache/man lp: Usado por daemons de impresso. mail: Caixas de correios em /var/mail tem como dono o grupo mail, como explicado pela policy. O usurio e grupo tambm so usados para outros propsitos por vrios MTAs. news: Vrios servidores de notcias e outros programas associados (tal como o suck) utilizam usurio e grupo news de vrias formas. Os arquivos no spool de notcias tem freqentemente como dono o usurio e grupo news. Os programas tais como inews que so usados para postar notcias tipicamente usam SETGID para o grupo news. uucp: O usurio e grupo uucp so usados pelo subsistema UUCP. Ele dono do spool e arquivos de congurao. Usurios no grupo uucp podem executar o uucico. proxy: Assim como o daemon, este usurio e grupo so usados por alguns daemons (especicamente, daemons de proxy) que precisam de identicao de usurios dedicadas para ser dono de arquivos. Por exemplo, o grupo proxy usado pelo pdnsd e squid para serem executados como o usurio proxy. majordom: Majordomo tem uma UID estaticamente alocada em sistemas Debian por razes histricas. Ele no instalado em novos sistemas. postgres: Os bancos de dados do Postgresql tem como dono este usurio e grupo. Todos os arquivos sob /var /lib/postgresql tem como dono este usurio para forar segurana de forma apropriada. www-data: Alguns servidores web so executados sob www-data. O contedo web *no* deve ter como dono este usurio, ou um servidor web comprometido poderia ser capaz de regravar um site de internet. Dados gravados por servidores web, incluindo arquivos de logs, tero que ter como dono www-data. backup: Assim as responsabilidades de backup/restaurao podem ser localmente delegadas para algum sem permisses completas de usurio root. operator: O operador historicamente (e praticamente) a nica conta de usurio que pode efetuar login remotamente, e no depende do NIS/NFS. list: Os arquivos de listas de discusses e dados tem como dono este usurio e grupo. Alguns programas de listas de discusses podem ser executadas tambm sobe este usurio. irc: Usado por daemons de irc. necessrio um usurio alocado estaticamente somente por causa de um bug no ircd, que faz SETUID()s de si mesmo para a UID especicada na inicializao. gnats. nobody, nogroup: Daemons que no tem necessidade de serem donos de quaisquer arquivos so executados sob o usurio nobody e grupo nogroup. Assim, nenhum arquivo existente no sistema devem ter como donos este usurio ou grupo. Outros grupos que no tem um usurio associado: adm: O grupo adm usado para tarefas de monitoramento do sistema. Os membros deste grupo podem ler a maioria dos arquivos de log em /var/log e podem usar o xconsole. Historicamente, o /var/log foi /usr/adm (e depois /var/adm), isto explica o nome do grupo.

Captulo 11. Questes feitas com freqncia (FAQ)

106

tty: Os dispositivos TTY tem como dono este grupo. Eles so usados pelas ferramentas write e wall para permitir escrever para pessoas conectadas em outras TTYs. disk: Acesso direto a disco. Muito equivalente ao acesso root. kmem: /dev/kmem e arquivos similares so lidos por este grupo. Isto mais uma relquia do BSD, mas alguns programas que precisam de acesso de leitura direto a memria do sistema podem fazer SETGID para o grupo kmem. dialout: Acesso direto e completo a portas seriais. Membros deste grupo podem recongurar o modem, discar para qualquer lugar, etc. dip: O nome do grupo vem de Dial-up IP, e membros que pertencem ao grupo dip podem usar ferramentas como o ppp, dip, wvdial, etc. para realizar uma conexo. Os usurios neste grupo no podem recongurar o modem, mas podem executar programas para fazerem uso dele. fax: Permite que membros usem programas de fax para ler/enviar faxes. voice: Voicemail, til para sistemas que usam modens como secretrias eletrnicas. cdrom: Este grupo pode ser usado localmente para dar ao grupo de usurios acesso a unidade de CDROM. oppy: Este grupo pode ser usado localmente par dar a um grupo de usurios acesso a unidade de disquetes. tape: Este grupo pode ser usado localmente para dar a um grupo de usurios acesso a uma unidade de ta. sudo: Membros dentro deste grupo no precisam digitar sua senha quando estiverem fazendo o uso do sudo. Veja /usr/share/doc/sudo/OPTIONS. audio: Este grupo pode ser usado localmente para dar a um grupo de usurios acesso a um dispositivo de audio. src: Este grupo dono de cdigo fonte, incluindo arquivos em /usr/src. Ele pode ser usado para dar a um usurio a habilidade de gerenciar cdigo fonte do sistema. shadow: O arquivo /etc/shadow lido por este grupo. Alguns programas que precisam ser capazes de acessar o arquivo tem SETGID ajustados para shadow. utmp: Este grupo pode gravar para o arquivo /var/run/utmp e similares. Programas que precisam se capazes de gravar para ele usam SETGID para utmp. video: Este grupo usado localmente para dar a um conjunto de usurios permisses de acesso a dispositivos de vdeo. staff: Permite que usurios adicionem modicaes locais ao sistema (/usr/local, /home) sem necessidade de privilgios de usurio root. Compare com o grupo adm, que mais relacionado a segurana/monitoramento. users: Enquanto usurios de sistemas Debian usam seus grupos privados de sistema por padro (cada usurio tem seu prprio grupo), alguns preferem usar um grupo de sistema mais tradicional, no qual cada usurio membro de seu grupo. Quais so as diferenas entre os grupos adm e staff? Componentes do grupo adm so geralmente administradores e neste grupo as permisses os permitem ler arquivos de log sem utilizar su. O grupo staff so geralmente administradores junior e de suporte, permitindo que trabalhem em /usr/local e criarem diretrios em /home.

11.1.13

Porque existe um novo grupo quando adiciono um novo usurio? (ou porque a Debian cria um novo grupo para cada usurio?)

O comportamento padro na Debian que cada usurio tem seu prprio e privado grupo. O esquema tradicional do UN*X coloca todos os usurios no grupo users. Grupos adicionais foram criados e usados para restringir o acesso a arquivos compartilhados associados com diferentes diretrios de projetos. O gerenciamento de arquivos se torna difcil quando apenas um usurio trabalha em mltiplos projetos, porque quando algum cria um arquivo, ele associado com o grupo primrio do grupo que ele pertence (e.g. users). O mtodo da Debian resolve este problema associando a cada usurio seu prprio grupo; assim com a mscara apropriada (0002) e o bit SETGID ajustado em um diretrio determinado de projetos, o grupo correto automaticamente designado

Captulo 11. Questes feitas com freqncia (FAQ)

107

para arquivos criados naquele diretrio. Isto facilita a vida de pessoas que trabalham em mltiplos projetos, porque elas no tero que alterar os grupos e umasks quando estiverem trabalhando em arquivos compartilhados. Voc pode, no entanto, alterar este comportamento modicando o /etc/adduser.conf. Altere a varivel USERGROUPS para no, assim um novo grupo no ser criado quando o novo usurio for criado. Tambm, altere USERS_GID para a identicao de grupo a que os usurios pertencem.

11.1.14

Questes relacionadas a servios e portas abertas

Porque todos os servios so ativados durante a instalao? Esta simplesmente uma aproximao do problema de sendo, de um lado, consciente de segurana e por outro lado amigvel ao usurio. De forma contrria a OpenBSD, que desativa todos os servios a no ser que sejam ativados pelo administrador, a Debian GNU/Linux ativa todos os servios instalados a no ser que sejam desativados (veja Desabilitando daemons de servio on page 23 para mais informaes). Anal, voc instalou o servio, no foi? Existem muitas discusses nas listas de discusses da Debian (ambas na debian-devel e na debian-security) com relao a qual a melhor estratgia para a instalao padro. No entanto, no momento em que isto foi escrito (Maro de 2002), ainda no existia um consenso. Posso remover o inetd? O Inetd no fcil de remover pois o pacote netbase depende do pacote que o fornece (netkit-inetd). Se deseja remov-lo, voc poder ou desativ-lo (veja Desabilitando daemons de servio on page 23) ou remover o pacote usando o pacote equivs. Porque eu tenho a porta 111 aberta? A porta 111 usada pelo portmapper sunrpc e instalada por padro como parte do sistema de instalao bsico da Debian, pois no existe a necessidade de saber quando o programa do usurio precisa do RPC para funcionar adequadamente. Em qualquer caso, ele mais usado pelo NFS. Se no precisar dele, remova-o como explicado na seo Tornando servios RPC mais seguros on page 67. Em verses do pacote portmap maiores que a 5-5 voc poder ter o portmapper instalado mas escutando somente em localhost (modicando o /etc/default/portmap) Para que a porta 113 (identd) usada? O servio ident um servio de autenticao que identica o dono de uma conexo TCP/IP para o servidor remoto que est aceitando a conexo. Tipicamente, quando um usurio se conecta ao servidor remoto, o inetd do sistema remoto envia uma requisio porta 113 para procurar informaes sobre o dono. freqentemente usada em servidores de e-mails, FTP e IRC, e tambm podem ser usadas para descobrir que usurio em seu sistema local est atacando um sistema remoto. Existem discusses extensivas relacionadas a segurana do identd (Veja mailing list archives (http://lists.debian. org/debian-security/2001/debian-security-200108/msg00297.html)). Em geral, o identd mais til em um sistema multi-usurio que em uma estao de trabalho simples. Se no tiver um uso para ele, desative-o, assim voc no estar deixando um servio aberto para o mundo l fora. Se decidir fazer um rewall na porta do ident, por favor use a poltica reject e no a deny, caso contrrio uma conexo para o servidor usando o identd travar at que o tempo limite expire (veja questes relacionadas a reject ou deny (http://logi.cc/linux/reject_or_deny.php3)). Tenho servios usando a porta 1 e 6, o que so e como posso remov-las? Se executar o comando netstat -an e receber como retorno:
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address PID/Program name raw 0 0 0.0.0.0:1 0.0.0.0:* raw 0 0 0.0.0.0:6 0.0.0.0:* -

State 7 7

Captulo 11. Questes feitas com freqncia (FAQ)

108

Voc no est vendo processos escutando na porta TCP/UDP 1 e 6. De fato, voc est vendo um processo escutando em um soquete cru pelos protocolos 1 (ICMP) e 6 (TCP). Tal comportamento normal para Trojans e alguns sistemas de deteco de intruso como o iipl, iplogger e portsentry. Se tiver estes pacotes simplesmente os remova. Se no tiver, tente executar a opo -p do netstat (processo) para ver que processo dono destas portas. Encontrei a porta XYZ aberta, posso fech-la? Sim, com certeza. As portas que est deixando abertas devem aderir a poltica individual do seu site com relao a servios pblicos disponveis para outras redes. Verique se esto sendo abertas pelo inetd (veja Desabilitando o inetd ou seus servios on page 24) ou instalando pacotes individuais e tome as medidas apropriadas (i.e, congure o inetd, remova o pacote, evite execut-lo na inicializao). Removendo servios do /etc/services ajudar a tornar minha mquina mais segura? No o /etc/services somente oferece o mapeamento entre um nome virtual e um nmero dado de porta. A remoo de nomes deste arquivo (geralmente) no evitar que os servios sejam iniciados. Alguns daemons podem no ser executados se o /etc/services for modicado mas isto no a norma. Para desativar apropriadamente o servio, veja Desabilitando daemons de servio on page 23.

11.1.15

Assuntos comuns relacionados a segurana

Perdi minha senha e no posso acessar o sistema! Os passos que precisa fazer para se recuperar disto depende se aplicou ou no os procedimentos necessrios para limitar o acesso ao lilo e da BIOS do seu sistema. Se limitou ambos, precisar desativar a congurao de BIOS que somente lhe permite inicializar atravs do disco rgido antes de prosseguir. Se tiver tambm perdido a senha da sua BIOS, voc ter que resetar a sua BIOS abrindo o computador e removendo manualmente a bateria que mantm os dados da BIOS> Assim que permitir a inicializao atravs da unidade de CD-ROM ou ativao da unidade de disquete, faa o seguinte: Inicialize atravs de um disquete de recuperao e inicie o kernel V at o console virtual (Alt+F2) Monte o disco rgido onde o sistema de arquivos raz (/) est Edite o arquivo /etc/shadow (o disquete de recuperao da Debian 2.2 vem com o editor ae e a Debian 3.0 vem com o nano-tiny que similar ao vi) e altere a linha:
root:asdfjgl29gl0341274075:XXXX:X:XXXX:X::: (X=um nmero qualquer)

para:
root::XXXX:X:XXXX:X:::

Isto remover a senha de root perdida, contida no primeiro campo separado por dois pontos aps o nome do usurio. Salve o arquivo, reinicie o sistema e faa login como usurio root usando uma senha em branco. Lembre-se de adicionar uma nova senha. Isto funcionar a menos que tenha congurado o sistema de forma mais restrita, ou seja, no permitindo que usurios utilizem senhas em branco ou no permitindo o login do usurio root atravs do console. Se adicionou estas caractersticas, voc precisar entrar em modo monousurio. Se o LILO foi restringido, ser necessrio re-executar o lilo aps alterar a senha de root acima. Este truque necessrio pois seu /etc/lilo.conf precisa ser mexido devido ao sistema de arquivos raz (/) ser um disco ram e no um disco rgido real. Assim que a restrio do LILO for removida, tente o seguinte: Pressione as teclas Alt, shift e Control antes do sistema terminar o processo de inicializao, assim voc ter acesso ao aviso de comandos do LILO. Digite linux single, linux init=/bin/sh ou linux 1 na linha de comandos.

Captulo 11. Questes feitas com freqncia (FAQ)

109

Isto lhe dar um aviso de comandos do shell em modo monousurio (ele perguntar por uma senha, mas voc j a conhece) Remonte sua partio raz (/) usando o comando mount.
# mount -o remount,rw /

Altere a senha do usurio root com o comando passwd (como voc o superusurio, o sistema no perguntar a senha anterior).

11.1.16

Como posso congurar um servio para meus usurios sem lhes dar uma conta de acesso ao shell?

Por exemplo, se voc quer congurar um servio POP, voc no precisar denir uma conta para cada usurio que esteja usando. melhor congurar uma autenticao baseada em diretrio atravs de um servio externo (como Radius, LDAP ou banco de dados SQL). Apenas instale a biblioteca PAM apropriada (libpam-radius-auth, libpam-ldap, libpam-pgsql ou libpam-mysql), leia a documentao (para iniciantes, veja Autenticao do Usurio: PAM on page 32) e congure o servio que ser ativado pelo PAM para usar o mtodo de autenticao que escolheu. Isto feito editando-se os arquivos sob o diretrio /etc/pam.d/ para seu servio e modicando o

auth

required

pam_unix_auth.so shadow nullok use_first_pass

para, por exemplo, ldap:


auth required pam_ldap.so

No caso de diretrios LDAP, alguns servios oferecem esquemas LDAP que devem ser includos em seu diretrio e so necessrios para a utilizao de autenticao LDAP. Se estiver usando um banco de dados relacional, uma dica til usar a clusula where quando estiver congurando os mdulos do PAM. Por exemplo, se tiver um banco de dados com os seguintes atributos na tabela:
(user_id, user_name, realname, shell, password, UID, GID, homedir, sys, pop, imap, ftp)

Tornando os servios campos de atributos boleanos, voc poder usa-los para permitir ou negar acesso a diferentes servios apenas inserindo as linhas apropriadas nos seguintes arquivos: /etc/pam.d/imap:where=imap=1. /etc/pam.d/qpopper:where=pop=1. /etc/nss-mysql*.conf:users.where_clause = user.sys = 1;. /etc/proftpd.conf:SQLWhereClause "ftp=1".

11.2
11.2.1

Meu sistema vulnervel! (Voc tem certeza?)


O scanner de vulnerabilidade X diz que meu sistema Debian vulnervel!

Muitos scanners de avaliao de vulnerabilidades indicaro falso positivos quando forem usados em sistemas Debian, pois podem somente usar checagem de verses para determinar se uma determinada verso de pacote vulnervel, mas realmente no testam a vulnerabilidade de segurana propriamente dita. Pois a Debian no muda os nmeros de verses quando corrige um pacote (muitas vezes a correo feita em verses novas so reproduzidas nas atuais), algumas ferramentas tendem a achar que um sistema Debian atualizado est vulnervel, quando no est. Se voc acha que o seu sistema est atualizado com patches de segurana, voc pode querer usar as referncias cruzadas com o banco de dados de vulnerabilidades publicados com os DSAs (veja Debian Security Advisories on page 73) para afastar a possibilidade de falsos positivos, se a ferramenta que estiver usando inclui referncias do CVE.

Captulo 11. Questes feitas com freqncia (FAQ)

110

11.2.2

Eu vi um ataque em meus logs de sistema. Meu sistema foi comprometido?

Um trao de ataque nem sempre signica que seu sistema foi comprometido, e voc dever fazer os passos tradicionais para determinar se o sistema est comprometido (veja Depois do comprometimento do sistema (resposta a incidentes) on page 97). Tambm, note que o fato de ver os ataques nos logs pode signicar que seu sistema est vulnervel a ele (um invasor determinado pode ter usado outras vulnerabilidades que no sejam a que voc viu, no entanto).

11.2.3

Eu vi algumas linhas estranhas MARK em meus logs: Eu fui comprometido?

Voc pode achar as seguintes linhas nos seus logs de sistema:


Dec 30 07:33:36 debian -- MARK -Dec 30 07:53:36 debian -- MARK -Dec 30 08:13:36 debian -- MARK --

Isto no indica qualquer tipo de comprometimento e os usurios que esto mudando de verso da Debian devem achar isto estranho. Se o seu sistema no tem uma carga alta (ou muitos servios ativos), estas linhas devem aparecer entre seus logs. Isto uma indicao que seu daemon do syslogd est sendo executado de forma apropriada. Texto extrado da pgina de manual syslogd(8):
-m intervalo O syslogd registra uma marca de horrio regularmente. O intervalo padro entre duas linhas -- MARK -- de 20 minutos. Isto pode ser alterado com esta opo. O intervalo de zero, desativa totalmente este recurso.

11.2.4

Encontrei usurios usando o su em meus logs: Eu fui comprometido?

Voc pode encontrar linhas em seus logs como:


Apr Apr 1 09:25:01 server su[30315]: + ??? root-nobody 1 09:25:01 server PAM_unix[30315]: (su) session opened for user nobody by (UID=0)

No se preocupe muito. Verique para ver se estas mensagens so devido a tarefas do cron (normalmente /etc /cron.daily/find ou logrotate):
$ grep 25 /etc/crontab 25 6 root test -e /usr/sbin/anacron || run-parts --report * * * /etc/cron.daily $ grep nobody /etc/cron.daily/* find:cd / && updatedb --localuser=nobody 2>/dev/null

11.2.5

Encontrei um possvel SYN ooding em meus logs: Estou sob um ataque?

Se ver linhas como estas em seus logs:


May May May May 1 1 1 1 12:35:25 12:36:25 12:37:25 13:43:11 linux linux linux linux kernel: kernel: kernel: kernel: possible possible possible possible SYN SYN SYN SYN flooding flooding flooding flooding on on on on port port port port X. X. X. X. Sending Sending Sending Sending cookies. cookies. cookies. cookies.

Verique se existe um nmero alto de conexes ao servidor usando o netstat, por exemplo:
linux:~# netstat -ant | grep SYN_RECV | wc -l 9000

Isto uma indicao de ataque de negao de servio (denial of service - DoS) contra a porta X do seu sistema (mais provvel contra um servio pblico tal como um servidor web ou servidor de e-mails). Voc dever ativar os SynCookies TCP em seu kernel, veja Congurando Syncookies on page 48. Note, no entanto, que um ataque DoS pode sobrecarregar sua rede at mesmo se voc puder parar de faz-lo travar seus sistemas (devido ao nmero de descritores de arquivos sendo reduzidos, o sistema pode parar de responder at que o tempo limite de algumas conexes se esgote). O nico mtodo efetivo de parar este ataque contactar seu provedor de rede.

Captulo 11. Questes feitas com freqncia (FAQ)

111

11.2.6

Encontrei sees de root estranhas em meus logs: Eu fui comprometido?

Se ver estes tipos de entradas em seu arquivo /var/log/auth.log:


May 2 11:55:02 May 2 11:55:02 May 2 12:00:01 (UID=0) May 2 12:00:02 linux PAM_unix[1477]: (cron) session closed for user root linux PAM_unix[1476]: (cron) session closed for user root linux PAM_unix[1536]: (cron) session opened for user root by linux PAM_unix[1536]: (cron) session closed for user root

Estas so devido a uma tarefa do cron sendo executada (neste exemplo, a cada cinco minutos). Para determinar que programa responsvel por estas tarefas, verique as tarefas nos diretrios: /etc/crontab, /etc/cron.d, /etc /crond.daily e do root crontab sob /var/spool/cron/crontabs.

11.2.7

Sofri uma invaso, o que fao?

Existem diversos passos que deve fazer no caso de uma invaso: Verique se o seu sistema est atualizado com as atualizaes de segurana de vulnerabilidades publicadas. Se o seu sistema estiver vulnervel, as chances do sistema estar de fato comprometido so maiores. As chances crescem mais se a vulnerabilidade foi conhecida durante algum tempo, pois normalmente existem mais atividades com relao a vulnerabilidades antigas. Aqui est um link para As 20 maiores Vulnerabilidades de Segurana (http://www.sans. org/top20/). Leia este documento, especialmente a seo Depois do comprometimento do sistema (resposta a incidentes) on page 97 Pea assistncia. Voc dever usar a lista de discusso debian-security para perguntar sobre como recuperar/corrigir seu sistema. Notique seu CERT (http://www.cert.org) local (caso ele exista, caso contrrio voc dever considerar o contato direto com o CERT). Isto pode ou no ajudar voc, mas, pelo menos, informar o CERT de ataques que estejam acontecendo. Esta informao muito valiosa em determinar que ferramentas e ataques esto sendo usados pela comunidade chapu preto.

11.2.8

Como posso rastrear um ataque?

Olhando os logs (caso no tenham sido mexidos) usando sistemas de deteco de intruso (veja Congure um sistema de Deteco de Intruso on page 92), traceroute, whois e ferramentas parecidas (incluindo anlise forense), voc pode ser capaz de detectar um ataque at a sua origem. O mtodo que pode reagir a esta informao depende solenemente de sua poltica de segurana e o que voc considera um ataque. Um scan remoto um ataque? um teste de vulnerabilidade um ataque?

11.2.9

O programa X na Debian vulnervel, o que fazer?

Primeiro, leve um momento para se certicar se a vulnerabilidade foi anunciada em listas de discusses de segurana pblicas (como a Bugtraq) ou outros fruns. O time da Debian Security se mantm atualizada com estas listas, assim elas tambm devero ter conhecimento do problema. No faa qualquer outra aes se voc ver um anncio em http: //security.debian.org. Caso nenhuma informao tenha sido publicada, por favor envie um e-mail sobre o(s) pacote(s) afetado(s), assim como uma descrio detalhada da vulnerabilidade (cdigo que comprova isto tambm vlido) para team@security.debian.org (mailto:team@security.debian.org). Isto lhe colocar em contato com o time de segurana da Debian.

11.2.10

O nmero de verso de um pacote indica que eu ainda estou usando uma verso vulnervel!

Ao invs de atualizar para uma verso nova, a Debian adapta as correes para a verso que fornecida com o lanamento estvel. A razo disto para ter certeza que o lanamento estvel altere o mnimo possvel, assim as coisas no alteraro ou quebraro de forma inesperada como resultado de uma correo de falha. Voc pode vericar se est executando uma verso segura de pacote olhando nos logs de alteraes do pacote ou comparando seu nmero de verso exato (verso do autor - trao- lanamento da Debian) com o nmero de verso indicado no aviso de segurana da Debian.

Captulo 11. Questes feitas com freqncia (FAQ)

112

11.2.11

Programas especcos

proftpd vulnervel ao ataque de negao de servio. Adicione DenyFilter \*.*/ em seu arquivo de congurao, e para mais informaes veja http://www.proftpd. org/critbugs.html. Aps instalar o portsentry muitas portas so abertas Este simplesmente o mtodo como o portsentry funciona. Ele abre cerca de vinte portas no usadas para tentar identicar port scans.

11.3

Questes relacionadas ao time de segurana da Debian

Esta informao foi derivada de Debian Security FAQ (http://www.debian.org/security/faq). Este texto inclui as informaes de 19 de Novembro e oferece algumas outras questes comuns perguntadas na lista de discusso debiansecurity.

11.3.1

O que um Aviso de Segurana da Debian (Debian Security Advisory - DSA)?

a informao enviada pelo Time de segurana da Debian (veja abaixo) com relao a descoberta e correo de uma vulnerabilidade relacionada a segurana em um pacote disponvel na Debian GNU/Linux. DSAs assinados so enviados lista de discusses pblicas (debian-security-announce) e postados no web site da Debian (ambos na pgina inicial e na rea de segurana (http://www.debian.org/security/)). OS DSAs incluem informaes sobre o pacote afetado, o problema de segurana descoberto e onde obter pacotes atualizados (com seus respectivos clculos MD5).

11.3.2

As assinaturas nos avisos de segurana da Debian no so vericados corretamente!

mais provvel que este problema esteja sendo causado por algo em sua mquina. A lista debian-security-announce (http://www.debian.org/security/faq) tem um ltro que somente permite postagem de mensagens de um dos membros do time de segurana da Debian. mais provvel que algumas peas do software de e-mail estejam alterando as mensagens, quebrando assim a assinatura. Tenha certeza que seu programa no faa qualquer encodicao ou decodicao MIME ou converso de tab/espaos. Acusados conhecidos so fetchmail (com a opo mimedecode ativada), formail (somente do procmail 3.14) e o evolution.

11.3.3

Como a segurana tratada na Debian?

Assim que o time de segurana recebe a noticao de um incidente, um dos membros revisa e considera o impacto no lanamento estvel da Debian (i.e. se vulnervel ou no). Se o seu sistema vulnervel, ns trabalharemos para corrigir o problema. O mantenedor do pacote tambm contactado, caso ele j no tenha contactado o time de segurana. Finalmente, a correo testada e novos pacotes so preparados, que ento so compilados em todas as arquiteturas estveis e aps isto feito o upload. Aps isto feito, um aviso de segurana publicado.

11.3.4

Porque vocs esto trabalhando em uma verso antiga daquele pacote?

A regra de conduta mais importante quando criar um novo pacote que corrige um problema de segurana fazer menos alteraes possveis. Nossos usurios e desenvolvedores se preocupam com o exato comportamento de um lanamento quando feito, assim qualquer alterao que ns fazemos, pode possivelmente tornar o programa no funcional no sistema de algum. Isto especialmente verdadeiro no caso de bibliotecas: tenha certeza de nunca alterar a interface de aplicao do programa (API) ou a interface de aplicao do Binrio (ABI), no importa quanto pequena a alterao seja. Isto signica que no uma boa soluo mover para uma nova verso do autor do pacote, ao invs disto as alteraes importantes devem ser feitas na verso atual (backportadas). Geralmente os autores ajudam se necessrio, seno o time de segurana da Debian poder ser capaz de ajudar.

Captulo 11. Questes feitas com freqncia (FAQ)

113

Em alguns casos no possvel adaptar uma atualizao de segurana para uma verso antiga, por exemplo, quando foi necessria a alterao de uma grande quantidade de cdigo fonte. Se isto acontecer, necessrio mover para uma nova verso do autor, mas isto deve ser coordenado de forma muito pr ativa com o time de segurana.

11.3.5

Qual a poltica para um pacote corrigido aparecer em security.debian.org?

Quebras de segurana na distribuio estvel garante um pacote em security.debian.org. Qualquer outra coisa no. O tamanho do comprometimento no o problema real aqui. Normalmente o time de segurana preparar pacotes juntos com o mantenedor do pacote. Fornecendo os rastros dos testes de algum (convel) sobre o problema e tendo todos os pacotes necessrios compilados e enviados para o time de segurana, at mesmo problemas de segurana simples faro o pacote ser enviado para security.debian.org. Por favor, veja baixo.

11.3.6

O nmero de verso de um pacote indica que eu ainda estou usando uma verso vulnervel!

Ao invs de atualizar para uma nova verso, ns adaptamos as correes para a verso estvel que fornecida com o lanamento estvel. A razo para fazermos isto para ter certeza que a verso estvel mude o mnimo possvel assim as coisas no sero alteradas ou quebraro de forma inesperada como resultado de um problema de segurana. Voc poder vericar se est executando uma verso segura de um pacote olhando nos logs de alteraes do pacote (changelog), ou comparando seu nmero de verso exato com o nmero de verso indicado no aviso de segurana da Debian (DSA).

11.3.7

Como a segurana tratada na testing e unstable?

A resposta curta : no . Os lanamentos testing e unstable esto movendo rapidamente objetos e o time de segurana no possui os recursos necessrios para suport-las apropriadamente. Se desejar ter um servidor seguro (e estvel) voc fortemente encorajado para permanecer usando a stable (estvel). No entanto, as secretrias de segurana tentaro corrigir problemas na testing e unstable aps terem sido corrigidos na stable (distribuio estvel). Em alguns casos, no entanto, o repositrio unstable (instvel) recebe correes de segurana de forma rpida, porque estas correes geralmente so disponibilizadas de forma rpida para o autor (outras verses, como as que esto no repositrio stable, geralmente precisam ser adaptadas).

11.3.8

Eu uso uma verso antiga da Debian, ela suportada pelo time de segurana?

No. Infelizmente o time de segurana da Debian no pode tomar conta de ambos os lanamentos estveis (ocialmente, tambm a unstable) e outros lanamentos antigos. No entanto, voc poder esperar por atualizaes de segurana por um perodo limitado de tempo (normalmente alguns meses) imediatamente seguindo o lanamento de uma nova distribuio da Debian.

11.3.9

Porque no existem mirrors ociais de security.debian.org?

O propsito de security.debian.org tornar atualizaes de segurana rapidamente disponveis quanto possvel. Os mirrors adicionariam uma complexidade extra que no necessria e causariam frustrao caso no estivessem sendo atualizados.

11.3.10

Eu vi o DSA 100 e DSA 102, o que aconteceu com o DSA 101?

Diversos distribuidores (a maioria de GNU/Linux, mas tambm de BSD e derivados) coordenam avisos de segurana para alguns incidentes e concordam em ter uma limite de tempo particular de lanamento, assim todos os distribuidores so capazes de lanar um aviso em conjunto. Isto foi decidido com a inteno de no existirem discriminaes entre alguns distribuidores que precisam de mais tempo (e.g. quando o distribuidor passou pacotes atravs de grandes testes de qualidade ou precisa manter o suporte a diversas arquiteturas ou distribuies binrios). Nosso prprio time de segurana tambm prepara avisos de forma pr ativa. Toda vez que estiver acontecendo, outros problemas de segurana sero analisados antes de um aviso ser lanado, e assim deixando alguns nmeros de avisos de lado temporariamente.

Captulo 11. Questes feitas com freqncia (FAQ)

114

11.3.11

Como posso contactar o time de segurana?

Informaes de segurana podem ser enviadas para security@debian.org (mailto:security@debian.org), que lida por todos os desenvolvedores da Debian. Se tiver informaes sensveis, por favor use team@security.debian.org (mailto: team@security.debian.org) que lida somente por membros. Caso a mensagem puder ser encriptada pela chave de contato do time de segurana da Debian (key ID 0x363CCD95 (http://pgpkeys.pca.dfn.de:11371/pks/lookup? search=0x363CCD95op=vindex) ).

11.3.12

Qual a diferena entre security@debian.org e debian-security@lists.debian.org?

Quando envia uma mensagem para security@debian.org, ela enviada apara a lista de discusso de desenvolvedores (debian-private). Todos os desenvolvedores da Debian esto inscritos nesta lista e as postagens so mantidas privadas (i.e. no so arquivadas no site pblico da internet). A lista de discusso pblica, debian-security@lists.debian.org, aberta para qualquer pessoa que deseja se inscrever (http://www.debian.org/MailingLists/) e existem arquivos que podem ser pesquisados disponveis aqui (http://lists.debian.org/search.html).

11.3.13

Como posso contribuir com o time de segurana da Debian?

Contribuindo com este documento, corrigindo pargrafos marcados com FIXME ou fornecendo novos contedos. A documentao importante e reduz a carga de perguntas de assuntos simples. A traduo desta documentao em outros idiomas tambm de grande ajuda. Empacotando aplicativos que so teis para a checagem e fortalecimento de um sistema Debian GNU/Linux. Se no for um desenvolvedor, envie uma falha sobre o WNPP (http://www.debian.org/devel/wnpp/) e pergunte pelo software que acha que poderia ser til, mas que atualmente no fornecido. Audite os programas na Debian ou resolva bugs de segurana e reporte assuntos para security@debian.org. Trabalhar em outros projetos como o Projeto de Auditoria e Segurana do Kernel do Linux (http://kernel-audit. sourceforge.net/) ou o Projeto de Segurana e Auditoria do Linux (http://www.lsap.org/) tambm aumenta a segurana da Debian GNU/Linux, pois as contribuies eventualmente tambm ajudaro aqui. Em todos os casos, po favor revise cada problema antes de envi-lo para security@debian.org. Se for capaz de fornecer patches, isto aceleraria o processo. No redirecione mensagens de listas de bugtraq, pois eles j foram recebidos. O fornecimento de informaes adicionais, no entanto, sempre uma tima idia.

11.3.14

quem compe o time de segurana?

O time de segurana da Debian composto de cinco membros e duas secretrias. O time de segurana por si mesmo recomenda pessoas para que faam parte do time.

11.3.15

O time de segurana verica cada novo pacote que entra na Debian?

No, o time de segurana da Debian no verica cada pacote e no existe um mtodo de checagem automtico (lintian) para detectar novos pacotes maliciosos, pois estas tarefas so quase impossveis de serem detectadas automaticamente. Mantenedores, no entanto, so completamente responsveis pelos pacotes que adicionam na Debian, e todos os pacotes so primeiramente assinados por um desenvolvedor autorizado. O desenvolvedor tem a responsabilidade de analisar a segurana de todos os pacotes que ele mantm.

11.3.16

Quanto tempo a Debian levar para resolver a vulnerabilidade XXXX?

O time de segurana da Debian trabalha rapidamente para enviar avisos e produzir pacotes corrigidos para o repositrio estvel assim que uma vulnerabilidade descoberta. Um relatrio pblicado na lista de discusso debian-security (http:// lists.debian.org/debian-security/2001/debian-security-200112/msg00257.html) mostrou que no ano de 2001, houve uma mdia de 35 dias para corrigir problemas relacionados a segurana. No entanto, 50% dos problemas foram solucionados em um intervalo de 10 dias, e 15% dos problemas foram corrigidos no mesmo dia quando o aviso foi lanado. No entanto, quando perguntam esta questo as pessoas tendem a se esquecer que:

Captulo 11. Questes feitas com freqncia (FAQ) Os DSAs no so enviados at que:

115

os pacotes estejam disponveis para todas as arquiteturas suportadas pela Debian (o que leva muito tempo para pacotes que so partes do ncleo do sistema, especialmente considerando o nmero de arquiteturas suportadas pelo lanamento estvel). novos pacotes so constantemente testados para ter certeza que nenhuma nova falha foi introduzida Os pacotes devem ser disponibilizados antes do DSA ser enviado (na queue incoming ou nos mirrors). O Debian um projeto baseado em trabalho voluntrio. A Debian licenciada com uma clusula sem garantias. Se quiser uma anlise mais precisa do tempo que o time de segurana leva para trabalhar em vulnerabilidades, voc dever considerar que os novos DSAs (veja Debian Security Advisories on page 73) publicados no website de segurana (http: //security.debian.org), e os metadados usado para ger-los, incluem links para bancos de dados de vulnerabilidades. Voc poder baixar os fontes do servidor web (a partir do CVS (http://cvs.debian.org)) ou usar as pginas HTML para determinar o tempo que a Debian levou para corrigir a vulnerabilidade e co-relacionar estes dados com bancos de dados pblicos.

Captulo 11. Questes feitas com freqncia (FAQ)

116

117

Apndice A

Passo-a-passo do processo de fortalecimento


Abaixo est uma ps-instalao, um procedimento passo-a-passo para tornar no sistema Debian 2.2 GNU/Linux mais seguro. Esse procedimento uma alternativa para tornar os servios de redes mais seguros. Ser mostrado o processo completo do que deve ser feito durante a congurao. Tambm, veja Checklist de congurao on page 119. Instale o sistema, levando em conta as informaes sobre o particionamento que foi citada anteriormente neste documento. Depois da instalao bsica, v instalao personalizada. No selecione os pacotes de tarefa. Selecione senhas no formato shadow. Usando dselect, exclua todos os pacotes desnecessrios, exceto os selecionados, antes de proceder com o [I]nstall. Mantenha um nmero reduzido de pacotes para o sistema. Atualize todos os softwares para a ltima verso disponvel dos pacotes em security.debian.org como explicado anteriormente em Executar uma atualizao de segurana on page 27. Implementar as sugestes apresentadas neste manual com relao s cotas de usurios, denies de login e lilo Fazer uma lista de servios que esto rodando no seu sistema. Tente:
$ ps -aux $ netstat -pn -l -A inet # /usr/sbin/lsof -i | grep LISTEN

Voc precisar instalar o lsof-2.2 para o terceiro comando acima funcionar (execute como super-usurio). Voc deve estar ciente de que o lsof pode traduzir a palavra LISTEN para suas conguraes de localizao. Para excluir servios desnecessrios, primeiro determine qual pacote fornece o servio e como ele inicializado. Isto pode ser feito vericando os programas que escutam no soquete. O shell script abaixo, que utiliza os programas lsof e dpkg, faz isso:
#!/bin/sh # FIXME: this is quick and dirty; replace with a more robust script snippet for i in sudo lsof -i | grep LISTEN | cut -d " " -f 1 |sort -u ; do pack=dpkg -S $i |grep bin |cut -f 1 -d : | uniq echo "Service $i is installed by $pack"; init=dpkg -L $pack |grep init.d/ if [ ! -z "$init" ]; then echo "and is run by $init" fi done

Se voc encontrar algum servio desnecessrio, exclua o pacote associado (com dpkg --purge), ou desabilite a inicializao automtica durante a fase de boot usando o comando update-rc.d (veja Desabilitando daemons de servio on page 23). Para os servios inetd (iniciados pelo superdaemon), verique quais servios esto ativados em /etc/inetd.conf atravs de:
$ grep -v "^#" /etc/inetd.conf | sort -u

Ento desative estes servios desnecessrios comentando a linha referente em /etc/inetd.conf, excluindo o pacote ou utilizando o comando update-inetd.

Captulo A. Passo-a-passo do processo de fortalecimento

118

Se voc utiliza servios wrapped (aqueles que utilizam /usr/sbin/tcpd), verique se os arquivos /etc /hosts.allow e /etc/hosts.deny so congurados de acordo com sua poltica de servio. Se o servidor usa mais que uma interface externa, dependendo do seu servio, voc pode limitar o servio para escutar em uma interface especca. Por exemplo, se voc quiser somente acesso interno para o FTP, voc deve congurar o daemon FTP para escutar somente na sua interface de gerncia, no em todas interfaces (i.e, 0.0.0.0:21). Reinicie o computador, ou troque o modo de single user para multiuser usando os comandos:
$ init 1 (....) $ init 2

Ento verique agora os servios que esto disponveis, e se necessrio, repita os passos acima. Agora instale os servios necessrios, se no tiver feito isso ainda, e os congure corretamente. Use o comando shell abaixo para determinar com que usurio cada servio disponvel est sendo executado:
$ for i in /usr/sbin/lsof -i |grep LISTEN |cut -d " " -f 1 |sort -u; \ > do user=ps -ef |grep $i |grep -v grep |cut -f 1 -d " " ; \ > echo "Service $i is running as user $user"; done

Considere alterar esses servios para um usurio/grupo especco e talvez at enjaul-los (chrooting) para aumentar nvel de segurana. Voc pode fazer isto alterando os scripts de inicializao em /etc/init.d. A maioria dos servios no Debian usa o start-stop-daemon com as opes (--change-uid e --chroot) para fazer isso. Uma observao com relao ao enjaulamento (chrooting) dos servios: voc precisa colocar todos os arquivos instalados pelo pacote (use dpkg -L) que fornece o servio, assim como qualquer pacote dependente, na jaula chroot. Informaes sobre a congurao de um ambiente chroot para o programa ssh podem ser encontrada em Ambiente chroot para SSH on page 137. Repita os passos acima para certicar que somente os servios desejados estejam rodando e esteja sendo usada a combinao de usurio/grupo correta. Teste os servios instalados para ver se esto funcionando corretamente. Verique o sistema usando um vulnerability assessment scanner (tipo o nessus), para determinar as vulnerabilidades no sistema (i.e., mal-congurao, servios antigos e desnecessrios). Instale ferramentas de deteco de intruso de rede e host como snort e logsentry. Repita o passo de varredura da rede e verique se os sistemas de deteco de intruso esto funcionando corretamente. Para parania real, tambm considere o seguinte: Adicione as capacidades de rewall do sistema, conexes de entrada s devem ser feitas para os servios oferecidos e limite as conexes de sada somente para aqueles que so autorizados. Verique novamente a instalao com uma nova vulnerability assessment usando um varredor de rede. Usando um varredor de rede, verique as conexes de sadas do sistema para um host remoto e certique-se que as conexes indesejadas sejam estabelecida. FIXME: este procedimento engloba o fortalecimento de servios, mas no o fortalecimento a nvel de usurio, incluindo informaes sobre vericao de permisses de usurios, arquivos SETUID e congelamento de alteraes no sistema utilizando o sistema de arquivo ext2.

119

Apndice B

Checklist de congurao
Este apndice retrata resumidamente os pontos de outras sees neste manual em um checklist no formato. A idia disponibilizar um sumrio para a pessoa que j leu o manual buscar uma informao rapidamente. Existem outros checklists bons disponveis, incluindo o Securing Linux Step by Step (http://seifried.org/security/os/ linux/20020324-securing-linux-step-by-step.html) de Kurt Seifried e CERTs Unix Security Checklist (http: //www.cert.org/tech_tips/usc20_full.html). FIXME: Isso baseado na verso 1.4 do manual e talvez precise de atualizao. Limite o acesso fsico e as capacidade de inicializao Ative a senha de BIOS Desative a inicializao por oppy/cdrom/. . . Congure uma senha para o LILO ou GRUB (/etc/lilo.conf ou /boot/grub/menu.lst, respectivamente); verique se o arquivo de congurao do LILO ou GRUB est protegido contra gravao. No permita a inicializao MBR pelo disquete sobrescrevendo a MBR (talvez no?) Particionamento Separe os dados de escrita do usurio, dados que no so do sistema, e dados que so trocados rapidamente em tempo de execuo para suas prprias parties Congure as opes de mount nosuid,noexec,nodev em /etc/fstab na parties ext2 como /tmp. Higiene de senhas e segurana no login Congure uma senha segura para o super-usurio Ative o MD5 e o shadow de senha Instale e use o PAM * Adicione suporte MD5 para o PAM e tenha certeza que (falando de forma generalizada) as entradas nos arquivos em /etc/pam.d/ que garantem acesso mquina tenham o segundo campo congurado como requisite ou required. Modique o /etc/pam.d/login para permite somente logins locais para o super-usurio. * * Tambm marque tty:s autorizado em /etc/security/access.conf e geralmente congure este arquivo para limitar ao mximo possvel o login do super-usurio. * Adicione o mdulo pam_limits.so se voc deseja congurar os limites por usurios * Modique /etc/pam.d/passwd: congure o tamanho mnimo para as senhas (6 caracteres talvez) e ative o MD5 * Adicione o grupo wheel para /etc/group se desejar; adicione a entrada pam_wheel.so group=wheel para /etc/pam.d/su * Para controles customizados por usurios, utilize o mdulo pam_listle.so * Tenha um arquivo /etc/pam.d/other e o congure com um grau de segurana reforado Congure limites em /etc/security/limits.conf (note que /etc/limits no usado se voc j estiver usando o PAM)

Captulo B. Checklist de congurao

120

Aumente a segurana em /etc/login.defs; tambm, se voc ativar o MD5 e/ou PAM, tenha certeza de fazer tambm as alteraes correspondentes aqui, tambm Desative o acesso ftp ao super-usurio em /etc/ftpusers Desative login de rede ao super-usurio; use o su(1) ou sudo(1). (considere instalar o sudo) Usar o PAM para reforar barreiras adicionais aos logins? Outras questes de segurana local Modicaes no kernel (veja Congurando caractersticas de rede do kernel on page 47) Patches no Kernel (veja Adicionando patches no kernel on page 42) Tighten up log le permissions (/var/log/{last,fail}log, Apache logs) Certique-se que a vericao SETUID est ativada em /etc/checksecurity.conf Considere congurar alguns arquivos de logs como somente append e os arquivo de congurao imutveis, usando o comando chattr (somente para arquivos ext2) Congurar a integridade de arquivo (veja Vericando a integridade do sistema de arquivos on page 47). Instale debsums Efetuar o log de tudo em uma impressora local? Gravar suas conguraes em um CD inicializvel e boof off? Desativar os mdulos do kernel? Limitar acesso a rede Instale e congure ssh (sugiro PermitRootLogin No em /etc/ssh/sshd_config, PermitEmptyPasswords No; note outras sugestes tambm no texto) Considere desativar ou excluir in.telnetd Geralmente, desative servios desnecessrios em /etc/inetd.conf usando o comando update-inetd --disable (ou desative inetd completamente, ou use o um substituto como xinetd ou rlinetd) Desative outros servios de rede desnecessrios; mail, ftp, DNS, WWW etc no devem estar sendo executados se voc no precisa deles e monitore-os regularmente. Para aqueles servios que voc precisa, no use os programas mais comuns, procure por verses mais seguras distribudas com o Debian (ou de outras fontes). Seja l o que voc for parar de executar, tenha certeza que voc entende os riscos. Congure jaula chroot para usurios externos e daemons. Congure rewall e tcpwrappers (i.e. hosts_access(5)); note o truque para /etc/hosts.deny no texto. Se voc executa o ftp, congure seu servidor ftpd sempre para executar enjaulado para o diretrio home dos usurios Se voc executa X, desative a autenticao xhost e use-o com ssh; melhor ainda, se puder desative o X (adicione -nolisten tcp para a linha de comando do X e desligue o XDMCP no /etc/X11/xdm/xdm-config congurando requestPort para 0) Desative acesso externo para as impressoras Use tunelamento para qualquer sesso IMAP ou POP atravs do SSL ou ssh; instale stuneel se voc quer fornecer este servios para usurios de mail externos Congure um host de log e congure as outras mquinas para enviar logs para esse host (/etc/syslog.conf) Torne seguro o BIND, Sendmail, e outros daemons complexos (execute-os com uma jaulachroot; execute como um pseudo-usurio no root) Instale o snort ou uma ferramenta similar para log. Faa sem NIS ou RPC se puder (desative portmap). Polticas de segurana Eduque os usurios sobre os porqus e comos de suas polticas. Quando voc probe algo que est disponvel regularmente em outros sistemas, fornea uma documentao que explique como obter resultados similares atravs de outros meios mais seguros. Proba o uso de protocolos que utilizam senhas em texto plano (telnet, rsh e similares; ftp, imap, http, . . . ). Proba programas que usam SVGAlib.

Captulo B. Checklist de congurao Use cotas de disco. Mantenha-se informado sobre questes relacionadas segurana Inscreva-se em listas de discusso sobre segurana

121

Congure apt para atualizao de segurana adicione no arquivo /etc/apt/sources.list uma entrada (ou entradas) para http://security.debian.org/debian-security Tambm lembre-se de executar periodicamente os comandos apt-get update ; apt-get upgrade (talvez instalar como um job no cron?) como explicado em Executar uma atualizao de segurana on page 27.

Captulo B. Checklist de congurao

122

123

Apndice C

Congurando um IDS stand-alone


Voc pode facilmente congurar um sistema Debian dedicado como um IDS stand-alone utilizando o snort. Algumas linhas gerais: Instale um sistema Debian base e no selecione nenhum pacote adicional. Faa o download e manualmente (com dpkg) instale os pacotes necessrios (veja a lista de pacotes instalados abaixo). Baixe e instale o ACID (Analysis Console for Intrusion Databases). ACID est atualmente empacotado para o Debian como acidlab. Ele fornece uma interface WWW grca para o snort. Ele tambm pode ser baixado de http://www.cert.org/kb/acid/, http://acidlab.sourceforge.net ou http: //www.andrew.cmu.edu/~rdanyliw/snort/. Voc tambm pode querer ler o Snort Statistics HOWTO (http:// www.tldp.org/HOWTO/Snort-Statistics-HOWTO/index.html). Este sistema deve ser congurado com pelo menos duas interfaces de rede; uma interface conectada ao gerenciamento da LAN (para acessar os resultados e suporte do sistema), e outra interface sem nenhum endereo IP anexada ao segmento de rede a ser analisado. O arquivo padro /etc/network/interfaces do Debian utilizado normalmente para congurar placas de redes no pode ser usado, j que os programas ifup e ifdown esperam um endereo IP. Em vez disso, simplesmente use ifconfig eth0 up. Alm da instalao ordinria, acidlab tambm depende dos pacotes php4 e apache entre outros. Baixe os seguintes pacotes (Note: as verses devem variar dependendo da distribuio do Debian que voc esteja usando, esta lista do Debian woody Setembro de 2001):
ACID-0.9.5b9.tar.gz adduser_3.39_all.deb apache-common_1.3.20-1_i386.deb apache_1.3.20-1_i386.deb debconf_0.9.77_all.deb dialog_0.9a-20010527-1_i386.deb fileutils_4.1-2_i386.deb klogd_1.4.1-2_i386.deb libbz2-1.0_1.0.1-10_i386.deb libc6_2.2.3-6_i386.deb libdb2_2.7.7-8_i386.deb libdbd-mysql-perl_1.2216-2_i386.deb libdbi-perl_1.18-1_i386.deb libexpat1_1.95.1-5_i386.deb libgdbmg1_1.7.3-27_i386.deb libmm11_1.1.3-4_i386.deb libmysqlclient10_3.23.39-3_i386.deb libncurses5_5.2.20010318-2_i386.deb libpcap0_0.6.2-1_i386.deb libpcre3_3.4-1_i386.deb libreadline4_4.2-3_i386.deb libstdc++2.10-glibc2.2_2.95.4-0.010703_i386.deb logrotate_3.5.4-2_i386.deb mime-support_3.11-1_all.deb mysql-client_3.23.39-3_i386.deb mysql-common_3.23.39-3.1_all.deb mysql-server_3.23.39-3_i386.deb perl-base_5.6.1-5_i386.deb perl-modules_5.6.1-5_all.deb perl_5.6.1-5_i386.deb php4-mysql_4.0.6-4_i386.deb

Captulo C. Congurando um IDS stand-alone


php4_4.0.6-1_i386.deb php4_4.0.6-4_i386.deb snort_1.7-9_i386.deb sysklogd_1.4.1-2_i386.deb zlib1g_1.1.3-15_i386.deb

124

Pacotes instalados (dpkg -l):


ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii adduser ae apache apache-common apt base-config base-files base-passwd bash bsdutils console-data console-tools console-toolscron debconf debianutils dialog diff dpkg e2fsprogs elvis-tiny fbset fdflush fdutils fileutils findutils ftp gettext-base grep gzip hostname isapnptools joe klogd ldso libbz2-1.0 libc6 libdb2 libdbd-mysql-p libdbi-perl libexpat1 libgdbmg1 libmm11 libmysqlclient libncurses5 libnewt0 libpam-modules libpam-runtime libpam0g libpcap0 libpcre3 libpopt0 libreadline4 libssl09 libstdc++2.10 libstdc++2.10libwrap0 lilo locales login makedev mawk mbr mime-support modutils mount mysql-client mysql-common mysql-server ncurses-base ncurses-bin netbase passwd pciutils perl perl-base perl-modules php4 php4-mysql ppp pppconfig procps psmisc 3.39 962-26 1.3.20-1 1.3.20-1 0.3.19 0.33.2 2.2.0 3.1.10 2.03-6 2.10f-5.1 1999.08.29-11. 0.2.3-10.3 0.2.3-10.3 3.0pl1-57.2 0.9.77 1.13.3 0.9a-200105272.7-21 1.6.15 1.18-3.0 1.4-11 2.1-6 1.0.1-5 5.3-3 4.1-2 4.1-40 0.10-3.1 0.10.35-13 2.4.2-1 1.2.4-33 2.07 1.21-2 2.8-15.2 1.4.1-2 1.9.11-9 1.0.1-10 2.2.3-6 2.7.7-8 1.2216-2 1.18-1 1.95.1-5 1.7.3-27 1.1.3-4 3.23.39-3 5.2.20010318-2 0.50-7 0.72-9 0.72-9 0.72-9 0.6.2-1 3.4-1 1.4-1.1 4.2-3 0.9.4-5 2.95.2-13 2.95.4-0.01070 7.6-4 21.4.3-2 2.1.3-18 19990827-20 2.3.1-46.2 1.3.3-5 1.1.2-1 3.11-1 2.3.11-13.1 2.10f-5.1 3.23.39-3 3.23.39-3.1 3.23.39-3 5.0-6.0potato1 5.0-6.0potato1 3.18-4 19990827-20 2.1.2-2 5.6.1-5 5.6.1-5 5.6.1-5 4.0.6-4 4.0.6-4 2.3.11-1.4 2.0.5 2.0.6-5 19-2

Captulo C. Congurando um IDS stand-alone


ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii pump sed setserial shellutils slang1 snort ssh sysklogd syslinux sysvinit tar tasksel tcpd telnet textutils update util-linux zlib1g 0.7.3-2 3.02-5 2.17-16 2.0-7 1.3.9-1 1.7-9 1.2.3-9.3 1.4.1-2 1.48-2 2.78-4 1.13.17-2 1.0-10 7.6-4 0.16-4potato.1 2.0-2 2.11-1 2.10f-5.1 1.1.3-15

125

Captulo C. Congurando um IDS stand-alone

126

127

Apndice D

Congurando uma ponte rewall


Esta informao foi contribuio de Francois Bayart para ajudar os usurio a congurar um Linux como ponte/rewall com o kernel 2.4.x e iptables. Patches do kernel no so mais necessrios, uma vez que o cdigo passou a fazer parte do kernel do Linux. Para congurar o kernel com o suporte necessrio, execute make menuconfig ou make xconfig. Na seo Networking options, ative as seguintes opes:
[*] Network packet filtering (replaces ipchains) [ ] Network packet filtering debugging (NEW) <*> 802.1d Ethernet Bridging [*] netfilter (firewalling) support (NEW)

Cuidado: voc deve desativar isso se voc quiser aplicar algumas regras de rewall ou o iptables no funcionar:
[ ] Network packet filtering debugging (NEW)

Prximo passo, adicione as opes corretas na seo IP: Netlter Conguration. Ento, compile e instale o kernel. Se voc quiser fazer isso no jeito do Debian, instale o kernel-package e execute make-kpkg para criar um pacote Debian customizado do kernel que possa ser instalado no servidor usando o dpkg. Uma vez que o novo kernel compilado e instalado, instale o pacote bridge-utils. Quando estes passos forem feitos, voc pode completar a congurao de sua ponte. A prxima seo apresenta duas possveis conguraes para a ponte, cada uma com um mapa de rede hipottico e os comandos necessrios.

D.1

Uma ponte fornecendo capacidades de NAT e rewall

A primeira congurao usa a ponte como um rewall com traduo de endereos de rede (NAT) que protege o servidor e os clientes da rede interna. Um diagrama da congurao da rede mostrado abaixo:
Internet ---- router ( 62.3.3.25 ) ---- bridge (62.3.3.26 gw 62.3.3.25 / 192.168.0.1) | | |---- WWW Server (62.3.3.27 gw 62.3.3.25) | | LAN --- Zipowz (192.168.0.2 gw 192.168.0.1)

Os seguintes comandos mostram como esta ponte pode ser congurada.


# Create the interface br0 /usr/sbin/brctl addbr br0 # Add the Ethernet interface to use with the bridge /usr/sbin/brctl addif br0 eth0 /usr/sbin/brctl addif br0 eth1 # Start up the Ethernet interface /sbin/ifconfig eth0 0.0.0.0 /sbin/ifconfig eth1 0.0.0.0 # Configure the bridge ethernet # The bridge will be correct and invisible ( transparent firewall ).

Captulo D. Congurando uma ponte rewall


# Its hidden in a traceroute and you keep your real gateway on the # other computers. Now if you want you can config a gateway on your # bridge and choose it as your new gateway for the other computers. /sbin/ifconfig br0 62.3.3.26 netmask 255.255.255.248 broadcast 62.3.3.32 # I have added this internal IP to create my NAT ip addr add 192.168.0.1/24 dev br0 /sbin/route add default gw 62.3.3.25

128

D.2

Uma ponte fornecendo capacidades de rewall

Uma segunda possvel congurao um sistema que funciona como um rewall transparente para a LAN com um espao de endereos IP pblicos.
Internet ---- router (62.3.3.25) ---- bridge (62.3.3.26) | | |---- WWW Server (62.3.3.28 gw 62.3.3.25) | | |---- Mail Server (62.3.3.27 gw 62.3.3.25)

Os seguintes comando mostram como esta ponte pode ser congurada.


# Create the interface br0 /usr/sbin/brctl addbr br0 # Add the Ethernet interface to use with the bridge /usr/sbin/brctl addif br0 eth0 /usr/sbin/brctl addif br0 eth1 # Start up the Ethernet interface /sbin/ifconfig eth0 0.0.0.0 /sbin/ifconfig eth1 0.0.0.0 # # # # # Configure the bridge Ethernet The bridge will be correct and invisible Its hidden in a traceroute and you keep other computers. Now if you want you can bridge and choose it as your new gateway

( transparent firewall ). your real gateway on the config a gateway on your for the other computers.

/sbin/ifconfig br0 62.3.3.26 netmask 255.255.255.248 broadcast 62.3.3.32

Se voc seguir as rotas para o Linux Mail Server, no enxergar a ponte. Se voc quiser acessar a ponte com o ssh, voc deve ter um gateway ou acessar um outro servidor, como o Mail Server, e ento conectar ponte atravs de uma placa de rede interna.

D.3

Regras bsicas do IPtables

As regras bsicas a seguir podem ser usadas em qualquer uma das duas conguraes mostradas acima.
iptables iptables iptables iptables # # # # # -F -P -A -A FORWARD FORWARD DROP FORWARD -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -m state --state INVALID -j DROP FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT a classic Iptables sorry ... -m limit --limit 4/s -j ACCEPT method to block some VIRUS very quickly -p tcp -s 0.0.0.0/0 -m string --string "cmd.exe"

Some funny rules but not in Limit ICMP iptables -A FORWARD -p icmp Match string, a good simple iptables -I FORWARD -j DROP

# Block all MySQL connection just to be sure iptables -A FORWARD -p tcp -s 0/0 -d 62.3.3.0/24 --dport 3306 -j DROP # Linux Mail Server Rules # Allow FTP-DATA ( 20 ) , FTP ( 21 ) , SSH ( 22 ) iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 62.3.3.27/32 --dport 20:22 -j ACCEPT # Allow the Mail Server to connect to the outside # Note: This is *not* needed for the previous connections # (remember: stateful filtering) and could be removed. iptables -A FORWARD -p tcp -s 62.3.3.27/32 -d 0/0 -j ACCEPT # WWW Server Rules

Captulo D. Congurando uma ponte rewall

129

# Allow HTTP ( 80 ) connections with the WWW server iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 62.3.3.28/32 --dport 80 -j ACCEPT # Allow HTTPS ( 443 ) connections with the WWW server iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 62.3.3.28/32 --dport 443 -j ACCEPT # Allow the WWW server to go out # Note: This is *not* needed for the previous connections # (remember: stateful filtering) and could be removed. iptables -A FORWARD -p tcp -s 62.3.3.28/32 -d 0/0 -j ACCEPT

Captulo D. Congurando uma ponte rewall

130

131

Apndice E

Exemplo de script para alterar a instalao padro do Bind.


Este script automatiza o procedimento para alterar a instalao padro do servidor de nome bind de forma que ele no execute como superusurio. Ele ir criar usurio e grupos que sero usados para o servidor de nome. Utilize-o com bastante cuidado j que o script no foi testado exaustivamente.
#!/bin/sh # Change the default Debian bind configuration to have it run # with a non-root user and group. # # WARN: This script has not been tested thoroughly, please # verify the changes made to the INITD script # (c) 2002 Javier Fernandez-Sanguino Pea # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 1, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # Please see the file COPYING for the complete copyright notice. # restore() { # Just in case, restore the system if the changes fail echo "WARN: Restoring to the previous setup since Im unable to properly change it." echo "WARN: Please check the $INITDERR script." mv $INITD $INITDERR cp $INITDBAK $INITD }

USER=named GROUP=named INITD=/etc/init.d/bind INITDBAK=$INITD.preuserchange INITDERR=$INITD.changeerror START="start-stop-daemon --start --quiet --exec /usr/sbin/named -- -g $GROUP -u $USER" AWKS="awk /start-stop-daemon --start/ { print \"$START\"; noprint = 1; }; /\/usr\/sbin\/ndc reload/ { print \"stop; sleep 2; star [ id -u -ne 0 ] && { echo "This program must be run by the root user" exit 1 } RUNUSER=ps -eo user,fname |grep named |cut -f 1 -d " " if [ "$RUNUSER" = "$USER" ] then echo "WARN: The name server running daemon is already running as $USER" echo "ERR: This script will not many any changes to your setup." exit 1 fi if [ ! -f $INITD ] then echo "ERR: This system does not have $INITD (which this script tries to change)" RUNNING=ps -eo fname |grep named [ -z "$RUNNING" ] && \ echo "ERR: In fact the name server daemon is not even running (is it installed?)" echo "ERR: No changes will be made to your system"

Captulo E. Exemplo de script para alterar a instalao padro do Bind.


exit 1 fi # Check if named group exists if [ -z "grep $GROUP /etc/group" ] then echo "Creating group $GROUP:" addgroup $GROUP else echo "WARN: Group $GROUP already exists. Will not create it" fi # Same for the user if [ -z "grep $USER /etc/passwd" ] then echo "Creating user $USER:" adduser --system --home /home/$USER \ --no-create-home --ingroup $GROUP \ --disabled-password --disabled-login $USER else echo "WARN: The user $USER already exists. Will not create it" fi # Change the init.d script # First make a backup (check that there is not already # one there first) if [ ! -f $INITDBAK ] then cp $INITD $INITDBAK fi # Then use it to change it cat $INITDBAK | eval $AWKS > $INITD echo "WARN: The script $INITD has been changed, trying to test the changes." echo "Restarting the named daemon (check for errors here)." $INITD restart if [ $? -ne 0 ] then echo "ERR: Failed to restart the daemon." restore exit 1 fi RUNNING=ps -eo fname |grep named if [ -z "$RUNNING" ] then echo "ERR: Named is not running, probably due to a problem with the changes." restore exit 1 fi # Check if its running as expected RUNUSER=ps -eo user,fname |grep named |cut -f 1 -d " " if [ "$RUNUSER" = "$USER" ] then echo "All has gone well, named seems to be running now as $USER." else echo "ERR: The script failed to automatically change the system." echo "ERR: Named is currently running as $RUNUSER." restore exit 1 fi exit 0

132

O script anterior, execute-o no bind customizado do Woody (Debian 3.0), ir produzir o arquivo initd abaixo depois de criar o usurio e grupo named:
#!/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin test -x /usr/sbin/named || exit 0 start () { echo -n "Starting domain name service: named" start-stop-daemon --start --quiet \ --pidfile /var/run/named.pid --exec /usr/sbin/named echo "." } stop () { echo -n "Stopping domain name service: named" # --exec doesnt catch daemons running deleted instances of named, # as in an upgrade. Fortunately, --pidfile is only going to hit # things from the pidfile.

Captulo E. Exemplo de script para alterar a instalao padro do Bind.


start-stop-daemon --stop --quiet \ --pidfile /var/run/named.pid --name named echo "." } case "$1" in start) start ;; stop) stop ;; restart|force-reload) stop sleep 2 start ;; reload) /usr/sbin/ndc reload ;; *) echo "Usage: /etc/init.d/bind {start|stop|reload|restart|force-reload}" >&2 exit 1 ;; esac exit 0

133

Captulo E. Exemplo de script para alterar a instalao padro do Bind.

134

135

Apndice F

Atualizao de segurana protegida por um rewall


Depois de uma instalaa padro, o sistema ainda poder ter algumas vulnerabilidades de segurana. Ao menos que voc baixe as atualizaes para os pacotes vulnerveis em outro computador (ou voc tenha espelhado security.debian.org para uso local), o sistema dever ter acesso Internet para os downloads. Entretanto, na medida que voc se conecta Internet estar expondo seu sistema. Se um de seus servios locais estiver vulnervel, poder ser comprometido mesmo antes de nalizar as atualizaes! Isso pode ser paranico, mas as anlises do Projeto Honeynet (http://www.honeynet.org) tm mostrado que sistemas podem ser comprometidos em menos de trs dias, mesmo que o sistema no seja conhecido publicamento (i.e., no est publicado nos registros DNS). Quando estiver fazendo uma atualizao em um sistema no protegido por um mecanismo externo como rewall, possvel congurar seu rewall local para restringir conexes envolvendo somente as prprias atualizaes de segurana. O exemplo abaixo mostra como congurar estas capacidades de rewall, que permitem somente conexes do security.debian.org, registrando todas as outras que so negadas. FIXME: add IP address for security.debian.org (since otherwise you need DNS up to work) on /etc/hosts. FIXME: test this setup to see if it works properly FIXME: this will only work with HTTP URLs since ftp might need the ip_conntrack_ftp module, or use passive mode.
# iptables -F # iptables -L Chain INPUT (policy ACCEPT) target prot opt source Chain FORWARD (policy ACCEPT) target prot opt source

destination

destination

Chain OUTPUT (policy ACCEPT) target prot opt source destination # iptables -P INPUT DROP # iptables -P FORWARD DROP # iptables -P OUTPUT DROP # iptables -A OUTPUT -d security.debian.org --dport 80 -j ACCEPT # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # iptables -A INPUT -p icmp -j ACCEPT # iptables -A INPUT -j LOG # iptables -A OUTPUT -j LOG # iptables -L Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 LOG all -- anywhere anywhere LOG level warning Chain FORWARD (policy DROP) target prot opt source Chain OUTPUT (policy DROP) target prot opt source ACCEPT 80 -- anywhere LOG all -- anywhere

destination

destination security.debian.org anywhere LOG level warning

Captulo F. Atualizao de segurana protegida por um rewall

136

137

Apndice G

Ambiente chroot para SSH


Criar um ambiente restrito para SSH um trabalho duro, devido s suas dependncias e pelo fato que, diferente dos outros servios, o SSH fornece shell remoto aos usurios. Ento, voc tambm deve considerar as aplicaes que sero permitidas aos usurios neste ambiente. Se voc criar esta estrutura de arquivos em, por exemplo /var/chroot/ssh, poderia inicializar o servidor ssh enjaulado com o comando:
# chroot /var/chroot/ssh /sbin/sshd -f /etc/sshd_config

G.1

Congurando automaticamente o ambiente (a maneira fcil)

Voc pode facilmente criar um ambiente restrito com o pacote makejail, j que ele automaticamente segue as trilhas do servidor daemon (com strace) e faz com que ele execute em um ambiente restrito. A vantagem de programas que automaticamente geram um ambiente chroot que eles so capazes de copiar qualquer pacote para o ambiente chroot (mesmo seguindo as dependncias do pacote e certicar que foi completada). Ento, fornecer as aplicaes dos usurios bem mais fcil. Para congurar o ambiente usando os exemplos fornecidos pelo makejail, use o comando:
# makejail /usr/share/doc/makejail/examples/sshd.py

Leia o arquivo exemplo para ver que outras mudanas devem ser feitas para o ambiente. Algumas dessas mudanas, como copiar os diretrios home do usurio, no podem ser feitas automaticamente. Tambm limite a exposio de informaes sensveis, copiando os dados de um certo nmero de usurios dos arquivos /etc/shadow ou /etc/group. O seguinte exemplo de ambiente tem sido (levemente) testado, foi construdo com o arquivo de congurao fornecido no pacote e inclue o pacote fileutils:
. |-| | | | | | | | | | | | | | | | | | | | | | | | |

bin |-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|--

ash bash chgrp chmod chown cp csh -> /etc/alternatives/csh dd df dir fdflush ksh ln ls mkdir mknod mv rbash -> bash rm rmdir sh -> bash sync tcsh touch vdir

Captulo G. Ambiente chroot para SSH


| |-- zsh -> /etc/alternatives/zsh | -- zsh4 |-- dev | |-- null | |-- ptmx | |-- pts | |-- ptya0 (...) | |-- tty | |-- tty0 (...) | -- urandom |-- etc | |-- alternatives | | |-- csh -> /bin/tcsh | | -- zsh -> /bin/zsh4 | |-- environment | |-- hosts | |-- hosts.allow | |-- hosts.deny | |-- ld.so.conf | |-- localtime -> /usr/share/zoneinfo/Europe/Madrid | |-- motd | |-- nsswitch.conf | |-- pam.conf | |-- pam.d | | |-- other | | -- ssh | |-- passwd | |-- resolv.conf | |-- security | | |-- access.conf | | |-- chroot.conf | | |-- group.conf | | |-- limits.conf | | |-- pam_env.conf | | -- time.conf | |-- shadow | |-- shells | -- ssh | |-- moduli | |-- ssh_host_dsa_key | |-- ssh_host_dsa_key.pub | |-- ssh_host_rsa_key | |-- ssh_host_rsa_key.pub | -- sshd_config |-- home | -- userX |-- lib | |-- ld-2.2.5.so | |-- ld-linux.so.2 -> ld-2.2.5.so | |-- libc-2.2.5.so | |-- libc.so.6 -> libc-2.2.5.so | |-- libcap.so.1 -> libcap.so.1.10 | |-- libcap.so.1.10 | |-- libcrypt-2.2.5.so | |-- libcrypt.so.1 -> libcrypt-2.2.5.so | |-- libdl-2.2.5.so | |-- libdl.so.2 -> libdl-2.2.5.so | |-- libm-2.2.5.so | |-- libm.so.6 -> libm-2.2.5.so | |-- libncurses.so.5 -> libncurses.so.5.2 | |-- libncurses.so.5.2 | |-- libnsl-2.2.5.so | |-- libnsl.so.1 -> libnsl-2.2.5.so | |-- libnss_compat-2.2.5.so | |-- libnss_compat.so.2 -> libnss_compat-2.2.5.so | |-- libnss_db-2.2.so | |-- libnss_db.so.2 -> libnss_db-2.2.so | |-- libnss_dns-2.2.5.so | |-- libnss_dns.so.2 -> libnss_dns-2.2.5.so | |-- libnss_files-2.2.5.so | |-- libnss_files.so.2 -> libnss_files-2.2.5.so | |-- libnss_hesiod-2.2.5.so | |-- libnss_hesiod.so.2 -> libnss_hesiod-2.2.5.so | |-- libnss_nis-2.2.5.so | |-- libnss_nis.so.2 -> libnss_nis-2.2.5.so | |-- libnss_nisplus-2.2.5.so | |-- libnss_nisplus.so.2 -> libnss_nisplus-2.2.5.so | |-- libpam.so.0 -> libpam.so.0.72 | |-- libpam.so.0.72 | |-- libpthread-0.9.so | |-- libpthread.so.0 -> libpthread-0.9.so | |-- libresolv-2.2.5.so | |-- libresolv.so.2 -> libresolv-2.2.5.so | |-- librt-2.2.5.so | |-- librt.so.1 -> librt-2.2.5.so | |-- libutil-2.2.5.so | |-- libutil.so.1 -> libutil-2.2.5.so | |-- libwrap.so.0 -> libwrap.so.0.7.6 | |-- libwrap.so.0.7.6 | -- security | |-- pam_access.so

138

Captulo G. Ambiente chroot para SSH


| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-| |-| | | | | | | | | | | | | | | | | | | | | | | | | | | | -|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|--pam_chroot.so pam_deny.so pam_env.so pam_filter.so pam_ftp.so pam_group.so pam_issue.so pam_lastlog.so pam_limits.so pam_listfile.so pam_mail.so pam_mkhomedir.so pam_motd.so pam_nologin.so pam_permit.so pam_rhosts_auth.so pam_rootok.so pam_securetty.so pam_shells.so pam_stress.so pam_tally.so pam_time.so pam_unix.so pam_unix_acct.so -> pam_unix.so pam_unix_auth.so -> pam_unix.so pam_unix_passwd.so -> pam_unix.so pam_unix_session.so -> pam_unix.so pam_userdb.so pam_warn.so pam_wheel.so

139

sbin -- start-stop-daemon usr |-- bin | |-- dircolors | |-- du | |-- install | |-- link | |-- mkfifo | |-- shred | |-- touch -> /bin/touch | -- unlink |-- lib | |-- libcrypto.so.0.9.6 | |-- libdb3.so.3 -> libdb3.so.3.0.2 | |-- libdb3.so.3.0.2 | |-- libz.so.1 -> libz.so.1.1.4 | -- libz.so.1.1.4 |-- sbin | -- sshd -- share |-- locale | -- es | |-- LC_MESSAGES | | |-- fileutils.mo | | |-- libc.mo | | -- sh-utils.mo | -- LC_TIME -> LC_MESSAGES -- zoneinfo -- Europe -- Madrid var -- run |-- sshd -- sshd.pid

27 directories, 733 files

G.2

Aplicando patch no SSH para ativar a funcionalidade do chroot

O sshd do Debian no permite restringir as operaes do usurio atravs do servidor, j que falta uma funo chroot que o programa comercial sshd2 inclue (usando ChrootGroups ou ChrootUsers, veja sshd2_config(5)). Entretanto, existe um patch disponvel para adicionar esta funcionalidade que pode ser baixado em Bug report 139047 (http:// bugs.debian.org/139047) O patch pode ser includo nos lanamentos futuros do pacote OpenSSH. Emmanuel Lacour tem os pacotes deb do ssh com este recurso em http://debian.home-dn.net/woody/ssh/. De qualquer forma recomendvel compilar o programa. Uma descrio de todos os passos necessrios podem ser encontrada em http://mail.incredimail.com/howto/ openssh/ (apesar de ser direcionada para usurios RedHat 7.2, quase todos deles so aplicveis para o Debian). Depois de aplicar o patch, modique o arquivo /etc/passwd alterando o caminho do home dos usurios (com o token especial /./):
joeuser:x:1099:1099:Joe Random User:/home/joe/./:/bin/bash

Captulo G. Ambiente chroot para SSH Isto ir restringir ambos o acesso remoto ao shell, como tambm a cpia remota atravs do canal ssh.

140

Tenha certeza de ter todos os binrios e bibliotecas necessrias dentro do caminho que est enjaulado para os usurios. Estes arquivos devem pertencer ao root para evitar tampering pelo usurio (como sair da jaula chrooted). Um exemplo possvel inclue:
./bin: total 660 drwxr-xr-x drwxr-xr-x -r-xr-xr-x -r-xr-xr-x -r-xr-xr-x -rwxr-xr-x -r-xr-xr-x -r-xr-xr-x lrwxrwxrwx ./etc: total 24 drwxr-xr-x drwxr-xr-x -rw-r--r--rw-r--r--rw-r--r--rw-r--r--

2 8 1 1 1 1 1 1 1

root guest root root root root root root root

root guest root root root root root root root

4096 4096 531160 43916 16684 23960 9916 24780 4

Mar Mar Feb Nov Nov Mar Jul Nov Mar

18 15 6 29 29 18 26 29 30

13:36 16:53 22:36 13:19 13:19 13:36 2001 13:19 16:29

. .. bash ls mkdir more pwd rm sh -> bash

2 8 1 1 1 1

root guest root root root root

root guest root root root root

4096 4096 54 428 44 52

Mar Mar Mar Mar Mar Mar

15 15 15 15 15 15

16:13 16:53 13:23 15:56 15:53 13:23

. .. group hosts passwd shells

./lib: total 1848 drwxr-xr-x 2 root drwxr-xr-x 8 guest -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rw-r--r-1 root -rw-r--r-1 root -rw-r--r-1 root -rw-r--r-1 root -rw-r--r-1 root libnss_files.so.2 -rw-r--r-1 root -rw-r--r-1 root -rw-r--r-1 root -rw-r--r-1 root -rw-r--r-1 root ./usr: total 16 drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x ./usr/bin: total 340 drwxr-xr-x drwxr-xr-x -rwxr-xr-x -rwxr-xr-x -r-xr-xr-x -rwxr-xr-x -r-sr-xr-x -rwxr-xr-x

root guest root root root root root root root root root root root root

4096 4096 92511 1170812 20900 9436 248132 71332 34144 29420 105498 25596 7760 24328

Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar

18 15 15 15 15 15 15 15 15 15 15 15 15 15

13:37 16:53 12:49 12:49 13:01 12:49 12:48 13:00 16:10 12:57 12:51 12:51 12:59 12:57

. .. ld-linux.so.2 libc.so.6 libcrypt.so.1 libdl.so.2 libncurses.so.5 libnsl.so.1

libpam.so.0 libpthread.so.0 librt.so.1 libutil.so.1 libwrap.so.0

4 8 2 2

root guest root root

root guest root root

4096 4096 4096 4096

Mar Mar Mar Mar

15 15 15 15

13:00 16:53 15:55 15:37

. .. bin lib

2 4 1 1 1 1 1 1

root root root root root root root root

root root root root root root root root

4096 4096 10332 13052 25432 43768 218456 9692

Mar Mar Mar Mar Mar Mar Mar Mar

15 15 15 15 15 15 15 15

15:55 13:00 15:55 13:13 12:40 15:15 12:40 13:17

. .. env id scp sftp ssh tty

./usr/lib: total 852 drwxr-xr-x 2 root drwxr-xr-x 4 root -rw-r--r-1 root libcrypto.so.0.9.6 -rw-r--r-1 root -rwxr-xr-x 1 root

root root root root root

4096 Mar 15 15:37 . 4096 Mar 15 13:00 .. 771088 Mar 15 13:01 54548 Mar 15 13:00 libz.so.1 23096 Mar 15 15:37 sftp-server

G.3

Ambiente feito a mo (a maneira difcil)

possvel criar um ambiente, usando o mtodo de tentativa e erro, seguindo a execuo do servidor sshd e arquivos de log para determinar os arquivos necessrios. O seguinte ambiente, contribudo por Jos Luis Ledesma, uma listagem amostral do arquivos que esto no ambiente chroot para o ssh: 1
.: total 36 drwxr-xr-x 9 root root 4096 Jun 5 10:05 ./
1 Observe que no existem arquivos SETUID. Isso torna mais difcil para usurios remotos fugir o ambiente chroot. Entretanto, isso tambm previne que os usurios alterem suas senhas, j que o programa passwd no pode modicar os arquivos /etc/passwd ou /etc/shadow.

Captulo G. Ambiente chroot para SSH


drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x ./bin: total 8368 drwxr-xr-x drwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -r-xr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -r-xr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rws--x--x -rwxr-xr-x -rws--x--x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x ./dev: total 8 drwxr-xr-x drwxr-xr-x crw-r--r-./etc: total 208 drwxr-xr-x drwxr-xr-x -rw-------rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r-drwxr-xr-x -rw-r--r--rw-r--r--rw-r--r--rw-r--r-11 root root 4096 Jun 3 13:43 ../ 2 root root 4096 Jun 4 12:13 bin/ 2 root root 4096 Jun 4 12:16 dev/ 4 root root 4096 Jun 4 12:35 etc/ 3 root root 4096 Jun 4 12:13 lib/ 2 root root 4096 Jun 4 12:35 sbin/ 2 root root 4096 Jun 4 12:32 tmp/ 2 root root 4096 Jun 4 12:16 usr/

141

2 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root

root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root

4096 Jun 4 12:13 ./ 4096 Jun 5 10:05 ../ 109855 Jun 3 13:45 a2p* 387764 Jun 3 13:45 bash* 36365 Jun 3 13:45 c2ph* 20629 Jun 3 13:45 dprofpp* 6956 Jun 3 13:46 env* 158116 Jun 3 13:45 fax2ps* 104008 Jun 3 13:45 faxalter* 89340 Jun 3 13:45 faxcover* 441584 Jun 3 13:45 faxmail* 96036 Jun 3 13:45 faxrm* 107000 Jun 3 13:45 faxstat* 77832 Jun 4 11:46 grep* 19597 Jun 3 13:45 h2ph* 46979 Jun 3 13:45 h2xs* 10420 Jun 3 13:46 id* 4528 Jun 3 13:46 ldd* 111386 Jun 4 11:46 less* 26168 Jun 3 13:45 login* 49164 Jun 3 13:45 ls* 11600 Jun 3 13:45 mkdir* 24780 Jun 3 13:45 more* 154980 Jun 3 13:45 pal2rgb* 27920 Jun 3 13:46 passwd* 4241 Jun 3 13:45 pl2pm* 2350 Jun 3 13:45 pod2html* 7875 Jun 3 13:45 pod2latex* 17587 Jun 3 13:45 pod2man* 6877 Jun 3 13:45 pod2text* 3300 Jun 3 13:45 pod2usage* 3341 Jun 3 13:45 podchecker* 2483 Jun 3 13:45 podselect* 82412 Jun 4 11:46 ps* 36365 Jun 3 13:45 pstruct* 7120 Jun 3 13:45 pwd* 179884 Jun 3 13:45 rgb2ycbcr* 20532 Jun 3 13:45 rm* 6720 Jun 4 10:15 rmdir* 14705 Jun 3 13:45 s2p* 28764 Jun 3 13:46 scp* 385000 Jun 3 13:45 sendfax* 67548 Jun 3 13:45 sendpage* 88632 Jun 3 13:46 sftp* 387764 Jun 3 13:45 sh* 744500 Jun 3 13:46 slogin* 14523 Jun 3 13:46 splain* 744500 Jun 3 13:46 ssh* 570960 Jun 3 13:46 ssh-add* 502952 Jun 3 13:46 ssh-agent* 575740 Jun 3 13:46 ssh-keygen* 383480 Jun 3 13:46 ssh-keyscan* 39 Jun 3 13:46 ssh_europa* 107252 Jun 4 10:14 strace* 8323 Jun 4 10:14 strace-graph* 158088 Jun 3 13:46 thumbnail* 6312 Jun 3 13:46 tty* 55904 Jun 4 11:46 useradd* 585656 Jun 4 11:47 vi* 6444 Jun 4 11:45 whoami*

2 root root 4096 Jun 4 12:16 ./ 9 root root 4096 Jun 5 10:05 ../ 1 root root 1, 9 Jun 3 13:43 urandom

4 9 1 1 1 1 1 1 1 1 1 2 1 1 1 1

root root root root root root root root root root root root root root root root

root root root root root root root root root root root root root root root root

4096 Jun 4 12:35 ./ 4096 Jun 5 10:05 ../ 0 Jun 4 11:46 .pwd.lock 653 Jun 3 13:46 group 242 Jun 4 11:33 host.conf 857 Jun 4 12:04 hosts 1050 Jun 4 11:29 ld.so.cache 304 Jun 4 11:28 ld.so.conf 235 Jun 4 11:27 ld.so.conf~ 88039 Jun 3 13:46 moduli 1342 Jun 4 11:34 nsswitch.conf 4096 Jun 4 12:02 pam.d/ 28 Jun 4 12:00 pam_smb.conf 2520 Jun 4 11:57 passwd 7228 Jun 3 13:48 profile 1339 Jun 4 11:33 protocols

Captulo G. Ambiente chroot para SSH


-rw-r--r-- 1 root root drwxr-xr-x 2 root root -rw-r----- 1 root root -rw------- 1 root root -rw-r----- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rw------- 1 root root -rw-r--r-- 1 root root -rw------- 1 root root -rw-r--r-- 1 root root -rw------- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root ./etc/pam.d: total 24 drwxr-xr-x 2 root root drwxr-xr-x 4 root root lrwxrwxrwx 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root ./etc/security: total 32 drwxr-xr-x 2 root root drwxr-xr-x 4 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root ./lib: total 8316 drwxr-xr-x 3 root root drwxr-xr-x 9 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root lrwxrwxrwx 1 root root -rwxr-xr-x 1 root root lrwxrwxrwx 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root lrwxrwxrwx 1 root root -rwxr-xr-x 1 root root lrwxrwxrwx 1 root root libpam_misc.so.0.72* -rwxr-xr-x 1 root root lrwxrwxrwx 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root -rwxr-xr-x 1 root root drwxr-xr-x 2 root root ./lib/security: total 668 drwxr-xr-x 2 root root drwxr-xr-x 3 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root 274 Jun 4 11:44 resolv.conf 4096 Jun 3 13:43 security/ 1178 Jun 4 11:51 shadow 80 Jun 4 11:45 shadow1178 Jun 4 11:48 shadow.old 161 Jun 3 13:46 shells 1144 Jun 3 13:46 ssh_config 668 Jun 3 13:46 ssh_host_dsa_key 602 Jun 3 13:46 ssh_host_dsa_key.pub 527 Jun 3 13:46 ssh_host_key 331 Jun 3 13:46 ssh_host_key.pub 883 Jun 3 13:46 ssh_host_rsa_key 222 Jun 3 13:46 ssh_host_rsa_key.pub 2471 Jun 4 12:15 sshd_config

142

4096 Jun 4 12:02 ./ 4096 Jun 4 12:35 ../ 4 Jun 4 12:02 other -> sshd 318 Jun 3 13:46 passwd 546 Jun 4 11:36 ssh 479 Jun 4 12:02 sshd 370 Jun 3 13:46 su

4096 Jun 3 13:43 ./ 4096 Jun 4 12:35 ../ 1971 Jun 3 13:46 access.conf 184 Jun 3 13:46 chroot.conf 2145 Jun 3 13:46 group.conf 1356 Jun 3 13:46 limits.conf 2858 Jun 3 13:46 pam_env.conf 2154 Jun 3 13:46 time.conf

4096 Jun 4 12:13 ./ 4096 Jun 5 10:05 ../ 1024 Jun 4 11:51 cracklib_dict.hwm 214324 Jun 4 11:51 cracklib_dict.pwd 11360 Jun 4 11:51 cracklib_dict.pwi 342427 Jun 3 13:46 ld-linux.so.2* 4061504 Jun 3 13:46 libc.so.6* 15 Jun 4 12:11 libcrack.so -> libcrack.so.2.7* 15 Jun 4 12:11 libcrack.so.2 -> libcrack.so.2.7* 33291 Jun 4 11:39 libcrack.so.2.7* 60988 Jun 3 13:46 libcrypt.so.1* 71846 Jun 3 13:46 libdl.so.2* 27762 Jun 3 13:46 libhistory.so.4.0* 17 Jun 4 12:12 libncurses.so.4 -> libncurses.so.4.2* 503903 Jun 3 13:46 libncurses.so.4.2* 17 Jun 4 12:12 libncurses.so.5 -> libncurses.so.5.0* 549429 Jun 3 13:46 libncurses.so.5.0* 369801 Jun 3 13:46 libnsl.so.1* 142563 Jun 4 11:49 libnss_compat.so.1* 215569 Jun 4 11:49 libnss_compat.so.2* 61648 Jun 4 11:34 libnss_dns.so.1* 63453 Jun 4 11:34 libnss_dns.so.2* 63782 Jun 4 11:34 libnss_dns6.so.2* 205715 Jun 3 13:46 libnss_files.so.1* 235932 Jun 3 13:49 libnss_files.so.2* 204383 Jun 4 11:33 libnss_nis.so.1* 254023 Jun 4 11:33 libnss_nis.so.2* 256465 Jun 4 11:33 libnss_nisplus.so.2* 14 Jun 4 12:12 libpam.so.0 -> libpam.so.0.72* 31449 Jun 3 13:46 libpam.so.0.72* 19 Jun 4 12:12 libpam_misc.so.0 -> 8125 Jun 3 13:46 libpam_misc.so.0.72* 15 Jun 4 12:12 libpamc.so.0 -> libpamc.so.0.72* 10499 Jun 3 13:46 libpamc.so.0.72* 176427 Jun 3 13:46 libreadline.so.4.0* 44729 Jun 3 13:46 libutil.so.1* 70254 Jun 3 13:46 libz.a* 13 Jun 4 12:13 libz.so -> libz.so.1.1.3* 13 Jun 4 12:13 libz.so.1 -> libz.so.1.1.3* 63312 Jun 3 13:46 libz.so.1.1.3* 4096 Jun 4 12:00 security/

4096 Jun 4 12:00 ./ 4096 Jun 4 12:13 ../ 10067 Jun 3 13:46 pam_access.so* 8300 Jun 3 13:46 pam_chroot.so* 14397 Jun 3 13:46 pam_cracklib.so* 5082 Jun 3 13:46 pam_deny.so* 13153 Jun 3 13:46 pam_env.so* 13371 Jun 3 13:46 pam_filter.so* 7957 Jun 3 13:46 pam_ftp.so* 12771 Jun 3 13:46 pam_group.so* 10174 Jun 3 13:46 pam_issue.so* 9774 Jun 3 13:46 pam_lastlog.so* 13591 Jun 3 13:46 pam_limits.so* 11268 Jun 3 13:46 pam_listfile.so*

Captulo G. Ambiente chroot para SSH


-rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x ./sbin: total 3132 drwxr-xr-x drwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x ./tmp: total 8 drwxr-xr-x drwxr-xr-x ./usr: total 8 drwxr-xr-x drwxr-xr-x lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root 11182 Jun 3 13:46 pam_mail.so* 5923 Jun 3 13:46 pam_nologin.so* 5460 Jun 3 13:46 pam_permit.so* 18226 Jun 3 13:46 pam_pwcheck.so* 12590 Jun 3 13:46 pam_rhosts_auth.so* 5551 Jun 3 13:46 pam_rootok.so* 7239 Jun 3 13:46 pam_securetty.so* 6551 Jun 3 13:46 pam_shells.so* 55925 Jun 4 12:00 pam_smb_auth.so* 12678 Jun 3 13:46 pam_stress.so* 11170 Jun 3 13:46 pam_tally.so* 11124 Jun 3 13:46 pam_time.so* 45703 Jun 3 13:46 pam_unix.so* 45703 Jun 3 13:46 pam_unix2.so* 45386 Jun 3 13:46 pam_unix_acct.so* 45386 Jun 3 13:46 pam_unix_auth.so* 45386 Jun 3 13:46 pam_unix_passwd.so* 45386 Jun 3 13:46 pam_unix_session.so* 9726 Jun 3 13:46 pam_userdb.so* 6424 Jun 3 13:46 pam_warn.so* 7460 Jun 3 13:46 pam_wheel.so* 4096 Jun 4 12:35 ./ 4096 Jun 5 10:05 ../ 178256 Jun 3 13:46 choptest* 184032 Jun 3 13:46 cqtest* 81096 Jun 3 13:46 dialtest* 1142128 Jun 4 11:28 ldconfig* 2868 Jun 3 13:46 lockname* 3340 Jun 3 13:46 ondelay* 376796 Jun 3 13:46 pagesend* 13950 Jun 3 13:46 probemodem* 9234 Jun 3 13:46 recvstats* 64480 Jun 3 13:46 sftp-server* 744412 Jun 3 13:46 sshd* 30750 Jun 4 11:46 su* 194632 Jun 3 13:46 tagtest* 69892 Jun 3 13:46 tsitest* 43792 Jun 3 13:46 typetest*

143

2 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

root root root root root root root root root root root root root root root root root

root root root root root root root root root root root root root root root root root

2 root root 4096 Jun 4 12:32 ./ 9 root root 4096 Jun 5 10:05 ../

2 9 1 1 1

root root root root root

root root root root root

4096 Jun 4 12:16 ./ 4096 Jun 5 10:05 ../ 7 Jun 4 12:14 bin -> ../bin// 7 Jun 4 11:33 lib -> ../lib// 8 Jun 4 12:13 sbin -> ../sbin//

Captulo G. Ambiente chroot para SSH

144

145

Apndice H

Ambiente chroot para Apache


H.1 Introduao

O utilitrio chroot muitas vezes usado para enjaular um daemon dentro de uma estrutura restrita. Voce pode us-lo para isolar um servio do outro, desta forma um problema de segurana em um pacote de software especco no interfere em todo o servidor. A utilizao do script makejail torna a congurao e atualizao da rvore enjaulada muito mais fcil. FIXME: Apache tambm pode ser enjaulado usando http://www.modsecurity.org que est disponvel em libapache-mod-security (para Apache 1.x) e libapache2-mod-security (para Apache 2.x).

H.1.1

Licena

This document is copyright 2002 Alexandre Ratti. It has been dual-licensed and released under the GPL version 2 (GNU Public License) the GNU-FDL 1.2 (GNU Free Documentation Licence) and is included in this manual with his explicit permission. (from the original document (http://www.gabuzomeu.net/alex/doc/apache/index-en.html))

H.2

Instalando o servidor

Este procedimento foi testado no Debian GNU/Linux 3.0 (Woody) com makejail 0.0.4-1 (em Debian/testing). Efetue o login como root e crie um novo diretrio para jaula:
$ mkdir -p /var/chroot/apache

Crie um novo usurio e novo grupo. O servidor Apache enjaulado ir executar com este usurio/grupo, que no utilizado para mais nada no sistema. Neste exemplo, ambos usurio e grupo so chamados de chrapach.
$ adduser --home /var/chroot/apache --shell /bin/false \ --no-create-home --system --group chrapach

FIXME: preciso um novo usurio? (Apache j executa como usurio apache) Instale o Apache normalmente no Debian: apt-get install apache Congure o Apache (por exemplo dena seus subdomnios e etc.). No arquivo de congurao /etc/apache /httpd.conf, altere as opes Group e User para chrapach. Reinicie o Apache e tenha certeza que o servidor est funcionando corretamente. Agora, pare o daemon do Apache. Instale o makejail (disponvel agora no Debian/testing). Voc tambm deve instalar wget e lynx, pois eles sero usados pelo makejail para testar o servidor enjaulado: apt-get install makejail wget lynx Copie o arquivo de congurao de exemplo para o Apache para o diretrio /etc/makejail:
# cp /usr/share/doc/makejail/examples/apache.py /etc/makejail/

Captulo H. Ambiente chroot para Apache

146

Edite o arquivo /etc/makejail/apache.py. Voc precisa alterar as opes chroot, users e groups. Para executar esta verso do makejail, voc tambm pode adicionar a opo packages. Veja a documentao do makejail (http: //www.floc.net/makejail/current/doc/). Veja o exemplo mostrado abaixo:
chroot="/var/chroot/apache" testCommandsInsideJail=["/usr/sbin/apachectl start"] processNames=["apache"] testCommandsOutsideJail=["wget -r --spider http://localhost/", "lynx --source https://localhost/"] preserve=["/var/www", "/var/log/apache", "/dev/log"] users=["chrapach"] groups=["chrapach"] packages=["apache", "apache-common"] userFiles=["/etc/password", "/etc/shadow"] groupFiles=["/etc/group", "/etc/gshadow"] forceCopy=["/etc/hosts", "/etc/mime.types"]

FIXME: algumas opes parecem no funcionar corretamente. Por exemplo, /etc/shadow e /etc/gshadow no so copiados, visto que /etc/password e /etc/group so copiados em vez de serem ltrados. Crie a rvore da jaula: makejail /etc/makejail/apache.py Se /etc/password e /etc/group forem copiados completamente, digite:
$ grep chrapach /etc/passwd > /var/chroot/apache/etc/passwd $ grep chrapach /etc/group > /var/chroot/apache/etc/group

para substitu-los com as cpias ltradas. Copie as pginas e os logs do site Web dentro da jaula. Estes arquivos no so copiados automaticamente (veja a opo preserve no arquivo de congurao do makejail).
# cp -Rp /var/www /var/chroot/apache/var # cp -Rp /var/log/apache/*.log /var/chroot/apache/var/log/apache

Edite o script de inicializao para que o daemon de logging do sistema tambm oua do socket /var /chroot/apache/dev/log. No arquivo /etc/init.d/sysklogd, substitua: SYSLOGD="" com SYSLOGD=" -a /var/chroot/apache/dev/log" e reinicie o daemon (/etc/init.d/sysklogd restart). Edite o script de inicializao do Apache (/etc/init.d/apache). Voc pode precisar fazer algumas alteraes no script de inicializao padro para que ele funcione apropriadamente com a rvore enjaulada. Como: congure uma nova varivel CHRDIR no incio do arquivo; edite as sees start, stop, reload, etc.; adicione uma linha para montar e desmontar o sistema de arquivo /proc que est dentro da jaula.
#! /bin/bash # # apache Start the apache HTTP server. # CHRDIR=/var/chroot/apache NAME=apache PATH=/bin:/usr/bin:/sbin:/usr/sbin DAEMON=/usr/sbin/apache SUEXEC=/usr/lib/apache/suexec PIDFILE=/var/run/$NAME.pid CONF=/etc/apache/httpd.conf APACHECTL=/usr/sbin/apachectl trap "" 1 export LANG=C export PATH test -f $DAEMON || exit 0 test -f $APACHECTL || exit 0 # ensure we dont leak environment vars into apachectl APACHECTL="env -i LANG=${LANG} PATH=${PATH} chroot $CHRDIR $APACHECTL" if egrep -q -i "^[[:space:]]*ServerType[[:space:]]+inet" $CONF then exit 0

Captulo H. Ambiente chroot para Apache


fi case "$1" in start) echo -n "Starting web server: $NAME" mount -t proc proc /var/chroot/apache/proc start-stop-daemon --start --pidfile $PIDFILE --exec $DAEMON \ --chroot $CHRDIR ;; stop) echo -n "Stopping web server: $NAME" start-stop-daemon --stop --pidfile "$CHRDIR/$PIDFILE" --oknodo umount /var/chroot/apache/proc ;; reload) echo -n "Reloading $NAME configuration" start-stop-daemon --stop --pidfile "$CHRDIR/$PIDFILE" \ --signal USR1 --startas $DAEMON --chroot $CHRDIR ;; reload-modules) echo -n "Reloading $NAME modules" start-stop-daemon --stop --pidfile "$CHRDIR/$PIDFILE" --oknodo \ --retry 30 start-stop-daemon --start --pidfile $PIDFILE \ --exec $DAEMON --chroot $CHRDIR ;; restart) $0 reload-modules exit $? ;; force-reload) $0 reload-modules exit $? ;; *) echo "Usage: /etc/init.d/$NAME {start|stop|reload|reload-modules|force-reload|restart}" exit 1 ;; esac if [ $? == 0 ]; then echo . exit 0 else echo failed exit 1 fi

147

FIXME: should the rst Apache process be run as another user than root (i.e. add chuid chrapach:chrapach)? Cons: chrapach will need write access to the logs, which is awkward. Substitua no /etc/logrotate.d/apache /var/chroot/apache/var/log/apache/*.log o /var/log/apache/*.log com

Inicialize o Apache (/etc/init.d/apache start) e verique o que est sendo reportado no log da jaula (/var /chroot/apache/var/log/apache/error.log). Se a sua congurao for mais complexa (exemplo: se tambm utiliza PHP e MySQL), alguns arquivos provavelmente estaro faltando. Se estes arquivos no so copiados automaticamente pelo makejail, voc pode list-los com a opo forceCopy (para copiar os arquivos diretamente) ou packages (para copiar pacotes completos e suas dependncias) no arquivo de congurao /etc/makejail/apache.py. Digite ps aux | grep apache para ter certeza que o Apache est rodando. Voc deve ver algo do tipo:
root 180 chrapach chrapach chrapach chrapach chrapach 0.0 189 190 191 192 193 1.1 0.0 0.0 0.0 0.0 0.0 2936 1436 ? S 1.1 2960 1456 1.1 2960 1456 1.1 2960 1456 1.1 2960 1456 1.1 2960 1456 04:03 0:00 /usr/sbin/apache ? S 04:03 0:00 /usr/sbin/apache ? S 04:03 0:00 /usr/sbin/apache ? S 04:03 0:00 /usr/sbin/apache ? S 04:03 0:00 /usr/sbin/apache ? S 04:03 0:00 /usr/sbin/apache

Certique-se que os processos do Apache esto sendo executados na jaula chroot procurando no sistema de arquivo /proc: ls -la /proc/process_number /root/. onde process_number um dos PID listados acima (por exemplo: segunda coluna; PID 189). As entradas para a rvore restrita devem ser listadas:
drwxr-sr-x drwxrwsr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x 10 root staff 240 Dec 4 root staff 72 Dec 2 2 root root 144 Dec 2 2 root root 120 Dec 3 5 root root 408 Dec 3 2 16:06 . 08:07 .. 16:05 bin 04:03 dev 04:03 etc

Captulo H. Ambiente chroot para Apache


drwxr-xr-x dr-xr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x 2 root root 800 Dec 2 16:06 lib 43 root root 0 Dec 3 05:03 proc 2 root root 48 Dec 2 16:06 sbin 6 root root 144 Dec 2 16:04 usr 7 root root 168 Dec 2 16:06 var

148

Para automatizar este teste, voc pode digitar:ls -la /proc/cat /var/chroot/apache/var/run/apache.pid/r FIXME: Add other tests that can be run to make sure the jail is closed? A razo pela qual eu gosto disso que a congurao da jaula no to complicada e o servidor pode ser atualizado em somente duas linhas:
apt-get update && apt-get install apache makejail /etc/makejail/apache.py

H.3

Veja tambm

Se voc est procurando por mais informaes voc pode considerar as referncias que foram utilizadas para fazer este tutorial: makejail homepage (http://www.floc.net/makejail/) , this program was written by Alain Tesio) Chrooting daemons and system processes HOWTO (http://www.nuclearelephant.com/papers/chroot. html) by Jonathan, Network Dweebs, 21/10/2002