[ anterior ] [ Conteúdo ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ A ] [ B ] [ C ] [ D ] [ E ] [ F ] [ G ] [ H ] [ próximo ]


Securing Debian Manual
Capítulo 3 - Antes e durante a instalação


3.1 Escolha uma senha para a BIOS

Antes de instalar qualquer sistema operacional em seu computador, configure uma senha para a BIOS. Após a instalação (uma vez que você tenha habilitado o boot a partir do HD) você deve voltar a BIOS e alterar a sequência de boot desabilitando o boot a partir do disquete (floppy), cdrom e outros dispositivos. Se você não fizer assim, um cracker só precisará de acesso físico 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 não é reiniciado constantemente. A desvantagem desta tática é que o reinício exige intervenção humana, o que pode causar problemas se a máquina não for facilmente acessível.

Observação: muitas BIOS vem de fábrica com senhas padrão bem conhecidas e existem programas que recuperam estas senhas, ou seja, alteram a senha atual para a senha original, para o caso de uma perda da senha pelo administrador. Assim, não dependa desta medida para proteger o acesso ao sistema.


3.2 Particionando o sistema


3.2.1 Escolha um esquema de partição inteligente

Um esquema de partição inteligente depende de como a máquina será usada. Uma boa regra é ser razoavelmente generoso com suas partições e prestar atenção aos seguintes fatores:

No caso de um servidor de email é importante ter uma partição separada para o spool de email. Usuários remotos (conhecidos ou não) podem encher o spool de email (/var/mail e/ou /var/spool/mail). Se o spool está em uma partição separada, esta situação não tornará o sistema inutilizável. Porém (se o diretório de spool está na mesma partição que /var) o sistema pode ter sérios problemas: log não serão criados, pacotes podem não ser instalados e alguns programas podem ter problemas ao iniciar (se eles usam /var/run).

Para partições que você não tem certeza do espaço necesário, você pode instalar o Logical Volume Manager (lvm-common e os binários necessário para o kernel, estes podem ser lvm10, lvm6, ou lvm5). Usando lvm, você pode criar grupos de volume que expandem múltiplos volumes físicos.


3.2.1.1 Escolhendo o sistema de arquivos apropriado

Durante o particionamento do sistema você também tem que decidir qual sistema de arquivos usar. O sistema de arquivos padrão em uma instalação Debian para partições Linux é o ext2. Porém é 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:

Deixando de lado a performance dos sistemas journalling (uma vez que isto pode iniciar uma verdadeira guerra), normalmente é melhor usar o ext3. A razão para isto é que ele é compatível 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 condições de trabalhar. Também, se você precisar recuperar o sistema com um disco de boot (ou CDROM) você não precisa personalizar o kernel. Se o kernel é 2.4, o suporte a ext3 já está disponível, 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 não ser capaz de recuperar o sistema a menos que você tenha um kernal 2.4 com os módulos necessários instalados. Se seu disco de resgate tem o kernel 2.2 pode ser mais difícil 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.


3.3 Não conecte-se a internet até estar pronto

O sistema não deve ser imediatamente conectado a internet durante a instalação. Isto pode parecer estúpido mas intalação via internet é um método comum. Uma vez que o sistema instalará e ativará serviços imediatamente, se o sistema estiver conectado a internet e os serviços não estiverem adequadamente configurados, você estará abrindo brechas para ataques.

Observe também que alguns serviços podem ter vulnerabilidades de segurança não corrigidas nos pacotes que você estiver usando para a instalação. Isto normalmente será verdade se você estiver instalando a partir de mídia antiga (como CD-ROMs). Neste caso, o sistema poderia estar comprometido antes de terminar a instalação!

Uma vez que a instalação e atualizações do Debian podem ser feitas pela internet você pode pensar que é uma boa idéia usar este recurso na instalação. Se o sistema está diretamente conectado (e não está protegido por um firewall ou NAT), é melhor instalar sem conexão com a grande rede usando um mirror local com os pacotes do Debian e as atualizações de segurança. Você pode configurar mirrors de pacotes usando outro sistema conectado com ferramentas específicas 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 não puder fazer isto, você pode configurar regras de firewall para limitar o acesso ao sistema enquanto estiver atualizando (veja Atualização de segurança protegida por um firewall, Apêndice F).


3.4 Configure a senha do root

Configurar uma boa senha para o root é o requerimento mais básico para ter um sistema seguro. Veja passwd(1) para mais dicas de como criar boas senhas. Você também pode usar um programa gerador de senhas para fazer isto para você (veja Gerando senhas de usuários, Seção 4.10.13).

Muita informação sobre a escolha de boas senhas pode ser encontrada na internet; dois locais que fornecem um sumário decente e racional são How to: Pick a Safe Password do Eric Wolfram e Unix Password Security do Walter Belgers.


3.5 Ative os recursos senhas shadow e senhas MD5

No final da instalação, você será perguntado se senhas shadow deve ser habilitada. Responda sim (yes), então as senhas serão mantidas no arquivo /etc/shadow. Apenas o root e o grupo shadow terá acesso de leitura a estes arquivo, assim nenhum usuário será capaz de pegar uma cópia deste arquivo para rodar um cracker de senhas nele. Você pode alternar entre senhas shadows e senhas normais a qualquer hora usando shadowconfig.

Leia mais sobre senhas Shadow em Shadow Password (/usr/share/doc/HOWTO/en-txt/Shadow-Password.txt.gz).

Além disso, você é perguntado durante a insatalação se quer usar senhas MD5 .. Isto geralmente é uma boa idéia uma vez que permite senhas longas e melhor encriptação. 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 opção padrão quando instalando a última versão do pacote password. Você pode alterar isto a qualquer hora após a instalação executando dpkg-reconfigure --priority=low passwd. Você pode reconhecer senhas md5 no arquivo /etc/shadow pelo prefixo $1$.

Isto modifica todos arquivos sob /etc/pam.d pela substituição da linha de senha e inclusão do md5 nela:

           password requer pam_unix.so md5 nullok obscure min=6 max=16

Se max não está configurado para mais de 8 a alteração não será útil. Para mais informações leia Autenticação do Usuário: PAM, Seção 4.10.1.

Observação: o padrão de configuração do Debian, mesmo quando ativada a senha MD5, não modifica o valor max previamente configurado.


3.6 Rode o mínimo de serviços necessários

Serviços são programas como servidores ftp e servidores web. Uma vez que eles tem que estar escutando por conexões que requisitem o serviço, computadores externos podem conectar-se a eles. Serviços algumas vezes são vulneráveis (i.e. podem estar comprometidos sobre um certo ataque) e oferecem risco a segurança.

Você não deve instalar serviços que não são necessários em sua máquina. Todo serviço instalado pode introduzir novos, talvez não óbvios ou conhecidos, buracos de segurança em seu computador.

Como você já deve saber, quando você instala um serviço o padrão é ele ser ativado. Em uma instalação Debian padrão, sem nenhum serviço a mais instalado, o footprint de serviços rodando é baixo mesmo quando falamos de serviços oferecidos para a rede. o footprint no Debian 2.1 não é tão firme quanto no Debian 2.2 (alguns serviços do inetd foram habilitados por padrão) e no Debian 2.2 o rpc portmapper é habilitado logo após a installation. Rpc é instalado por padrão porque ele é necessário para muitos serviços, NFS por exemplo. Ele pode ser facilmente removido, porém, veja Desabilitando daemons de serviço, Seção 3.6.1 como desabilitá-lo.

