Vous êtes sur la page 1sur 189

Manual de Segurana Debian

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 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 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.

Contedo
1 Introduo
1.1 Autores
1.2 Como obter o manual
1.3 Notas de organizao/Retorno
1.4 Conhecimento necessrio
1.5 Coisas que precisam ser escritas (FIXME/TODO)
1.6 Alteraes/Histrico
1.7 Crditos e Agradecimentos!
2 Antes de voc iniciar
2.1 Para que nalidade voc quer este sistema?
2.2 Esteja ciente dos problemas gerais de segurana
2.3 Como o Debian controla a segurana do sistema?
3 Antes e durante a instalao
3.1 Escolha uma senha para a BIOS
3.2 Particionando o sistema
3.3 No conecte-se a internet at estar pronto
3.4 Congure a senha do root
3.5 Ative os recursos senhas shadow e senhas MD5
3.6 Rode o mnimo de servios necessrios
3.7 Instale o mnimo de software necessrio
3.8 Leia as listas de segurana do Debian (security mailing lists)
4 Aps a instalao
4.1 Inscreva-se na lista "Anncios de Segurana do Debian"
4.2 Executar uma atualizao de segurana
4.3 Altere a BIOS (de novo)
4.4 Congurar a senha do LILO ou GRUB
4.5 Remover o aviso de root do kernel
4.6 Desativando a inicializao atravs de disquetes
4.7 Restringindo o acesso de login no console
4.8 Restringindo reinicializaes do sistema atravs da console
4.9 Montando parties do jeito certo
4.10 Fornecendo acesso seguro ao usurio
4.11 Usando os tcpwrappers

4.12 A importncia dos logs e alertas


4.13 Adicionando patches no kernel
4.14 Protegendo-se contra estouros de buer
4.15 Transferncia segura de arquivos
4.16 Limitaes e controle do sistema de arquivos
4.17 Tornando o acesso a rede mais seguro
4.18 Fazendo um snapshot do sistema
4.19 Outras recomendaes
5 Tornando os servios em execuo do seu sistema mais seguros
5.1 Tornando o ssh mais seguro
5.2 Tornando o Squid mais seguro
5.3 Tornando o FTP mais seguro
5.4 Tornando o acesso ao sistema X Window mais seguro
5.5 Tornando o servidor de impresso seguro (sobre lpd e lprng)
5.6 Tornando o servio de e-mails seguro
5.7 Tornando o BIND mais seguro
5.8 Tornando o Apache mais seguro
5.9 Tornando o nger mais seguro
5.10 Parania geral do chroot e suid
5.11 Parania geral sobre senhas em texto puro
5.12 Desativando o NIS
5.13 Tornando servios RPC mais seguros
5.14 Adicionando capacidades de rewall
6 Fortalecimento automtico de sistemas Debian
6.1 Harden
6.2 Bastille Linux
7 Infraestrutura do Debian Security
7.1 O time Debian Security
7.2 Debian Security Advisories
7.3 Infraestrutura da segurana Debian
7.4 Assinatura de pacote no Debian
8 Ferramentas de segurana no Debian
8.1 Ferramentas de vericao remota de vulnerabilidades
8.2 Ferramentas de varredura de rede
8.3 Auditoria Interna
8.4 Auditoria de cdigo fonte
8.5 Redes Privadas Virtuais (VPN)
8.6 Infra-estrutura de Chave Pblica (PKI)
8.7 Infra-estrutura SSL
8.8 Ferramentas Anti-vrus
8.9 Agentes GPG
9 Antes do comprometimento do sistema
9.1 Atualizando continuamente o sistema
9.2 Faa vericaes de integridade peridicas
9.3 Congure um sistema de Deteco de Intruso
9.4 Evitando os rootkits
9.5 Idias Geniais/Paranicas o que voc pode fazer
10 Depois do comprometimento do sistema (resposta a incidentes)
10.1 Comportamento comum
10.2 Efetuando backup do sistema
10.3 Contate seu CERT local

10.4 Anlise forense


11 Questes feitas com freqncia (FAQ)
11.1 Tornando o sistema operacional Debian mais seguro
11.2 Meu sistema vulnervel! (Voc tem certeza?)
11.3 Questes relacionadas ao time de segurana da Debian
A Passo-a-passo do processo de fortalecimento
B Checklist de congurao
C Congurando um IDS stand-alone
D Congurando uma ponte rewall
D.1 Uma ponte fornecendo capacidades de NAT e rewall
D.2 Uma ponte fornecendo capacidades de rewall
D.3 Regras bsicas do IPtables
E Exemplo de script para alterar a instalao padro do Bind.
F Atualizao de segurana protegida por um rewall
G Ambiente chroot para SSH
G.1 Congurando automaticamente o ambiente (a maneira fcil)
G.2 Aplicando patch no SSH para ativar a funcionalidade do chroot
G.3 Ambiente feito a mo (a maneira difcil)
H Ambiente chroot para Apache
H.1 Introduao
H.2 Instalando o servidor
H.3 Veja tambm

Manual de Segurana Debian


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. 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. Aps ter sido
publicado na Internet, Javier Fernndez-Sanguino Pea o incorporou no Projeto de
Documentao da Debian. 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

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. Sinta-se l livre para
checar o sistema de controle de verses atravs do endereo servidor CVS.
Voc poder tambm baixar uma verso texto 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 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, Seo 2.2
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, Seo 1.1
Expanda informaes de resposta a incidentes, talvez adicione algumas
idias vindas do guia de segurana da Red Hat captulo sobre resposta a
incidentes.
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
informaes relevantes ainda no cobertas aqui.

tem

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


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
diretamente relacionada a poltica.

de

senhas

que

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

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).
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
segurana)

'avanado'

limitando o acesso do

ssh

