Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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 tam-
bm cobre algumas das tarefas mais comuns para configurar um ambiente de rede seguro
usando a Debian GNU/Linux, oferece informaes adicionais sobre as ferramentas de segu-
rana disponveis e fala sobre como a segurana fornecida na Debian pelo time de segurana
.
Nota de Copyright
Sumrio
1 Introduo 1
1.1 Autores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Como obter o manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Notas de organizao/Retorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Conhecimento necessrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5 Coisas que precisam ser escritas (FIXME/TODO) . . . . . . . . . . . . . . . . . . . 3
1.6 Alteraes/Histrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6.1 Verso 3.1 (Janeiro de 2005) . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6.2 Verso 3.0 (Dezembro de 2004) . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6.3 Verso 2.99 (Maro de 2004) . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6.4 Verso 2.98 (Dezembro de 2003) . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6.5 Verso 2.97 (Setembro de 2003) . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6.6 Verso 2.96 (Agosto de 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6.7 Verso 2.95 (Junho de 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.6.8 Verso 2.94 (Abril de 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.6.9 Verso 2.93 (Maro de 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.6.10 Verso 2.92 (Fevereiro de 2003) . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.6.11 Verso 2.91 (Janeiro/Fevereiro de 2003) . . . . . . . . . . . . . . . . . . . . 10
1.6.12 Verso 2.9 (Dezembro de 2002) . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.6.13 Verso 2.8 (Novembro de 2002) . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.6.14 Verso 2.7 (Outubro de 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.6.15 Verso 2.6 (Setembro de 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.6.16 Verso 2.5 (Setembro de 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . 12
SUMRIO ii
4 Aps a instalao 39
4.1 Inscreva-se na lista de discusso Anncios de Segurana do Debian . . . . . . 39
4.2 Executar uma atualizao de segurana . . . . . . . . . . . . . . . . . . . . . . . . 40
4.3 Altere a BIOS (de novo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.4 Configurar a senha do LILO ou GRUB . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.5 Remover o aviso de root do kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.6 Desativando a inicializao atravs de disquetes . . . . . . . . . . . . . . . . . . . 43
4.7 Restringindo o acesso de login no console . . . . . . . . . . . . . . . . . . . . . . . 44
4.8 Restringindo reinicializaes do sistema atravs da console . . . . . . . . . . . . . 44
4.9 Montando parties do jeito certo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.9.1 Ajustando a opo noexec em /tmp . . . . . . . . . . . . . . . . . . . . . . 46
4.9.2 Definindo o /usr como somente-leitura . . . . . . . . . . . . . . . . . . . . 46
4.10 Fornecendo acesso seguro ao usurio . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.10.1 Autenticao do Usurio: PAM . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.10.2 Limitando o uso de recursos: o arquivo limits.conf . . . . . . . . . . . 50
4.10.3 Aes de login do usurio: edite o /etc/login.defs . . . . . . . . . . . 50
4.10.4 Restringindo o ftp: editando o /etc/ftpusers . . . . . . . . . . . . . . . 51
SUMRIO iv
4.10.5 Usando su . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.10.6 Usando o sudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.10.7 Desativao de acesso administrativo remoto . . . . . . . . . . . . . . . . . 52
4.10.8 Restringindo acessos de usurios . . . . . . . . . . . . . . . . . . . . . . . . 52
4.10.9 Auditoria do usurio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.10.10 Revisando perfis de usurios . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.10.11 Ajustando a umask dos usurios . . . . . . . . . . . . . . . . . . . . . . . . 55
4.10.12 Limitando o que os usurios podem ver/acessar . . . . . . . . . . . . . . . 56
4.10.13 Gerando senhas de usurios . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.10.14 Verificando senhas de usurios . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.10.15 Logout de usurios ociosos . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.11 Usando os tcpwrappers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.12 A importncia dos logs e alertas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.12.1 Usando e personalizando o logcheck . . . . . . . . . . . . . . . . . . . . 61
4.12.2 Configurando para onde os alertas so enviados . . . . . . . . . . . . . . . 62
4.12.3 Usando um servidor de logs . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.12.4 Permisses dos arquivos de log . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.13 Adicionando patches no kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.14 Protegendo-se contra estouros de buffer . . . . . . . . . . . . . . . . . . . . . . . . 66
4.14.1 Patches de kernel para proteo contra estouros de buffer . . . . . . . . . 67
4.14.2 Proteo da Libsafe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.14.3 Testando problemas de estouro em programas . . . . . . . . . . . . . . . . 68
4.15 Transferncia segura de arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.16 Limitaes e controle do sistema de arquivos . . . . . . . . . . . . . . . . . . . . . 68
4.16.1 Usando quotas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.16.2 Os atributos especficos do sistema de arquivos ext2 (chattr/lsattr) . . . . 69
4.16.3 Verificando a integridade do sistema de arquivos . . . . . . . . . . . . . . 71
4.16.4 Configurando verificao de setuid . . . . . . . . . . . . . . . . . . . . . . 72
4.17 Tornando o acesso a rede mais seguro . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.17.1 Configurando caractersticas de rede do kernel . . . . . . . . . . . . . . . . 72
4.17.2 Configurando Syncookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
SUMRIO v
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 se-
gurana 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 pre-
ocupao 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 pro-
teger 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 fisicamente protegida caso o desktop seja configurado 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 exem-
plo); aqui, voc encontrar materiais que so apropriados para os procedimentos e ferramentas
da Debian.
1.1 Autores
Este manual foi iniciado como um HOWTO por Alexander Reelsen (mailto:ar@rhwd.
de). Aps ter sido publicado na Internet, Javier Fernndez-Sanguino Pea (mailto:jfs@
debian.org) o incorporou no Projeto de Documentao da Debian (http://www.debian.
org/doc). Um nmero de pessoas tem contribudo com este manual (todos os contribuidores
esto listados no changelog) mas os seguintes merecem especial meno pois fizeram con-
tribuies significantes, sees completas, captulos ou apndices):
Stefano Canepa
Era Eriksson
Carlo Perassi
Alexandre Ratti
Jaime Robles
Yotam Rubin
Frederic Schutz
Oohara Yuuma
Davor Ocelic
Voc poder baixar ou ver a verso mais nova do Manual Como Tornar a Debian mais Se-
gura no Projeto de Documentao da Debian (http://www.debian.org/doc/manuals/
securing-debian-howto/). Sinta-se l livre para checar o sistema de controle de ver-
ses atravs do endereo servidor CVS (http://cvs.debian.org/ddp/manuals.sgml/
securing-howto/?cvsroot=debian-doc).
Agora a parte oficial. 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 encon-
trar uma seo marcada como FIXME, que significa 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.
A instalao do sistema Debian GNU/Linux no muito difcil e voc dever ser capaz de
instala-lo. Se voc j tem algum conhecimento sobre o Linux ou outros tipo de Unix e voc
est um pouco familiar com a segurana bsica, ser fcil entender este manual, como este
documento no explicar cada detalhe pequeno de caractersticas (caso contrrio voc ter
um livro ao invs de um manual). Se no estiver familiar, no entanto, voc poder dar uma
olhada em Esteja ciente dos problemas gerais de segurana on page 25 para ver onde achar
informaes atualizadas.
Esta seo descreve todas as coisas que precisam ser corrigidas neste manual. Alguns par-
grafos 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 ele-
mento desta lista (ou anotaes inline), contacte o autor principal (Autores on page 1
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).
Verifique se http://www.giac.org/practical/gsec/Chris_Koutras_GSEC.
pdf tem informaes relevantes ainda no cobertas aqui.
kernel-patch-freeswan, kernel-patch-int
Detalhes sobre como desligar servios desnecessrios (como o inetd), parte do pro-
cedimento de fortalecimento mas pode ser um pouco mais abrangente.
suidmanager/dpkg-statoverrides.
lpr e lprng.
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?).
usando o dpkg-statoverride.
ferramentas de steganografia.
Adicionar o artigo do Colin sober como configurar um ambiente chroot para um sistema
sid completo (http://people.debian.org/~walters/chroot.html)
Descrever situaes sobre o (orphaned) e OpenSwan. A seo sobre VPN precisa ser
reescrita.
1.6 Alteraes/Histrico
Adicionado esclarecimentos a /usr somente leitura com o patch de Joost van Baal
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.
Adicionada uma nota de rodap a respeito de ataques usando hardlinks caso as parties
no fossem configuradas adequadamente.
Adicionada passos faltantes para executar o bind como named como descrito por Jeffrey
Prosa.
Adicionada uma seo sobre como contactar o CERT para manipulao de incidentes
(#after-compromise)
Unio da seo 9.3 (patches teis do kernel) na seo 4.13 (Adicionando patches no
kernel), e adicionado algum contedo.
Adicionada uma nota sobre a instalao da Debian (que sugere que o usurio execute
uma atualizao de segurana aps a instalao).
Pequenas alteraes na seo sobre o bind adicionando uma referncia sobre a documen-
tao on-line do BIND9 e referncias apropriadas na primeira rea (oi Pedro!)
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.
Aplicados patches de Carlo Perassi, as correes incluem: nova quebra de linhas, cor-
rees de URL, e corrigidos alguns FIXMEs.
Alteraes feitas por Javier Fernndez-Sanguino Pea (me). Nota: Eu ainda tenho vrias cor-
rees 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
s/host.deny/hosts.deny/ (1 local)
Aplicado o patch de Larry Holishs (um pouco grande, corrige diversos FIXMEs)
Captulo 1. Introduo 12
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 Arhu-
man Assad.
Novo item da FAQ com relao ao dmesg e logind e console pelo kernel.
Novo item da FAQ com relao a falso positivo de ferramentas de checagem de vulnera-
bilidades.
Adicionadas nova sees ao captulo que contm informaes sobre assinatura de pa-
cotes e reorganizando-as como um novo captulo sobre Infraestrutura de Segurana na De-
bian.
Novo tem da FAQ com uma comparao da Debian com outras distribuies Linux.
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.
Novas sees sobre como fazer atualizaes automticas em sistemas Debian assim tam-
bm como dicas de uso de testing ou unstable relacionadas com atualizaes de segu-
rana.
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.
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 sis-
tema 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 flood attacked?) e tambm adi-
cionado um novo tem da FAQ.
Nova seo sobre com verificar senhas de usuarios e que pacotes instalar para fazer isto.
Nova seo sobre a criptografia 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 especfico, esta informao foi escrita baseada em uma lista
de discusso da bugtraq com a thread: Linux kernel 2.4 weak end host (anteriormente
discutida na debian-security como problema no) (iniciada em 9 de Maio de 2002 por Felix
von Leitner).
Adicionada uma referncia ao problem na libpam-cracklib que ainda pode estar aberto. . .
(precisa ser verificado)
Captulo 1. Introduo 14
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 adi-
cionado mais contedo.
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 De-
bian. A idia veio aps ler documentos do Intersects relacionado com o fortalecimento
do Linux.
Adicionados mais alguns materiais com relao a informaes sobre como fazer um fire-
wall em um sistema local, levado por um comentrio feito por Huber Chan na lista de
discusso.
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 con-
tribuem esto listadas aqui (e no l).
Adicionadas algumas notas a mais sobre a seo chattr e uma nova seo aps a insta-
lao 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.
Adicionado uma referncia as regras do NIST sobre como tornar o DNS mais seguro,
fornecidas por Daniel Quinlan.
Adicionadas mais informaes sobre como tornar o bind mais seguro incluindo alter-
aes 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.
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).
Adicionada uma FAQ relacionada com o syslogd MARK heartbeat de uma questo re-
spondida por Noah Meyerhans e Alain Tesio em Dezembro de 2001.
Includas informaes sobre proteo contra buffer overflow assim como mais infor-
maes sobre patches de kernel.
Adicionadas mais informaes sobre como preparar um pacote esttico para o bind em
chroot (no testado).
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
Adicionado um patch enviado por Jesus Climent com relao ao acesso de usurios vli-
dos ao sistema no proftpd quando se est configurando um servidor annimo.
Pequena alterao nos esquemas de partio para o caso especial de servidores de men-
sagens.
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.
Adicionada uma FAQ: logs do su devido a execuo do cron como usurio root.
ACID est agora disponvel na Debian (a partir do pacote acidlab) obrigado a Oohara
Yuuma por notificar isto.
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 :(
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).
Captulo 1. Introduo 18
Adicionados mais alguns passos sobre a recuperao de senhas para cobrir os casos onde
o administrador tem a opo paranoid-mode=on ativada.
Reorganizao da seo Aps a instalao assim ela ser quebradas em diversos assuntos
e ser facilmente lida.
Escrever informaes sobre como configurar firewalls com a configurao padro da De-
bian 3.0 (pacote iptables).
Apndice de como configurar 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 configurado na Debian e como ele pode ser config-
urado para realizar HIDS.
Nova seo sobre VPN com alguns ponteiros e pacotes disponveis na Debian (precisa
contedo sobre como configurar VPNs e assuntos especficos da Debian), baseada na
postagem de Jaroslaw Tabors e Samuli Suonpaas post na lista debian-security.
Pequena nota com relao a alguns programas que podem construir automaticamente
jaulas chroot.
Novo tem da FAQ relacionado a ident, baseado em uma discusso na lista de discusso
debian-security (em Fevereiro de 2002, iniciada por Johannes Weiss).
Novo tem da FAQ com relao ao inetd baseada em uma discusso da lista de dis-
cusso debian-security (em Fevereiro de 2002).
Captulo 1. Introduo 19
Adicionado um novo tem da FAQ com relao ao tempo para se corrigir vulnerabili-
dades de segurana.
Iniciada a escrita de uma seo com relao a firewall na Debian GNU/Linux (pode ser
um pouco alterada).
Adicionadas notas com relao a segurana no Squid enviada por Philipe Gaspar.
Reescrita a parte sobre como os usurios podem ajudar a Debian em assuntos relaciona-
dos a segurana (item da FAQ).
Adicionada uma pequena seo sobre como a Debian trabalha com a segurana
Adicionada a lista padro de usurios/grupos fornecidas por Joey Hess a lista de dis-
cusso debian-security.
Incluir manualmente os patches e Era pois nem todos foram includos na seo anterior.
Pequenas mudanas em tags para manter a remoo de tags tt e sua substituio por tags
prgn/package.
Adicionado ponteiro para documentos como publicado na DDP (dever substituir o orig-
inal em um futuro prximo).
Iniciada uma mini-FAQ (dever ser expandida) com algumas questes recuperadas de
minha caixa de mensagens.
Vrias correes gramaticais feitas por James Treacy, novo pargrafo sobre o XDM
Lanamento inicial
Captulo 1. Introduo 24
Robert van der Meulen forneceu pargrafos relacionados a quota e muitas boas idias.
Era Eriksson suavizou idiomas em vrios lugares e contribuiu com o apndice com a lista
de checagens.
Yotam Rubin contribuiu com correes para muitos erros assim como com informaes
relacionadas a verses do bind e senhas md5.
Todas as pessoas que fizeram sugestes para melhorias que (eventualmente) sero inclu-
das aqui (veja Alteraes/Histrico on page 6)
(Alexander) todas as pessoas que me encorajaram a escrever este HOWTO (que mais
adiante se tornou em um Manual).
Captulo 2
Decidir quais servios voc necessita e limitar o sistema a eles. Isto inclui desati-
var/desinstalar servios desnecessrios e adicionar filtros como firewall 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.
IntersectAlliance publicou alguns documentos que podem ser usados como refern-
cia para reforar a segurana em servidores linux (e seus servios), os documentos es-
to disponveis em their site (http://www.intersectalliance.com/projects/
index.html).
Para administradores de rede, uma boa referncia para construir uma rede segura
o Securing your Domain HOWTO (http://www.linuxsecurity.com/docs/LDP/
Securing-Domain-HOWTO/).
Se voc quer avaliar os programas que pretende usar (ou quer construir seus prprios
programas) voc deve ler o Secure Programs HOWTO (http://www.tldp.org/
HOWTO/Secure-Programs-HOWTO/) (uma cpia est disponvel em http://www.
dwheeler.com/secure-programs/, ela inclui slides e comentrios do autor, David
Wheeler)
Se voc est considerando instalar um firewall, voc deve ler o Firewall HOWTO (http:
//www.tldp.org/HOWTO/Firewall-HOWTO.html) e o IPCHAINS HOWTO (http:
//www.tldp.org/HOWTO/IPCHAINS-HOWTO.html) (para kernels anteriores ao 2.4).
Finalmente, uma boa fonte de consulta para manter em mos o Linux Security Refer-
enceCard (http://www.linuxsecurity.com/docs/QuickRefCard.pdf)
Em qualquer caso, existe mais informao sobre os servios explanados aqui (NFS, NIS,
SMB. . . ) em muitos HOWTOs de The Linux Documentation Project (http://www.tldp.
org/). Alguns destes documentos falam em segurana relacionada a um determinado servio,
ento certifique-se de procurar com cuidado.
1
Por um tempo ele foi substitudo pelo Linux Security Knowledge Base. Esta documentao era fornecida
no Debian atravs do pacote lskb. Agora ela voltou ao pacote Lasg novamente.
Captulo 2. Antes de voc iniciar 27
Maximum Linux Security : A Hackers Guide to Protecting Your Linux Server and Net-
work. Annimo. Paperback - 829 pginas. Sams Publishing. ISBN: 0672313413. Julho
1999.
Linux Security By John S. Flowers. New Riders; ISBN: 0735700354. Maro 1999
Outros livros (que podem ser relacionados a assuntos sobre UNIX e segurana e no especifi-
camente sobre Linux):
Firewalls and Internet Security Cheswick, William R. and Bellovin, Steven M.; Addison-
Wesley; 1994; ISBN 0-201-63357-4; 320pp.
Agora que voc tem uma viso geral da segurana no Debian GNU/Linux observe mais algu-
mas consideraes para construir um sistema seguro:
O Debian est sempre tentando aumentar sua segurana atravs de novos projetos como
o mecanismo automtico de verificao de assinatura dos pacotes.
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 De-
bian, porm, tenta balancear segurana e facilidade de administrao - os programas no
so desativados quando voc os instala (como o caso nas distribuies da famlia BSD).
Em qualquer caso, implementaes de segurana tipo programas setuid so parte da
poltica Debian Policy (http://www.debian.org/doc/debian-policy/).
Captulo 3
Antes de instalar qualquer sistema operacional em seu computador, configure 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 (floppy),
cdrom e outros dispositivos. Se voc no fizer 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
eficaz 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 pro-
gramas 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.
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
Captulo 3. Antes e durante a instalao 30
sempre existe algum espao reservado para o usurio root que o usurio normal no
pode preencher), e tambm previne ataques tipo hardlink. 1
Qualquer partio com dados variveis, isto , /var (especialmente /var/log) tambm
deve estar numa partio separada. Em um sistema Debian voc deve criar /var um
pouco maior que em outros sistemas porque o download de pacotes (cache do apt)
armazenado em /var/cache/apt/archives.
Qualquer partio onde voc queira instalar software que no padro da distribuio
deve estar separada. De acordo com a Hierarquia Padro do Sistema de Arquivos, estas
so /opt ou /usr/local. Se estas parties esto separadas, elas no sero apagadas
se voc (tiver que) reinstalar o Debian.
Do ponto de vista da segurana, sensato tentar mover os dados estticos para sua
prpria partio e ento montar esta partio somente para leitura. Melhor ainda ser
colocar os dados numa mdia somenta para leitura. Veja abaixo para mais detalhes.
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 progra-
mas 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.
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 ines-
peradamente ou o sistema congelar voc correr menos risco de perda de dados durante
a reinicializao do sistema.
1
Um bom exemplo deste tipo de ataque usando /tmp detalhado em The mysteriously persistently exploitable
program (contest) (http://www.hackinglinuxexposed.com/articles/20031111.html) e The myste-
riously persistently exploitable program explained (http://www.hackinglinuxexposed.com/articles/
20031214.html) (Observe que o incidente um relato Debian) Ele basicamente um ataque no qual um usurio
local usa uma aplicao setuid vulnervel atravs de um hard link para ela analisando qualque atualizao (ou
remoo) do prprio binrio feita pelo administrador do sistema. Dpkg foi recentemente corrigido para prevenir
isto (veja 225692 (http://bugs.debian.org/225692)) mas outros binrios setuid (no controlados pelo geren-
ciador de pacotes) correm o risco se as parties no estiverem configuradas corretamente.
Captulo 3. Antes e durante a instalao 31
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 com-
patvel 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 person-
alizar 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 instal-
ados. 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
file-data journalling enquanto outros usam apenas meta-data journalling, veja http://lwn.
net/2001/0802/a/ext3-modes.php3.
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 in-
stalar e ativar servios imediatamente, se o sistema estiver conectado a internet e os servios
no estiverem adequadamente configurados, 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 firewall 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 configurar mirrors de pacotes usando outro sistema conectado com ferramentas
especficas 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
configurar regras de firewall para limitar o acesso ao sistema enquanto estiver atualizando
(veja Atualizao de segurana protegida por um firewall on page 205).
Captulo 3. Antes e durante a instalao 32
Configurar uma boa senha para o root o requerimento mais bsico para ter um sistema se-
guro. Veja passwd(1) para mais dicas de como criar boas senhas. Voc tambm pode usar
um programa gerador de senhas para fazer isto para voc (veja Gerando senhas de usurios
on page 57).
Muita informao sobre a escolha de boas senhas pode ser encontrada na internet; dois locais
que fornecem um sumrio decente e racional so How to: Pick a Safe Password (http://
wolfram.org/writing/howto/password.html) do Eric Wolfram e Unix Password Secu-
rity (http://www.ja.net/CERT/Belgers/UNIX-password-security.html) do Wal-
ter Belgers.
No final 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.
Alm disso, voc perguntado durante a insatalao se quer usar senhas MD5 .. Isto geral-
mente 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 dif-
cil 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 ar-
quivo /etc/shadow pelo prefixo $1$.
Isto modifica todos arquivos sob /etc/pam.d pela substituio da linha de senha e incluso
do md5 nela:
Se max no est configurado para mais de 8 a alterao no ser til. Para mais informaes
leia Autenticao do Usurio: PAM on page 47.
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 insta-
lado pode introduzir novos, talvez no bvios ou conhecidos, buracos de segurana em seu
computador.
Como voc j deve saber, quando voc instala um servio o padro ele ser ativado. Em
uma instalao Debian padro, sem nenhum servio a mais instalado, o footprint de servios
rodando baixo mesmo quando falamos de servios oferecidos para a rede. o footprint no
Debian 2.1 no to firme quanto no Debian 2.2 (alguns servios do inetd foram habilitados
por padro) e no Debian 2.2 o rpc portmapper habilitado logo aps a installation. Rpc
instalado por padro porque ele necessrio para muitos servios, NFS por exemplo. Ele pode
ser facilmente removido, porm, veja Desabilitando daemons de servio on this page como
desabilit-lo.
Quando voc instala um novo servio de rede (daemon) em seu sistema Debian GNU/Linux
ele pode ser habilitado de duas maneiras: atravs do superdaemon inetd (uma linha ser
adicionada ao /etc/inetd.conf) ou atravs de um programa que serve de interface. Estes
programas so controlados pelos arquivos /etc/init.d, que so chamados no momento da
inicializao atravs do mecanismo SysV (ou outro alternativo) pelo uso de symlinks em /etc
/rc?.d/* (para mais informaes de como isto feito leia /usr/share/doc/sysvinit
/README.runlevels.gz).
Se voc quer manter algum servio, mas que ser usado raramente, use os comandos update,
isto , update-inetd e update-rc.d para remov-los do processo de inicializao.
update-rc.d stop XX 2 3 4 5 .
Se voc est usando file-rc, toda informao sobre servios manipulada por um arquivo
de configurao 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 alter-
aes 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 modificando o script /etc/init.d/daemon (adicionando exit 0 no incio ou comen-
tando a instruo start-stop-daemon). Como os arquivos do init.d so arquivos de
configurao, eles no sero reescritos por ocasio da upgrade.
Infelizmente, diferente de outros sistemas operacionanais tipo UNIX, os servios no De-
bian no podem ser desabilitados pela modificao dos arquivos em /etc/default
/_servicename_.
FIXME: Adicione mais informao sobre manipulao de daemons usando file-rc
Voc deve checar se realmente precisa do daemon inetd. Inetd sempre foi uma maneira de
compensar deficincias do kernel, mas estas deficincias foram corrigidas. Existe possibili-
dade 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 configurvel 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 configurao e reiniciar o daemon (neste caso o servio telnet desabilitado):
Captulo 3. Antes e durante a instalao 35
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.
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 soft-
ware, a instalao do sistema base utiliza poucos pacotes. 2 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 lingua-
gens 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.
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. Re-
mover software desnecessrio no impedir o problema mas dificultar a ao de um pos-
svel atacante. Ento, se voc deixar disponveis ferramentas em um sistema de produo que
poderiam ser usadas remotamente para um ataque (veja Ferramentas de verificao remota
de vulnerabilidades on page 131), pode acontecer de um invasor us-las.
2
Por exemplo, no Debian Woody ela gira em torno de 40Mbs, tente isto para ver quanto os pacotes necessrios
ocupam no sistema:
3
Muitas invases so feitas mais para acessar os recursos e executar atividades ilcitas (ataques denial of service,
spam, rogue ftp servers, poluio dns. . . ) do que para obter dados confidenciais dos sistemas comprometidos.
Captulo 3. Antes e durante a instalao 36
Remover o perl pode no ser fcil em um sistema Debian pois ele muito usado. O pa-
cote perl-base tem prioridade classificada como requerida (Priority: required), o que j diz
tudo. Voc pode remov-lo mas no ser capaz de rodar qualquer aplicao perl no sistema;
voc ainda ter que enganar o sistema de gerenciamento de pacotes para ele pensar que o
perl-base ainda est instalado. 4
Quais utilitrios usam perl? Voc mesmo pode verificar:
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 ca-
paza 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 util-
itrios escritas em shell.
Nunca demais dar uma olhada na lista debian-security-announce, onde avisos e cor-
rees 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 as-
suntos relacionados a segurana Debian.
Para receber importantes atualizaes de segurana e alertas envie email para debian-security-
announce-request@lists.debian.org (mailto:debian-security-announce-request@
lists.debian.org) com a palavra subscribe como assunto. Voc tambm pode inscrever-
se nesta lista no endereo http://www.debian.org/MailingLists/subscribe
Esta lista tem pouco volume de mensagens e assinando ela voc ser imediatamente alertado
sobre atualizaes de segurana para a distribuio Debian. Isto lhe permitir rapidamente
baixar os novos pacotes com atualizaes de segurana, as quais so muito importantes na
manuteno de um sistema seguro. (Veja Executar uma atualizao de segurana on page 40
para detalhes de como fazer isto.)
Captulo 3. Antes e durante a instalao 38
39
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 configurao, mas para preveno de acesso fsico voc dever ler Altere a BIOS (de novo)
on page 41,Configurar a senha do LILO ou GRUB on page 41,Remover o aviso de root do
kernel on page 42, Desativando a inicializao atravs de disquetes on page 43, Restringindo
o acesso de login no console on page 44 e Restringindo reinicializaes do sistema atravs da
console on page 44.
Antes de se conectar a qualquer rede, especificamente se for uma rede pblica, no mnimo
execute uma atualizao de segurana (veja Executar uma atualizao de segurana on the
next page). Opcionalmente, voc dever fazer um snapshot do seu sistema (veja Fazendo um
snapshot do sistema on page 77).
Para receber informaes sobre atualizaes e alertas de segurana (DSAs) disponveis e DSAs
voc dever se inscrever na lista de discusso debian-security-announce. Veja O time Debian
Security on page 113 para mais informaes sobre como o time de segurana do Debian fun-
ciona. Para mais informaes sobre como se inscrever nas listas de discusses do Debian, leia
http://lists.debian.org.
Os DSAs so assinados pelo time de segurana do Debian e as assinaturas podem ser pegas
atravs do endereo http://security.debian.org.
Voc dever considerar, tambm, em se inscrever na lista de discusso debian-security (http:
//lists.debian.org/debian-security) para discusses gerais de problemas de segu-
rana 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 recomen-
daes.
Captulo 4. Aps a instalao 40
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 ver-
ificar 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 sis-
tema (voc no est conectado na Internet ainda? est?) antes de se conectar a rede voc dever
considerar (se no estiver protegido por um firewall, por exemplo) adicionar regras de firewall
assim seu sistema somente poder se conectar a security.debian.org e ento executar a atual-
izao. Um modelo de configurao mostrado em Atualizao de segurana protegida por
um firewall on page 205.
Nota:Desde o Debian woody 3.0, aps a instalao voc ter a oportunidade de adicionar at-
ualizaes 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.
Assim que instalar isto, voc poder usar ou o apt ou dselect para atualizar:
# apt-get update
# apt-get upgrade
Se quiser usar o dselect ento primeiro execute o [U]pdate, ento [I]nstall e depois,
finalmente, [C]onfigure pata instalar/atualizar os pacotes.
Captulo 4. Aps a instalao 41
Se quiser, voc tambm poder adicionar linhas deb-src ao seu arquivo /etc/apt
/sources.list. Veja apt(8) para mais detalhes.
Nota: Voc no precisa adicionar a seguinte linha:
isto porque security.debian.org hospedado em uma localizao fora dos Estados Unidos e
no possui um arquivo separado non-US.
Se lembra Escolha uma senha para a BIOS on page 29? Bem, ento voc deve agora, uma vez
que no precisa inicializar atravs de uma mdia removvel, alterar a configurao 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 configurao e recuper-la usando, por exemplo, um
CD-ROM.
Outro mtodo mais conveniente, mas menos seguro, alterar a configurao 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.
Qualquer um pode facilmente obter uma linha de comando de root e alterar sua senha en-
trando 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 definir 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 configurao /etc/lilo.conf e adicionar
uma linha password e restricted como no exemplo abaixo.
image=/boot/2.2.14-vmlinuz
label=Linux
read-only
password=mude-me
restricted
Captulo 4. Aps a instalao 42
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 per-
mite 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 desig-
nada). Isto evita que usurios editem os itens de inicializao. A opo timeout 3 especifica
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 for-
mato criptografado. O utilitrio grub-md5-crypt gera um hash de senha que compatvel
com o algoritmo de senha encriptada pelo grub (md5). Para especificar no grub que uma
senha no formato md5 ser usada, use a seguinte diretiva:
timeout 3
password --md5 $1$bw0ez$tljnxxKLfMzmnDVaQWgjP0
O parmetro md5 foi adicionado para instruir o grub a fazer o processo de autenticao md5.
A senha fornecida uma verso encriptada md5 do mude-me. O uso do mtodo de senhas
md5 preferido em contrapartida da seleo de sua verso texto plano. Mais informaes
sobre senhas do grub podem ser encontradas no pacote grub-doc.
Os kernels 2.4 do Linux oferecem um mtodo de acessar um shell de root durante a inicial-
izao que ser logo mostrado aps de carregar o sistema de arquivos cramfs. Uma men-
sagem 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:
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):
Note que o Debian 3.0 woody permite aos usurios instalarem o kernel 2.4 (selecionando tipos
de kernels), no entanto o kernel padro o 2.2 (salvo para algumas arquitetura no qual o kernel
2.2 ainda no foi portado). Se voc acha que isto um bug, veja Bug 145244 (http://bugs.
debian.org/145244) antes de reporta-lo.
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:
Ento aperte F e o sistema inicializar pelo disquete. Isto pode ser usado para se obter
acesso root ao sistema.
lilo -b /dev/hda
Agora o LILO foi colocado na MBR. Isto tambm pode ser feito adicionando-se
boot=/dev/hda ao arquivo de configurao 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 preocu-
pam, podem salvar pessoas que tiverem problemas com sua instalao por quaisquer razes.
FIXME verifique 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.
Captulo 4. Aps a instalao 44
Quando utilizar PAM, outras alteraes no processo de login, que podem incluir restries a
usurios e grupos em determinadas horas, podem ser configurados 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:
Caso seu sistema tenha um teclado conectado, qualquer um (sim, qualquer um) poder reini-
cializar 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 modificao neste arquivo). O padro no Debian inclui esta
opo:
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 verificar se qualquer um dos usurios listados
esto conectados ao sistema. Se nenhum deles estiver, o shutdown no reiniciar o sistema.
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 configurao do
fstab para a partio /tmp:
Observe as diferenas na seo opes. A opo nosuid ignore os bits setuid e setgid com-
pletamente, enquanto a noexec probe a execuo de qualquer programa naquele ponto de
montagem, e a nodev ignora dispositivos. Isto soa muito bem, mas elas:
A opo noexec evita que os binrios sejam executados diretamente, mas isto facilmente
contornado:
No entanto, muitos script kiddies tem exploits que tentam criar e executar arquivos em /tmp.
se eles no tem conhecimento disto, caem nesta restrio. Em outras palavras, um usurio
no pode ser convencido a executar um binrio alterado em /tmp e.g. quando acidentalmente
adicionar /tmp em sua varivel PATH.
Esteja j avisado que muitos scripts dependem de /tmp sendo executvel. Mais notavelmente,
o Debconf tem (ainda?) alguns problemas relacionados a isto, para mais informaes veja o
bug 116448 (http://bugs.debian.org/116448).
A parte a seguir mais um tipo de exemplo. Uma nota, no entanto: /var pode ser ajustado
para noexec, mas alguns programas 6 mantm seus programas sob /var. O mesmo se aplica a
opo nosuid.
6
Alguns destes incluem o gerenciador de pacotes dpkg pois os scripts de instalao (post,pre) e remoo
(post,pre) esto em /var/lib/dpkg/ e tambm o Smartlist
Captulo 4. Aps a instalao 46
Tenha cuidado em ajustar a opo noexec em /tmp quando desejar instalar novos progra-
mas, 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
definir 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. Con-
sidere 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)
Se configurar 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 configurada para executar comandos antes e aps instalar pacotes,
assim voc pode querer configur-lo corretamente.
Para fazer isto, modifique o /etc/apt/apt.conf e adicione:
DPkg
{
Pre-Invoke { "mount /usr -o remount,rw" };
Post-Invoke { "mount /usr -o remount,ro" };
};
Captulo 4. Aps a instalao 47
Note que o Post-Invoke pode falhar com a mensagem de erro /usr busy. Isto acontece ba-
sicamente porque est usando arquivos durante a atualizao que foram atualizados. Voc
encontrar estes programas executando
# lsof +L1
A seguinte descrio est longe de ser completa, para mais informaes voc deve ler o Guia
do Administrador de Sistemas Linux-PAM (http://www.kernel.org/pub/linux/libs/
pam/Linux-PAM-html/pam.html) (presente no site primrio de distribuio do PAM
(http://www.kernel.org/pub/linux/libs/pam/)). Este documento tambm pode ser
encontrado no pacote do Debian libpam-doc.
O PAM lhe oferece a possibilidade de utilizar vrios passos de autenticao de uma s vez,
sem o conhecimento do usurio. Voc pode autenticar em um banco de dados Berkeley e no
banco de dados no arquivo passwd padro, e o usurio somente entrar no sistema caso ele
se autentique corretamente em ambos. Voc pode restringir muita coisa com o PAM, como
Captulo 4. Aps a instalao 48
tambm abrir bastante as portas do seu sistema. Assim, seja cauteloso. Uma linha de config-
urao 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.
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 car-
acteres, 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 to-
talmente til. 7 A segunda linha introduz o mdulo de autenticao padro com senhas MD5
e permite uma senha de tamanho zero. A diretiva use_authtok necessria para pegar a
senha do mdulo anterior.
Para se assegurar que o usurio root pode somente se logar no sistema de terminais locais, a
seguinte linha dever ser ativada no /etc/pam.d/login:
Ento voc dever modificar 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 modificar o arquivo /etc/security/access.conf que possui um controle de acesso
mais fino e geral, mas (infelizmente) no possui mensagens de log decentes (o log dentro do
PAM no padronizado e particularmente um problema a ser tratado). Ns voltaremos no
arquivo access.conf um pouco mais a frente.
Em seguida, a seguinte linha dever ser ativada no /etc/pam.d/login para ativar a restrio
dos recursos do usurio.
Isto restringe os recursos do sistema que os usurios tm permisso (veja abaixo em Limitando
o uso de recursos: o arquivo limits.conf on page 50 ). 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.
7
Esta dependncia no foi corrigida, no pacote do Debian 3.0. Por favor veja Bug #112965 (http://bugs.
debian.org/112965).
Captulo 4. Aps a instalao 49
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:
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:
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:
Esta linhas lhe oferecero uma boa configurao padro para todas as aplicaes que suportam
PAM (o acesso negado por padro).
Captulo 4. Aps a instalao 50
Voc realmente dever dar uma olhada sria neste arquivo. Aqui voc poder limitar os recur-
sos 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 inter-
pretadores 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:
O prximo passo editar a configurao e ao bsica que ser feita aps o login do usurio.
Note que este arquivo no parte da configurao do PAM, um arquivo de configurao
lido pelos programas login e su, assim no faz sentido configur-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
Captulo 4. Aps a instalao 51
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 fizer isto,
tenha certeza que os logs tenham permisses corretas (640 por exemplo, com a configurao
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 impor-
tante em mquinas em produo, mas note que isto pode criar tambm problemas de privaci-
dade.
SYSLOG_SG_ENAB yes
MD5_CRYPT_ENAB yes
PASS_MAX_LEN 50
Caso senhas MD5 sejam ativadas em sua configurao do PAM, ento esta varivel dever ter
o mesmo valor da que usada l.
O arquivo /etc/ftpusers contm uma lista de usurios que no podem logar no sistema us-
ando ftp. Somente use este arquivo se voc realmente deseja permitir ftp (que no recomen-
dado em geral, pois utiliza autenticao de senhas em texto plano). Caso seu daemon suporta
PAM, voc poder tambm us-lo para permitir e bloquear usurios para certos servios.
FIXME (BUG): m bug que o arquivo ftpusers padro no Debian no inclua todos os
usurios administrativos (do base-passwd).
Captulo 4. Aps a instalao 52
4.10.5 Usando su
Se voc realmente precisa que os usurios se tornem superusurio em seu sistema, e.g. para in-
stalar 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.
O programa sudo permite ao usurio executar comandos definidos 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 definidos 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.
Lembre-se de ativar o mdulo pam_access para cada servio (ou configurao padro) em
/etc/pam.d/ se quiser que suas alteraes em /etc/security/access.conf sejam man-
tidas.
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
Captulo 4. Aps a instalao 53
/etc/shells). Se deseja permitir aos usurios acessar o sistema mas com seus movimen-
tos limitados, voc poder usar o /bin/rbash, que equivalente a adicionar a opo -r ao
bash (RESTRICTED SHELL veja bash(1)). Por favor observe que at mesmo em um shell
restrito, um usurio pode acessar um programa interativo (que pode permitir a execuo de
um subshell) e poder pular as limitaes do shell.
O Debian atualmente fornece em sua verso instvel (e poder ser includa em uma futura
verso estvel) do mdulo pam_chroot (no pacote libpam-chroot). Uma alternativa a ele
o chroot o servio que fornece log remoto (ssh, telnet).8
Se voc deseja restringir quando seus usurios podem acessar o sistema, voc dever person-
alizar o /etc/security/access.conf a suas necessidades.
Informaes sobre como fazer chroot dos usurios acessando o sistema atravs do ssh
descrito em Ambiente chroot para SSH on page 207.
Se voc realmente paranico, pode querer adicionar uma configurao 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.
Voc poder usar o comando script para auditar ambos o que os usurios executam e quais
so os resultados destes comandos.No possvel definir 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 fizer isto de forma que afete todo o sistema, significa que o shell no contin-
uar lendo arquivos de configuraes 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
definindo a opo append-only usando o chattr.
Uma alternativa til para administradores de sistemas, que inclui informaes sobre data,
pode ser:
8
Libpam-chroot ainda no foi ainda testado, ele funciona com o login mas ele no fcil de ser configurado
para funcionar com outros programas
Captulo 4. Aps a instalao 54
umask 077
exec script -q -a "/var/log/sessions/$USER-date +%Y%m%d"
Se deseja rever o que o usurio est digitando no seu shell (mas no se sabe qual seu resultado)
voc poder configurar um /etc/profile para todo o sistema que configura o ambiente de
forma que todos os comandos so salvos em um arquivo de histrico. A configurao 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 especfica de cada shell assim tenha certeza que
todos os usurios esto utilizando um shell que suporte isto.
Por exemplo, para o bash, o /etc/profile dever ser ajustado da seguinte forma 9 :
HISTFILE=~/.bash_history
HISTSIZE=10000
HISTFILESIZE=999999
# Dont let the users enter commands that are ignored
# in the history file
HISTIGNORE=""
HISTCONTROL=""
readonly HISTFILE
readonly HISTSIZE
readonly HISTFILESIZE
readonly HISTIGNORE
readonly HISTCONTROL
export HISTFILE HISTSIZE HISTFILESIZE HISTIGNORE HISTCONTROL
Para isto funcionar, o usurio poder somente adicionar dados ao .bash_history. Voc tam-
bm precisar ajustar a opo append-only usando o programa chattr para o .bash_history
de todos os usurios. 10 .
Note que voc poder introduzir as configuraes acima no arquivo .profile do usurio.
Mas ento voc precisar ajustar permisses adequadamente de tal forma que isto prevenir
que o usurio modifique 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 configurao .profile e gravar no .bash_history. Seria bom
ajustar a opo imutvel (usando tambm o chattr) tambm para o .profile se fizer desta
forma.
9
A definio de HISTSIZE para um nmero elevado poder causar problemas em algumas circunstncias, pois
o histrico mantido em memria para cada sesso do usurio. Voc estar mais seguro caso defina esta varivel
para um valor suficientemente grande e realizar o backup de arquivos de histrico de usurios (se precisar do
histrico de todos os usurios por alguma razo).
10
Sem a opo append-only, os usurios podero ser capazes de apagar o contedo do arquivo de histrico
executando > .bash_history
Captulo 4. Aps a instalao 55
Se voc for completamente paranico e deseja auditar cada comando do usurio, voc dever
pegar o cdigo fonte do bash, edit-lo e assim ter ele enviando tudo o que o usurio digitar
para outro arquivo. Ou ter o pacote ttysnoop monitorando constantemente qualquer novo
ttys 11 e gravar sua sada para um arquivo. Outro programa til o snoopy (veja tambm
the project page (http://sourceforge.net/projects/snoopylogger/)) que um pro-
grama transparente ao usurio que trabalha em cima de uma biblioteca fornecendo um gancho
nas chamadas execve(), qualquer comando executado registrado no syslogd usando a facil-
idade authpriv (normalmente armazenada em /var/log/auth.log).
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
perfil sobre cada usurio mostrando o intervalo de tempo que eles geralmente entram no sis-
tema.
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 exe-
cutam.
Dependendo de sua poltica de usurios voc pode querer alterar como as informaes
so compartilhadas entre os usurios, o que significa, o que cada permisso padro per-
mite. Esta alterao feita definindo uma configurao apropriada de umask para todos os
usurios. Voc poder alterar a configurao 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
11
Ttys so criados para logins locais e logins remotos durante sees do ssh e telnet
Captulo 4. Aps a instalao 56
FIXME: necessrio mais contedo. Falar das consequncias de alterar as permisses de pa-
cotes 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 co-
mandos, 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 infor-
maes sobre o seu sistema, incluindo:
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 ex-
ecutar 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):
A sada mostra a lista de arquivos que um usurio pode ver e os diretrios que ele tem acesso.
Captulo 4. Aps a instalao 57
Se voc ainda permite acesso a shell para os usurios voc dever querer limitar que infor-
maes 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, configuraes 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 depen-
dendo de sua poltica local.
Voc poder alterar este comportamento, assim a criao de usurios oferecer uma permis-
so diferente em $HOME. Para alterar o comportamento para novos usurios quando forem
criados, altere DIR_MODE no arquivo de configurao /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 final public_html (que ter por si prprio a
permisso) e oferecer o contedo publicado pelos usurios. claro, ns estamos somente
falando aqui sobre uma configurao 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.
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 pa-
cote) 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 algo-
Captulo 4. Aps a instalao 58
rtmos 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 definida de forma interativa (pois ele utiliza acesso
direto a tty). Se deseja alterar senhas quando cria um grande nmero de usurios, voc poder
cri-las usando o adduser com a opo --disabled-login e ento usar o usermod ou
chpasswd 12 (ambos vm no pacote passwd assim voc j os ter instalados). Se desejar usar
um arquivo com todas as informaes dos usurios como um processo no interativo, ser
melhor usar o newusers.
Senhas de usurios podem algumas vezes ser o ponto vulnervel na segurana de um determi-
nado sistema. Isto devido ao fato de que alguns usurios escolherem senhas fracas para suas
contas (e quanto mais deles tm acesso ao sistema, maiores as chances disto acontecer). At
mesmo se voc estabelecer checagens com o mdulo cracklib do PAM e limitaes de senhas
como descrito em Autenticao do Usurio: PAM on page 47 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, verificar se a
senha que eles tm so consistentes com a poltica local de segurana. Como verificar? 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.
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 resta-
belecida. 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.
12
O chpasswd no trabalha com a gerao de senhas em md5, assim ele precisa ser informado que forma de
criptografia das senhas ser utilizado, com a opo -e.
Captulo 4. Aps a instalao 59
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:
Leve isto em conta quando executar o tcpdchk (um verificar 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 firewall decente como primeira linha e
o tcp wrappers como segunda linha de defesa. Um pequeno truque configurar um comando
SPAWN 13 , no arquivo /etc/hosts.deny que envia uma mensagem para o root assim que
for tentado acesso a um servio negado:
Cuidado: O exemplo impresso acima aberto a um ataque DoS fazendo muitas conexes em
um curto perodo de tempo. Muitos e-mails significam muito I/O de arquivos pelo envio de
poucos pacotes.
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 (http://www.loganalysis.org/).
Em qualquer caso, at mesmo ferramentas automatizadas no batem a melhor ferramenta de
anlise: seu crebro.
servios quanto forem possveis e workstation (estao de trabalho) para mquinas relati-
vamente 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 re-
ceber, apenas adicione as expresses regulares (veja regex(7) e egrep(1)) que correspon-
dem a estas mensagens em /etc/logcheck/ignore.d.reportlevel/local. tente con-
ferir 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 fino constante; assim que as mensagens que so enviadas so sempre importantes,
voc dever considerar este tunning finalizado. 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).
O Debian vem com uma configurao padro do syslog (em /etc/syslog.conf) que reg-
istra 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 configurao 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 segu-
rana (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 (verifique no /etc/aliases).
Tenha ateno de enviar as mensagens do root para algum lugar onde sejam lidas (ou local-
mente 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.
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,
Captulo 4. Aps a instalao 63
a no ser que ataque tambm o servidor de logs. Assim, esta mquina dever estar especial-
mente 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, configure 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 configurao 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.
No s importante decidir como os alertas so usados, mas tambm quem tem acesso a
leitura/modificao 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 infor-
maes 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 de-
pende 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 verificar isto em seu sistema com:
Captulo 4. Aps a instalao 64
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.
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 modific-los. Adicionalmente, voc poder tambm definir
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 re-
stringir acesso a arquivos. Ele permite a voc um fino 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 (chama-
dos 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 developers web-
site (http://www.coker.com.au/selinux/))
FIXME: adicionar mais contedo, explicar como estes patches especficos 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.
15
Note que, dependendo do pacote de fonte do kernel 2.4 que voc usar, voc poder encontrar problemas
durante o patch de fontes de kernel. Se este for seu caso, voc precisa usar o kernel vanilla. Voc poder fazer isto
com os seguintes passos:
No entanto, alguns patches ainda no foram adicionados ainda no Debian. Se sentir que alguns
destes devem ser includos, por favor pergunte por ele em Work Needing and Prospective
Packages (http://www.debian.org/devel/wnpp/). Alguns destes pacotes so:
SubDomain. Uma extenso do kernel feita para oferecer confinamento com poucas per-
misses para programas possivelmente inseguros. Complemento de subdomnio e exten-
so para controle de acesso nativo. Enquanto similar ao ambiente chroot, ele clama
ser de fcil construo e mais flexvel 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.
O estouro de buffer (buffer overflow) o nome de um comum ataque a softwares 16 que faz o uso
de checagem insuficiente 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 comprometi-
mento de qualquer sistema determinado.
Existem basicamente quatro mtodos de se proteger contra estouro de buffer:
aplicar um patch no kernel para prevenir a execuo da pilha (voc pode usar os patches
OpenWall ou Grsecurity)
corrigir o cdigo fonte usando ferramentas para encontrar fragmentos de onde pode in-
troduzir esta vulnerabilidade.
16
To comum, de fato, que eles so a base de 20% de vulnerabilidades reportadas de segurana todo ano, como
determinado pelas estatsticas do banco de dados dde vulnerabilidades ICATs (http://icat.nist.gov/icat.
cfm?function=statistics)
Captulo 4. Aps a instalao 67
O Debian GNU/Linux em seu lanamento 3.0, fornece software para introduzir todos estes
mtodos exceto a proteo de compilao do cdigo fonte (mas isto foi requisitado no Bug
#213994 (http://bugs.debian.org/213994))
Note que at mesmo se o Debian fornecer um compilador que possua proteo contra estouro
de pilha/buffer, todos os pacotes precisariam ser recompilados para introduzir esta caracters-
tica. Isto , de fato, o que o Adamantix faz (entre outras caractersticas). O feito desta nova
caracterstica na estabilidade do software algo que dever ser determinado (alguns progra-
mas ou arquiteturas de processador podem ter problemas com seu uso).
Em qualquer caso, esteja alerta que at mesmo estas alternativas podem no prevenir buffer
overflows, pois existem formas de burl-los, como descrito na revista phracks issue 58
(http://packetstorm.linuxsecurity.com/mag/phrack/phrack58.tar.gz) ou no
aviso COREs Mltiplas vulnerabilidades nas tecnologias de proteo de pilha (http://
onlne.securityfocus.com/archive/1/269246).
Os patches do kernel relacionados a estouro de buffer incluem o patch Openwall que ofer-
ece proteo contra buffer overflows nos kernels do Linux 2.2. Para kernels 2.4 ou superi-
ores, utilize o patch Grsecurity (existente no pacote kernel-patch-2.4-grsecurity) que
inclui o patch do Openwall e muito mais caractersticas (http://www.grsecurity.net/
features.php) (incluindo ACLs e mtodos de rede que dificultam a realizao de OS fin-
gerprinting), ou os mdulos de Segurana do Linux (nos pacotes kernel-patch-2.4-lsm e
kernel-patch-2.5-lsm). Para mais informaes sobre como usar estes patch leia a seo
Adicionando patches no kernel on page 64.
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 en-
tanto, pois isto pode quebrar alguns programas (notavelmente, programas compilados us-
ando a antiga libc5, assim tenha certeza de ler os relatrios de falhas reportadas (http:
//bugs.debian.org/libsafe) antes e testar os programas mais crticos em seu sistema
com o programa libsafe.
Nota Importante: A proteo da Libsafe pode no ser efetiva atualmente como descrito em
173227 (http://bugs.debian.org/173227). Considere test-la antes de us-la em um
ambiente de produo e no dependa exclusivamente dela para proteger seu sistema.
Captulo 4. Aps a instalao 68
O uso de ferramentas para deteco de estouro de buffer requer, em qualquer caso, conheci-
mento de programao para corrigir (e recompilar) o cdigo. O Debian contm, por exemplo:
bfbtester (um verificar de estouro de buffer que faz ataques de fora bruta em binrios e es-
touro de ambiente) e o njamd. Outros pacotes de interesse podem tambm ser o rats, pscan,
flawfinder e o splint.
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 definem 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 configurao de um sis-
tema de quotas:
Captulo 4. Aps a instalao 69
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 defina um tamanho de quota funcional para estas parties e di-
retrios 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, verifique se o
pacote quota est instalado. Caso negativo, voc ter que instal-lo.
Ativar as quotas para um respectivo sistema de arquivos muito fcil, bastando modificar
as configuraes 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 definidos.
A edio de quotas de um usurio especfico poder ser feita atravs de edquota -u
<user>. As quotas de grupos podem ser modificadas 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
pam_limits.so pode fornecer a mesma funcionalidade e lshell est atualmente orfanado
(http://bugs.debian.org/93894)
Em adio as permisses atuais do Unix, os sistemas de arquivos ext2 e ext3 oferecem um con-
junto de atributos especficos 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 co-
mando 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 sig-
nifica que estes atributos normalmente no sero salvos quando fizer 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.
Captulo 4. Aps a instalao 70
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 definidos (ou removi-
dos) pelo superusurio:
O atributo i (imutvel): um arquivo com este atributo no pode ser modificado, ex-
cludo ou renomeado, e nenhum link poder ser criado para ele, at mesmo pelo supe-
rusurio.
Estes atributos tambm podem ser definidos para diretrios, neste caso ningum ter o direito
de modificar 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 ro-
dando sob o superusurio a capacidade de adicionar dados a um arquivo sem modificar 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 ficara 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 ob-
scuridade, 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 de-
scrito em Defesa pr-ativa on page 149. 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:
4 Execute manualmente o comando acima (ou reinicie o seu sistema para ter certeza que
tudo funciona como planejado).
Captulo 4. Aps a instalao 71
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!
Voc tem certeza que o /bin/login em seu disco rgido ainda o binrio que instalou al-
guns 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 verificar seus arquivos a cada hora/dia/ms
(eu prefiro 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 hack-
eado 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 im-
portante, 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 verificar a integridade do sistema de arquivos, compara-
ndo 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 fizer isto, con-
sidere 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 al-
terar 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 no-
body 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 ar-
quivos 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 filtragem
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
Captulo 4. Aps a instalao 72
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 con-
figurao:
net/ipv4/icmp_echo_ignore_all = 1
Para registrar pacotes com endereos impossveis (devido a roteamento incorreto) em seu sis-
tema, use:
Captulo 4. Aps a instalao 73
/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 de-
scritas atravs do /usr/src/linux/Documentation/networking/ip-sysctl.txt 17 .
Esta opo uma faca de dois gumes. De um lado ela protege o seu sistema contra flood de
pacotes syn; por outro lado ela viola os padres definidos (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 definindo 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:
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 verific-la executando:
Quando definir opes de configurao do kernel para a rede, voc precisar configur-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 configurao modelo para o
sysctl.conf (veja: sysctl.conf(5)). Tambm envie isto como um bug wishlist para o
pacote.
Crie um script em /etc/network/interface-secure (o nome dado como um exemplo)
e o execute do arquivo /etc/network/interfaces desta forma:
17
No Debian o pacote kernel-image instala o fonte sob /usr/src/kernel-source-2.X.X, apenas subis-
titua linux com o tipo de kernel que est instalado
Captulo 4. Aps a instalao 74
auto eth0
iface eth0 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.255.xxx
broadcast xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx
pre-up /etc/network/interface-secure
#!/bin/sh
# Nome do Script: /etc/network/interface-secure
# Modifica o comportamento padro para tornar o sistema seguro contra
# alguns tipos de ataques TCP/IP spoofing
# some TCP/IP spoofing & attacks
#
# Contribudo por Dariusz Puchalak
#
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 ativa
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 carreg
echo 1 > /proc/sys/net/ipv4/ip_always_defrag
# opo de desfragmentao sempre
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# proteo ativada contra mensagens
Voc tambm poder criar um script em init.d que executado na inicializao (usando o
update-rc.d para criar os links apropriados em rc.d).
Captulo 4. Aps a instalao 75
Para ter capacidades de firewall, ou para proteger o sistema local ou outros atrs dele, o kernel
precisa ser compilado com capacidades de firewall. O kernel padro do Debian 2.2 (tambm
2.2) fornece o filtro de pacotes chamado ipchains, o Debian 3.0 usando o kernel padro (ker-
nel 2.4) oferece um filtro de pacotes de estado chamado iptables (netfilter). 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 configurao de firewalls no Debian discutida mais precisamente em Adicionando capaci-
dades de firewall on page 103.
Sistemas com mais de uma interface de rede em diferentes redes podem ter os servios config-
urados 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 significa (que foi at mesma uma concepo correta que tive) que o servio oferecido
ao endereo de hardware (interface de rede). 18
Isto no um assunto relacionado a ARP e no uma violao da RFC (isto chamado
mquina weak end na RFC1122 (ftp://ftp.isi.edu/in-notes/rfc1122.txt), seo
3.3.4.2). Lembre-se, endereos IP no tem nada a ver com a interface fsica.
Nos kernels da srie 2.2 (e anteriores) isto pode ser corrigido com:
Em outros kernels, isto pode ser corrigido com uma das alternativas:
regras do iptables.
18
Para reproduzir isto (exemplo oferecido por Felix von Leitner na lista de discusso bugtraq):
mquina A (eth0 conectada a eth0 da mquina B): ifconfig eth0 10.0.0.1 ifconfig eth1
23.0.0.1 tcpserver -RHl localhost 23.0.0.1 8000 echo fnord mquina B: ifconfig eth0
10.0.0.2 route add 23.0.0.1 gw 10.0.0.1 telnet 23.0.0.1 8000
Parece, no entanto, no funcionar com servios funcionando na interface 127.0.0.1, voc precisar fazer os testes
usando soquetes simples.
Captulo 4. Aps a instalao 76
Patch do kernel 20
Junto com este texto, existiro algumas ocasies em que ser mostrado como configurar al-
guns servios (servidor sshd, apache, servio de impresso. . . ) para t-los escutando em um
determinado endereo, o leitor dever ter em mente que, sem as correes fornecidas aqui, a
correo no evitar acesso de dentro do mesmo segmento de rede (local). 21
FIXME: os comentrios na bugtraq indicam que l existe um mtodo especfico 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?
Quando no confia em outras mquinas na sua rede (que deve sempre ser o caso, por ser uma
atitude mais segura) voc dever proteger a si mesmo de vrios ataques ARP existentes.
Como deve saber, o protocolo ARP usado para ligar endereos IP a endereos MAC. (veja
RFC826 (ftp://ftp.isi.edu/in-notes/rfc826.txt) para todos os detalhes). Cada vez
que enviar um pacote para um endereo IP uma resoluo arp feita (primeiro procurando no
cache ARP local, ento se o endereo IP no estiver presente no cache faz o broadcast de uma
requisio arp) para encontrar o endereo de hardware alvo. Todos os pacotes ARP tentam
deixar sua mquina ingnua fazendo-a pensar que o endereo IP da mquina B associado
com o endereo MAC da mquina do invasor. Ento cada pacote que deseja enviar para o
endereo IP associado com a mquina B, ser enviado para a mquina do invasor.
Estes ataques (envenenamento e cache, falsificao 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 configurar entradas estticas em seu cache arp:
19
O fato deste comportamento ser alterado atravs do roteamento foi descrito por Matthew G. Marsh na thread
do bugtraq:
eth0 = 1.1.1.1/24 eth1 = 2.2.2.2/24 ip rule add from 1.1.1.1/32 dev lo table 1 prio
15000 ip rule add from 2.2.2.2/32 dev lo table 2 prio 16000 ip route add default dev
eth0 table 1 ip route add default dev eth1 table 2
20
Existem alguns patches disponveis para este comportamento como descrito na discusso do bug-
traq em http://www.linuxvirtualserver.org/~julian/#hidden e http://www.fefe.de/
linux-eth-forwarding.diff.
21
Um invasor pode ter muitos problemas para contornar o acesso atravs da escuta de endereos IP se ele no
est no mesmo domnio de broadcast (mesma rede) que a mquina que ser atacada. Se a invaso for atravs do
roteador, ser bastante difcil as repostas retornarem a algum lugar.
Captulo 4. Aps a instalao 77
Configurando entradas estticas para cada mquina importante em sua rede voc se as-
segura de que ningum poder criar/modificar uma entrada (falsa) para estas mquinas
(entradas estticas no expiram e no podem ser modificadas) e respostas arp falsificadas
sero ignoradas.
Detectar trfego ARP suspeito. Voc poder usar o pacote arpwatch, karpski ou
ferramentas IDS mais gerais que tambm podero detectar trfego arp suspeitos como
(snort, prelude (http://www.prelude-ids.org). . . ).
Antes de por o sistema em produo voc dever tirar um snapshot de todo o sistema. Este
snapshot dever ser usado em um evento de compromisso (veja Depois do comprometimento
do sistema (resposta a incidentes) on page 155). 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 configurada como
somente-leitura, isto poder ser feito em um disquete (proteja como somente leitura aps o
uso) ou uma unidade de CD-ROM (voc poder usar um CD-ROM regravvel assim poder
at mesmo manter backups de md5sums em diferentes datas).
O seguinte script criar o snapshot:
#!/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.tx
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 verificar 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 finalizam com .md5sums). Voc poder copiar esta
informao tambm, no entanto voc dever saber:
Captulo 4. Aps a instalao 78
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 verificao com o cron toda a noite comparando os md5sums originais com estes no
snapshot.
A Svgalib muito bonita para amantes de console, como eu, mas no passado ela provou diver-
sas 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.
79
Captulo 5
Configurando-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. firewall), configure-os para
operar somente em interfaces definidas (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 configurado para que os servios somente executem
em uma interface definida (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
Captulo 5. Tornando os servios em execuo do seu sistema mais seguros 80
bind = 127.0.0.1
}
As seguintes sees detalham como alguns servios individuais podem ser configurados ade-
quadamente conforme sua utilizao.
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 criptografia. 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 modificado para aumentar a segurana:
ListenAddress 192.168.0.1
Especifica que o ssh somente funcionar na interface especificada, 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 fiasco.
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 Deny-
Groups.
PasswordAuthentication yes
Esta escolha fica 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.
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 prob-
lemas do protocolo ssh (http://earthops.net/ssh-timing.pdf) ou o aviso Xforce
(http://xforce.iss.net/static/6449.php).
Banner /etc/some_file
Adiciona um banner (ele ser lido de um arquivo) para usurios se conectando ao servi-
dor 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 emi-
tido para ter proteo legal.
Como nota final, tenha ateno que estas diretivas so vlidas para um arquivo de config-
urao 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 configurar um SSH com suporte a PAM em
arquivos da lista de segurana (http://lists.debian.org/debian-security/2001/
debian-security-200111/msg00395.html).
Captulo 5. Tornando os servios em execuo do seu sistema mais seguros 82
Se estiver usando um cliente SSH com um servidor SSH, voc dever ter certeza que ele suporta
os mesmos protocolos que so especificados no servidor. Por exemplo, se utilizar o pacote
mindterm, ele somente utiliza a verso 1 . No entanto, o servidor ssh utiliza, por padro,
a configurao para aceitar somente conexes para o protocolo da verso 2 (por razes de
segurana).
Se no quiser que seus usurios transfiram arquivos do servidor ssh, voc precisar restringir
acesso ao sftp-server e ao scp. Voc poder restringir o sftp-server configurando 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 config-
urao ou configurao do PAM).
no fornecer shells validas para usurios que no tem permisso de realizar transfern-
cias 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.
sobre a definio de regras de ACLs. Note que o Debian oferece uma configurao 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 configurao
/etc/squid.conf como necessrio. A configurao mnima recomendada (fornecida com o
pacote) mostrada abaixo:
Voc tambm dever configurar 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 configurado, algum poder enviar mensagens de e-mail
atravs do squid, pois os protocolos HTTP e SMTP tem design similar. O arquivo de configu-
rao 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 configurar 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):
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 confivel. Por
padro, o squid no configurado para atuar como um servidor web, assim no precis-
ar se preocupar com isto. Note que se quiser usar esta caracterstica, tenha certeza que
realmente necessria. Para encontrar mais informaes sobre o modo acelerador do Squid,
veja Squid Users Guide #Chapter9 (http://squid-docs.sourceforge.net/latest/
html/c2416.html).
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 ~
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 al-
ternativas melhores no Debian para isto, como o sftp (fornecido pelo pacote ssh). Tam-
bm existem implementaes livres do ssh para outros sistemas operacionais, por exem-
plo: putty (http://www.chiark.greenend.org.uk/~sgtatham/putty/) e o cygwin
(http://www.cygwin.com).
No entanto, se voc ainda mantm um servidor FTP enquanto disponibiliza o acesso atravs
do SSH voc deve encontrar um problema tpico. Usurios acessando servidores FTP ann-
imos 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 despro-
tegida. 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 infor-
maes e o patch esto disponveis em: ProFTPD Patches (http://www.castaglia.org/
proftpd/#Patches). Este patch tambm foi reportado para o Debian, veja Bug #145669
(http://bugs.debian.org/145669).
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
definio 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 especficas.
Uma soluo muito mais segura, no entanto, usar o ssh para fazer o tnel do X e crip-
tografia para toda a seo. Isto feito automaticamente quando voc faz um ssh para a outra
mquina. Para isto funcionar, voc ter que configurar 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 configurando 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:
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:
Captulo 5. Tornando os servios em execuo do seu sistema mais seguros 86
#!/bin/sh
exec /usr/bin/X11/X -dpi 100 -nolisten tcp
[server-Standard]
name=Standard Server
command=/usr/bin/X11/X -nolisten tcp
*lock: False
*lock: True
FIXME: adicionar informaes sobre como desativar as protees de tela que mostra o desktop
do usurio (que pode conter informaes sensveis).
Leia mais sobre a segurana em servidores X Window em XWindow-User-HOWTO
(http://www.tldp.org/HOWTO/XWindow-User-HOWTO.html) (/usr/share/doc
/HOWTO/en-txt/XWindow-User-HOWTO.txt.gz).
FIXME: Adicionar informaes sobre a discusso na debian-security sobre como alterar os ar-
quivos de configurao no servidor XFree 3.3.6 para fazer isto.
Se somente quiser ter um gerenciador de tela instalado para uso local (tendo um lindo lo-
gin grfico) tenha certeza que tudo que estiver relacionado com o XDMCP (X Display Man-
ager Control Protocol) est desativado. No XDM voc poder fazer isto atravs da linha em
/etc/X11/xdm/xdm-config:
DisplayManager.requestPort: 0
Imagine, voc chegando ao trabalho e a impressora jogando fora uma quantidade impres-
sionante de papel porque algum esta fazendo um DoS em seu daemon de impresso. De-
sagradvel, 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 especial-
mente seguro. Isto significa que precisa configurar seu servio de impresso de forma que s
permita conexes de um conjunto de mquinas confiveis. Para fazer isto, adicione os servi-
dores que deseja permitir a impresso em seu arquivo /etc/hosts.lpd.
No entanto, at mesmo se fizer isto, o lpr aceitar conexes de entrada na porta 515 de qual-
quer interface. Voc dever considerar fazer um firewall 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 configurado para fazer con-
trole de acesso por IP. E voc poder especificar 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 com-
partilhar este servio atravs de uma rede. Voc poder considerar o uso de outros sis-
temas de impresso, tal como o fornecido pelo pacote cups ou pelo PDQ (http://pdq.
sourceforge.net/) que baseado em permisses do usurio no dispositivo /dev/lp0.
No cups, os dados de impresso so transferidos ao servidores via protocolo http. Isto sig-
nifica 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 configura-lo para
escutar na interface loopback alterando o arquivo de configurao /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 configurao. No entanto, se voc no precisar delas, ser melhor que limite sim-
plesmente a porta onde o programa espera por conexes. O Cups tambm serve documen-
taes atravs da porta HTTP. Se no quiser revelar informaes teis em potencial para inva-
sores externos tambm adicione:
<Location />
Order Deny,Allow
Captulo 5. Tornando os servios em execuo do seu sistema mais seguros 88
Este arquivo de configurao pode ser modificado para adicionar algumas outras carac-
tersticas incluindo certificados SSL/TLS e criptografia. Os manuais esto disponveis em
http://localhost:631/ ou em cups.org.
FIXME: Adicionar mais contedo (o artigo em Amateur Fortress Building (http://www.
rootprompt.org) fornecendo vises mais interessantes).
FIXME: Verificar se o PDG est disponvel no Debian, e se estiver, sugerir como sistema de
impresso preferido.
FIXME: Verificar se o Farmer/Wietse possui um substituto para daemon de impresso e se est
disponvel no Debian.
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 configurado adequadamente para fazer isto. O daemon
poder, tambm, ser configurado 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 configurao padro mnima)
Para fazer isto em um sistema Debian 3.0 usando o pacote exim, voc ter que remover o
daemon smtp do inetd:
e configurar o daemon de mensagens para somente esperar por conexes na interface loop-
back. No exim (o MTA padro) voc poder fazer isto editando o arquivo de configurao
/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.
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 firewall 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 verificadas
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 configurar
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
No entanto, se desejar uma configurao somente de leitura, voc poder considerar a alter-
ao do daemon de mensagens para programas que podem somente ser configurados para redi-
recionar as mensagens para servidores de mensagens remotas. O Debian atualmente oferece
o pacote ssmtp e o nullmailer para este propsito. Em qualquer caso, voc dever avaliar
por si mesmo quaisquer dos agentes de transporte de mensagens 1 fornecido com o Debian.
Veja que programa atende melhor aos propsitos do sistema.
1
para obter uma lista de todos os daemons de mensagens disponveis no Debian, execute o comando:
A lista no incluir o qmail, que distribudo somente como cdigo fonte no pacote qmail-src.
Captulo 5. Tornando os servios em execuo do seu sistema mais seguros 90
Se quiser oferecer acesso remoto s caixas de mensagens, existe um nmero de daemons POP3
e IMAP disponveis 2 . No entanto, se voc oferecer acesso a IMAP, note que ele um protocolo
de acesso a arquivos, ele pode se tornar equivalente a um acesso shell porque os usurios
podem ser capazes de obter qualquer arquivo atravs dele.
Tente, por exemplo, configurar como seu caminho para a in-
box{servidor.com}/etc/passwd, se ele abrir o arquivo com sucesso seu daemon
IMAP no est corretamente configurado 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 configurado para fazer o chroot
do diretrio dos usurios de mensagens mas isto no ativado por padro. A documentao
fornecida oferece mais informaes sober como configura-lo.
Tambm, voc pode tentar executar um servidor IMAP que no precisa de usurios vli-
dos 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 configurado atravs do PAM tal como o teapop pode usar bancos de dados (tal como o
postgresql e o mysql) para autenticao do usurio.
FIXME: Verifique: uw-imapd tambm precisa ser configurado com autenticao do usurio
atravs de PAM. . .
A linha preconnect importante. Ela executa uma seo ssh e cria o tnel necessrio, que auto-
maticamente redireciona conexes para localhost da porta 1236 para o servidor de mensagens
IMAP, mas de forma criptografada. Outra possibilidade ser usar o fetchmail com caractersti-
cas ssl.
Se deseja fornecer servios de mensagens criptografadas como POP e IMAP,apt-get
install stunnel e inicie seus daemons da seguinte forma:
Este comando direciona as conexes do daemon fornecido (-l) para a porta (-d) e utiliza o
certificado ssl especificado (-p).
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:
limitar o acesso do daemon ao prprio servidor assim se ele for usado para um corrompi-
mento, a falha no sistema ser limitada. Isto inclui executar o daemon como um usurio
no-privilegiado (veja Alterando o usurio do BIND on page 94) e fazer ele rodar dentro
um chroot (see Executando o servidor de nomes em uma jaula chroot on page 96)
Voc dever restringir algumas das informaes que so servidas pelo BIND para clientes ex-
ternos, 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 ver-
sion. Voc pode ou limitar esta seo global (assim aplicando a todas as zonas que so servidas)
ou por zona. Esta informao est includa no pacote bind-doc, leia mais sobre isto em /usr
/share/doc/bind/html/index.html assim que o pacote for instalado.
Imagine que seu servidor (um servidor bsico contendo mltiplos endereos) est conectado
Internet e sua rede interna (seu endereo IP 192.168.1.2), voc no vai querer oferecer
qualquer servio para os computadores. Voc poder restringir o bind incluindo o seguinte no
/etc/bind/named.conf:
Captulo 5. Tornando os servios em execuo do seu sistema mais seguros 92
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, so-
mente usurios internos podero fazer requisies, mas, como a porta est acessvel para pos-
sveis invasores externos, eles podem tentar travar (ou tentar realizar ataques de estouro de
buffer) no servidor DNS. Voc poderia at faz-lo escutar somente em 127.0.0.1, se no estiver
oferecendo o servio de DNS em qualquer outro sistema alm do seu.
O registro version.bind na classe chaos contm a verso do processo do bind atualmente em
execuo. Esta informao freqentemente usada por scaneadores automticos e individual-
mente por pessoas maliciosas que desejam determinar se o bind vulnervel a um ataque
especfico. Oferecendo informaes falsas ou no fornecendo informaes ao registro ver-
sion.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:
A alterao do registro version.bind no oferece proteo atualmente contra ataques, mas pode
ser considerado til para a segurana.
Um arquivo simples de configurao named.conf pode ser o seguinte:
acl internal {
127.0.0.1/32; // localhost
10.0.0.0/8; // interna
aa.bb.cc.dd; // IP da eth0
};
acl friendly {
ee.ff.gg.hh; // DNS escravo
aa.bb.cc.dd; // IP da eth0
127.0.0.1/32; // localhost
10.0.0.0/8; // interna
};
Captulo 5. Tornando os servios em execuo do seu sistema mais seguros 93
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";
};
Por favor (novamente) verifique o Sistema de Tratamento de Falhas a respeito do bind, especi-
ficamente Bug #94760 (relacionado com ACLs em transferncia de zonas) (http://bugs.
debian.org/94760). Sinta-se livre para contribuir para relatar falhas se achar que podem
adicionar informaes teis.
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. Verifique 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 rela-
cionados com o BIND, assim a alterao do usurio mais til quando possvel. Ns detal-
haremos os passos para fazer isto, no entanto, se quiser fazer isto de uma forma automtica,
tente o script fornecido em Exemplo de script para alterar a instalao padro do Bind. on
page 199.
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 exe-
cutado 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
configurao menos restrita, utilize:
Agora, edite o arquivo /etc/init.d/bind com seu editor favorito e altere a linha que
comea com
start-stop-daemon --start
para3
Altere as permisses dos arquivo que so usados pelo Bind, incluindo /etc/bind
/rndc.key:
3
Note que dependendo de sua verso do BIND voc pode no ter a opo -g, mais precisamente se estiver
usando a woody e instalando o bind9 (9.2.1-2.woody).
Captulo 5. Tornando os servios em execuo do seu sistema mais seguros 95
e onde o bind cria seu arquivo de pid, usando, por exemplo, /var/run/named ao invs de
/var/run:
$ mkdir /var/run/named
$ chown named.named /var/run/named
$ vi /etc/named.conf
[ ... atualize o arquivo de configurao para sua nova localizao ...]
options { ...
pid-file "/var/run/named/named.pid";
};
[ ... ]
Tambm, para evitar a execuo de tudo como usurio root, altere a linha reload
comentando-a:
reload)
/usr/sbin/ndc reload
E altere para:
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:
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, veri-
fique o sistema de tratamento de falhas, especificamente Bug #50013: bind should not run as
root (http://bugs.debian.org/50013) e Bug #132582: Default install is potentially in-
secure (http://bugs.debian.org/132582), Bug #53550 (http://bugs.debian.org/
53550), Bug #128120 (http://bugs.debian.org/52745), e Bug #128120 (http://bugs.
debian.org/128129). Sinta-se livre para contribuir para os relatrios de falhas se achar que
pode adicionar informaes teis.
Captulo 5. Tornando os servios em execuo do seu sistema mais seguros 96
Para obter o mximo de segurana no BIND, agora construa uma jaula chroot (veja Parania
geral do chroot e suid on page 100) em torno do seu daemon. Existe um mtodo fcil de se
fazer isto: a opo -t (veja a named(8) pgina de manual ou a pgina 100 do Documentao
do Binds 9 (PDF) (http://www.nominum.com/content/documents/bind9arm.pdf)).
Isto instruir o Bind a fazer uma jaula de si mesmo em um diretrio especificado sem a neces-
sidade de configurar 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 permis
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 configurao esto sempre local-
izados em /etc/named/. Tenha em mente que ele somente precisa de acesso de leitura aos
arquivos de zonas, a no ser que seja um DNS secundrio ou servidor de cache de nomes. Se
este seu caso, voc ter que dar permisses completas para as zonas necessrias (assim as
zonas transferidas do servidor principal funcionaro).
Adicionalmente, mais detalhes sobre o Bind e chroot pode ser encontrados no Chroot-
BIND-HOWTO (http://www.tldp.org/HOWTO/Chroot-BIND-HOWTO.html) (rela-
cionado com o Bind 9) e Chroot-BIND8-HOWTO (http://www.tldp.org/HOWTO/
Chroot-BIND8-HOWTO.html) (relacionado com o Bind 8). Este mesmo documento
dever estar disponvel atravs da instalao do doc-linux-text (verso texto) ou
doc-linux-html (verso html). Outro documento til http://web.archive.org/
web/20011024064030/http://www.psionic.com/papers/dns/dns-linux.
Se estiver configurando 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:
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/
Aps a instalao, voc precisar mover os arquivos para a jaula chroot 4 voc poder manter
os scripts do init.d em /etc/init.d assim o sistema ir iniciar automaticamente o servidor
de nomes, mas edite-os para adicionar --chroot /location_of_chroot nas chamadas
para start-stop-daemon nestes scripts.
Para mais informaes sobre como configurar jaulas chroot veja Parania geral do chroot e
suid on page 100.
FIXME, merge info from http://people.debian.org/~pzn/howto/chroot-bind.
sh.txt, http://www.cryptio.net/~ferlatte/config/ (Debian-specific), http:
//web.archive.org/web/20021216104548/http://www.psionic.com/papers/
whitep01.html and http://csrc.nist.gov/fasp/FASPDocs/NISTSecuringDNS.
htm.
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 pa-
cotes libapache-mod-XXX.
4
a no ser que utilize a opo instdir quando executar o dpkg mas ento a jaula chroot ser um pouco mais
complexa
Captulo 5. Tornando os servios em execuo do seu sistema mais seguros 98
Voc poder limitar o acesso ao servidor Apache se voc somente deseja usar ele internamente
(para propsitos de testes, para acessar os arquivos do doc-central, etc..) e no deseja que
pessoas de fora o acessem. Para fazer isto, use as diretivas Listen ou BindAddress no /etc
/apache/http.conf.
Using Listen:
Listen 127.0.0.1:80
Using BindAddress:
BindAddress 127.0.0.1
Ento reinicie o apache com /etc/init.d/apache restart e voc ver que ele somente
esperar por requisies na interface loopback.
Em qualquer caso, se no estiver usando todas as funcionalidades fornecidas pelo Apache,
voc poder querer dar uma olhada em outros servidores web fornecidos no Debian, como o
dhttpd.
A Documentao do Apache (http://httpd.apache.org/docs/misc/security_
tips.html) fornece informaes relacionadas com medidas de segurana a serem tomadas
no servidor web Apache (estes mesmos passos so oferecidos no Debian atravs do pacote
apache-doc).
Mais informaes sobre restries do Apache configurando uma jaula chroot so mostradas
em Ambiente chroot para Apache on page 221.
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 configurao /etc/apache
/http.conf comentando a linha:
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 supe-
rior. Se estiver usando verses antigas do apache, voc dever alterar o arquivo de configu-
rao e adicionar:
Captulo 5. Tornando os servios em execuo do seu sistema mais seguros 99
<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.
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.
Os arquivos do Apache esto localizados sob /var/www. Apenas aps a instalao o arquivo
de configurao 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, desfigurarem o site. Voc dever, claro, substituir as pginas padres por suas
prprias (que fornecem informaes que no deseja mostrar para pessoas de fora).
Se desejar executar o servio finger, primeiro pergunte a voc mesmo porque o deseja. Se
precisar dele, voc ver que o Debian fornece vrios daemons de finger (sada do comando
apt-cache search fingerd):
efingerd - Outro daemon de finger para unix, capaz de ajustes finos em sua sada.
Muitos servios executados como daemons podero se beneficiar deste tipo de tcnica. Os
daemons que voc instala no Debian no viro, no entanto, dentro de chroot 5 por padro.
Isto inclui: servidores de nomes (tal como o bind), servidores web (tal como o apache), servi-
dores de mensagens (tal como o sendmail e servidores ftp (tal como o wu-ftpd). Provavel-
mente basta dizer que a complexibilidade do BIND a razo de que ele foi exposto a vrios
ataques nos ltimos anos (see Tornando o BIND mais seguro on page 91).
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 li-
dos/executveis que o servio poder acessar, assim, limitando as possibilidade de uma es-
calao 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
Eles no tentaro ser executados sob mnimo privilgio que inclui a execuo de daemons com seus prprios
usurios ao invs de t-los executando como root
Captulo 5. Tornando os servios em execuo do seu sistema mais seguros 101
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 qual-
quer documento relacionado a tornar um sistema Linux (e outros tipos e Unix) mais seguro.
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 configurao for cor-
rompida.
Se precisar de compartilhamento de senhas entre mquinas, voc dever considerar a adoo
de outras alternativas. Por exemplo, a configurao de um servidor LDAP e o PAM para con-
tactar o servidor LDAP para autenticao dos usurios. Voc poder encontrar uma configu-
rao detalhada na LDAP-HOWTO (http://www.tldp.org/HOWTO/LDAP-HOWTO.html)
(/usr/share/doc/HOWTO/en-txt/LDAP-HOWTO.txt.gz).
Mais detalhes sobre a segurana em NIS podem ser encontradas em NIS-HOWTO
(http://www.tldp.org/HOWTO/NIS-HOWTO.html) (/usr/share/doc/HOWTO
/en-txt/NIS-HOWTO.txt.gz).
Captulo 5. Tornando os servios em execuo do seu sistema mais seguros 102
A desativao do portmap bem simples. Existem diversos diferentes mtodos. O mais sim-
ples 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 dae-
mons de servio on page 33, 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 inicializa-
o. Voc tambm poder comentar a parte start-stop-daemon no script /etc/init.d
/portmap.
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
Captulo 5. Tornando os servios em execuo do seu sistema mais seguros 103
um portmapper local. Isto significa 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 firewall local (veja Adi-
cionando capacidades de firewall on this page).
Bloquear o acesso a estes servios usando tcp wrappers, pois o portmapper (e alguns
servios RPC) so compilados com a libwrap (veja Usando os tcpwrappers on page 59.
Isto significa que voc poder bloquear o acesso a eles atravs do hosts.allow e
hosts.deny na configurao do tcp wrappers.
Desde a verso 5-5, o pacote portmap pode ser configurado para somente realizar
conexes na interface loopback. Para fazer isto, modifique o arquivo /etc/default
/portmap, e descomente a seguinte linha: #OPTIONS=-i 127.0.0.1 e reinicie o
portmapper. Isto suficiente 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 on page 75.
Voc poder usar regras de firewall como uma forma de restringir o acesso a seu sistema local
e, at mesmo, limitar comunicaes feitas atravs dele. As regras de firewall tambm po-
dem ser usadas para proteger processos que podem no estar corretamente configurados, no
fornecendo servios para algumas redes, endereos IP, etc. . .
No entanto, este passo mostrado por ltimo neste manual basicamente porque muito mel-
hor no depender solenemente das capacidades de firewall para proteger um dado sistema.
A segurana em um sistema feita atravs de camadas, o firewall deve ser a ltima a ser adi-
cionada, uma vez que todos os servios foram ajustados para serem mais seguros. Voc pode
facilmente imaginar uma configurao em que o administrador descuidadamente remove as
regras de firewall por alguma razo (problemas com a configurao, descuido, erro humano
Captulo 5. Tornando os servios em execuo do seu sistema mais seguros 104
. . . ), este sistema pode estar aberto para um ataque se no existir outro reforo no sistema para
protege-lo.
Por outro lado, tendo regras de firewall no sistema local tambm evita que coisas ruins acon-
team. At mesmo se os servios fornecidos esto configurados de forma segura, um fire-
wall pode proteger de m configuraes ou de servios instalados recentemente que ainda no
foram configurados adequadamente. Tambm, uma configurao forte evitar que cavalos de
tria chamem a origem de funcionarem a no ser que o cdigo do firewall seja removido. Note
que um intruso no precisa de acesso de superusurio para instalar um cavalo de tria local-
mente que pode ser controlado remotamente (pois a escuta a porta permitido caso no sejam
portas privilegiadas e as capacidades no foram removidas).
Assim, uma configurao apropriada de firewall aquela com a poltica padro deny, que :
conexes de entrada so permitidas somente para servios locais por mquinas permiti-
das.
conexes de sada somente so permitidas para servios usados pelo seu sistema (DNS,
web browsing, pop, email. . . .) 6
a regra forward bloqueia tudo (a no ser que esteja protegendo outros sistemas, veja
abaixo).
Um firewall tambm pode ser instalado no Debian para proteger, com regras de filtragem, o
acesso a sistemas atravs dela, limitando sua exposio na Internet. O firewall pode ser con-
figurado 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 definido) precisa ser acessada de fora. Um firewall pode ser configurado para, at
mesmo se existem outros servios disponibilizados publicamente, descartar qualquer pacote
(isto conhecido como filtragem) direcionado a mquina.
Voc pode at mesmo configurar a mquina Debian GNU/Linux como uma firewall bridge,
i.e. um firewall de filtragem completamente transparente para a rede que deixa de lado um
endereo IP e assim no pode ser atacada diretamente. Dependendo do kernel que tiver insta-
lado, voc poder precisar fazer a instalao do patch de bridge no firewall e ento ir para a
seo 802.1d Ethernet Bridging quando estiver configurando o kernel e uma nova opo netfilter
( firewalling ) support. Veja Configurando uma ponte firewall on page 195 para mais detalhes
sobre como fazer isto em um sistema Debian GNU/Linux).
6
De forma diferente de firewalls pessoais em outros sistemas operacionais, o Debian GNU/Linux (ainda) no
fornece uma interface de gerao de firewall que possa fazer regras de limitao por processo ou usurio. No
entanto, o cdigo do iptables pode fazer isto (veja o mdulo owner na pgina de manual iptables(8))
Captulo 5. Tornando os servios em execuo do seu sistema mais seguros 105
Se estiver usando o Debian 3.0, voc notar que tem o pacote iptables instalado. Este para
suporte da implementao netfilter de kernels 2.4.4 e superiores. Pois apenas aps a instalao
o sistema pode no saber que regras de firewall (regras de firewall so bastante dependentes
de sistema) voc tem para ativar o iptables. No entanto, os scripts foram configurados de
uma forma que o administrador possa configurar as regras de firewall e ento ter os scripts de
inicializao sempre aprendendo-as e usando sempre como configurao do firewall.
Para fazer isto voc dever:
Configurar 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 configur-lo aps
isto com dpkg-reconfigure -plow iptables. Nota: em verses antigas, isto pode
ser feito editando-se o arquivo /etc/default/iptables e verificando se a varivel
enable_iptables_initd foi definida para true (ativo).
crie uma configurao de firewall usando o iptables, voc poder usar a linha de co-
mando (veja iptables(8)) ou algumas outras ferramentas fornecidas pelos pacotes de
Firewall do Debian (veja Usando pacotes de Firewall on the next page). Voc precisar
criar um conjunto de regras de firewall para ser usado quando o firewall estiver em es-
tado ativo e outro para ser usado no estado inativo do firewall (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
firewall que deseja iniciar.
Captulo 5. Tornando os servios em execuo do seu sistema mais seguros 106
Assim que tiver terminado, sua configurao de firewall 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 configurao padro do Debian inicia o
cdigo de firewall em nveis de execuo multiusurio (2 a 5) e em breve (10). Tambm, ele
interrompido em modo monousurio (1), altere isto caso no confira com suas polticas locais.
Se no tiver uma dica de como configurar regras de firewall manualmente, consulte o doc-
umento Packet Filtering HOWTO e NAT HOWTO fornecidas pelo iptables para leitura of-
fline em /usr/share/doc/iptables/html/. O arquivo de configurao /etc/default
/iptables tambm fornece vrias informaes a respeito deste pacote.
knetfilter
fwbuilder uma GUI orientada a objetos que inclui compiladores de polticas para
vrias plataformas de firewalls incluindo o iptables assim como listas de acesso do
roteador. A funcionalidade completa do fwbuilder tambm est disponvel atravs da
linha de comando
shorewall que oferece suporte a IPsec com um suporte bem limitado para controle de
trfego tambm como uma definio de regras de firewall.
mason, que prope regras de firewall baseados no trfego de rede que seu sistema enx-
erga.
ferm
fwctl
Captulo 5. Tornando os servios em execuo do seu sistema mais seguros 107
easyfw
firewall-easy
ipac-ng
gfcc
lokkit ou gnome-lokkit
Captulo 6
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 autom-
atizadas?. 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 ficar a espera deixando que as ferramen-
tas 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 especficos que so teis para o fortalec-
imento 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 configurao de pacotes deve ser feita pelo administrador. O pa-
cote bastille que implementa uma dada poltica de segurana no sistema local baseada na
configurao anterior do administrador (a construo da configurao 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 conflita com pacotes com falhas conheci-
das, incluindo (mas no limitado a): falhas conhecidas de segurana (como estouro de buffer),
uso de senhas em texto plano, esquecimento de controle de acesso, etc. Ele automaticamente
instala algumas ferramentas que aumentam a segurana de alguma forma: ferramentas de de-
teco 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):
Captulo 6. Fortalecimento automtico de sistemas Debian 110
harden-localflaws: exclui pacotes com problemas de segurana que podem ser usa-
dos por um invasor local para comprometer o sistema (usa Conflicts: sobre verses).
Tenha cuidado se tiver um programa que precisa (e que no deseja desinstalar por alguma
razo) e que ele conflite com alguns dos pacotes acima, assim no ser capaz de fazer uso com-
pleto do harden. Os pacotes do harden no fazem (diretamente) coisa alguma. Eles realizam,
no entanto, conflitos com pacotes conhecidamente inseguros. Desta forma, o sistema de em-
pacotamento da Debian no aprovar a instalao destes pacotes. Por exemplo, quando tenta
instalar um daemon telnet com o harden-servers o apt dir:
Isto dever deixar o administrador mais tranqilo, reconsiderando suas aes que sero
tomadas.
Responder questes passo a passo sobre a segurana requerida pelo seu sistema (usando
InteractiveBastille(8))
Captulo 7
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
significa 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 desen-
volvedores ou organizaes como CERT (http://www.cert.org) que podem afetar muitos
vendedores. Isto , quando os problemas no so especficos do Debian. Existem dois contatos
com o Security Team:
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 dis-
tribuio 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 publica-
dos em security.debian.org e podem ser baixados com o apt (veja Executar uma at-
ualizao de segurana on page 40). Ao mesmo tempo um Debian Security Advisory (DSA)
publicado no web site e enviado para a listas de email incluindo debian-security-announce
(lists.debian.org/debian-security-announce) e bugtraq.
Outras perguntas frequentes do Debian Security Team podems er encontradas em Questes
relacionadas ao time de segurana da Debian on page 176.
Captulo 7. Infraestrutura do Debian Security 114
tipo de problema.
descrio do problema.
descrio da explorao.
descrio da correo.
torna fcil aos usurios Debian ver e tratar com recomendaes publicadas que j tenham
sido resolvidas pelo Debian.
esta informao pode ser usada para a checagem de vulnerabilidades referentes ao CVE e
detectar avisos falsos. (veja O scanner de vulnerabilidade X diz que meu sistema Debian
vulnervel! on page 172).
Usurios que querem procurar por um nome CVE em particular podem usar o sis-
tema de busca disponvel em debian.org para recuperar avisos disponveis (em in-
gls e traduzidos para outros idiomas). Uma busca pode ser feita para um nome
especfico (como aviso CAN-2002-0001 (http://search.debian.org/?q=advisory+
%22CAN-2002-0001%22ps=50o=1m=all)) ou para nomes parciais (como todos os avisos
de 2002 para CAN-2002 (http://search.debian.org/?q=advisory+%22CAN-2002%
22ps=50o=1m=all)). Observe que voc precisa entrar com a palavra advisory junto com
o nome CVE para recuperar apenas avisos de segurana.
Em alguns casos voc pode nO encontrar um CVE em avisos publicados porque:
Ainda no existe uma viso abordando a vulnerabilidade (ele pode ter sido informado
para a security bug (http://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=
security) mas uma correo ainda no ter sido testada a atualizada)
Um aviso foi publicado antes que um CVE fosse assinado para a vulnerabilidade em
questo (procure por uma atualizao no web site)
Uma vez que o Debian normalmente suportado em um grande nmero de arquiteturas, ad-
ministradores algumas ficam admirados se uma dada arquitetura levar mais tempo para re-
ceber atualizaes de segurana. De fato, exceto em raras circunstncias, atualizaes esto
disponveis para todas as arquiteturas ao mesmo tempo.
Enquanto antigamente a tarefa de construir atualizaes de segurana era feita a mo, hoje
no mais (como Anthony Towns descreve em a mail (http://lists.debian.org/
debian-devel-announce/2002/debian-devel-announce-200206/msg00002.
html), enviado para a lista debian-devel-announce em 6 de junho de 2002.)
Pacotes atualizados pelo time de segurana (para security.debian.org:/org/
security.debian.org/queue/unchecked ou ftp://security.debian.org/pub/
SecurityUploadQueue) tem suas assinaturas checada com um patch adequado dentro de
quinze minutos, uma vez isto feito eles so adicionados a lista de auto construtores. Ento, os
pacotes podem ser disponibilizados para todas as arquiteturas num tempo de trinta minutos a
uma hora do momento em que foram atualizados. Porm, atualizaes de segurana so um
pouco diferentes da atualizao normal envidada pelos mantenedores de pacotes, uma vez
que, em alguns casos, antes de ser publicadas, elas precisam esperar at serem testadas, um
aviso ser escrito ou, ainda, precisam esperar uma semana ou mais para evitar publicao da
falhar at que todos os vendedores tenham chance de corrig-la.
Assim, a atualizao de segurana trabalha da seguinte maneira (chamada Accepted-
Autobuilding):
O Security-enable buildds pega o pacote fonte (que tem prioridade sobre os builds nor-
mais), o constri, e envia logs para o time de segurana.
Quando o time de segurana verifica 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:
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.
algum arquiva um bugreport (um tag Security deve ser usada, ou adicionada)
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:
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.
Captulo 7. Infraestrutura do Debian Security 119
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 com-
portamento de um lanamento, assim qualquer alterao feita pode quebrar o sistema de al-
gum. 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 significa 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 modificado ou reescrito. Se isto
acontece pode ser necessrio mover para uma nova verso, mas isto deve sempre ser coorde-
nado 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 verificar
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.
Verifique 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 sigfinifica
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 in-
fraestrutura 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
configurar um chroot (os pacotes pbuilder e debootstrap podem ajudar neste caso).
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/ .
Captulo 7. Infraestrutura do Debian Security 120
Uma vez que o upload foi aceito o pacote ser automaticamente reconstrudo para todas as
arquiteturas e armazenado para verifirao pelo time de segurana.
Uploads aguardando por aceitao e verificao s so acessveis pelo time de segurana. Isto
necessrio uma vez que podem ser correes para problemas de segurana que ainda no
foram descobertos.
SE um mebro do time de segurana aceita um pacote ele ser instalado em security.debian.org
assim como o apropriado <codename>-proposed-updates em ftp-master ou non-US archive.
O aviso de segurana
Os avisos de segurana so escritos e postados pelo time de segurana. Porm, eles certamente
no pensam se um mantenedor pode fornecer o texto para eles (pelo menos uma parte). As
informaes que devem fazer parte de um aviso so descritas em Debian Security Advisories
on page 114.
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 in-
fraestrutura de segurana. Assinatura de pacote uma coisa importante porque evita alter-
aes de pacotes distribudos em mirros. Atualizao automatica de software um recurso
importante mas tambm importante remover ameaas de segurana que poderiam ajudar a
distribuir cavalos de tria e comprometer os sistemas durante as atualizaes. 3 .
Atualmente (maio de 2005) o Debian no fornece assinatura de pacotes para as distribuies
lanadas woody ou sarge (3.0 ou 3.1). Elas no possuem este recurso. Existe uma soluo para
isto que ser fornecida na prxima distribuio (codename etch). Este novo recurso estar
disponvel no apt 0.6 (atualmente disponvel numa distribuio experimental, veja Pacotes ex-
perimentais apt on page 128).
Isto melhor descrito em Strong Distribution HOWTO (http://www.cryptnet.net/fdp/
crypto/strong_distro.html) por V. Alex Brennen.
o arquivo lanado incluir o md5sum do Packages.gz (que contm os md5sum dos pa-
cotes) e ser assinado. A assinatura de uma fonte certificada.
3
Alguns sistemas operacionais j tiveram problemas com atualizaes automticas como Mac OS X Software
Update vulnerabity (http://www.cunap.com/~hardingr/projects/osx/exploit.html). FIXME: proba-
bly the Internet Explorer vulnerability handling certificate chains has an impact on security updates on Microsoft
Windows.
Captulo 7. Infraestrutura do Debian Security 121
Quando o pacote est sendo instalado, ele primeiro baixado, ento o md5sum gerado.
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 certificar-se que o software que est
baixando corresponde aquele distribudo pelo Debian. Isto para desenvolvedores Debian us-
arem em sistemas sem a funcionalidade de uploading dos sistemas tradicionais, ou mirrors que
tem quase tudo mas no como o Debian, ou mirrors que fornecem dados da verso unstable
sem conhecimento dos problemas de segurana.
Este cdigo, renomeado como apt-check-sigs, deve ser usado da seguinte maneira:
# apt-get update
# apt-check-sigs
(...resultados...)
# apt-get dist-upgrade
estar preparado para ignorar o fato que o Debian security updates no assinou os Release
files, e que os Sources files no tem os checksums apropriados no Release file (ainda).
estar preparado para checar se as fontes esto assinadas com as chaves apropriadas.
#!/bin/bash
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 ]
Captulo 7. Infraestrutura do Debian Security 123
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"
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/li
/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
Captulo 7. Infraestrutura do Debian Security 124
(echo "You should take care to ensure that the distributions youre downloadin
"
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
rm -f Release Release.gpg
lynx -reload -dump "${url}/dists/${dist}/Release" >/dev/null 2>&1
wget -q -O Release "${url}/dists/${dist}/Release"
echo "Results"
echo "~~~~~~~"
echo
allokay=true
cd /tmp/apt-release-check
diff <(cat BAD MISSING NOCHECK OK | sort) <(cd /var/lib/apt/lists && find . -t
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 $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 md5sum adiciona um - aps
o sum quando a entrada stdin:
@@ -37,7 +37,7 @@
local LOOKUP="$2"
if [ ! -e "/var/lib/apt/lists/$FILE" ]; then
Captulo 7. Infraestrutura do Debian Security 128
The additional scheme of signing each and every packages allows packages to be checked
when they are no longer referenced by an existing Packages file, and also third-party packages
where no Packages ever existed for them can be also used in Debian but will not be default
scheme.
Este esquema de assinatura pode ser implementado usando debsig-verify e debsigs.
Estes dois pacotes podem assinar e verificar assinaturas embutidas em pacotes .deb. Debian j
tem a capacidade de fazer sito, mas a implementao de policiamento e ferramentas no ser
iniciada at as releases posteriores ao woody.
As ltimas verses do dpkg (a partir de 1.9.21) incorporam um patch (http:
//lists.debian.org/debian-dpkg/2001/debian-dpkg-200103/msg00024.html)
que fornece esta funcionalidade to logo debsig-verify seja instalado.
NOTA: Atualmente /etc/dpkg/dpkg.cfg trabalha com no-debsig como padro.
NOTA 2: Signatures from developers are currently stripped when they enter off the package
archive since the currently preferred method is release checks as described previously.
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 in-
clui a ferramenta apt-key para adicionar novas chaves ao chaveiro do apt, o qual por padro
inclui apenas o arquivo de assinatura de chaves atual do Debian.
Se quer testar este recurso voc precisa adicionar a distribuio experimental ao seu
sources.list e rodar
Estas alteraes so baseadas no patch para apt (disponvel em Bug #203741 (http://
bugs.debian.org/cgi-bin/bugreport.cgi?bug=203741)) o qual fornece esta imple-
mentao.
Captulo 7. Infraestrutura do Debian Security 129
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 confirmao ser requerido
pelo apt-get. Isto evitado fornecendo Release e Release.gpg em non-Debian sources. O ar-
quivo Release pode ser gerado com apt-ftparchive (disponvel em apt-utils 0.5.0 e poste-
riores), 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
Captulo 7. Infraestrutura do Debian Security 130
131
Captulo 8
As ferramentas fornecidas pelo Debian para realizar verificao remota de vulnerabilidade so:
1
nessus
raccess
whisker
bass (non-free)
satan (non-free)
1
Algumas delas so fornecidas na instalao do pacote harden-remoteaudit.
Captulo 8. Ferramentas de segurana no Debian 132
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 verificao de vulnerabilidades remotas para a grande maioria de sistemas in-
cluindo 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 desatualiza-
dos (veja bug #183524 (http://bugs.debian.org/183524)). No difcil portar os pa-
cotes disponveis no unstable para woody, mas se voc encontrar dificuldades, pode pen-
sar em usar os pacotes portados fornecidos por um dos co-mantenedores e disponveis em
http://people.debian.org/~jfs/nessus/ (essas verses podem no estar atualizadas
como as verses disponveis no unstable).
Whisker um varredor de verificao 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 modificado para fornecer novas
informaes.
Bass (Bulk Auditing Security Scanner - BULK Varreador de auditoria de segurana) e SATAN
(Security Auditing Tool for Analyzing Networks - Ferramenta de auditoria de segurana para
anlise de redes) devem ser na opinio da maioria das pessoas, mais como programas de
provas de conceitos do que como ferramentas para serem usadas em auditorias. Ambas
so bastantes antigas e no so mais atualizadas. Contudo, SATAN foi a primeira ferramenta
para fornecer avaliao das vulnerabilidades de maneira simples (atravs de uma GUI) e Bass
ainda uma ferramenta de avaliao de alta performace.
Debian fornece algumas ferramentas usadas para a varredura remota de hosts (mas no para
verificao de vulnerabilidades). Estas ferramentas so, em alguns casos, usadas pelos ver-
ificadores 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
Captulo 8. Ferramentas de segurana no Debian 133
fragrouter
Enquanto o queso e o xprobe fornecem apenas deteco remota de sistema operacional (us-
ando TCP/IP fingerprinting), nmap e knocker fazem, ambos, deteco de sistema operacional
e varreadura de portas nos hosts remotos. Por outro lado, hping2 e icmpush podem ser usa-
dos nas tcnicas de ataque ICMP remoto.
Desenvolvido especificamente 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: Verificar Bug #153117 (http://bugs.debian.org/153117) (ITP fragrouter) para
ver se est includo.
FIXME adicionar informaes baseadas em Debian Linux Laptop for Road Warriors (http://
www.giac.org/practical/gcux/Stephanie_Thomas_GCUX.pdf) que descreve como
usar Debian e um laptop para varrer redes wireless (Link no existe mais).
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 configurado, que processos esto rodando no hosts,
etc..
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:
flawfinder
rats
splint
Captulo 8. Ferramentas de segurana no Debian 134
Uma rede privada virtual (VPN - Virtual Private Network) um grupo de dois ou mais sis-
temas 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 criptografia, autenti-
cao forte de usurios ou hosts remotos, e mtodos para esconder a topologia da rede privada.
Debian fornece a maioria dos pacotes para configurar uma rede privada virtual criptografada:
vtun
tunnelv
cipe
vpnd
tinc
secvpn
pptpd
openswan (http://www.openswan.org/)
FIXME: Atualizar as informaes aqui j que foram escritas com o FreeSWAN em mente. Veri-
ficar Bug #237764 e a mensagem: <200412101215.04040.rmayr@debian.org>.
O pacote OpenSWAN provavelmente a melhor escolha, desde que ele promete interoperar
com quase tudo que usa o protocolo IP seguro, IPSec (RFC 2411). Entretanto, os outros pacotes
listados acima podem tambm ajud-lo a ter um tnel seguro rapidamente. O protocolo de
tunelamento ponto a ponto (PPTP) um protocolo para VPN proprietrio da Microsoft.
suportado no Linux, mas conhecido por ter srios problemas de segurana.
Para mais informaes veja VPN-Masquerade HOWTO (http://www.tldp.org/HOWTO/
VPN-Masquerade-HOWTO.html) (cobrindo IPSec e PPTP), VPN HOWTO (http://www.
tldp.org/HOWTO/VPN-HOWTO.html) (cobrindo PPP sobre SSH), e Cipe mini-HOWTO
(http://www.tldp.org/HOWTO/mini/Cipe+Masq.html), e PPP and SSH mini-HOWTO
(http://www.tldp.org/HOWTO/mini/ppp-ssh/index.html).
Tambm vale a pena verificar o Yavipin (http://yavipin.sourceforge.net/), mas este
programa ainda no possue um pacote Debian disponvel.
Captulo 8. Ferramentas de segurana no Debian 135
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 criptografia da Microsoft com o servidor fornecido pelo
pacote ppp, veja o seguinte trecho do FAQ:
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 criptografia no ppptd fora o armazenamento de senhas de usurios em texto
limpo, e o protocolo MS-CHAPv2 contm furos de segurana conhecidos (http://mopo.
informatik.uni-freiburg.de/pptp_mschapv2/).
Infra-estrutura de Chave Pblica (PKI - Public Key Infrastructure) uma arquitetura de segu-
rana introduzida para fornecer um nvel adicional de confiana para trocas de informao em
redes inseguras. Utiliza os conceitos de chaves de criptografia pblica e privada para verificar
a identidade de um remetente (assinatura) e para assegurar a privacidade (criptografia).
Quando considerar uma PKI, voc encontrar uma variedade de situaes:
uma Autoridade Certificadora (CA - Certificate Authority) que pode distribuir e verificar
certificados, e que pode trabalhar sobre uma dada hierarquia.
um Banco de Dados (?) para manter Listas de Revogao de Certificados (CRL - Certifi-
cate Revocation Lists)
dispositivos que interagem com a CA a fim de imprimir em smart cards/ tokens USB ou
qualquer outra forma para armazenar seguramente os certificados.
aplicaes aptas a utilizarem certificados que podem usar certificados fornecidos por
uma CA para realizar uma comunicao criptografada e verificar certificados dados con-
tra CRL (para solues de autenticao e assinatura de uma nica vez completa)
Captulo 8. Ferramentas de segurana no Debian 136
um console de gerenciamento a partir do qual tudo isso pode ser corretamente usado
(gerao de certificados, 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 certificados), OpenLDAP (como um diretrio
para manter os certificados), gnupg e openswan (com suporte para o padro X.509). En-
tretanto, como na verso Woody (Debian 3.0), Debian no tem nenhuma das autoridades
certificadoras disponveis gratuitamente como pyCA, OpenCA (http://www.openca.org)
ou os exemplos de CA do OpenSSL. Para mais informaes, leia o livro Open PKI (http:
//ospkibook.sourceforge.net/).
Debian fornece alguns certificados SSL com a distribuio de modo que eles podem ser in-
stalados localmente. Eles so encontrados no pacote ca-certificates, que fornece um
repositrio central dos certificados que foram submetidos para o Debian e aprovados (ou seja,
verificados) pelo mantenedor do pacote e utis para qualquer aplicao OpenSSL que verifica
conexes SSL.
FIXME: leia o debian-devel para verificar se algo foi adicionado a ele.
blackhole-qmail um filtro de spam para o Qmail que foi construdo com suporte para
o Clamav.
Alguns outros projetos anti-vrus livres que podem ser includos numa futura verso Debian
GNU/Linux:
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: Verificar se scannerdaemon o mesmo que o daemon varredor open anti-virus (ver
ITPs).
Por outro lado, Debian nunca ir fornecer softwares anti-vrus comerciais como: Panda
Antivirus, NAI Netshield, Sophos Sweep (http://www.sophos.com/), TrendMicro In-
terscan (http://www.antivirus.com), ou RAV (http://www.ravantivirus.com).
Para mais apontadores veja em Linux antivirus software mini-FAQ (http://www.
computer-networking.de/~link/security/av-linux_e.txt). Isto no signifca que
estes softwares possam ser instalados corretamente em um sistema Debian.
Para mais informaes de como configurar um sistema de deteco de vrus, veja o artigo
de Dave Jones Building an E-mail Virus Detection System for Your Network (http://www.
linuxjournal.com/article.php?sid=4882).
muito comum, atualmente, assinar digitalmente (e algumas vezes criptografar) e-mails. Voc
pode, por exemplo, verificar que muitas pessoas participando em listas de discusso assinam
seus e-mails. Assinaturas de chave pblica so atualmente o nico mecanismo para verificar
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 pre-
cisar usar a verso bleeding edge, sylpheed-claws.
gnus, que quando instalado com o pacote mailcrypt , uma interface emacs interface
para o gnupg.
Captulo 8. Ferramentas de segurana no Debian 139
Servidores de chave permitem voc fazer o download de chaves pblicas publicadas que po-
dem ento verificar 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 configurar gnupg para usar o servidor de chaves acima, edite o
arquivo ~/.gnupg/options e adicione a seguinte linha: 3
keyserver wwwkeys.pgp.net
A maioria dos servidores de chaves esto ligados, logo quando uma chave pblica adicionada
em um servidor, esta propagada para todos os outros servidores de chaves pblicas. Exis-
tem tambm um pacote Debian debian-keyring, que fornece todas as chaves pblicas dos
desenvolvedores Debian. Os chaveiros do gnupg so instalados em /usr/share/keyrings
/.
Para mais informaes:
3
Para mais exemplos de como configurar o gnupg, veja /usr/share/doc/mutt/examples/gpg.rc.
Captulo 8. Ferramentas de segurana no Debian 140
141
Captulo 9
O Debian oferece uma ferramenta especfica para verificar se o sistema precisa de atualizao
(veja o programa Tiger abaixo), mas muitos usurios preferem verificar manualmente se as
atualizaes de segurana esto disponveis.
Se voc configurou o seu sistema como descrito em Executar uma atualizao de segurana
on page 40 voc s precisa fazer:
# apt-get update
# apt-get upgrade -s
O primeiro comando baixa a lista de pacotes disponveis nos sources de pacotes configurados.
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 not upgraded.
Captulo 9. Antes do comprometimento do sistema 142
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 verifique quais Aler-
tas de Segurana do Debian foram publicados e esto relacionados com esses pacotes. Neste
caso, os alertas relacionados so DSA-233 (http://www.debian.org/security/2003/
dsa-233) (para cvs) e DSA-232 (http://www.debian.org/security/2003/dsa-232)
(para cupsys).
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 configurado para enviar mails para o administrador do sistema.
Note que voc pode querer verificar a verso da distribuio, como descrito em Checando
releases das distribuies on page 121, se voc pretende atualizar automaticamente o seu sis-
tema (mesmo somente baixando pacotes). Caso contrrio voc no ter certeza que os pacotes
baixados realmente so de origem confivel.
Se voc est procurando por uma ferramenta que rapidamente verifique e relate vulnerabil-
idades 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 segu-
rana. O pacote do Debian GNU/Linux tem melhorias adicionais voltadas para a distribuio
Debian, provendo mais funcionalidade do que os scripts Tiger fornecidos por TAMU (ou at
TARA, uma verso do tiger distribuida por ARSC). Veja o arquivo README.Debian e a pgina
de manual tiger(8) para mais informaes.
Uma dessas melhorias o script deb_checkadvisories. Este script recebe uma lista de
DSAs (Alertas de Segurana do Debian) e verifica 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 verificar 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.
Captulo 9. Antes do comprometimento do sistema 143
Atualmente esse problema resolvido fazendo novas verses do pacote Tiger, mas o mantene-
dor 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 verificao. 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 confirmar vulnerabilidades seria bem-vindo. Envie-o como um
relatrio de bug para o pacote tiger.
Uma vez instalado, a verificao mencionada definida pela configurao padro do programa
(veja /etc/tiger/cronrc):
Existe uma verificao 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:
Se voc estiver rodando o Debian estvel e adicionar a linha de fonte apt security.debian.org
em /etc/apt/sources.list (como descrito em Executar uma atualizao de segurana
on page 40), este script ser capaz de informar se existem pacotes novos que devem ser in-
stalados. Desde que somente os pacotes com configuraes modificadas 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 verificaes em um cron job (no arquivo de
configurao) e no tigercron poder enviar um email (para o endereo especificado na dire-
tiva Tiger_Mail_RCPT em /etc/tiger/tigerrc) com os novos pacotes:
Ao menos que voc tenha tempo para aplicar patches de segurana toda vez que uma vul-
nerabilidade descoberta, voc no deve usar a verso instvel do Debian para sistemas em
produo. A principal razo para isto que no h atualizaes de segurana para a verso
unstable (veja Como a segurana tratada na testing e unstable? on page 178).
O fato que algumas questes relacionadas segurana podem surgir na distribuio instvel
e no na stable. Isto porque novas funcionalidades so constantemente adicionadas s apli-
caes, 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). Em-
bora 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.
Se voc estiver utilizando uma verso em testing, existem algumas questes relacionadas
disponibilidade das atualizaes de segurana que devem ser levadas em conta:
Se nenhum (novo) bug detectado na verso unstable do pacote, ele passa para a ver-
so em testing depois de algum tempo. Este tempo geralmente de dez dias, embora
Captulo 9. Antes do comprometimento do sistema 145
Configurar 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 fixar 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
A opo -y faz com que o apt assuma sim para todos os prompts que aparecero
durante a atualizao. Em alguns casos, melhor voc usar a opo --trivial-only
em vez de --assume-yes (equivalente a -y). 1
Configure o cron para que o debconf no faa nenhuma pergunta durante as atualiza-
es, funcionando de forma no-interativa. 2
1
Voc tambm pode optar por usar a opo --quiet (-q) para diminuir a quantidade de informaes de sada
do apt-get. Caso nenhum pacote esteja sendo instalado, nenhuma informao mostrada na tela.
2
Note que alguns pacotes podem no usar o debconf e a atualizaes iro parar para que o usurio entre com
alguma configurao.
Captulo 9. Antes do comprometimento do sistema 146
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 finalizar estas tarefas, o sistema deve ser configurado apropriadamente para fazer o
download das atualizaes de segurana como discutido no Executar uma atualizao de se-
gurana on page 40.
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 atualiza-
dos para a verso em testing ou unstable, voc pode utilizar o recurso de pinning assim como
a opo --target-release do apt para atualizar somente aqueles pacotes que devem ser
atualizados. 3
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 sys-
log) 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.
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 sis-
temas que estejam na sua rede privada. Este tipo de defesa importante se o sistema for alta-
mente 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 in-
truso ir tanto gerar um log do evento com o syslogd enviar um e-mail para o super-usurio
(o destinatrio geralmente configurvel). Um administrador precisa configurar 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 mecani-
mos tcnicos para implementar essa poltica sejam viveis.
Uma fonte interessante de informaes CERTs Intrusion Detection Checklist (http://www.
cert.org/tech_tips/intruder_detection_checklist.html)
olhos na rede. Para instal-lo basta usar o apt-get install snort, seguir as pergun-
tas, e verificar o log. Para um arcabouo de segurana um pouco mais amplo, veja Prelude
(http://www.prelude-ids.org).
O pacote snort do Debian tem diversas configuraes 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 verificaes especficas
para estes servios.
Nota: Os pacotes do snort disponveis no woody no esto to atualizados e po-
dem at estar bugados (http://lists.debian.org/debian-devel/2003/
debian-devel-200308/msg02105.html), voc pode obter um backport (e assinatura) do
Snort fornecido pelo mantenedor do pacote em http://people.debian.org/~ssmeenk/
snort-stable-i386/.
Existem outras ferramentas mais simples que podem ser utilizadas para detectar ataques em
rede. O portsentry um pacote interessante que pode ajudar a descobrir varreduras contra
seus hosts. Outras ferramentas como ippl ou iplogger tambm podem detectar alguns
ataques IP (TCP e ICMP), mesmo que eles no forneam os tipos de tcnicas que o snort
fornece.
Voc pode testar qualquer uma dessas ferramentas com o pacote do Debian idswakeup, um
script em shell que gera alarmes falsos e inclue muitas assinaturas de ataques comuns.
instalar Trojans, ou criar usurios. Tais eventos podem ser detectados com os programas para
verificao de integridade do arquivo.
Existem duas estratgias para defender seu sistema de rootkits LKM, a defesa pr-ativa e a
reativa. O trabalho de deteco pode ser simples e fcil, ou difcil e cansativo, dependendo da
estratgia escolhida.
Defesa pr-ativa
A vantagem para este tipo defesa que ela previne qualquer dano ao sistema logo de incio.
Uma estratgia para esse tipo de defesa conhecida como pegar eles primeiro, que carregar na
memria um mdulo LKM designado para proteger o sistema de outros LKMs maliciosos. A
segunda estratgia remover algumas funcionalidades do prprio kernel. Por exemplo, voc
pode desabilitar a opo de carrergar mdulos no kernel. Entretanto, note que existem rootkits
que podem funcionar at mesmo neste caso. Alguns deles podem mexer com o /dev/kmem
(memria do kernel) diretamente para torn-los indetectveis.
O Debian GNU/Linux tem poucos pacotes que podem ser usados para montar uma defesa
pr-ativa:
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 configurao do kernel. Para
desabilitar este suporte, somente altere o CONFIG_MODULES=n durante o estgio de config-
urao da construo do seu kernel, ou no arquivo .config. Isto ir prevenir os rootkits LKM,
mas voc ir perder esta funcionalidade poderosa no kernel do Linux. Desabilitar a opo para
carregar mdulos no kernel pode muitas vezes sobrecarregar o kernel. Neste caso, melhor
deixar o kernel com o suporte.
Defesa reativa
A vantagem da defesa reativa que ela no consome os recursos do sistema. Ela trabalha
comparando a tabela de chamadas ao sistema com uma cpia autntica conhecida, o arquivo
em disco System.map. Claro que a defesa reativa somente notificar 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 pro-
grama Chkrootkit (http://www.chkrootkit.org) verifica por sinais de diversos rootkits
conhecidos no sistema alvo, mas isto no deve ser um teste final.
Uma outra ferramenta auxiliar o KSTAT (http://www.s0ftpj.org/en/site.html)
(Kernel Security Therapy Anti Trolls) feita pelo grupo S0ftproject. O KSTAT busca na rea de
memria do kernel (/dev/kmem) informaes sobre o host alvo para ajudar o administrador
do sistema a encontrar e remover LKMs maliciosos.
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.
5
Existem mais de 28 funcionalidades includas: CAP_BSET, CAP_CHOWN, CAP_FOWNER, CAP_FSETID,
CAP_FS_MASK, CAP_FULL_SET, CAP_INIT_EFF_SET, CAP_INIT_INH_SET, CAP_IPC_LOCK,
CAP_IPC_OWNER, CAP_KILL, CAP_LEASE, CAP_LINUX_IMMUTABLE, CAP_MKNOD, CAP_NET_ADMIN,
CAP_NET_BIND_SERVICE, CAP_NET_RAW, CAP_SETGID, CAP_SETPCAP, CAP_SETUID, CAP_SYS_ADMIN,
CAP_SYS_BOOT, CAP_SYS_CHROOT, CAP_SYS_MODULE, CAP_SYS_NICE, CAP_SYS_PACCT, CAP_SYS_PTRACE,
CAP_SYS_RAWIO, CAP_SYS_RESOURCE, CAP_SYS_TIME, and CAP_SYS_TTY_CONFIG. Todas elas podem ser
desativadas para melhorar a segurana do seu kernel.
6
Voc no precisa instalar o lcap para fazer isto, mas melhor do que configurar o /proc/sys/kernel
/cap-bound na mo.
Captulo 9. Antes do comprometimento do sistema 151
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 verificao de retina ou carto de
criptografia (por que usei a conjuno OU em vez de E?).
Gravao fascista de logs. Eu prefiro 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 confivel e as informaes no podem ser sobrescritas ou
apagadas.
Distribuio de CD. Essa idia muito simples de se realizar e oferece uma boa se-
gurana. Crie uma distribuio Debian segura, com as regras de firewall 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. im-
possvel para um intruso ter acesso de leitura/escrita no sistema, e qualquer alterao
feita pelo intruso pode ser desfeita em uma reinicilizao do sistema.
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.
ria 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 Makefile 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 flag 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 pa-
cotes, 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 desati-
var 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 fios, 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.
syslog-ng, til para enviar logs do honeypot para um servidor syslog remoto.
snort, para configurar 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).
Captulo 9. Antes do comprometimento do sistema 153
Claro que todos os daemons sero usados por seu servidor honeypot falso (ento no
assegurar o honeypot).
The Deception Toolkit, que utiliza um sistema de induo ao erro para reagir aos ataques.
Homepage: Deception Toolkit (http://all.net/dtk/dtk.html)
Voc pode ler mais sobre como construir honeypots no excelente artigo de Lanze
Spitzner To Build a Honeypot (http://www.net-security.org/text/articles/
spitzner/honeypot.shtml) (das sries Know your Enemy), ou de David Raikow
Building your own honeypot (http://www.zdnetindia.com/techzone/resources/
security/stories/7601.htm). O Projeto Honeynet (http://project.honeynet.
org/) tambm fornece informaes valiosas relacionadas construo de honeypots e audito-
ria dos ataques feitos nelas.
Captulo 9. Antes do comprometimento do sistema 154
155
Captulo 10
Depois do comprometimento do
sistema (resposta a incidentes)
Se voc estiver fisicamente presente quando o ataque ocorrer, sua primeira obrigao tirar
a mquina da rede desconectando o cabo de rede da placa (se isso no for influenciar 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 de-
sconectar 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 recuper-
ao do Debian para inicializar o sistema, mas voc pode utilizar o shell fornecido pelos discos
de instalao (use Alt+F2 para acess-lo) para analisar o sistema. 1
O mtodo mais recomendado para restaurar um sistema comprometido utilizar um CDROM
com todas as ferramentas (e mdulos do kernel) necessrias para acessar o sistema. Voc
pode utilizar o pacote mkinitrd-cd para compilar tal CDROM2 . Voc tambm pode achar
o CDROM FIRE (http://biatchux.dmzs.com/) til, j que um live CDROM com ferra-
mentas 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
1
Se voc for aventureiro, voc pode efetuar o logon no sistema e salvar as informaes de todos os processos em
execuo (vrias dessas informaes esto em /proc/nnn/). possvel pegar todo cdigo executvel da memria,
mesmo se o invasor tiver excludo os arquivos executveis do disco. Ento puxe o cabo de fora.
2
. De fato, esta a ferramenta usada para compilar os CDROMs para o projeto Gibraltar (http://www.
gibraltar.at/) (um firewall em um live-CD baseado na distribuio Debian).
Captulo 10. Depois do comprometimento do sistema (resposta a incidentes) 156
especficos 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
verificar tudo: firewall, integridade de arquivos, host de log, arquivos de log entre outros. Para
mais informaes do que fazer siga um guia, veja Sans Incident Handling Guide (http://
www.sans.org/y2k/DDoS.htm) ou CERTs Steps for Recovering from a UNIX or NT System
Compromise (http://www.cert.org/tech_tips/root_compromise.html).
Algumas perguntas freqentes de como lidar com um sistema Debian GNU/Linux esto
disponveis em Meu sistema vulnervel! (Voc tem certeza?) on page 172.
Lembre-se que se voc tem certeza de que o sistema foi comprometido voc no pode confiar
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 insta-
lao 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 sis-
tema comprometido est off-line.
Se voc tiver certeza de que um mdulo do kernel com trojan comprometeu o sistema, voc
pode usar a imagem do kernel do CDROM do Debian no modo rescue. Inicie o GNU/Linux no
modo single user para que nenhum outro processo com trojan seja executado depois do kernel.
O CERT (Computer and Emergency Response Team) uma organizao que pode te ajudar
a recuperar o sistema comprometido. Existem CERTs espalhados por todo o mundo 3 e voc
3
Esta a lista de alguns CERTS, para uma lista completa veja o FIRST Member Team information
(http://www.first.org/about/organization/teams/index.html) (FIRST significa Forum of Incident
Response and Security Teams): AusCERT (http://www.auscert.org.au) (Austrlia), UNAM-CERT (http:
//www.unam-cert.unam.mx/) (Mxico) CERT-Funet (http://www.cert.funet.fi) (Finlndia), DFN-CERT
(http://www.dfn-cert.de) (Alemanha), RUS-CERT (http://cert.uni-stuttgart.de/) (Alemanha),
CERT-IT (http://idea.sec.dsi.unim.it) (Itlia), JPCERT/CC (http://www.jpcert.or.jp/) (Japo),
UNINETT CERT (http://cert.uninett.no) (Noruega), HR-CERT (http://www.cert.hr) (Crocia) CERT
Polskay (http://www.cert.pl) (Polnia), RU-CERT (http://www.cert.ru) (Rssia), SI-CERT (http://
www.arnes.si/si-cert/) (Eslovnia) IRIS-CERT (http://www.rediris.es/cert/) (Espanha), SWITCH-
CERT (http://www.switch.ch/cert/) (Suia), TWCERT/CC (http://www.cert.org.tw) (Taiwan), e
CERT/CC (http://www.cert.org) (US).
Captulo 10. Depois do comprometimento do sistema (resposta a incidentes) 157
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 out-
ros a determinar se uma vulnerabilidade est disseminada na Internet e indicar que no-
vas ferramentas de combate ao worm esto sendo utilizadas. Estas informaes so us-
adas para fornecer comunidade da Internet alertas sobre as atividades atuais dos inci-
dentes de segurana (http://www.cert.org/current/), e para publicar notas sobre in-
cidentes (http://www.cert.org/incident_notes/) e at mesmo alertas de segurana
(http://www.cert.org/advisories/). Para informaes mais detalhadas de como (e
porqu) relatar um incidente leia o CERTs Incident Reporting Guidelines (http://www.
cert.org/tech_tips/incident_reporting.html).
Voc pode usar mecanismos menos formais se precisar de ajuda na recuperao de um sis-
tema comprometido ou quiser discutir informaes do incidente. Estes mecanismos incluem a
lista de discusso sobre incidentes (http://marc.theaimsgroup.com/?l=incidents) e
a lista de discusso sobre intrusos (http://marc.theaimsgroup.com/?l=intrusions).
Se voc deseja recolher mais informaes do ataque, o pacote tct (O Coroners Toolkit de Dan
Farmer e Wietse Venema) contm utilitrios que realizam uma anlise pstuma do sistema.
O tct permite que o usurio colete informaes sobre arquivos excludos, processos em exe-
cuo e muito mais. Veja a documentao para mais informaes. Voc tambm pode conferir
os pacotes similares Sleuthkit and Autopsy (http://www.sleuthkit.org/) desenvolvidos
por Brian Carrier.
Algumas outras ferramentas que podem ser usadas para anlise forense tambm so forneci-
das pela distribuio Debian:
Fenris.
Strace.
Ltrace.
Qualquer um desses pacotes podem ser usados para analisar binrios anmalos (como os back-
doors) para determinar como eles funcionam e o que eles fazem no sistema. Outras ferramen-
tas 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 privil-
gios). Caso contrrio seu prprio sistema pode ser comprometido tambm!
Captulo 10. Depois do comprometimento do sistema (resposta a incidentes) 158
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 file system restored on a separate partition.
FIXME add pointers to forensic analysis papers (like the Honeynets reverse challenge or David
Dittirchs papers (http://staff.washington.edu/dittrich/).
159
Captulo 11
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.
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 insta-
lao bsica e do sistema de gerenciamento de pacotes. A maioria das distribuies compar-
1
Neste exemplo, baseado nos dados da Securityfocus, pode ser visto que o Windows NT mais seguro que
o Linux, o que uma afirmao questionvel. Apesar de tudo, as distribuies do Linux geralmente oferecem
mais aplicaes comparadas ao Windows NT da Microsoft. Estas situaes de contagem de vulnerabilidades so
melhor descritas em Why Open Source Software / Free Software (OSS/FS)? Look at the Numbers! (http://www.
dwheeler.com/oss_fs_why.html#security) por David A. Wheeler
Captulo 11. Questes feitas com freqncia (FAQ) 160
tilham muitos dos aplicativos, com a diferena bsica nas verses em que estes aplicativos so
oferecidos com o lanamento da distribuio estvel. Por exemplo, o kernel, Bind, Apache,
OpenSSH, XFree, gcc, zlib, etc. so todos idnticos entre as distribuies de Linux.
Por exemplo, a Red Hat foi infeliz e ofereceu quando 1.2.3 era a atual, que em seguida foram
encontrados problemas de segurana. Na Debian, por outro lado, foi sortuda e forneceu 1.2.4
que j possui a correo da falha. Este foi o caso no grande problema do rpc.statd (http:
//www.cert.org/advisories/CA-2000-17.html) diversos anos atrs.
Existe muita colaborao entre os respectivos times de segurana das maiores distribuies
Linux. Atualizaes de segurana conhecidas so raramente, se existirem, deixadas de lado
por desenvolvedores de uma distribuio. O conhecimento de uma vulnerabilidade de segu-
rana nunca mantida isolada do conhecimento de desenvolvedores de outra distribuio,
pois as correes so normalmente coordenadas com o autor ou atravs do CERT (http:
//www.cert.org). Como um resultado, as atualizaes necessrias de segurana so geral-
mente 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 Ferra-
mentas de segurana no Debian on page 131.
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 dis-
tribuidores e vendedores. Verifique a seo Especfico da Debian: yes/no no topo de cada
aviso de segurana (DSA).
Um dos grandes potenciais da Debian a grande variedade de escolhas disponveis entre pa-
cotes que oferecem a mesma funcionalidade (servidores de DNS, servidores de e-mail, servi-
dores ftp, servidores web, etc.). Isto pode confundir o administrador novato ao tentar deter-
minar 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 pare-
cidos:
O pacote est maduro? o nmero de verso realmente no mostra sua maturidade. Tente
analisar o histrico de atualizaes do software.
Captulo 11. Questes feitas com freqncia (FAQ) 162
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?
Voc encontrar informaes neste documento sobre como tornar alguns servios (FTP, Bind)
mais seguros na Debian GNU/Linux. Para servios no cobertos aqui, verifique a documen-
tao 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 dis-
tribuio de Linux (ou Unix, nesta importncia).
Se no gosta que os usurios que se conectam ao seu servio de POP3 recebam informaes
sobre seu sistema (por exemplo), voc pode querer remover (ou alterar) o banner que este
servio mostra para os usurios. 3 Fazer isto depende do programa que est executando para
um determinado servio. Por exemplo, no postfix, voc poder ajustar o banner SMTP no
arquivo /etc/postfix/main.cf:
No entanto, os usurios da Debian podem ter confiana no fato que que cdigo estvel tem
uma audincia ampla e a maioria dos problemas foram descobertos durante o uso. A insta-
lao 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 certifica que o problema pode ser rastreado at o desen-
volvedor. O projeto Debian no tem examinado isto levemente.
claro, voc pode alterar as permisses padres da Debian em seu sistema. A poltica atual
relacionada com arquivos de log e configurao que eles sejam lidos por todos a no ser que
eles contenham informaes sensveis.
Tenha cuidado se fizer 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 configurao 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: Verificar se isto est escrito na Poltica. Alguns pacotes (i.e. daemons de ftp) parecem
forar permisses diferentes.
Como fato de importncia, as mesmas questes so vlidas para qualquer outro usurio. Como
a instalao da Debian no coloca qualquer arquivo sob aquele diretrio, no existe informaes
sensveis a serem protegidas l. Se voc sentir que estas permisses so muito largas para
seu sistema, considere altera-las para 750. Para os usurios, leia Limitando acesso a outras
informaes de usurios on page 57.
A lista de discusso Debian security thread (http://lists.debian.org/
debian-devel/2000/debian-devel-200011/msg00783.html) tem mais sobre este
assunto.
O nvel de registro padro do console para qualquer kernel 7, o que significa que qualquer
mensagem que tem prioridade menor aparecer no console. Normalmente, os firewalls (a
regra LOG) e algumas outras ferramentas de segurana registram eventos em uma prioridade
menor que esta, e assim, so enviadas diretamente para a console.
Para reduzir as mensagens enviadas para a console, voc pode usar a opo dmesg (-n, veja
dmesg(8)), que examina e controla o buffer do kernel. Para alterar isto aps a prxima reini-
cializao, 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:
Sim e no. A Debian vem com alguns usurios pr-definidos (identificao de usurios (UID)
< 99 como descritos na Debian Policy (http://www.debian.org/doc/debian-policy/)
ou /usr/share/doc/base-passwd/README) para facilitar a instalao de alguns servios
que requerem que sejam executados sob um usurio/UID apropriado. Se no tem a inteno
de instalar novos servios, voc pode seguramente remover estes usurios que no so donos
de qualquer arquivo em seu sistema e no executam qualquer servio. Em qualquer caso, o
comportamento padro que UIDs de 0 a 99 so reservadas para a Debian, e UIDs de 100 a
999 so criados por pacotes na instalao (e apagados quando o pacote e suas configuraes
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
suficiente para entrar atravs de alguns diretrios sensveis):
Captulo 11. Questes feitas com freqncia (FAQ) 165
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:
sys: mesmo que bin. No entanto. /dev/vcs* e /var/spool/cups tem como donos o
grupo sys.
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
mail: Caixas de correios em /var/mail tem como dono o grupo mail, como explicado
pela policy. O usurio e grupo tambm so usados para outros propsitos por vrios
MTAs.
news: Vrios servidores de notcias e outros programas associados (tal como o suck)
utilizam usurio e grupo news de vrias formas. Os arquivos no spool de notcias tem
freqentemente como dono o usurio e grupo news. Os programas tais como inews que
so usados para postar notcias tipicamente usam SETGID para o grupo news.
uucp: O usurio e grupo uucp so usados pelo subsistema UUCP. Ele dono do spool e
arquivos de configurao. Usurios no grupo uucp podem executar o uucico.
proxy: Assim como o daemon, este usurio e grupo so usados por alguns daemons (es-
pecificamente, daemons de proxy) que precisam de identificao 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.
Captulo 11. Questes feitas com freqncia (FAQ) 166
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.
list: Os arquivos de listas de discusses e dados tem como dono este usurio e grupo. Al-
guns 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 especificada
na inicializao.
gnats.
nobody, nogroup: Daemons que no tem necessidade de serem donos de quaisquer ar-
quivos so executados sob o usurio nobody e grupo nogroup. Assim, nenhum arquivo
existente no sistema devem ter como donos este usurio ou 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.
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 recon-
figurar o modem, discar para qualquer lugar, etc.
Captulo 11. Questes feitas com freqncia (FAQ) 167
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 reconfigurar 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.
floppy: 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 fita.
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 pre-
cisam 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.
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.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; as-
sim 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 di-
retrio. 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 compartilha-
dos.
Voc pode, no entanto, alterar este comportamento modificando o /etc/adduser.conf. Al-
tere a varivel USERGROUPS para no, assim um novo grupo no ser criado quando o novo
usurio for criado. Tambm, altere USERS_GID para a identificao de grupo a que os usurios
pertencem.
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 dae-
mons de servio on page 33) ou remover o pacote usando o pacote equivs.
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
Captulo 11. Questes feitas com freqncia (FAQ) 169
usurio precisa do RPC para funcionar adequadamente. Em qualquer caso, ele mais usado
pelo NFS. Se no precisar dele, remova-o como explicado na seo Tornando servios RPC
mais seguros on page 102.
Em verses do pacote portmap maiores que a 5-5 voc poder ter o portmapper instalado mas
escutando somente em localhost (modificando o /etc/default/portmap)
O servio ident um servio de autenticao que identifica o dono de uma conexo TCP/IP
para o servidor remoto que est aceitando a conexo. Tipicamente, quando um usurio se
conecta ao servidor remoto, o inetd do sistema remoto envia uma requisio porta 113
para procurar informaes sobre o dono. freqentemente usada em servidores de e-mails,
FTP e IRC, e tambm podem ser usadas para descobrir que usurio em seu sistema local est
atacando um sistema remoto.
Existem discusses extensivas relacionadas a segurana do identd (Veja mailing list archives
(http://lists.debian.org/debian-security/2001/debian-security-200108/
msg00297.html)). Em geral, o identd mais til em um sistema multi-usurio que em uma
estao de trabalho simples. Se no tiver um uso para ele, desative-o, assim voc no estar
deixando um servio aberto para o mundo l fora. Se decidir fazer um firewall na porta do
ident, por favor use a poltica reject e no a deny, caso contrrio uma conexo para o servidor
usando o identd travar at que o tempo limite expire (veja questes relacionadas a reject ou
deny (http://logi.cc/linux/reject_or_deny.php3)).
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 com-
portamento 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.
Captulo 11. Questes feitas com freqncia (FAQ) 170
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. Verifique se esto sendo
abertas pelo inetd (veja Desabilitando o inetd ou seus servios on page 34) ou instalando
pacotes individuais e tome as medidas apropriadas (i.e, configure o inetd, remova o pacote,
evite execut-lo na inicializao).
Os passos que precisa fazer para se recuperar disto depende se aplicou ou no os procedimen-
tos necessrios para limitar o acesso ao lilo e da BIOS do seu sistema.
Se limitou ambos, precisar desativar a configurao de BIOS que somente lhe permite ini-
cializar 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:
para:
root::XXXX:X:XXXX:X:::
Captulo 11. Questes feitas com freqncia (FAQ) 171
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 configurado 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 inicializa-
o, assim voc ter acesso ao aviso de comandos do LILO.
Isto lhe dar um aviso de comandos do shell em modo monousurio (ele perguntar por
uma senha, mas voc j a conhece)
# 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 configurar um servio para meus usurios sem lhes dar uma
conta de acesso ao shell?
Por exemplo, se voc quer configurar um servio POP, voc no precisar definir uma
conta para cada usurio que esteja usando. melhor configurar uma autenticao baseada
em diretrio atravs de um servio externo (como Radius, LDAP ou banco de dados
SQL). Apenas instale a biblioteca PAM apropriada (libpam-radius-auth, libpam-ldap,
libpam-pgsql ou libpam-mysql), leia a documentao (para iniciantes, veja Autenticao
do Usurio: PAM on page 47) e configure o servio que ser ativado pelo PAM para usar o
mtodo de autenticao que escolheu. Isto feito editando-se os arquivos sob o diretrio /etc
/pam.d/ para seu servio e modificando o
No caso de diretrios LDAP, alguns servios oferecem esquemas LDAP que devem ser in-
cludos 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
configurando 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,
Tornando os servios campos de atributos boleanos, voc poder usa-los para permitir ou ne-
gar 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.
Muitos scanners de avaliao de vulnerabilidades indicaro falso positivos quando forem us-
ados em sistemas Debian, pois podem somente usar checagem de verses para determinar
se uma determinada verso de pacote vulnervel, mas realmente no testam a vulnerabili-
dade 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 atu-
ais), algumas ferramentas tendem a achar que um sistema Debian atualizado est vulnervel,
quando no est.
Se voc acha que o seu sistema est atualizado com patches de segurana, voc pode querer
usar as referncias cruzadas com o banco de dados de vulnerabilidades publicados com os
DSAs (veja Debian Security Advisories on page 114) para afastar a possibilidade de falsos
positivos, se a ferramenta que estiver usando inclui referncias do CVE.
Um trao de ataque nem sempre significa que seu sistema foi comprometido, e voc dever
fazer os passos tradicionais para determinar se o sistema est comprometido (veja Depois
do comprometimento do sistema (resposta a incidentes) on page 155). Tambm, note que
o fato de ver os ataques nos logs pode significar que seu sistema est vulnervel a ele (um
invasor determinado pode ter usado outras vulnerabilidades que no sejam a que voc viu, no
entanto).
Captulo 11. Questes feitas com freqncia (FAQ) 173
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.
No se preocupe muito. Verifique 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 flooding em meus logs: Estou sob um ataque?
May 1 12:35:25 linux kernel: possible SYN flooding on port X. Sending cookie
May 1 12:36:25 linux kernel: possible SYN flooding on port X. Sending cookie
May 1 12:37:25 linux kernel: possible SYN flooding on port X. Sending cookie
May 1 13:43:11 linux kernel: possible SYN flooding on port X. Sending cookie
Verifique se existe um nmero alto de conexes ao servidor usando o netstat, por exemplo:
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 Configurando
Syncookies on page 73. 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.
May 2 11:55:02 linux PAM_unix[1477]: (cron) session closed for user root
May 2 11:55:02 linux PAM_unix[1476]: (cron) session closed for user root
May 2 12:00:01 linux PAM_unix[1536]: (cron) session opened for user root by
(UID=0)
May 2 12:00:02 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 minu-
tos). Para determinar que programa responsvel por estas tarefas, verifique as tarefas nos
diretrios: /etc/crontab, /etc/cron.d, /etc/crond.daily e do root crontab sob
/var/spool/cron/crontabs.
Pea assistncia. Voc dever usar a lista de discusso debian-security para perguntar
sobre como recuperar/corrigir seu sistema.
Notifique seu CERT (http://www.cert.org) local (caso ele exista, caso contrrio voc
dever considerar o contato direto com o CERT). Isto pode ou no ajudar voc, mas, pelo
menos, informar o CERT de ataques que estejam acontecendo. Esta informao muito
valiosa em determinar que ferramentas e ataques esto sendo usados pela comunidade
chapu preto.
Olhando os logs (caso no tenham sido mexidos) usando sistemas de deteco de intruso
(veja Configure um sistema de Deteco de Intruso on page 147), 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.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 verificar se est executando uma verso segura
de pacote olhando nos logs de alteraes do pacote ou comparando seu nmero de verso
exato (verso do autor - trao- lanamento da Debian) com o nmero de verso indicado no
aviso de segurana da Debian.
Captulo 11. Questes feitas com freqncia (FAQ) 176
Adicione DenyFilter \*.*/ em seu arquivo de configurao, e para mais informaes veja
http://www.proftpd.org/critbugs.html.
Este simplesmente o mtodo como o portsentry funciona. Ele abre cerca de vinte portas
no usadas para tentar identificar port scans.
a informao enviada pelo Time de segurana da Debian (veja abaixo) com relao a de-
scoberta e correo de uma vulnerabilidade relacionada a segurana em um pacote disponvel
na Debian GNU/Linux. DSAs assinados so enviados lista de discusses pblicas (debian-
security-announce) e postados no web site da Debian (ambos na pgina inicial e na rea de
segurana (http://www.debian.org/security/)).
OS DSAs incluem informaes sobre o pacote afetado, o problema de segurana descoberto e
onde obter pacotes atualizados (com seus respectivos clculos MD5).
mais provvel que este problema esteja sendo causado por algo em sua mquina. A lista
debian-security-announce (http://www.debian.org/security/faq) tem um filtro que
somente permite postagem de mensagens de um dos membros do time de segurana da De-
bian.
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 encodifi-
cao ou decodificao MIME ou converso de tab/espaos.
Acusados conhecidos so fetchmail (com a opo mimedecode ativada), formail (somente do
procmail 3.14) e o evolution.
Captulo 11. Questes feitas com freqncia (FAQ) 177
Assim que o time de segurana recebe a notificao 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 pa-
cote 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 pub-
licado.
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 preocu-
pam 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 inter-
face de aplicao do programa (API) ou a interface de aplicao do Binrio (ABI), no importa
quanto pequena a alterao seja.
Isto significa 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). Geral-
mente 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 coorde-
nado de forma muito pr ativa com o time de segurana.
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
Captulo 11. Questes feitas com freqncia (FAQ) 178
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 verificar 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.8 Eu uso uma verso antiga da Debian, ela suportada pelo time de segu-
rana?
No. Infelizmente o time de segurana da Debian no pode tomar conta de ambos os lana-
mentos estveis (oficialmente, tambm a unstable) e outros lanamentos antigos. No entanto,
voc poder esperar por atualizaes de segurana por um perodo limitado de tempo (nor-
malmente alguns meses) imediatamente seguindo o lanamento de uma nova distribuio da
Debian.
11.3.10 Eu vi o DSA 100 e DSA 102, o que aconteceu com o DSA 101?
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.
Quando envia uma mensagem para security@debian.org, ela enviada apara a lista de dis-
cusso de desenvolvedores (debian-private). Todos os desenvolvedores da Debian esto in-
scritos 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 qual-
quer pessoa que deseja se inscrever (http://www.debian.org/MailingLists/) e exis-
tem arquivos que podem ser pesquisados disponveis aqui (http://lists.debian.org/
search.html).
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
Captulo 11. Questes feitas com freqncia (FAQ) 180
11.3.15 O time de segurana verifica cada novo pacote que entra na Debian?
O time de segurana da Debian trabalha rapidamente para enviar avisos e produzir pa-
cotes corrigidos para o repositrio estvel assim que uma vulnerabilidade descoberta.
Um relatrio pblicado na lista de discusso debian-security (http://lists.debian.
org/debian-security/2001/debian-security-200112/msg00257.html) mostrou
que no ano de 2001, houve uma mdia de 35 dias para corrigir problemas relacionados a segu-
rana. 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 pacotes devem ser disponibilizados antes do DSA ser enviado (na queue incoming ou
nos mirrors).
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 Advi-
sories on page 114) publicados no website de segurana (http://security.debian.org),
e os metadados usado para ger-los, incluem links para bancos de dados de vulnerabilidades.
Voc poder baixar os fontes do servidor web (a partir do CVS (http://cvs.debian.org))
ou usar as pginas HTML para determinar o tempo que a Debian levou para corrigir a vulner-
abilidade e co-relacionar estes dados com bancos de dados pblicos.
Captulo 11. Questes feitas com freqncia (FAQ) 182
183
Apndice A
Passo-a-passo do processo de
fortalecimento
Abaixo est uma ps-instalao, um procedimento passo-a-passo para tornar no sistema De-
bian 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 con-
figurao. Tambm, veja Checklist de configurao on page 187.
Atualize todos os softwares para a ltima verso disponvel dos pacotes em secu-
rity.debian.org como explicado anteriormente em Executar uma atualizao de segu-
rana on page 40.
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 configuraes de localizao.
Captulo A. Passo-a-passo do processo de fortalecimento 184
Para excluir servios desnecessrios, primeiro determine qual pacote fornece o servio
e como ele inicializado. Isto pode ser feito verificando 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 s
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 co-
mando update-rc.d (veja Desabilitando daemons de servio on page 33).
Para os servios inetd (iniciados pelo superdaemon), verifique quais servios esto ativa-
dos em /etc/inetd.conf atravs de:
Se o servidor usa mais que uma interface externa, dependendo do seu servio, voc pode
limitar o servio para escutar em uma interface especfica. Por exemplo, se voc quiser
somente acesso interno para o FTP, voc deve configurar 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 co-
mandos:
$ init 1
(....)
$ init 2
Ento verifique agora os servios que esto disponveis, e se necessrio, repita os passos
acima.
Captulo A. Passo-a-passo do processo de fortalecimento 185
Agora instale os servios necessrios, se no tiver feito isso ainda, e os configure correta-
mente.
Use o comando shell abaixo para determinar com que usurio cada servio disponvel
est sendo executado:
Apndice B
Checklist de configurao
Este apndice retrata resumidamente os pontos de outras sees neste manual em um check-
list no formato. A idia disponibilizar um sumrio para a pessoa que j leu o man-
ual buscar uma informao rapidamente. Existem outros checklists bons disponveis, in-
cluindo o Securing Linux Step by Step (http://seifried.org/security/os/linux/
20020324-securing-linux-step-by-step.html) de Kurt Seifried e CERTs Unix Se-
curity Checklist (http://www.cert.org/tech_tips/usc20_full.html).
FIXME: Isso baseado na verso 1.4 do manual e talvez precise de atualizao.
Particionamento
* Adicione suporte MD5 para o PAM e tenha certeza que (falando de forma gen-
eralizada) as entradas nos arquivos em /etc/pam.d/ que garantem acesso
mquina tenham o segundo campo configurado como requisite ou
required.
* Modifique 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 geral-
mente configure este arquivo para limitar ao mximo possvel o login do super-
usurio.
* Adicione o mdulo pam_limits.so se voc deseja configurar os limites por
usurios
* Modifique /etc/pam.d/passwd: configure 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_listfile.so
* Tenha um arquivo /etc/pam.d/other e o configure com um grau de segu-
rana reforado
Configure limites em /etc/security/limits.conf (note que /etc/limits
no usado se voc j estiver usando o PAM)
Aumente a segurana em /etc/login.defs; tambm, se voc ativar o MD5 e/ou
PAM, tenha certeza de fazer tambm as alteraes correspondentes aqui, tambm
Desative o acesso ftp ao super-usurio em /etc/ftpusers
Desative login de rede ao super-usurio; use o su(1) ou sudo(1). (considere in-
stalar o sudo)
Usar o PAM para reforar barreiras adicionais aos logins?
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 documen-
tao 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.
Captulo B. Checklist de configurao 190
Apndice C
Voc pode facilmente configurar um sistema Debian dedicado como um IDS stand-alone uti-
lizando o snort.
Algumas linhas gerais:
Faa o download e manualmente (com dpkg) instale os pacotes necessrios (veja a lista
de pacotes instalados abaixo).
ACID est atualmente empacotado para o Debian como acidlab. Ele fornece uma inter-
face WWW grfica para o snort. Ele tambm pode ser baixado de http://www.cert.
org/kb/acid/, http://acidlab.sourceforge.net ou http://www.andrew.cmu.
edu/~rdanyliw/snort/. Voc tambm pode querer ler o Snort Statistics HOWTO (http:
//www.tldp.org/HOWTO/Snort-Statistics-HOWTO/index.html).
Este sistema deve ser configurado 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 con-
figurar 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
Captulo C. Configurando um IDS stand-alone 192
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
ii adduser 3.39
ii ae 962-26
ii apache 1.3.20-1
ii apache-common 1.3.20-1
ii apt 0.3.19
ii base-config 0.33.2
ii base-files 2.2.0
ii base-passwd 3.1.10
ii bash 2.03-6
Captulo C. Configurando um IDS stand-alone 193
ii bsdutils 2.10f-5.1
ii console-data 1999.08.29-11.
ii console-tools 0.2.3-10.3
ii console-tools- 0.2.3-10.3
ii cron 3.0pl1-57.2
ii debconf 0.9.77
ii debianutils 1.13.3
ii dialog 0.9a-20010527-
ii diff 2.7-21
ii dpkg 1.6.15
ii e2fsprogs 1.18-3.0
ii elvis-tiny 1.4-11
ii fbset 2.1-6
ii fdflush 1.0.1-5
ii fdutils 5.3-3
ii fileutils 4.1-2
ii findutils 4.1-40
ii ftp 0.10-3.1
ii gettext-base 0.10.35-13
ii grep 2.4.2-1
ii gzip 1.2.4-33
ii hostname 2.07
ii isapnptools 1.21-2
ii joe 2.8-15.2
ii klogd 1.4.1-2
ii ldso 1.9.11-9
ii libbz2-1.0 1.0.1-10
ii libc6 2.2.3-6
ii libdb2 2.7.7-8
ii libdbd-mysql-p 1.2216-2
ii libdbi-perl 1.18-1
ii libexpat1 1.95.1-5
ii libgdbmg1 1.7.3-27
ii libmm11 1.1.3-4
ii libmysqlclient 3.23.39-3
ii libncurses5 5.2.20010318-2
ii libnewt0 0.50-7
ii libpam-modules 0.72-9
ii libpam-runtime 0.72-9
ii libpam0g 0.72-9
ii libpcap0 0.6.2-1
ii libpcre3 3.4-1
ii libpopt0 1.4-1.1
ii libreadline4 4.2-3
ii libssl09 0.9.4-5
ii libstdc++2.10 2.95.2-13
Captulo C. Configurando um IDS stand-alone 194
ii libstdc++2.10- 2.95.4-0.01070
ii libwrap0 7.6-4
ii lilo 21.4.3-2
ii locales 2.1.3-18
ii login 19990827-20
ii makedev 2.3.1-46.2
ii mawk 1.3.3-5
ii mbr 1.1.2-1
ii mime-support 3.11-1
ii modutils 2.3.11-13.1
ii mount 2.10f-5.1
ii mysql-client 3.23.39-3
ii mysql-common 3.23.39-3.1
ii mysql-server 3.23.39-3
ii ncurses-base 5.0-6.0potato1
ii ncurses-bin 5.0-6.0potato1
ii netbase 3.18-4
ii passwd 19990827-20
ii pciutils 2.1.2-2
ii perl 5.6.1-5
ii perl-base 5.6.1-5
ii perl-modules 5.6.1-5
ii php4 4.0.6-4
ii php4-mysql 4.0.6-4
ii ppp 2.3.11-1.4
ii pppconfig 2.0.5
ii procps 2.0.6-5
ii psmisc 19-2
ii pump 0.7.3-2
ii sed 3.02-5
ii setserial 2.17-16
ii shellutils 2.0-7
ii slang1 1.3.9-1
ii snort 1.7-9
ii ssh 1.2.3-9.3
ii sysklogd 1.4.1-2
ii syslinux 1.48-2
ii sysvinit 2.78-4
ii tar 1.13.17-2
ii tasksel 1.0-10
ii tcpd 7.6-4
ii telnet 0.16-4potato.1
ii textutils 2.0-2
ii update 2.11-1
ii util-linux 2.10f-5.1
ii zlib1g 1.1.3-15
195
Apndice D
Esta informao foi contribuio de Francois Bayart para ajudar os usurio a configurar um
Linux como ponte/firewall 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 configurar o kernel com o suporte necessrio, execute make menuconfig ou make
xconfig. Na seo Networking options, ative as seguintes opes:
Cuidado: voc deve desativar isso se voc quiser aplicar algumas regras de firewall ou o
iptables no funcionar:
Prximo passo, adicione as opes corretas na seo IP: Netfilter Configuration. 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 instal-
ado 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 configurao de sua ponte. A prx-
ima seo apresenta duas possveis configuraes para a ponte, cada uma com um mapa de
rede hipottico e os comandos necessrios.
A primeira configurao usa a ponte como um firewall com traduo de endereos de rede
(NAT) que protege o servidor e os clientes da rede interna. Um diagrama da configurao da
rede mostrado abaixo:
Captulo D. Configurando uma ponte firewall 196
Uma segunda possvel configurao um sistema que funciona como um firewall transparente
para a LAN com um espao de endereos IP pblicos.
|
|---- Mail Server (62.3.3.27 gw 62.3.3
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.
As regras bsicas a seguir podem ser usadas em qualquer uma das duas configuraes
mostradas acima.
iptables -F FORWARD
iptables -P FORWARD DROP
iptables -A FORWARD -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -m state --state I
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
Apndice E
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
restore() {
# Just in case, restore the system if the changes fail
Captulo E. Exemplo de script para alterar a instalao padro do Bind. 200
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
AWKS="awk /start-stop-daemon --start/ { print \"$START\"; noprint = 1; };
[ id -u -ne 0 ] && {
echo "This program must be run by the root user"
exit 1
}
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 ch
RUNNING=ps -eo fname |grep named
[ -z "$RUNNING" ] && \
echo "ERR: In fact the name server daemon is not even running (is it i
echo "ERR: No changes will be made to your system"
exit 1
fi
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
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 ar-
quivo initd abaixo depois de criar o usurio e grupo named:
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
start () {
echo -n "Starting domain name service: named"
start-stop-daemon --start --quiet \
--pidfile /var/run/named.pid --exec /usr/sbin/named
echo "."
}
stop () {
echo -n "Stopping domain name service: named"
# --exec doesnt catch daemons running deleted instances of named,
# as in an upgrade. Fortunately, --pidfile is only going to hit
# things from the pidfile.
start-stop-daemon --stop --quiet \
--pidfile /var/run/named.pid --name named
echo "."
}
case "$1" in
start)
start
;;
stop)
stop
Captulo E. Exemplo de script para alterar a instalao padro do Bind. 203
;;
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
Captulo E. Exemplo de script para alterar a instalao padro do Bind. 204
205
Apndice F
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 fi-
nalizar as atualizaes! Isso pode ser paranico, mas as anlises do Projeto Honeynet (http:
//www.honeynet.org) tm mostrado que sistemas podem ser comprometidos em menos de
trs dias, mesmo que o sistema no seja conhecido publicamento (i.e., no est publicado nos
registros DNS).
Quando estiver fazendo uma atualizao em um sistema no protegido por um mecanismo
externo como firewall, possvel configurar seu firewall local para restringir conexes envol-
vendo somente as prprias atualizaes de segurana. O exemplo abaixo mostra como con-
figurar estas capacidades de firewall, 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 mod-
ule, or use passive mode.
# iptables -F
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Captulo F. Atualizao de segurana protegida por um firewall 206
Apndice G
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:
Voc pode facilmente criar um ambiente restrito com o pacote makejail, j que ele automati-
camente 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 certificar que foi completada). Ento, fornecer as aplicaes dos usurios bem
mais fcil.
Para configurar o ambiente usando os exemplos fornecidos pelo makejail, use o comando:
# makejail /usr/share/doc/makejail/examples/sshd.py
Leia o arquivo exemplo para ver que outras mudanas devem ser feitas para o ambiente. Al-
gumas 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 configurao fornecido no pacote e inclue o pacote fileutils:
Captulo G. Ambiente chroot para SSH 208
.
|-- bin
| |-- ash
| |-- bash
| |-- chgrp
| |-- chmod
| |-- chown
| |-- cp
| |-- csh -> /etc/alternatives/csh
| |-- dd
| |-- df
| |-- dir
| |-- fdflush
| |-- ksh
| |-- ln
| |-- ls
| |-- mkdir
| |-- mknod
| |-- mv
| |-- rbash -> bash
| |-- rm
| |-- rmdir
| |-- sh -> bash
| |-- sync
| |-- tcsh
| |-- touch
| |-- vdir
| |-- zsh -> /etc/alternatives/zsh
| -- zsh4
|-- dev
| |-- null
| |-- ptmx
| |-- pts
| |-- ptya0
(...)
| |-- tty
| |-- tty0
(...)
| -- urandom
|-- etc
| |-- alternatives
| | |-- csh -> /bin/tcsh
| | -- zsh -> /bin/zsh4
| |-- environment
| |-- hosts
| |-- hosts.allow
Captulo G. Ambiente chroot para SSH 209
| |-- 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
Captulo G. Ambiente chroot para SSH 210
| |-- 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
Captulo G. Ambiente chroot para SSH 211
| |-- 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
Captulo G. Ambiente chroot para SSH 212
-- sshd.pid
Isto ir restringir ambos o acesso remoto ao shell, como tambm a cpia remota atravs do canal
ssh.
Tenha certeza de ter todos os binrios e bibliotecas necessrias dentro do caminho que est
enjaulado para os usurios. Estes arquivos devem pertencer ao root para evitar tampering
pelo usurio (como sair da jaula chrooted). Um exemplo possvel inclue:
./bin:
total 660
drwxr-xr-x 2 root root 4096 Mar 18 13:36 .
drwxr-xr-x 8 guest guest 4096 Mar 15 16:53 ..
-r-xr-xr-x 1 root root 531160 Feb 6 22:36 bash
-r-xr-xr-x 1 root root 43916 Nov 29 13:19 ls
-r-xr-xr-x 1 root root 16684 Nov 29 13:19 mkdir
-rwxr-xr-x 1 root root 23960 Mar 18 13:36 more
-r-xr-xr-x 1 root root 9916 Jul 26 2001 pwd
-r-xr-xr-x 1 root root 24780 Nov 29 13:19 rm
lrwxrwxrwx 1 root root 4 Mar 30 16:29 sh -> bash
./etc:
total 24
drwxr-xr-x 2 root root 4096 Mar 15 16:13 .
Captulo G. Ambiente chroot para SSH 213
./lib:
total 1848
drwxr-xr-x 2 root root 4096 Mar 18 13:37 .
drwxr-xr-x 8 guest guest 4096 Mar 15 16:53 ..
-rwxr-xr-x 1 root root 92511 Mar 15 12:49 ld-linux.so.2
-rwxr-xr-x 1 root root 1170812 Mar 15 12:49 libc.so.6
-rw-r--r-- 1 root root 20900 Mar 15 13:01 libcrypt.so.1
-rw-r--r-- 1 root root 9436 Mar 15 12:49 libdl.so.2
-rw-r--r-- 1 root root 248132 Mar 15 12:48 libncurses.so.5
-rw-r--r-- 1 root root 71332 Mar 15 13:00 libnsl.so.1
-rw-r--r-- 1 root root 34144 Mar 15 16:10
libnss_files.so.2
-rw-r--r-- 1 root root 29420 Mar 15 12:57 libpam.so.0
-rw-r--r-- 1 root root 105498 Mar 15 12:51 libpthread.so.0
-rw-r--r-- 1 root root 25596 Mar 15 12:51 librt.so.1
-rw-r--r-- 1 root root 7760 Mar 15 12:59 libutil.so.1
-rw-r--r-- 1 root root 24328 Mar 15 12:57 libwrap.so.0
./usr:
total 16
drwxr-xr-x 4 root root 4096 Mar 15 13:00 .
drwxr-xr-x 8 guest guest 4096 Mar 15 16:53 ..
drwxr-xr-x 2 root root 4096 Mar 15 15:55 bin
drwxr-xr-x 2 root root 4096 Mar 15 15:37 lib
./usr/bin:
total 340
drwxr-xr-x 2 root root 4096 Mar 15 15:55 .
drwxr-xr-x 4 root root 4096 Mar 15 13:00 ..
-rwxr-xr-x 1 root root 10332 Mar 15 15:55 env
-rwxr-xr-x 1 root root 13052 Mar 15 13:13 id
-r-xr-xr-x 1 root root 25432 Mar 15 12:40 scp
-rwxr-xr-x 1 root root 43768 Mar 15 15:15 sftp
-r-sr-xr-x 1 root root 218456 Mar 15 12:40 ssh
-rwxr-xr-x 1 root root 9692 Mar 15 13:17 tty
./usr/lib:
total 852
drwxr-xr-x 2 root root 4096 Mar 15 15:37 .
drwxr-xr-x 4 root root 4096 Mar 15 13:00 ..
Captulo G. Ambiente chroot para SSH 214
.:
total 36
drwxr-xr-x 9 root root 4096 Jun 5 10:05 ./
drwxr-xr-x 11 root root 4096 Jun 3 13:43 ../
drwxr-xr-x 2 root root 4096 Jun 4 12:13 bin/
drwxr-xr-x 2 root root 4096 Jun 4 12:16 dev/
drwxr-xr-x 4 root root 4096 Jun 4 12:35 etc/
drwxr-xr-x 3 root root 4096 Jun 4 12:13 lib/
drwxr-xr-x 2 root root 4096 Jun 4 12:35 sbin/
drwxr-xr-x 2 root root 4096 Jun 4 12:32 tmp/
drwxr-xr-x 2 root root 4096 Jun 4 12:16 usr/
./bin:
total 8368
drwxr-xr-x 2 root root 4096 Jun 4 12:13 ./
drwxr-xr-x 9 root root 4096 Jun 5 10:05 ../
-rwxr-xr-x 1 root root 109855 Jun 3 13:45 a2p*
-rwxr-xr-x 1 root root 387764 Jun 3 13:45 bash*
-rwxr-xr-x 1 root root 36365 Jun 3 13:45 c2ph*
-rwxr-xr-x 1 root root 20629 Jun 3 13:45 dprofpp*
-rwxr-xr-x 1 root root 6956 Jun 3 13:46 env*
-rwxr-xr-x 1 root root 158116 Jun 3 13:45 fax2ps*
-rwxr-xr-x 1 root root 104008 Jun 3 13:45 faxalter*
-rwxr-xr-x 1 root root 89340 Jun 3 13:45 faxcover*
-rwxr-xr-x 1 root root 441584 Jun 3 13:45 faxmail*
-rwxr-xr-x 1 root root 96036 Jun 3 13:45 faxrm*
-rwxr-xr-x 1 root root 107000 Jun 3 13:45 faxstat*
-rwxr-xr-x 1 root root 77832 Jun 4 11:46 grep*
-rwxr-xr-x 1 root root 19597 Jun 3 13:45 h2ph*
-rwxr-xr-x 1 root root 46979 Jun 3 13:45 h2xs*
1
Observe que no existem arquivos SETUID. Isso torna mais difcil para usurios remotos fugir o ambiente
chroot. Entretanto, isso tambm previne que os usurios alterem suas senhas, j que o programa passwd no
pode modificar os arquivos /etc/passwd ou /etc/shadow.
Captulo G. Ambiente chroot para SSH 215
Apndice H
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 segu-
rana em um pacote de software especfico no interfere em todo o servidor. A utilizao do
script makejail torna a configurao 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 un-
der 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 docu-
ment (http://www.gabuzomeu.net/alex/doc/apache/index-en.html))
Este procedimento foi testado no Debian GNU/Linux 3.0 (Woody) com makejail 0.0.4-1 (em
Debian/testing).
$ 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.
Captulo H. Ambiente chroot para Apache 222
Configure o Apache (por exemplo defina seus subdomnios e etc.). No arquivo de con-
figurao /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.
# cp /usr/share/doc/makejail/examples/apache.py /etc/makejail/
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"]
Captulo H. Ambiente chroot para Apache 223
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 configurao do makejail).
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, sub-
stitua: SYSLOGD="" com SYSLOGD=" -a /var/chroot/apache/dev/log" e reini-
cie o daemon (/etc/init.d/sysklogd restart).
#! /bin/bash
#
# apache Start the apache HTTP server.
#
CHRDIR=/var/chroot/apache
NAME=apache
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/sbin/apache
SUEXEC=/usr/lib/apache/suexec
PIDFILE=/var/run/$NAME.pid
CONF=/etc/apache/httpd.conf
Captulo H. Ambiente chroot para Apache 224
APACHECTL=/usr/sbin/apachectl
trap "" 1
export LANG=C
export PATH
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)
Captulo H. Ambiente chroot para Apache 225
$0 reload-modules
exit $?
;;
force-reload)
$0 reload-modules
exit $?
;;
*)
echo "Usage: /etc/init.d/$NAME {start|stop|reload|reload-modules|fo
exit 1
;;
esac
if [ $? == 0 ]; then
echo .
exit 0
else
echo failed
exit 1
fi
FIXME: should the first 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.
Digite ps aux | grep apache para ter certeza que o Apache est rodando. Voc deve
ver algo do tipo:
Certifique-se que os processos do Apache esto sendo executados na jaula chroot procu-
rando 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:
A razo pela qual eu gosto disso que a configurao da jaula no to complicada e o servidor
pode ser atualizado em somente duas linhas:
Se voc est procurando por mais informaes voc pode considerar as referncias que foram
utilizadas para fazer este tutorial: