[ anterior ] [ Conteúdo ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ A ] [ B ] [ C ] [ D ] [ E ] [ F ] [ G ] [ H ] [ próximo ]
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.
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:
Qualquer diretório que um usuário tenha permissões de escrita, como o
/home
, /tmp
e o /var/tmp/
, devem estar
separados em uma partição. Isto reduz o risco de um usuário malicioso utilizar
o DoS (Denial of Service) para encher seu diretório raiz ( / ) e tornar o
sistema inutilizável (Observação: isto não é totalmente verdade uma vez que
sempre existe algum espaço reservado para o usuário root que o usuário normal
não pode preencher), e também previne ataques tipo hardlink. [2]
Qualquer partição com dados variáveis, isto é, /var
(especialmente
/var/log
) também deve estar numa partição 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 partição onde você queira instalar software que não é padrão da
distribuição deve estar separada. De acordo com a Hierarquia Padrão do Sistema
de Arquivos, estas são /opt
ou /usr/local
. Se estas
partições estão separadas, elas não serão apagadas se você (tiver que)
reinstalar o Debian.
Do ponto de vista da segurança, é sensato tentar mover os dados estáticos para sua própria partição e então montar esta partição somente para leitura. Melhor ainda será colocar os dados numa mídia somenta para leitura. Veja abaixo para mais detalhes.
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.
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:
Para laptops em todos os sistemas de arquivos instalados. Assim se acabar a bateria inesperadamente ou o sistema congelar você correrá menos risco de perda de dados durante a reinicialização do sistema.
para sistemas que armazenam grande quantidade de dados (como servidores de email, servidores ftp, sistemas de arquivos de rede ....). Assim, em caso de queda, menos tempo será gasto para o servidor checar o sistema de arquivos e a probabilidade da perda de dados será menor.
Deixando de lado a performance dos sistemas journalling (uma vez que isto pode iniciar uma verdadeira guerra), normalmente é melhor usar o ext3. A 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
.
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).
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.
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.
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.
Desabilitar um daemon de serviço é simples. Existem vários métodos:
remover ou renomear os links de /etc/rc${runlevel}.d/
de modo que
eles não iniciem com a letra 'S'
mover ou renomear o script /etc/init.d/_service_name_
pra outro
nome, por exemplo /etc/init.d/OFF._service_name_
remover a permissão de execução do arquivo
/etc/init.d/_service_name_
.
editar o script /etc/init.d/_service_name_
para parar o serviço
imediatamente.
Você pode remover os links de /etc/rc${runlevel}.d/
manualmente ou
usando update-rc.d (veja update-rc.d(8)
). Por
exemplo, você pode desabilitar um 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
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
.
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:
permitir a ele fazer escalação de privilégios. Isto facilita, por exemplo, rodar exploits locais no sistema se existe um depurador e compilador prontos para compilar e testar.
fornecer ferramentas que poderiam ajudar um atacante a usar o sistema comprometido como base de ataque contra outros sistemas [4]
É claro que um invasor com acesso ao shell local pode baixar suas 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.
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:
/usr/bin/chkdupexe
do pacote util-linux
.
/usr/bin/replay
do pacote bsdutils
.
/usr/sbin/cleanup-info
do pacote dpkg
.
/usr/sbin/dpkg-divert
do pacote dpkg
.
/usr/sbin/dpkg-statoverride
do pacote dpkg
.
/usr/sbin/install-info
do pacote dpkg
.
/usr/sbin/update-alternatives
do pacote dpkg
.
/usr/sbin/update-rc.d
do pacote sysvinit
.
/usr/bin/grog
do pacote groff-base
.
/usr/sbin/adduser
do pacote adduser
.
/usr/sbin/debconf-show
do pacote debconf
.
/usr/sbin/deluser
do pacote adduser
.
/usr/sbin/dpkg-preconfigure
do pacote debconf
.
/usr/sbin/dpkg-reconfigure
do pacote debconf
.
/usr/sbin/exigrep
do pacote exim
.
/usr/sbin/eximconfig
do pacote exim
.
/usr/sbin/eximstats
do pacote exim
.
/usr/sbin/exim-upgrade-to-r3
do pacote exim
.
/usr/sbin/exiqsumm
do pacote exim
.
/usr/sbin/keytab-lilo
do pacote lilo
.
/usr/sbin/liloconfig
do pacote lilo
.
/usr/sbin/lilo_find_mbr
do pacote lilo
.
/usr/sbin/syslogd-listfiles
do pacote sysklogd
.
/usr/sbin/syslog-facility
do pacote sysklogd
.
/usr/sbin/update-inetd
do pacote netbase
.
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.
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,mailto:jfs@debian.org