(policiamento

de

trfego

relacionado

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) e a partir do artigo LWN:
desenvolvimento do Kernel.
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 Alteraes/Histrico
1.6.1 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.
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 Jerey 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.

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 buer 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 Stachura's, 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)

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.

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 Holish's (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.

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 debian-security (em Maio de 2002).
Reorganizao da seo sobre parmetros de rede do kernel, com dados
fornecidos pela lista de discusso debian-security (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 debiansecurity 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 Seifried's (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.
Incluir patches fornecido por Alfred E. Heggestad corrigindo muitos dos
erros ainda presentes no documento.
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 Quinlan's 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 buer 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

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).

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
congurao padro da Debian 3.0 (pacote iptables).

com

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 Meeuwissen's para a lista de discusso debiansecurity.
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 Tabor's e
Samuli Suonpaa's 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

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).

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 oine) ambas
na seo (veja Esteja ciente dos problemas gerais de segurana, Seo
2.2) 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), Seo 9.4.1) 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.

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

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, Seo
1.6)
(Alexander) todas as pessoas que me encorajaram a escrever este
HOWTO (que mais adiante se tornou em um Manual).
A todo o projeto Debian.

Manual de segurana Debian


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

(tambm disponvel em

LinuxSecurity)

uma das

melhores referncias sobre Segurana Linux.


O Security Quick-Start HOWTO for Linux tambm um excelente ponto de
partida para usurios novos em Linux e em segurana.
O Linux Security Administrator's Guide (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

de Kurt Seifried.

Em Securing and Optimizing Linux: RedHat Edition 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.
Para administradores de rede, uma boa referncia para construir uma
rede segura o Securing your Domain HOWTO.
Se voc quer avaliar os programas que pretende usar (ou quer construir
seus prprios programas) voc deve ler o 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
HOWTO e o IPCHAINS HOWTO (para kernels anteriores ao 2.4).

Firewall

Finalmente, uma boa fonte de consulta para manter em mos o

Linux

Security ReferenceCard

Em qualquer caso, existe mais informao sobre os servios explanados aqui


(NFS, NIS, SMB...) em muitos HOWTOs de The Linux Documentation Project.
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 Hacker's 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
de Brian Hatch. McGraw-Hill Higher Education. ISBN
0072127732. Abril, 2001.
Hacking Linux Exposed

Outros livros (que podem ser relacionados a assuntos sobre UNIX e


segurana e no especicamente sobre Linux):
Garnkel, Simpson, and
Spaord, Gene; O'Reilly Associates; ISBN 0-56592-148-8; 1004pp; 1996.
Practical Unix and Internet Security (2nd Edition)

Firewalls and Internet Security Cheswick, William R. and Bellovin,


Steven M.; Addison-Wesley; 1994; ISBN 0-201-63357-4; 320pp.
Alguns Web sites teis sobre segurana para manter-se atualizado:
NIST Security Guidelines.

o servidor que hospeda o banco de dados e a lista do


Bugtraq e fornece informaes gerais, notcias e relatrios sobre
segurana.
Security Focus

Security.
Informaes gerais sobre segurana(ferramentas,
notcias,...). A pgina mais til main documentation .
Linux

Linux firewall and security site.

Informaes gerais sobre rewalls Linux e


ferramentas para control-los e administr-los.

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:
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, 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.
Publicando informaes de segurana especca para o Debian e
complementando outros documentos relacionados a segurana (veja Esteja
ciente dos problemas gerais de segurana, Seo 2.2), este documento ajuda
a produzir sistemas mais seguros.

Manual de Segurana Debian


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 Particionando o sistema


3.2.1 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. [2]

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.
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.

3.2.1.1 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 CD-ROMs). 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, Apndice F).

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, Seo 4.10.13).


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 do Eric Wolfram e Unix Password Security 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.txt.gz).

Shadow Password

(/usr/share/doc/HOWTO/en-txt

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
e incluso do md5 nela:

/etc/pam.d

pela substituio da linha de senha

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, Seo 4.10.1.
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


conhecidos, buracos de segurana em seu computador.

bvios

ou

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, Seo 3.6.1 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
no iniciem com a letra 'S'

/etc/rc${runlevel}.d/

de modo que eles

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
editar o script
imediatamente.

/etc/init.d/_service_name_

/etc/init.d/_service_name_.

para

parar

servio

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).

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. [3] voc pode estar mal informado e instalar mais
que o realmente necessrio para seu sistema.
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 [4]
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, Seo 8.1), 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. [5]
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
/usr/bin/replay

do pacote

do pacote

/usr/sbin/cleanup-info
/usr/sbin/dpkg-divert

bsdutils.

do pacote

do pacote

/usr/sbin/dpkg-statoverride
/usr/sbin/install-info

/usr/bin/grog

/usr/sbin/adduser

/usr/sbin/deluser

do pacote

/usr/sbin/dpkg-reconfigure

adduser.

do pacote

exim.

exim.

do pacote

/usr/sbin/syslog-facility
/usr/sbin/update-inetd

lilo.

lilo.

do pacote

/usr/sbin/syslogd-listfiles

exim.

exim.

do pacote

/usr/sbin/lilo_find_mbr

debconf.

do pacote

do pacote

/usr/sbin/liloconfig

debconf.

exim.

do pacote

/usr/sbin/keytab-lilo

debconf.

do pacote

/usr/sbin/exim-upgrade-to-r3
/usr/sbin/exiqsumm

adduser.

do pacote

do pacote

/usr/sbin/eximstats

dpkg.

sysvinit.

do pacote

do pacote

/usr/sbin/eximconfig

dpkg.

groff-base.

/usr/sbin/dpkg-preconfigure

/usr/sbin/exigrep

dpkg.

do pacote

do pacote

/usr/sbin/debconf-show

dpkg.

do pacote

do pacote

dpkg.

do pacote

/usr/sbin/update-alternatives
/usr/sbin/update-rc.d

util-linux.

lilo.

do pacote

do pacote

do pacote

sysklogd.

sysklogd.

netbase.

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-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, Seo 4.2
para detalhes de como fazer isto.)

Manual de Segurana Debian


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), Seo 4.3,Congurar a senha do
LILO ou GRUB, Seo 4.4,Remover o aviso de root do kernel, Seo 4.5, Desativando a inicializao
atravs de disquetes, Seo 4.6, Restringindo o acesso de login no console, Seo 4.7 e Restringindo
reinicializaes do sistema atravs da console, Seo 4.8.
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, Seo 4.2). Opcionalmente, voc
dever fazer um snapshot do seu sistema (veja Fazendo um snapshot do sistema, Seo 4.18).

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, Seo
7.1 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 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, Apndice F.
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 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