Quando você instala um novo serviço de rede (daemon) em seu sistema Debian GNU/Linux ele pode ser habilitado de duas maneiras: através do superdaemon inetd (uma linha será adicionada ao /etc/inetd.conf) ou através de um programa que serve de interface. Estes programas são controlados pelos arquivos /etc/init.d, que são chamados no momento da inicialização através do mecanismo SysV (ou outro alternativo) pelo uso de symlinks em /etc/rc?.d/* (para mais informações de como isto é feito leia /usr/share/doc/sysvinit/README.runlevels.gz).

Se você quer manter algum serviço, mas que será usado raramente, use os comandos update, isto é, update-inetd e update-rc.d para removê-los do processo de inicialização.


3.6.1 Desabilitando daemons de serviço

Desabilitar um daemon de serviço é simples. Existem vários métodos:

Você pode remover os links de /etc/rc${runlevel}.d/ manualmente ou usando update-rc.d (veja update-rc.d(8)). Por exemplo, você pode desabilitar um serviço do runlevel multiusuário executando:

       update-rc.d stop XX 2 3 4 5 .

Observe que, se você não está usando file-rc, update-rc.d -f _service_ remove não trabalhará apropriadamente, pois embora todos links sejam removidos, após reinstalação ou upgrade do pacote estes links serão regenerados (provavelmente não é o que você quer). Se pensa que isto não é intuitivo você provavelmente está certo (veja Bug 67095). Texto da manpage:

       Se qualquer arquivo /etc/rcrunlevel.d/[SK]??name já existe então 
       update-rc.d não faz nada. É desta maneira que o administrador do sistema pode
       reorgananizar os links, contanto que eles deixem pelo menos um link remanescente, 
       sem ter sua configuração reescrita.

Se você está usando file-rc, toda informação sobre serviços é manipulada por um arquivo de configuração 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 alterações facilmente (rcconf trabalha com runlevels file-rc e System V).

Outro método (não recomendado) de desabilitar serviços é: 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 início ou comentando a instrução start-stop-daemon). Como os arquivos do init.d são arquivos de configuração, eles não serão reescritos por ocasião da upgrade.

Infelizmente, diferente de outros sistemas operacionanais tipo UNIX, os serviços no Debian não podem ser desabilitados pela modificação dos arquivos em /etc/default/_servicename_.

FIXME: Adicione mais informação sobre manipulação de daemons usando file-rc


3.6.2 Desabilitando o inetd ou seus serviços

Você deve checar se realmente precisa do daemon inetd. Inetd sempre foi uma maneira de compensar deficiências do kernel, mas estas deficiências foram corrigidas. Existe possibilidade de ataques DoS (Denial of Service) contra o inetd, então é preferível usar daemons individuais do que rodar um serviço do inetd. Se você ainda quer rodar algum serviço do inetd, então no mínimo alterne para um daemon mais configurável como xinetd, rlinetd ou openbsd-inetd.

Você deve parar todos os serviços Inetd desnecessários, como echo, chargen, discard, daytime, time, talk, ntalk e r-services (rsh, rlogin e rcp) os quais são considerados ALTAMENTE inseguros (use ssh no lugar destes).

Você pode desabilitar os serviços editando o arquivo /etc/inetd.conf diretamente, mas o Debian fornece uma alternativa melhor: update-inetd (o qual comenta os serviços de modo que eles possam facilmente ser reativados). Você pode remover o daemon telnet para alterar o arquivo de configuração e reiniciar o daemon (neste caso o serviço telnet é desabilitado):

       /usr/sbin/update-inetd --disable telnet

Se você quer um serviço, mas não o quer disponível para todos os IP do seu host, você deve usar um recurso não documentado no inetd (substitua o nome do serviço por serviço@ip) ou use um daemon alternativo como xinetd.


3.7 Instale o mínimo de software necessário

O Debian vem com uma grande quantidade de software, por exemplo o Debian 3.0 woody inclui quase 6 CD-ROMs de software e milhares de pacotes. Apesar da grande quantidade de software, a instalação do sistema base utiliza poucos pacotes. [3] você pode estar mal informado e instalar mais que o realmente necessário para seu sistema.

Sabendo o que seu sistema realmente precisa, você deve instalar apenas o que for realmente necessário para seu trabalho. Qualquer ferramenta desnecessária pode ser usada por um usuário malicioso para comprometer o sistema ou por um invasor externo que tenha acesso ao shell (ou código remoto através de serviços exploráveis).

A presença, por exemplo, de utilitários de desenvolvimento (um compilador C) ou linguagens interpretadas (como perl, python, tcl...) pode ajudar um atacante a comprometer o sistema da seguinte maneira:

É claro que um invasor com acesso ao shell local pode baixar suas próprias ferramentas e executá-las, além disso o próprio shell pode ser usado para fazer complexos programas. Remover software desnecessário não impedirá o problema mas dificultará a ação de um possível atacante. Então, se você deixar disponíveis ferramentas em um sistema de produção que poderiam ser usadas remotamente para um ataque (veja Ferramentas de verificação remota de vulnerabilidades, Seção 8.1), pode acontecer de um invasor usá-las.


3.7.1 Removendo Perl

Remover o perl pode não ser fácil em um sistema Debian pois ele é muito usado. O pacote perl-base tem prioridade classificada como requerida (Priority: required), o que já diz tudo. Você pode removê-lo mas não será capaz de rodar qualquer aplicação perl no sistema; você ainda terá que enganar o sistema de gerenciamento de pacotes para ele pensar que o perl-base ainda está instalado. [5]

Quais utilitários usam perl? Você mesmo pode verificar:

       $ for i in /bin/* /sbin/* /usr/bin/* /usr/sbin/*; do [ -f $i ] && {
       type=`file $i | grep -il perl`; [ -n "$type" ] && echo $i; }; done

Estes incluem os seguintes utilitários em pacotes com prioridade required ou important:

Assim, sem Perl e, a menos que você recompile estes utilitários em um script shell, você provavelmente não será capaz de gerenciar nenhum pacote (assim você também não será capaza de atualizar o sistema, o que não é uma coisa boa).

Se você está determinado a remover o Perl do Debian e tem tempo de sobra, envie os relatórios de bugs referentes aos pacotes acima referidos incluindo possíveis substituições para os utilitários escritas em shell.


3.8 Leia as listas de segurança do Debian (security mailing lists)

Nunca é demais dar uma olhada na lista debian-security-announce, onde avisos e correções dos pacotes são anunciadas pela equipe de segurança do Debian, ou na mailto:debian-security@lists.debian.org, onde você pode participar de discussões sobre assuntos relacionados a segurança Debian.

Para receber importantes atualizações de segurança e alertas envie email para debian-security-announce-request@lists.debian.org com a palavra "subscribe" como assunto. Você também pode inscrever-se nesta lista no endereço http://www.debian.org/MailingLists/subscribe

Esta lista tem pouco volume de mensagens e assinando ela você será imediatamente alertado sobre atualizações de segurança para a distribuição Debian. Isto lhe permitirá rapidamente baixar os novos pacotes com atualizações de segurança, as quais são muito importantes na manutenção de um sistema seguro. (Veja Executar uma atualização de segurança, Seção 4.2 para detalhes de como fazer isto.)


[ anterior ] [ Conteúdo ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ A ] [ B ] [ C ] [ D ] [ E ] [ F ] [ G ] [ H ] [ próximo ]


Securing Debian Manual

v3.1, Mon, 10 Feb 2014 17:06:00 +0000

Javier Fernández-Sanguino Peña jfs@debian.org
Autores, Seção 1.1