Se quiser usar o

apt

apt

ou

dselect

para atualizar:

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
para mais detalhes.

/etc/apt/sources.list.

Veja

apt(8)

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, Seo 3.1? 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
restricted como no exemplo abaixo.

/etc/lilo.conf

e adicionar uma linha

password

image=/boot/2.2.14-vmlinuz
label=Linux
read-only
password=mude-me
restricted

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


use a seguinte diretiva:

grub

que uma senha no formato md5 ser usada,

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 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.
Este comportamento pode ser alterado com:
lilo -b /dev/hda

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
[6] 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 [7] e vc/X (se
estiver usando dispositivos devfs), voc pode querer adicionar tambm ttySX [8] se estiver usando
um console serial para acesso local (onde X um inteiro, voc pode querer ter mltiplas instncias
[9] dependendo do nvel de consoles virtuais que tem ativado no /etc/inittab [10]). Para mais
informaes sobre dispositivos de terminais, leia o Text-Terminal-HOWTO
securetty

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.

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

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.
A parte a seguir mais um tipo de exemplo. Uma nota, no entanto: /var pode ser ajustado para noexec,
mas alguns programas [11] 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

4.9.1 Ajustando a opo noexec em

2
2

/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)

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.

4.10 Fornecendo acesso seguro ao usurio


4.10.1 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 (presente no site primrio de distribuio do 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

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. [12] 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
usurio.
session

required

/etc/pam.d/login

para ativar a restrio dos recursos do

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, Seo 4.10.2 ). 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

Depois crie o arquivo


auth
auth
auth
auth
account
account
account
password
password
password
session
session
session

pam_listfile.so item=user sense=allow file=/etc/sshusers-allowed onerr=fail

/etc/pam.d/other

required
required
required
required
required
required
required
required
required
required
required
required
required

e entre com as seguintes linhas:

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).

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 configurao do PAM.
Tornando o Linux mais seguro passo a passo
LASG

na seo Limitando a viso dos usurios.

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


MD5_CRYPT_ENAB

sg.

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.

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
administrativos (do base-passwd).

ftpusers

padro no Debian no inclua todos os usurios

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
quiser que suas alteraes em /etc/security/access.conf sejam mantidas.

/etc/pam.d/

se

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).[13]
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
Ambiente chroot para SSH, Apndice G.

ssh

descrito em

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.

4.10.9.1 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`"

4.10.9.2 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 [14] :

HISTFILE=~/.bash_history
HISTSIZE=10000
HISTFILESIZE=999999
# Don't 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. [15].
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.

4.10.9.3 Auditoria completa do usurio com ferramentas de contabilizao


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.

4.10.9.4 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 [16] e gravar sua sada para um
arquivo. Outro programa til o snoopy (veja tambm the project page) 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
torn-la mais permissiva ou mais restritiva.

umask

se desejarem,

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 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
adivinhando olhando nos binrios e bibliotecas instalados em seu sistema.

/usr/share/doc

ou

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.

4.10.12.1 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 [17] (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.

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, Seo 4.10.1 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
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 [18], 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,
[19] 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;\
*.=notice;*.=warn
/dev/tty8

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. 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.
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
SYSLOGD="-r"

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/
NSA Enhanced Linux (no pacote

selinux

tambm disponvel de

the developer's website)

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 [20] implementa Controle de Acesso Mandatrio,


oferece proteo contra estouro de buer, ACLs, network randomness (para tornar OS ngerprint
mais difcil) e muito mais caractersticas.
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.
Homepage: http://www.kerneli.org/
cryptoloop-source.

Este patch lhe permite usar as funes do pacote


sistemas de arquivos criptografados usando o dispositivo de loopback.

cryptoapi-core-source

para criar

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. Alguns destes
pacotes so:
patch do PaX

patch HAP
Patch Stealth

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.

4.14 Protegendo-se contra estouros de buer


O estouro de buer (buer overow) o nome de um comum ataque a softwares [21] 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 buer:
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, para substituir funes vulnerveis e introduzir a checagem
apropriada (para informaes sobre como instalar a libsafe leia isto).
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 buer overows,
usando, por exemplo, StackGuard (que usado pelo Immunix) ou o patch Stack Smashing Protector (SSP) para
o GCC (que usado pelo Adamantix)
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)
Note que at mesmo se o Debian fornecer um compilador que possua proteo contra estouro
pilha/buer, todos os pacotes precisariam ser recompilados para introduzir esta caracterstica. Isto ,
fato, o que o Adamantix faz (entre outras caractersticas). O feito desta nova caracterstica
estabilidade do software algo que dever ser determinado (alguns programas ou arquiteturas
processador podem ter problemas com seu uso).

de
de
na
de

Em qualquer caso, esteja alerta que at mesmo estas alternativas podem no prevenir buer overows,
pois existem formas de burl-los, como descrito na revista phrack's issue 58 ou no aviso CORE's Mltiplas
vulnerabilidades nas tecnologias de proteo de pilha.

4.14.1 Patches de kernel para proteo contra estouros de buer


Os patches do kernel relacionados a estouro de buer incluem o patch Openwall que oferece proteo
contra buer 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 (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, Seo 4.13.

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

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.
Considere test-la antes de us-la em um ambiente de produo e no dependa exclusivamente dela para
proteger seu sistema.

4.14.3 Testando problemas de estouro em programas


O uso de ferramentas para deteco de estouro de buer requer, em qualquer caso, conhecimento de
programao para corrigir (e recompilar) o cdigo. O Debian contm, por exemplo: bfbtester (um vericar
de estouro de buer 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, Seo 5.1.1. O acesso FTP
pode ser feito usando chroot, possivelmente mais fcil dependendo do daemon escolhido, como descrito
em Tornando o FTP mais seguro, Seo 5.3. 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),
Seo 8.5).

4.16 Limitaes e controle do sistema de arquivos


4.16.1 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
Caso negativo, voc ter que instal-lo.

quota

est instalado.

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.
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
fornecer a mesma funcionalidade e lshell est atualmente orfanado

pam_limits.so

pode

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,
Seo 9.4.2.1. 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
Defesa pr-ativa, Seo 9.4.2.1) a um dos scripts de inicializao;

CAP_SYS_MODULE,

como sugerido em

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!

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

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 [22].

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(5)). Tambm envie isto como um bug wishlist para o pacote.
Crie um script em

/etc/network/interface-secure

/etc/network/interfaces

desta forma:

auto eth0
iface eth0 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.255.xxx

sysctl.conf

(veja:

(o nome dado como um exemplo) e o execute do arquivo

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
#
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

Voc tambm poder criar um script em


criar os links apropriados em rc.d).

init.d

que executado na inicializao (usando o

update-rc.d

para

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, Seo 5.14.

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). [23]
Isto no um assunto relacionado a ARP e no uma violao da RFC (isto chamado mquina weak
end na RFC1122, 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. [24]
Patch do kernel [25]
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). [26]
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 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...).
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), Captulo 10). 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 somenteleitura, 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:
#!/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"

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 Outras recomendaes


4.19.1 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.

Manual de Segurana Debian


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


congurados adequadamente conforme sua utilizao.

individuais

podem

ser

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:
ListenAddress 192.168.0.1

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 ou o aviso Xforce.
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.

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, Seo 4.10.8.
Em Ambiente chroot para SSH, Apndice G 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 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
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

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
modlogan

- Analisador de arquivos de log para o Squid ou log do proxy Oops

- 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 User's Guide #Chapter9.

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


escapar do seu diretrio de usurio.

restart

e verique se agora pode

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 e o cygwin.
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. Este patch tambm foi reportado para o Debian, veja

Bug #145669.

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


/doc/HOWTO/en-txt/XWindow-User-HOWTO.txt.gz).

XWindow-User-HOWTO

(/usr/share

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:

Normalmente, todos os gerenciadores de tela esto congurados para no iniciar


servios do XDMCP por padro no Debian.

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 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
vises mais interessantes).

Amateur Fortress Building

fornecendo

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, Seo 3.6.1 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 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
o daemon smtp do inetd:

exim,

voc ter que remover

$ 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 [27] 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 [28] . 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.
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, Seo
5.7.1) 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, Seo
5.7.2) e fazer ele rodar dentro um chroot (see Executando o servidor de nomes
em uma jaula chroot, Seo 5.7.3)

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: allow-transfer,
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:
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; } ;
};

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 buer) 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

acl internal {
127.0.0.1/32;
10.0.0.0/8;
aa.bb.cc.dd;
};

// localhost
// interna
// IP da eth0

acl friendly {
ee.ff.gg.hh;
aa.bb.cc.dd;
127.0.0.1/32;
10.0.0.0/8;
};

//
//
//
//

pode ser o seguinte:

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" {
type master;
file "/etc/bind/named.mysite";
allow-query { any; };
allow-transfer { friendly; };
};

Por favor (novamente) verique o Sistema de Tratamento de Falhas a respeito do


bind, especicamente Bug #94760 (relacionado com ACLs em transferncia de zonas). 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., Apndice E.
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


comea com

/etc/init.d/bind

com seu editor favorito e altere a linha que

start-stop-daemon --start

para[29]
start-stop-daemon --start --quiet --exec /usr/sbin/named -- -g named -u named

Altere as permisses dos arquivo que so usados pelo Bind, incluindo


/rndc.key:
-rw-r-----

1 root

named

77 Jan

/etc/bind

4 01:02 rndc.key

e onde o bind cria seu arquivo de pid, usando, por exemplo,


/var/run:

/var/run/named

ao invs de

$ 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
comentando-a:
reload)
/usr/sbin/ndc reload

reload

E altere para:
reload)
$0 stop
sleep 1
$0 start

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 e Bug #132582: Default install is potentially insecure, Bug #53550, Bug
#128120, e Bug #128120. 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, Seo 5.10) 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 Bind's 9 (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 ChrootBIND-HOWTO (relacionado com o Bind 9) e Chroot-BIND8-HOWTO (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/

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 [30] 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, Seo 5.10.
FIXME,

merge

info

from

http://www.cryptio.net/~ferlatte/config/

http://people.debian.org/~pzn/howto/chroot-bind.sh.txt,

(Debian-specic),

/web/20021216104548/http://www.psionic.com/papers/whitep01.html

http://web.archive.org

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


esperar por requisies na interface loopback.

restart

e voc ver que ele somente

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 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, Apndice H.

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
/http.conf comentando a linha:

/etc/apache

LoadModule userdir_module /usr/lib/apache/1.3/mod_userdir.so

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.
ingerd - 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.
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 [31] 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, Seo
5.7).
No entanto, o Debian no oferece muitos programas que podem ajuda-lo a congurar

um ambiente

chroot.

Veja Criando automaticamente ambientes chroots, Seo 5.10.1.

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 Venema's
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 (/usr/share/doc/HOWTO/en-txt/LDAPHOWTO.txt.gz).
Mais detalhes sobre a segurana em NIS podem ser encontradas em
(/usr/share/doc/HOWTO/en-txt/NIS-HOWTO.txt.gz).

NIS-HOWTO

FIXME (jfs): Adicionar detalhes de como congurar isto no Debian

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 (/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, Seo 3.6.1, 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, Seo 5.14).
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,
Seo 4.11. 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 weak-end de mquinas, Seo 4.17.5.

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 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....) [32]
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, Apndice D 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 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, Seo 2.2 para
mais referncias (gerais).

5.14.3.1 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, Seo 5.14.3.2).
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 oine em /usr/share/doc/iptables/html/. O arquivo de congurao /etc/default
/iptables tambm fornece vrias informaes a respeito deste pacote.

5.14.3.2 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:
orientado a usurios nais, inclui um assistente para denir regras de
rewall rapidamente.
firestarter

knetfilter

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
fwbuilder

que oferece suporte a IPsec com um suporte bem limitado para controle
de trfego tambm como uma denio de regras de rewall.
shorewall

mason,

que prope regras de rewall baseados no trfego de rede que seu sistema
"enxerga".
(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)
bastille

guarddog,

um pacote de congurao de
(alternativa/competidor ao pacote knetlter)

rewall

baseada

no

KDE

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 no Debian (veja Bug #88347. Os pacotes do
Debian so fornecidos, mas eles dependem da libglib1.3 que no est disponvel na
distribuio Debian.

Manual de Segurana Debian


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 buer), 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

outros

pacotes

de

documentao relacionados a segurana.


harden-environment:

ajuda

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:
# 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)

Isto dever deixar o administrador mais tranqilo, reconsiderando suas aes


que sero tomadas.

6.2 Bastille Linux


O Bastille Linux 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 a passo sobre a segurana requerida pelo seu

sistema (usando

InteractiveBastille(8))

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))

Manual de Segurana Debian


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 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

o qual s lido pelos membros do security team .

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).
security@debian.org

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, Seo 4.2). Ao mesmo tempo um Debian Security
Advisory (DSA) publicado no web site e enviado para a listas de email
incluindo debian-security-announce e bugtraq.
Outras perguntas frequentes do Debian Security Team podems er encontradas
em Questes relacionadas ao time de segurana da Debian, Seo 11.3.

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.
descrio da correo.
DSAs so publicados em Debian's mainserver frontpage e em Debian security pages.
Normalmente isto no feito at a reconstruo diria do website, ento eles
podem no estar presentes imediatamente, o canal preferido a debiansecurity-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
[33] 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 incluindo
todas as remomendaes publicadas desde 1998. Esta tabela fornecida em
complemento a reference map available at CVE.
Voc notar que esta tabela fornece referncias aos bancos de dados como
Bugtraq, CERT/CC Advisories and US-CERT Vulnerability Notes Database 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!, Seo
11.2.1).

7.2.2 Compatibilidade CVE


As recomendaes de segurana, Debian Security Advisories eram
CVE-Compatible[34] em fevereiro de 2004.

declared

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.
O projeto Common Vulnerabilities and Exposures (CVE) 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.
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 especco (como aviso CAN-2002-0001) ou para nomes parciais (como
todos os avisos de 2002 para CAN-2002). 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 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, 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 corrigi-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.

7.3.1 Guia dos desenvolvedores de atualizaes de


seguranaa
Este email foi enviado por Wichert Akkerman para Debian-devel-announce mailing
list 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
Developer's Reference, esta seo ser removida em futuro prximo.

Debian

7.3.1.1 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?, Seo 11.3.7) ou distribuies antigas (veja Eu uso uma verso
antiga da Debian, ela suportada pelo time de segurana?, Seo 11.3.8).

7.3.1.2 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.

7.3.1.3 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.
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).

7.3.1.4 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.

7.3.1.5 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, Seo 7.2.

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.
[35].
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, Seo 7.4.4).
Isto melhor descrito em

Strong Distribution HOWTO

por V. Alex Brennen.

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 no apt 0.6 par mais informaes
veja Pacotes experimentais apt, Seo 7.4.4. 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 modified 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
maneira:
# apt-get update
# apt-check-sigs
(...resultados...)
# apt-get dist-upgrade

apt-check-sigs,

deve ser usado da seguinte

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.

#!/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.

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 you're 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}"
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"
gpgv --status-fd 3 Release.gpg Release 3>&1 >/dev/null 2>&1 | sed -n "s/^\[GNUPG:\] //p" | (okay=0; err=""; while read gpgcode rest; do
if [ "$gpgcode" = "GOODSIG" ]; then
if [ "$err" != "" ]; then

echo "

* Signed by ${err# } key: ${rest#* }"

echo "
okay=1

o Signed by: ${rest#* }"

else

fi
err=""
elif [ "$gpgcode" = "BADSIG" ]; then
echo " * BAD SIGNATURE BY: ${rest#* }"
err=""
elif [ "$gpgcode" = "ERRSIG" ]; then
echo " * COULDN'T 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}/binary-${arch}/Release")
Y=$(checkit "`echo "${baseurl}/dists/${dist}/${comp}/binary-${arch}/Packages" | sed 's,//*,_,g'`" "${comp}/binary-${arch}/Packages")
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/Release")
Y=$(checkit "`echo "${baseurl}/dists/${dist}/${comp}/source/Sources" | sed 's,//*,_,g'`" "${comp}/source/Sources")
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) | sed -n 's/^> //p' >UNVALIDATED
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
echo
sed 's/^/
/' < UNVALIDATED
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

Voc pode precisar aplicar o seguinte patch para sid uma vez que
adiciona um '-' aps o sum quando a entrada stdin:

md5sum

@@ -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


O esquema adicional de assinatura permite que os pacotes sejam vericados
quando eles no so referenciados por um arquivo existente de pacotes, e
tambm pacotes de terceiros que no existiam em uso no Debian, mas no
ser o esquema padro.
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
fornece esta funcionalidade to logo debsig-verify seja instalado.
NOTA: Atualmente

/etc/dpkg/dpkg.cfg

patch

que

trabalha com "no-debsig" como padro.

NOTA 2: Signatures from developers are currently stripped when they enter
o 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


experimental ao seu sources.list e rodar

precisa

adicionar

distribuio

# apt-get -t experimental install apt

Estas alteraes so baseadas no patch para


qual fornece esta implementao.

apt

(disponvel em

Bug #203741)

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

Manual de Segurana Debian


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
As ferramentas fornecidas pelo Debian para realizar vericao remota de
vulnerabilidade so: [36]
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). 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).
um varredor de vericao de vulnerabilidades Web, que inclui
tticas anti-IDS (a maioria no so mais anti-IDS). 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.
Whisker

(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.
Bass

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

(ITP fragrouter) para ver se est includo.

FIXME adicionar informaes baseadas em Debian Linux Laptop for Road Warriors
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

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 (cobrindo IPSec e PPTP),
HOWTO (cobrindo PPP sobre SSH), e Cipe mini-HOWTO, e PPP and SSH mini-HOWTO.
Tambm vale a pena vericar o
um pacote Debian disponvel.

Yavipin,

VPN

mas este programa ainda no possue

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
criptograa 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/criptograa compatvel com a Microsoft, qualquer verso
2.3.X do fonte do PPP ser suciente.
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.

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 ou os exemplos de CA do OpenSSL. Para
mais informaes, leia o livro Open PKI.

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,

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. [37]
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)
mailscanner

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.
libfile-scan-perl

Amavis Nova Gerao,

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,

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-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
potencialmente perigosos.

de

emails

que

pode

remover

anexos

um ltro de spam para o Qmail que foi construdo com


suporte para o Clamav.
blackhole-qmail

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

oav-update

).

(veja

Bug

#150698

(ITP

oav-scannerdaemon

Bug

#150695

(ITP

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, TrendMicro Interscan, ou RAV.
Para mais apontadores veja em Linux antivirus software mini-FAQ. 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.

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.
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


interface para o gnupg.

mailcrypt

, uma interface

emacs

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: [38]

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 debiankeyring, que fornece todas as chaves pblicas dos desenvolvedores Debian. Os
chaveiros do gnupg so instalados em /usr/share/keyrings/.
Para mais informaes:
GnuPG FAQ.
GnuPG Handbook.
GnuPG Mini Howto (English).
comp.security.pgp FAQ.
Keysigning Party HOWTO.

Manual de Segurana Debian


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 (apresentando
no IEEE Symposium on Security and Privacy em 2001) explica. Atualizaes
esto descritas em Executar uma atualizao de segurana, Seo 4.2.

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, Seo 4.2 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 (para cvs) e 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, Seo 7.4.2, 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.

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 DSA's (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
bem-vindo. 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, Seo 4.2), 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 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.

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?, Seo 11.3.7).
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, Seo 9.1.2. 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

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). [39]
Congure o cron para que o debconf no faa nenhuma pergunta durante
as atualizaes, funcionando de forma no-interativa. [40]
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, Seo 4.2.


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. [41]

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, Seo 4.18) 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 oine [42] . 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, Seo 4.16.3),
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.
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

CERT's Intrusion Detection Checklist

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 snier 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 buer, 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.
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, voc pode obter um backport (e assinatura) do Snort
fornecido pelo mantenedor do pacote em http://people.debian.org/~ssmeenk/snortstable-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,
Seo 4.12.1.
Em adio, pacotes que monitoram a integridade do sistema de arquivo (veja
Vericando a integridade do sistema de arquivos, Seo 4.16.3) 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.

9.4 Evitando os rootkits


9.4.1 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.

9.4.2.1 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.
- Uma interface amigvel para remover as funcionalidades (controle
de acesso) do kernel, fazendo o sistema mais seguro. Por exemplo,
lcap

executando lcap CAP_SYS_MODULE [43] ir remove a funcionalidade de


carregar mdulos (mesmo para o super-usurio). [44] Para mais
informaes sobre as funcionalidades do kernel voc deve vericar a
seo Kernel development 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.

9.4.2.2 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 verica por sinais de diversos rootkits
conhecidos no sistema alvo, mas isto no deve ser um teste nal.
Uma outra ferramenta auxiliar o KSTAT (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.

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.

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, Seo 4.12),
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
Vericadores de integridade (veja Vericando a integridade do sistema
de arquivos, Seo 4.16.3) 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 (das sries "Know your Enemy"), ou de
David Raikow Building your own honeypot. O Projeto Honeynet tambm fornece
informaes valiosas relacionadas construo de honeypots e auditoria dos
ataques feitos nelas.

Manual de Segurana Debian


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. [45]
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 CDROM[46]. Voc tambm pode achar o CDROM FIRE 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

ou

CERT's Steps for Recovering from a UNIX or NT System Compromise.

Algumas perguntas freqentes de como lidar com um sistema Debian


GNU/Linux esto disponveis em Meu sistema vulnervel! (Voc tem
certeza?), Seo 11.2.

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 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 o-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 [47] 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, e para publicar notas sobre incidentes e at mesmo alertas de segurana.
Para informaes mais detalhadas de como (e porqu) relatar um incidente
leia o CERT's Incident Reporting Guidelines.
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 e a

lista de discusso sobre intrusos.

10.4 Anlise forense


Se voc deseja recolher mais informaes do ataque, o pacote tct (O
Coroner's 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 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.
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 Honeynet's reverse
challenge or David Dittirch's papers.

Manual de Segurana Debian


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 Tornando o sistema operacional Debian mais


seguro
11.1.1 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. [48] Tambm, tenha em
mente que algumas das vulnerabilidades reportadas via bugs com relao a
Debian, se aplicam somente ao repositrio unstable (rea de desenvolvimento).

11.1.1.1 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 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. 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, Captulo 8.
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). A
instalao da Debian no limitada como o OpenBSD (no existem daemons
ativos por padro), mas tem um bom compromisso. [49]
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. 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. Note que alguns dos testes CC esto sendo integrados no Linux Testing Project
que est disponvel na Debian atravs do pacote ltp.

11.1.4 Existe algum programa de fortalecimento para a Debian?


Sim. Bastille Linux, 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?

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. [50] 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.

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,
Seo 4.10.12.1.
A lista de discusso Debian security

thread

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 buer 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


11.1.12.1 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 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.
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
grupo sys.

/var/spool/cups

tem como donos o

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 MTA's.
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.
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.
sta: 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.

11.1.12.2 Quais so as diferenas entre os grupos adm e sta?


Componentes do grupo "adm" so geralmente administradores e neste grupo as
permisses os permitem ler arquivos de log sem utilizar su. O grupo "sta" 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
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


11.1.14.1 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, Seo 3.6.1 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.

11.1.14.2 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, Seo 3.6.1) ou remover o pacote usando o
pacote equivs.

11.1.14.3 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, Seo 5.13.
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)

11.1.14.4 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). 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).

11.1.14.5 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

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.

11.1.14.6 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, Seo 3.6.2) ou instalando pacotes individuais e tome as medidas
apropriadas (i.e, congure o inetd, remova o pacote, evite execut-lo na
inicializao).

11.1.14.7 Removendo servios do


mquina mais segura?

/etc/services

ajudar a tornar minha

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, Seo 3.6.1.

11.1.15 Assuntos comuns relacionados a segurana


11.1.15.1 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.

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, Seo 4.10.1) 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


modicando o
auth

required

/etc/pam.d/

para seu servio e

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 Meu sistema vulnervel! (Voc tem


certeza?)
11.2.1 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, Seo
7.2) para afastar a possibilidade de falsos positivos, se a ferramenta que estiver
usando inclui referncias do CVE.

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), Captulo 10). 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 1 12:35:25 linux kernel: possible SYN flooding on port X. Sending cookies.

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

Verique se existe um nmero alto de conexes ao servidor usando o


exemplo:

netstat,

por

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, Seo 4.17.2. 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.

11.2.6 Encontrei sees de root estranhas em meus logs: Eu fui


comprometido?
Se ver estes tipos de entradas em seu arquivo
May 2 11:55:02
May 2 11:55:02
May 2 12:00:01
(UID=0)
May 2 12:00:02

/var/log/auth.log:

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.
Leia este documento, especialmente a seo Depois do comprometimento do
sistema (resposta a incidentes), Captulo 10
Pea assistncia. Voc dever usar a lista de discusso debian-security para
perguntar sobre como recuperar/corrigir seu sistema.
Notique seu

CERT

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, Seo 9.3),
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. 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.

11.2.11 Programas especcos


11.2.11.1

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.

11.2.11.2 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. Este texto inclui as informaes
de 19 de Novembro e oferece algumas outras questes comuns perguntadas na
lista de discusso debian-security.

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).
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 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.
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 abaixo.

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

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.

11.3.11 Como posso contactar o time de segurana?


Informaes de segurana podem ser enviadas para security@debian.org, que lida
por todos os desenvolvedores da Debian. Se tiver informaes sensveis, por favor

use 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 ).

11.3.12 Qual a diferena entre security@debian.org e debiansecurity@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 e existem arquivos que podem ser pesquisados disponveis aqui.

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 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 ou o Projeto de Segurana e
Auditoria do Linux 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 debiansecurity 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:
Os DSAs no so enviados at que:
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, Seo 7.2) publicados no website de segurana, 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) 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.
Manual de Segurana Debian v.3.1
Javier Fernndez-Sanguino Pea

jfs@debian.org

- Autores, Seo 1.1

Manual de Segurana Debian


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, Apndice B.
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, Seo 4.2.
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, Seo 3.6.1).
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.
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 (chroot'ing) 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 (chroot'ing) 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, Apndice G.
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
logsentry.

snort

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
assessment usando um varredor de rede.

uma

nova

vulnerability

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.

Manual de Segurana Debian


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 de
Kurt Seifried e CERT's Unix Security Checklist.
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
parties ext2 como /tmp.

nosuid,noexec,nodev

em

/etc/fstab

na

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
no usado se voc j estiver usando o PAM)

/etc/limits

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


(considere instalar o sudo)

su(1)

ou

sudo(1).

Usar o PAM para reforar barreiras adicionais aos logins?


Outras questes de segurana local
Modicaes no kernel (veja Congurando caractersticas de rede
do kernel, Seo 4.17.1)
Patches no Kernel (veja Adicionando patches no kernel, Seo 4.13)
Tighten up log le permissions (/var/log/{last,fail}log, Apache logs)
Certique-se

que

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, Seo 4.16.3). Instale debsums
Efetuar o log de tudo em uma impressora local?
Gravar suas conguraes em um CD inicializvel e boof o?
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.


para /etc/hosts.deny no texto.

hosts_access(5));

note o truque

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.
Use cotas de disco.
Mantenha-se informado sobre questes relacionadas segurana
Inscreva-se em listas de discusso sobre segurana
Congure

para atualizao de segurana -- adicione no arquivo


uma
entrada
(ou
entradas)
para
http://security.debian.org/debian-security
apt

/etc/apt/sources.list

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, Seo 4.2.

Manual de Segurana Debian


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.
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
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

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

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

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

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

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
pump
sed
setserial
shellutils
slang1
snort
ssh
sysklogd
syslinux
sysvinit
tar
tasksel
tcpd
telnet
textutils
update

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
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

ii
ii

util-linux
zlib1g

2.10f-5.1
1.1.3-15

Manual de Segurana Debian


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
xconfig. Na seo Networking options, ative as seguintes opes:

menuconfig

ou

make

[*] 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
It's 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


# 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

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
It's 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

Some funny rules but not in


Limit ICMP
iptables -A FORWARD -p icmp
Match string, a good simple
iptables -I FORWARD -j DROP

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"

# 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
# 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

Manual de Segurana Debian


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 I'm 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; start;\"; noprint =
1; } /\\\\$/ { if ( noprint != 0 ) { noprint = noprint + 1;} } /^.*$/ { if
( noprint != 0 ) { noprint = noprint - 1; } else { print \$0; } } '"
[ `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"
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 it's 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

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 doesn't catch daemons running deleted instances of named,
# as in an upgrade. Fortunately, --pidfile is only going to hit
# things from the pidfile.
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

Manual de Segurana Debian


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 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

destination

Chain FORWARD (policy ACCEPT)


target
prot opt source

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


target
prot opt
ACCEPT
all -ACCEPT
icmp -LOG
all --

DROP)
source
0.0.0.0/0
0.0.0.0/0
anywhere

destination
0.0.0.0/0
0.0.0.0/0
anywhere

state RELATED,ESTABLISHED
LOG level warning

Chain FORWARD (policy DROP)


target
prot opt source

destination

Chain OUTPUT (policy DROP)


target
prot opt source
ACCEPT
80
-- anywhere
LOG
all -- anywhere

destination
security.debian.org
anywhere
LOG level warning

Manual de Segurana Debian


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
comando:

makejail,

use o

# 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

|
|-|
|-|
|-|
|-|
|-|
|-|
|-|
|-|
|-|
|-|
|-|
|-|
|-|
|-|
|-|
|-|
|-|
|-|
|-|
|-|
|-|
|-|
`-|-- dev
|
|-|
|-|
|-|
|-(...)
|
|-|
|-(...)
|
`-|-- etc
|
|-|
|
|
|
|
|-|
|-|
|-|
|-|
|-|
|-|
|-|
|-|
|-|
|-|
|
|
|
|
|-|
|-|
|-|
|
|
|
|
|
|
|
|
|
|
|
|
|-|
|-|
`-|
|
|

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
zsh -> /etc/alternatives/zsh
zsh4
null
ptmx
pts
ptya0
tty
tty0
urandom
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
|-- 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

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 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

Isto ir restringir ambos o acesso remoto ao shell, como tambm a cpia


remota atravs do canal ssh.
Tenha certeza de ter todos os
caminho que est enjaulado
pertencer ao root para evitar
chroot'ed). Um exemplo possvel

binrios e bibliotecas necessrias dentro do


para os usurios. Estes arquivos devem
tampering pelo usurio (como sair da jaula
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

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

./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

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

root
guest
root
root
root
root
root
root
root

4096
4096
92511
1170812
20900
9436
248132
71332
34144

Mar
Mar
Mar
Mar
Mar
Mar
Mar
Mar
Mar

18
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

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

29420
105498
25596
7760
24328

Mar
Mar
Mar
Mar
Mar

15
15
15
15
15

12:57
12:51
12:51
12:59
12:57

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

./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

root
root
root
root
root

./usr:
total 16
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x

4
8
2
2

root
guest
root
root

root
guest
root
root

./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

2
4
1
1
1
1
1
1

root
root
root
root
root
root
root
root

./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

4096
4096
4096
4096

Mar
Mar
Mar
Mar

15
15
15
15

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

.
..
bin
lib

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

root
root
root

4096 Mar 15 15:37 .


4096 Mar 15 13:00 ..
771088 Mar 15 13:01

root
root

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: [51]
.:
total 36
drwxr-xr-x
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

9 root root 4096 Jun 5 10:05 ./


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/

2
9
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

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*

-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--

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

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

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

-rw-r--r-- 1 root
drwxr-xr-x 2 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
drwxr-xr-x 2 root
-rw-r----- 1 root
-rw------- 1 root
-rw-r----- 1 root
-rw-r--r-- 1 root
-rw-r--r-- 1 root
-rw------- 1 root
-rw-r--r-- 1 root
-rw------- 1 root
-rw-r--r-- 1 root
-rw------- 1 root
-rw-r--r-- 1 root
-rw-r--r-- 1 root
./etc/pam.d:
total 24
drwxr-xr-x 2 root
drwxr-xr-x 4 root
lrwxrwxrwx 1 root
-rw-r--r-- 1 root
-rw-r--r-- 1 root
-rw-r--r-- 1 root
-rw-r--r-- 1 root
./etc/security:
total 32
drwxr-xr-x 2 root
drwxr-xr-x 4 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
-rw-r--r-- 1 root
./lib:
total 8316
drwxr-xr-x 3 root
drwxr-xr-x 9 root
-rw-r--r-- 1 root
-rw-r--r-- 1 root
-rw-r--r-- 1 root
-rwxr-xr-x 1 root
-rwxr-xr-x 1 root
lrwxrwxrwx 1 root
lrwxrwxrwx 1 root
-rwxr-xr-x 1 root
-rwxr-xr-x 1 root
-rwxr-xr-x 1 root
-rwxr-xr-x 1 root
lrwxrwxrwx 1 root
-rwxr-xr-x 1 root
lrwxrwxrwx 1 root
-rwxr-xr-x 1 root
-rwxr-xr-x 1 root
-rwxr-xr-x 1 root
-rwxr-xr-x 1 root
-rwxr-xr-x 1 root
-rwxr-xr-x 1 root
-rwxr-xr-x 1 root

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

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
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

root
root
root
root
root
root
root

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

root
root
root
root
root
root
root
root

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

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 ../
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*

-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
-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
-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
./sbin:
total 3132
drwxr-xr-x 2 root root
drwxr-xr-x 9 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

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*
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*

-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

root
root
root
root
root
root
root
root
root
root
root

root
root
root
root
root
root
root
root
root
root
root

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*

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//

Manual de Segurana Debian


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)

H.2 Instalando o servidor


Este procedimento foi testado no Debian GNU/Linux 3.0 (Woody) com
Debian/testing).
Efetue o login como

root

makejail

0.0.4-1 (em

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/

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. 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:
Se

/etc/password

makejail /etc/makejail/apache.py

/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
est dentro da jaula.
#! /bin/bash

/proc

que

#
# 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 don't 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
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
else
echo
exit
fi

.
0
failed
1

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/log/apache/*.log

com

/var/chroot/apache/var/log

/apache/*.log

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 |
algo do tipo:

grep apache

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

para ter certeza que o Apache est rodando. Voc deve ver
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
drwxr-xr-x
dr-xr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x

10 root staff 240 Dec 2 16:06 .


4 root staff 72 Dec 2 08:07 ..
2 root root 144 Dec 2 16:05 bin
2 root root 120 Dec 3 04:03 dev
5 root root 408 Dec 3 04:03 etc
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

Para automatizar este teste, voc pode digitar:ls

-la

/proc/`cat

/var/chroot/apache

/var/run/apache.pid`/root/.

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

, this program was written by Alain Tesio)

Chrooting daemons and system processes HOWTO

by Jonathan, Network Dweebs, 21/10/2002

Manual de Segurana Debian


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 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 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.
Manual de Segurana Debian v.3.1
Javier Fernndez-Sanguino Pea

jfs@debian.org

- Autores, Seo 1.1

Edio completa do original publicado por Javier Fernndez-Sanguino Pea:


https://www.debian.org/doc/manuals/securing-debian-howto/index.pt-br.html
com adaptao e ajuste de texto para verso porttil efetuada por J.F.Salles,
Garliene Paiva e Ruan Valente em Julho de 2015.