Você está na página 1de 110

Faculdade de Tecnologia de Teresina CET

Auditoria e Segurana de Redes


Prof.: Andr Henry I. e Silva
andre@ati.pi.gov.br
andre.his@gmail.com


andre.his@gmail.com
Unidade IV Hardening Linux
Definio de Hardening e importncia
Instalao segura do sistema
Controle de acesso em sistemas de arquivos
Procedimentos ps-instalao
Controle de acesso de usurios
Ajustando o kernel
Registro (Logs) no Sistema

andre.his@gmail.com
Hardening: Definies
Segundo a Wikipedia
Hardening um processo de mapeamento
das ameaas, mitigao dos riscos e
execuo das atividades corretivas - com foco
na infra-estrutura e objetivo principal de torn-
la preparada para enfrentar tentativas de
ataque.
andre.his@gmail.com
Hardening: Definies (2)
Segundo a ITSecurity.com
Hardening o processo de otimizar as
configuraes de segurana de um sistema,
um termo comumente aplicado a sistemas
operacionais.
andre.his@gmail.com
Hardening: Definies (3)
Processo de fortificao do sistema operacional
aplicando tcnicas especficas de controles.
Efeito de blindagem do sistema
Exemplos:
Patch do kernel ou configurao de
parmetros (sysctl);
Remoo de pacotes e desabilitao de
servios desnecessrios.
andre.his@gmail.com
Hardening: Importncia
Adequao as Normas
ISO 17799 e ISO 27001
Guia de referncia para boas prticas dos
processos e gesto da Segurana da Informao
Corporativa;
Controle de Acesso
Lgico e Fsico
Polticas
Processos (gesto da continuidade de negcio)
um processo da fase do Gerenciamento de Riscos
Avaliao de todos os ativos
andre.his@gmail.com
Projetos de Hardening em Linux
Hardening Linux Kernel:
Security-Enhanced Linux (SELinux),
http://selinux.sourceforge.net
Uso do Linux Security Modules (LSM) no kernel
Grsecurity, http://www.grsecurity.net
PaX Project, http://pax.grsecurity.net/
Hardening Linux:
Bastille Linux
http://bastille-linux.sourceforge.net
Debian Harden
andre.his@gmail.com
Hardening: BIOS
Desabilitar a inicializao a partir de dispostivos como
disquete, cdrom, drive usb e rede
Impedir que pessoas indesejadas tentem iniciar o
sistema a partir de um disco especial de boot
Proteger contra mudanas nas caractersticas da
BIOS
Reinicializar a mquina e mudar a sequncia de
boot para Hard Drive ONLY
Incluir uma senha para a BIOS.
andre.his@gmail.com
Hardening: BIOS
Desabilitar a inicializao a partir de dispostivos como
disquete, cdrom, drive usb e rede
Impedir que pessoas indesejadas tentem iniciar o
sistema a partir de um disco especial de boot
Proteger contra mudanas nas caractersticas da
BIOS
Reinicializar a mquina e mudar a sequncia de
boot para Hard Drive ONLY
Incluir uma senha para a BIOS.
andre.his@gmail.com
INSTALAO SEGURA DO SISTEMA
andre.his@gmail.com
Instalao Segura do Sistema
D preferncias para Sistemas Operacionais que:
J utilizados no ambiente ou empresa;
Equipe tcnica j possui conhecimento e prtica;
Existe verso atual e estvel (nem sempre a verso mais nova
a melhor escolha)
Tenham sido avaliados, principalmente nas funcionalidades
desejadas e nos quesitos estabilidade e segurana;
Suporte a atualizaes.
andre.his@gmail.com
Instalao Segura do Sistema (2)
Procure baixar os arquivos de instalao do repositrio
oficial da distribuio;
Aps baixas as imagens (ISO), verificar a integridade das
mesmas (calculo do hash)
Ainda na instalao selecione uma senha forte, de
preferncia que contenha letras maisculas, minsculas,
nmeros e caracteres especiais para o usurio root.
Planeje conexes e endereos de rede do servidor;
Finalmente, documente todo o processo de instalao.

andre.his@gmail.com
Personalize sua Instalao
Instalaes Padro so inseguras por padro
Escolha cuidadosamente os pacotes que devero ser instalados
No instale Servidores Web, Banco de Dados, News Server a
menos que seja realmente necessrio
Estabelea senhas difceis para o root e para os usurios
No opere o sistema como root o tempo inteiro
Menos mais!!

andre.his@gmail.com
Personalize sua Instalao
As boas prticas de instalaes nos aconselham a particionar o disco
e colocar os principais diretrios em parties separadas. Isso nos
proporciona maior proteo, pois cada partio tem sua tabela
separada.
Sist. Arq. Tam Usad Disp Uso% Montado em
/dev/sda3 1,2G 492M 579M 46% /
/dev/sda5 19G 428M 17G 3% /var
/dev/sda6 19G 3,0G 15G 17% /usr
/dev/sda8 8,3G 169M 7,7G 3% /tmp
/dev/sda9 74G 6,5G 64G 10% /home



andre.his@gmail.com
CONTROLE DE ACESSO EM SISTEMAS DE
ARQUIVOS
andre.his@gmail.com
Hardening Sistemas de Arquivos
Conforme a norma ABNT NBR ISO/IEC 27001:2006, deve-se
proteger a integridade do software e a informao
Dessa maneira, recomenda-se a utilizao de opes de
restrio do comando mount para a segurana do sistema de
arquivos


andre.his@gmail.com
Hardening Sistemas de Arquivos (2)
Nosuid faz com que binrios com permisso Suid bit no surtam efeito na
partio na qual est definido.Um exemplo, adicione um usuario:
# adduser teste
Faa uma cpia das shells do seu sistema para o diretrio home desse
usurio e atribua s shells a permissao de Suid bit.
# cp /bin/*sh* /home/teste
# chmod 4755 /home/teste/*sh*
Logue-se em outro terminal com o usurio que voc criou e tente executar
uma dessas shells.
$ cd /home/teste; ./sh; $ id


andre.his@gmail.com
Hardening Sistemas de Arquivos (3)
Para resolvermos isso, vamos remontar a partio onde est
montado o /home, mas agora com a opo nosuid que tinha
comentado no slide anterior.
# mount -o remount,rw,nosuid /home
# mount
Com a opo nosuid, faamos o teste novamente e veja que as
shells continuam com o Suid bit ativado, porem, quando forem
executadas no poderam ter mais o acesso no nvel de root.


andre.his@gmail.com
Hardening Sistemas de Arquivos (4)
Outra opo seria utilizar o noexec que no deixa e execuo de binrios ou
arquivos executveis dentro da partio na qual essa opo est ativada.
Ela pode ser aplicada em todos diretrios mas muito comum ser aplicado
nos diretrios /home e /tmp.
Crackers se aproveitatam desses diretrios que por padro qualquer usurio
pode pr backdoors ou qualquer outro programa malicioso para ter acesso
completo ao sistema.
Para isso s precisamos remontar a partio com a opo noexec ativada.
# mount -o remount,rw,noexec /home
# mount


andre.his@gmail.com
Hardening Sistemas de Arquivos (5)
H tambm a opo noatime que no uma opo de
segurana mas sim de performance porque faz com que o kernel
execute uma tarefa a menos quando noatime est definido e
destinado atualizaes do tempo de acesso de arquivo.
Para vermos um exemplo disso, primeiro iremos ver o comando
stat que usado para verificar o status de um arquivo ou de um
sistema de arquivos.

andre.his@gmail.com
Hardening Sistemas de Arquivos (6)
A saida desse comando nos retorna informaes importantes, mas as
principais aqui que sero vistas so as opes Acess (atime), Modify (mtime) e
Change (ctime)
Exemplo: Criaremos dois arquivos em parties diferentes
# touch /root/teste1
# touch /tmp/teste2
Depois veremos seus status
# stat /root/teste1
# stat /tmp/teste2
Guardemos as informaes obtidas e prestem ateno nas 3 opes citadas
acima Access, Modify e Change.

andre.his@gmail.com
Hardening Sistemas de Arquivos (7)
Depois disso iremos visualizar o contedo deles
# cat /root/teste1
# cat /tmp/teste2
e de novo verificaremos o status deles
# stat /root/teste1
# stat /tmp/teste2
Percebam que os Access dos arquivos esto diferentes. Quando
visualizamos seu contedo, modificamos o tempo de acesso
deles.

andre.his@gmail.com
Hardening Sistemas de Arquivos (8)
Faremos a mesma coisa com alterando agora as permisses
deles.
# chmod 777 /root/teste1
# chmod 777 /tmp/teste2
e de novo verificaremos o status deles
# stat /root/teste1
# stat /tmp/teste2
Vejam que o Access agora no foi alterado mas o Change foi.
Sempre que mudamos as permisses de um arquivo, o Change
ser mudado, registrando a ultima data e hora da mudana.

andre.his@gmail.com
Hardening Sistemas de Arquivos (9)
Agora iremos inserir um contedo nesses arquivos
# echo cet > /root/teste1
# echo cet > /tmp/teste2
verificaremos o status deles
# stat /root/teste1
# stat /tmp/teste2
E podemos ver que o Change foi alterado novamente, mas junto a ele
o Modify. Porque agora no ocorreu s um acesso mas tambm uma
alterao no contedo do arquivo.

andre.his@gmail.com
Hardening Sistemas de Arquivos (10)
Com isso podemos agora remontar nossa partio que est montada
no diretrio /tmp com a opo noatime (para que haja uma melhora na
performance)
# mount -o remount,rw,noatime /tmp
Com a partio remontada com a opo noatime iremos repetir os
testes que fizemos antes.
# cat /root/teste1
# cat /root/teste2
# stat /root/teste1
# stat /tmp/teste2
Vejam que agora o Access (atime) dos arquivos dentro do /tmp no foi
modificado por causa da opo noatime que definimos anteriormente .

andre.his@gmail.com
Hardening Sistemas de Arquivos (11)
Eis as principais opes do comando mount
defaults: permite tudo
noquota: no ajustar quotas para usurios
nosuid: no permitir SUID/SGID
nodev: no permitir acesso a dispositivos especiais ou de caractere
noexec: no permitir a execuo de nenhum binrio
quota: permitir uso de quotas por usurio
ro: permitir para somente-leitura
rw: permitir para leitura-escrita
suid: permitir acessos SUID/SGID

andre.his@gmail.com
Resumo do Controle do Sistema de Arquivos
andre.his@gmail.com
Resumo do Controle do Sistema de Arquivos (2)
# vi /etc/fstab
/dev/hda1
/boot ext3 defaults,nosuid 0 2
/dev/hda3 / ext3 defaults 0 1
/dev/hda4 /home ext3 defaults,nosuid,noexec 0 2
/dev/hda5 /usr ext3 defaults,nosuid 0 2
/dev/hda6 /tmp ext3 defaults,nosuid,noexec 0 2
/dev/hda7 /var ext3 defaults,nosuid,noexec 0 2
/dev/hda8 /var/log ext3
defaults,nosuid,noexec,noatime 0 2
/dev/hda2 none swap sw 0 0
/dev/hdb /media/cdrom0 iso9660
ro,user,noauto 0 0


andre.his@gmail.com
Resumo do Controle do Sistema de Arquivos (3)
Ajuste as permisses do arquivo /etc/fstab para somente leitura
# chmod 400 /etc/fstab
Ajuste o bit de imutabilidade tambm
# chattr +i /etc/fstab


andre.his@gmail.com
Hardening do Sistema de Arquivos: Consideraes
H um inconveniente ao ter essas opes ativadas. Quando
formos instalar um novo pacote com apt-get, dpkg ou
rpm. Esses utilitrios executam e gravam informaes nos
diretrios /var e /tmp que por sua vez setamos a opo
noexec nas parties onde esto montada esses diretrios.
Precisaremos criar um script simples com os comandos para
remontar essas parties e poder instalar os pacotes.


andre.his@gmail.com
Hardening do Sistema de Arquivos: Consideraes
(2)
# vim /root/noexec
#!/bin/bash
case $1 in
start)
mount -o remount,rw,noexec /var
mount -o remount,rw,noexec /tmp
mount
echo Parties SEM permisso de
execuo
;;

....
cont.

stop)
mount -o remount,rw,exec /var
mount -o remount,rw,exec /tmp
mount
echo Parties COM permisses de
execuo
;;
*) echo erro use $0 {start|stop}
exit 0
;;
esac
exit 1
andre.his@gmail.com
Hardening do Sistema de Arquivos: Consideraes(3)
Depois toda vez que executar:
# ./noexec start
o script vai deixar as parties sem permisso de execuo
# ./noexec stop
Vai permitir novamente que possa ser executado alo dentro das parties
definidas no script, podendo agora instalar pacotes apt e dpkg.
Para maior comodidade podemos copiar esse script para um diretrio PATH
do root, por exemplo o /sbin, assim podemos executar o script de qualquer
diretrio do sistema.
andre.his@gmail.com
Hardening do Sistema de Arquivos: Consideraes(3)
Depois toda vez que executar:
# ./noexec start
o script vai deixar as parties sem permisso de execuo
# ./noexec stop
Vai permitir novamente que possa ser executado alo dentro das parties
definidas no script, podendo agora instalar pacotes apt e dpkg.
Para maior comodidade podemos copiar esse script para um diretrio PATH
do root, por exemplo o /sbin, assim podemos executar o script de qualquer
diretrio do sistema.
andre.his@gmail.com
Quota do usurio
Para controlar a utilizao do sistema de arquivos, pode-
se fazer uso de quotas, que devem ser especificadas para
parties e no para diretrios.
O primeiro passo incluir as opes usrquota e grpquota
no arquivo /etc/fstab, na partio em que se deseja utilizar
# vi /etc/fstab
/dev/hda9 /home ext3 defaults,usrquota,grpquota 0 2
H dois padres para o uso de quotas, quota1 e quota2,
sendo que para cada um deve-se carregar o mdulo
especfico no kernel, quota_v1 e quota_v2
andre.his@gmail.com
Quota do usurio (2)
Trabalharemos com o padro de quota2. Deve-se criar
dois arquivos de controle de quota
aquota.user gerencia quotas de usurios
aquota.group gerencia quotas de grupos
# cd /home
# touch aquota.user aquota.group
Somente o root deve ter permisso para leitura e escrita sobre eles
# chmod 600 aquota.user
# chmod 600 aquota.group
Deve-se remontar o sistemas de arquivos, mas, como
geralmente este est sempre ocupado, recomenda-se
salvar aplicaes e reiniciar o sistema.
andre.his@gmail.com
Quota do usurio (3)
Aps a inicializao, consultar o status de quota para a
partio
# repquota -v -a
Agora, pode-se definir quanto cara usurio poder utilizar
#edquota -u teste
Teremos:
O sistema de arquivos onde a quota est habilitada
Limites soft e hard para o nmero mximo de blocos
Limites soft e hard para o nmero mximo de inodes
andre.his@gmail.com
Quota do usurio (4)
Para consultar a quota de um usurio
# quota -u usuario
Para verificar mais detalhes sobre o uso das quotas nas
parties
#quotastats
Desativar a quota da partio
#quotaoff -v /home
Para fazer uma checagem na partio e verificar se est
tudo OK
#quotacheck -vcug /home
Ativar a quota da partio
#quotaon -v /home
andre.his@gmail.com
Ajuste finos sobre arquivos
Permisses de Arquivos umask
# umask 022
Arquivos com permisso de escrita por todos
# find / -perm -2 -type f ls
Arquivos sem dono
# find / -nouser o -nogroup ls
Arquivos com bit SUID ativado
# find / -type f \( -perm -04000 -o -perm -02000 \) -
ls
Ajustando o Sticky Bit para diretrio pblicos
# chmod 1777 <diretorio_publico>
andre.his@gmail.com
Ajuste finos sobre arquivos (2)
Sugere-se fazer uma checagem detalhada desse
arquivos, deixando com bit Suid apenas alguns poucos
programas necessrios como su, ping, passwd:
# find / -type f \( -perm -04000 -o -
perm -02000 \) > /root/lista.suid
andre.his@gmail.com
Ajuste finos sobre arquivos (3)
Vamos retirar todas as permisses de Suid bit dos
binrios
# chmod -s -Rv /
Onde:
s retira a permisso de Suid bit
R recursivo, do / (raiz) para baixo
V o modo verbose (mostra o que est sendo feito pelo comando)
Depois, coloque a permisso de Suid bit apenas para o que julgar necessrio
# chmod +s /usr/bin/passwd
andre.his@gmail.com
Sudo
Com o sudo, pode-se definir que comandos cada
usurio comum pode executar como se fosse root
# apt-get install sudo
O arquivo de configurao do sudo /etc/sudoers
Exemplo de configurao:
teste ALL=/sbin/ifconfig, /sbin/iptables
Define que o usurio teste pode executar os
comandos ifconfig e iptables, sendo solicitada a senha
de root
andre.his@gmail.com
Sudo (2)
Exemplo de configurao:
teste ALL=NOPASSWD: /bin/reboot, /bin/halt
Define que o usurio teste pode executar os
comandos reboot e halt, sem que seja solicitada a
senha de root
Exemplo de configurao:
teste ALL=/sbin/passwd [A-Z]*,!/usr/bin/passwd root
Define que o usurio teste pode alterar a senha de
qualquer usurio cujo login estiver no intervalo de A-Z,
exceto a senha de root
andre.his@gmail.com
PROCEDIMENTOS PS-INSTALAO
andre.his@gmail.com
Gerenciados de inicializao - GRUB
Arquivo de edio do GRUB : /etc/default/grub
Incluir/alterar a varivel timeout=0, para no mostrar
menu
Arquivo de configurao gerado atravs do comando
update-grub: /boot/grub/grub.cfg
Proteger o arquivo /boot/grub/menu.lst
chmod 600 /boot/grub/grub.cfg
chattr +i /boot/grub/grub.cfg

andre.his@gmail.com
Desabilitar Ctrl+Alt+Delete
Sabemos que pressionando Ctrl-Alt-Delete
reiniciamos o sistema
Prevenir que a mquina seja reinicializada
Editar o arquivo /etc/inittab e comentar a seguinte
linha:
#ca::ctrlaltdel:/sbin/shutdown -t3 -r
now

andre.his@gmail.com
Removendo programas desnecessrios
Aps instalao do sistema linux devemos nos preocupar se
todos os programas so realmente necessrios. Lembre-se
um servidor no deve conter programas clientes.
Verificar pacotes instalados:
No Debian
dpkg -l
Red Hat:
Rpm -qa
andre.his@gmail.com
Removendo programas desnecessrios (2)
Exemplos:
No Debian
apt-get --purge remove wget
apt-get --purge remove portmap
apt-get --purge remove exim*
andre.his@gmail.com
Check-list nos servios dos sistema
Deve-se verificar os status dos servios, ou seja, se esta funcionando
corretamente e endereos e portas no qual aceitam conexes.
Primeiramente devemos saber a qual porta determinado servio esta
associado:
# cat /etc/services
ssh 22/tcp
ssh 22/udp
Somente ao root deve ser permitido realizar alteraes nesse arquivo
Portanto, deve-se torn-lo imutvel:
# chattr +i /etc/services


andre.his@gmail.com
Check-list nos servios dos sistema (2)
Informaes sobre servios ativos no sistema:
# netstat -ntl
Proto Recv-Q Send-Q Endereo Local Endereo Remoto
Estado
tcp 0 0 0.0.0.0:22 0.0.0.0:* OUA
tcp 0 0 127.0.0.1:631 0.0.0.0:* OUA


andre.his@gmail.com
Check-list nos servios dos sistema (3)
Para verificar se as portas corretas esto abertas, pode usar
o nmap
Usado tambm para verificar o que est aberto em
um servidor
# nmap -sS -P0 -O maquina-destino
sS - realiza um stealth scan , a verificaao ocorre
pelo modo half-open connection.
P0 - realiza o portscan sem pingar.
O - Tenta advinhar o sistema operacional remoto


andre.his@gmail.com
Check-list nos servios dos sistema (4)
Outros exemplos
# nmap -sS 192.168.1.150
exibe as portas abertas ou em uso ou
# nmap -sF <ip> -p 1-65535
# nmap -sF 192.168.1.2 -p 1-65535
pega todas as portas em uso.
# nmap -p 1-65000 localhost



andre.his@gmail.com
Servios de Rede
Stand alone versus Inetd
O modelo Inetd
Network Super Daemon
/etc/services : Mapeia o nome do servio a nmero de porta
/etc/inetd.conf : Main Configuration file for inetd.
ftp stream tcp nowait root /usr/sbin/tcpd proftpd
O modelo Xinetd
Grande substituto para inetd
Mais seguro e flexvel com avanado mecanismo de controle de acesso
/etc/xinetd.conf : Arquivo de Configurao principal do xinetd
/etc/xinetd.d/ : Contm arquivos para servios gerenciados pelo
xinetd

andre.his@gmail.com
Servios de Rede (2)
Gerenciamento de Servios de Redes em Inetd e Xinetd
Para Inetd : descomentar o correspondente servio no arquivo inetd.conf
Reiniciar o daemon Inetd
# pkill HUP inetd
Para Xinetd : Fazer mudanas em xinetd.conf e xinetd.d
Mecanismos de controle de acesso para servios pode ser especificados
# /etc/init.d/xinetd restart
Tpicos Servios que devem ser bloqueados
Finger, rwho, rsh , rlogin, rexec, echo, ntalk
FTP, Telnet
Recomenda-se ssh, scp, sftp



andre.his@gmail.com
Hardening - Xinetd
Super servidor que carregar servios de rede baseado em
requisies a partir da rede
/etc/xinetd.conf
Portas a escutar
Que servidor iniciar para cada porta
Verifica que servio oferecer Negar outros
Arquivos /etc/xinetd.d/*
Alterar de disable = no para disable = yes
# chmod 600 /etc/xinetd.conf

andre.his@gmail.com
Hardening - Xinetd
stat /etc/xinetd.conf garantir que o proprietrio o root
chattr +i /etc/xinetd.conf tornar o arquivo
imutvel, no pode ser modificado, deletado ou renomeado and
nenhum link criado
reiniciar o servidor xinetd aps as mudanas
/etc/init.d/xinetd reload
# chattr +i /etc/xinetd.conf
# chattr +i /etc/xinet.d/*

andre.his@gmail.com
Gerenciando a inicializao dos servios
O diretrio /etc/init.d/ guarda todos os scripts de inicializao de servios dos
sistema
O diretrio /etc/rc.d/ guarda os links simblicos para cada runlevel (nvel de
execuo) em diferentes diretrios, por exemplo
/etc/rc1.d : Servios que iniciam e param
no nvel
/etc/rc2.d/S10network : iniciar o servio
de rede no runlevel 2
/etc/rc2.d/K09smb : para o servio smb
(samba)
Estes scripts devem estar disponvel para leitura apenas para o root
# chmod -R 700 /etc/rc.d/init.d/*


andre.his@gmail.com
Gerenciando a inicializao dos servios (2)
Debian:
Habilita ou desabilita um servio na inicializao do sistema. O
insserv l o cabealho do script referente ao servio especificado e
automaticamente configura outros servios necessrios, na ordem
de execuo correta.
Sintaxe:
Para adicionar um servio:
#insserv nome-do-servio
Para remover um servio:
#insserv -r nome-do-servio

andre.his@gmail.com
Gerenciando a inicializao dos servios (3) -
Runlevels
0: desligar o sistema
1: usurio nico (super usurio)
2: multiusurio sem servio de rede
3: multiusurio com servio de rede
4: livre (no definido, depende da distribuio)
5: multiusurio com servio de rede e login
grfico
6: reiniciar o sistema.


andre.his@gmail.com
Gerenciando a inicializao dos servios (4)
RedHat:
# chkconfig servico on
Coloca servio para iniciar sempre com o sistema.
# chkconfig servico off
Retira servio da inicializao junto com o sistema.

H outras opes para o chkconfig.


andre.his@gmail.com
Gerenciando a inicializao dos servios (5)
Debian:
Para inicializar/para/reiniciar servios manualmente
#/etc/init.d/nome_servico start|stop|restart|reload
#invoke-rc.d nome_servico start|stop|restart|reload
Red Hat:
Para inicializar/para/reiniciar servios manualmente
#/etc/init.d/nome_servico start|stop|restart|reload
#service nome_servico start|stop|restart|reload


andre.his@gmail.com
Arquivo: /etc/host.conf
Linux usa um arquivo para determinar de onde sero obtidos os
endereos IP corrrespondentes os nomes de mquinas
Editar /etc/host.conf

order hosts, bind
Indica ao ordem de utilizao dos servios de consulta de nomes
nospoof on
No forja o IP da mquina IP spoofing uma forma de
explorao da segurana


andre.his@gmail.com
Hardening: TCPWRAPPERS
Segundo a norma NBR ISO/IEC 27001, em especfico o item
9.4.1, que diz respeito Poltica de utilizao dos servios de
Rede, conveniente que os usurios possuam controles e
gerenciamento. E ainda, no item 9.4.7, que diz a respeito ao
Controle de conexes de Rede recomendvel que existam
controles que limitem a capacidade de conexo dos usurios.
Pensando nas recomendaes da norma, pode-se,
inicialmente, utilizar dois recursos para limitar o uso dos
servios de rede, que seriam o TCPWRAPPERS (/etc/hosts.deny
e /etc/hosts.allow) combinado com limitaes de conexo que
podemos fazer pelo PAM (/etc/pam.d e /etc/security) aliado
uma poltica bem definida e com um estrutura de registro de
eventos Syslog, que iremos configurar posteriormente.
andre.his@gmail.com
Hardening: TCPWRAPPERS (2)
Nega qualquer acesso remoto dos servios
vinculados aos Supers Deamon (xinet ou inetd).
Sua configurao deve ser efetuada atravs dos arquivos
/etc/hosts.allow e /etc/hosts.deny
Em /etc/hosts.deny so configuradas as regras para
negar servios a determinados clientes, j em
/etc/hosts.allow configuram-se regras para permitir o
acesso a determinados clientes
andre.his@gmail.com
Hardening: TCPWRAPPERS (3)
As regras de controle de acesso, existentes nestes dois arquivos, tm o seguinte
formato:
lista_de_daemons : lista_de_clientes [: comando]
lista_de_daemons: Lista de um ou mais nomes de daemons (como
especificados no /etc/inetd.conf), ou curingas.
lista_de_clientes: Lista de um ou mais endereos ou nomes de mquinas,
padres ou curingas utilizados para especificar quais clientes podem e quais no
podem acessar o servio.
comando (opcional): possvel executar um comando sempre que uma regra
casa com um padro e utilizada.
andre.his@gmail.com
Hardening: TCPWRAPPERS (4)
Curingas podem ser utilizados tanto na lista de
daemons quanto na lista de clientes.
ALL
Significa todos os servios ou todos os clientes, dependendo apenas
do campo em que se encontra.
LOCAL
Este curinga casa com qualquer nome de mquina que no contenha
um caractere ponto ., isto , uma mquina local.
PARANOID
Casa com qualquer nome de mquina que no case com seu
endereo. Isto geralmente ocorre quando algum servidor DNS est mal
configurado ou quando alguma mquina est tentando se passar por
outra.
andre.his@gmail.com
PAM Mdulo de Autenticao Plugvel
O PAM possui mtodos que podem auxiliar os mtodos de
autenticaes tradicionais, possibilitando que executem novas
funes. Ex: controle de horrio em que o usurio possa logar-se.
Crie uma poltica que no possibilite o uso de su, exceto pelos
usurios do grupo root.
# vi /etc/pam.d/su
auth required pam_wheel.so

andre.his@gmail.com
PAM Mdulo de Autenticao Plugvel (2)
Possibilite ssh no horrio das 7:30 s 19:00.
# vi /etc/security/time.conf
sshd;*;*;Al0730-1900
# vi /etc/pam.d/sshd
account required pam_time.so
andre.his@gmail.com
PAM Mdulo de Autenticao Plugvel (3)
Desative a possibilidade de login do root atravs do PAM e o
arquivo time.conf:
# vi /etc/pam.d/login
account requisite pam_time.so
# vi /etc/security/time.conf
login;*;root;!Al0000-2359

andre.his@gmail.com
PAM Mdulo de Autenticao Plugvel (4)
Onde:
login indica o servio
tty* indica os terminas onde a poltica ser
aplicada
root determina que a poltica ser aplicada ao
usurio root
!Al0000-2359 indica o horrio permitido, sendo que
! estabelece que horrio no permitido
Sintaxe: servicos;ttys;usuarios;tempos

andre.his@gmail.com
Impor Limites e Recursos
/etc/security/limits.conf importante ajustar os
limites,para prevenir ataques DoS
Acrescentar ou modificar as seguintes linhas em limits.conf para:
hard core 0 # proibir arquivos core
hard rrs 5000 # uso da memria 5M
hard nproc 20 # nmero de processos
Editar /etc/pam.d/login e acrescentar
session required /lib/security/pam_limits.so
Evitar :(){ :|: &}; :
andre.his@gmail.com
Segurana no Terminal: Limitar o uso de terminal de
texto
No interessante deixar o login habilitado em
todos os terminais de texto. Para bloquear o
terminais 4,5 e 6, por exemplo, deve-se editar o
arquivo /etc/inittab e comentar as seguintes
linhas:
# vi /etc/inittab
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6
andre.his@gmail.com
Bloquear login de root nos terminais de texto
# vi /etc/securetty
#tty1
#tty2
#tty3
#tty4
#tty5
#tty6
#tty7
#tty8
#tty9
#tty10
#tty11
#tty12
andre.his@gmail.com
Bloquear o terminal com a varivel TMOUT
A varivel TMOUT que controla em quanto tempo
o terminal ser deslogado em caso de desuso. No
vem setada por padro em sistemas Linux.Podemos
set-la provisoria e manualmente:
# TMOUT=15
Ou, definitivamente, inserido-a ao final do arquivo
/etc/profile
# vi /etc/profile
fi
fi
TMOUT=180
andre.his@gmail.com
Remover shells vlidas de certos usurios
Deve-se remover as shells vlidas de todos os usurios
que no vo executar oficialmente login no sistema, atravs
de terminal local (tty) ou via ssh. Executando o script
/root/invalidos.sh. Combinado a isso, crie um usurio
estratgico pertencente ao grupo root que ter validade
para que voc possa utiliz-lo para realizao de login e
posteriormente usar o su para tornar-se root.
# useradd -g root nome_usuario
# passwd nome_usuario
# vi /root/invalidos.sh
andre.his@gmail.com
Remover shells vlidas de certos usurios (2)
Script /root/invalidos.sh
#!/bin/bash

for USER in $(cat /etc/passwd| cut -f 1 -d : | \
grep -v root | grep -v nome_usuario)
do
chsh -s /bin/false $USER
done
andre.his@gmail.com
Remover shells vlidas de certos usurios (3)
Para adotar essa poltica sempre que se criar um
novo usurio, necessrio editar os seguintes
arquivos.
No Debian:
# vi /etc/adduser.conf
Nesse arquivo, pode-se mudar a varivel DSHELL
para um shell invlida
DSHELL=/bin/false
No Red Hat:
# vi /etc/default/useradd
andre.his@gmail.com
Log do Shell
O shell bash armazenas os ltimos comandos no
arquivo ~/.bash_history
Todo usurio tem seu prprio arquivo .bash_history
Reduzindo o nmero de comandos armazenados no
arquivo .bash_history pode manter protegidas as
senhas casualmente digitadas em linha de comando
Assim, deve-se ajustar as variveis HISTFILESIZE e
HISTSIZE que esto no arquivo /etc/profile para:
HISTFILESIZE = 20
HISTSIZE = 20
andre.his@gmail.com
CONTROLE DE ACESSO DE USURIOS
andre.his@gmail.com
Removendo usurios desnecessrios
O arquivo /etc/passwd armazena os usurios ativos no sistema,
portanto, devemos deixar ativos os usurios que realmente
devam ter acesso, principalmente usurios que no necessitem
de shell, substituir o /bin/bash ou /bin/sh por
/bin/false:
root:x:0:0:root:/root:/bin/bash
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh

andre.his@gmail.com
Data de expirao para conta de usurio
Para tanto, utiliza-se o comando chage, que
modifica parmetros do arquivo /etc/shadow
# chage -l teste
Fazendo algumas modificaes para o usurio
# chage -M 30 -W 5 -I 2 teste
# chage -l teste
Onde:
-M o tempo mximo de validade da conta
-W o tempo de aviso
-I o tempo antes de a conta ser desativada
andre.his@gmail.com
Contas especiais
Desabilitar todas as contas especiais
padro do sistema, por exemplo, news,
games, ...
Para apagar um usurio - userdel usuario
Para apagar um grupo - groupdel usuario
Tornar imutveis os arquivos de contas
# chattr +i /etc/shadow
# chattr +i /etc/passwd
# chattr +i /etc/group
# chattr +i /etc/gshadow
andre.his@gmail.com
Polticas de senhas
Alterar as configuraes de login padro:
- No arquivo /etc/login.defs
PASS_MAX_DAYS 100
PASS_MIN_LENGTH 8
PASS_WARN_AG 10
Limpar todas as informaes de sistema
/etc/motd
/etc/issue & /etc/issue.net
andre.his@gmail.com
Polticas de senhas (2)
Algo muito importante, frequentemente
negligenciado
Ajustar os valores corretos em /etc/login.defs
Alterar PASS_MIN_LEN 5
para PASS_MIN_LEN 8
Alterar PASS_MAX_DAY 99999
Alterar PASS_MAX_DAY 63
apg Automatic password generator
http://www.adel.nursat.kz/apg/
andre.his@gmail.com
Polticas de senhas (2)
Algo muito importante, frequentemente
negligenciado
Ajustar os valores corretos em /etc/login.defs
Alterar PASS_MIN_LEN 5
para PASS_MIN_LEN 8
Alterar PASS_MAX_DAY 99999
Alterar PASS_MAX_DAY 63
apg Automatic password generator
http://www.adel.nursat.kz/apg/
andre.his@gmail.com
Procurar por senhas fracas
Pode-se usar o John The Ripper, que uma
ferramenta de bruteforce, para descobrir senhas
fracas e desabilitar usurio.
# apt-get install john
# scp root@IP_servidor:/etc/shadow /root
# john /root/shadow
Caso se queira fazer uma nova verificao, deve-se apagar o arquivo
john.spot
andre.his@gmail.com
Hardening - SSH
O servio SSH , atualmente, um dos
mais teis para administradores de
sistemas
Permite acesso remoto a mquinas
Confidencialidade
Autenticidade (para os que souberem usar)
Automatizao de atividades
andre.his@gmail.com
Hardening SSH (2)
Configurao:
Os arquivos de configurao normalmente ficam em:
/etc/ssh
Normalmente temos estes arquivos
moduli
sshd_config
ssh_host_dsa_key.pub
ssh_host_key.pub
ssh_host_rsa_key.pub
ssh_config
ssh_host_dsa_key
ssh_host_key
ssh_host_rsa_key
andre.his@gmail.com
Hardening SSH (3)
Arquivo: /etc/ssh/sshd_config
Configuraes:
Desabilitar login como root
PermitRootLogin no
Usar a separao de privilgios (neste caso
apenas algumas atividades so feitas com o
usurio root e as demais com outro usurio
do sistema)
UsePrivilegeSeparation yes
andre.his@gmail.com
Hardening SSH (4)
Checar as permisses dos arquivos e o donos do
mesmo
StrictModes yes

Desabilitar o sftp, comentando-o
#Subsystem sftp /usr/lib/misc/sftp-server
andre.his@gmail.com
Hardening SSH (5)
Desabilitar as autenticaes baseadas em
confiana entre os hosts
IgnoreRhosts yes
HostbasedAuthentication no
RhostsRSAAuthentication no

andre.his@gmail.com
Hardening SSH (6)
Possibilite ssh no horrio das 7:30 s 19:00.
# vi /etc/security/time.conf
ssh;*;*;Al0730-1900

# vi /etc/pam.d/ssh
account required pam_time.so
andre.his@gmail.com
AJUSTANDO O KERNEL
andre.his@gmail.com
Parmetros de Tunning do Kernel
Parmetros pode ser ajustados em /etc/sysctl.conf
editar /etc/sysctl.conf e acrescentar
net.ipv4.icmp.echo.ignore.all =1
Reiniciar a rede digitando:
/etc/init.d/networking restart
Recusa a responder requisies de broadcast
net.ipv4.icmp.echo.ignore.broadcasts =1
Reiniciar a rede digitando:
/etc/init.d/networking restart


andre.his@gmail.com
Parmetros de Tunning do Kernel (2)
Desabilitar redirecionamentos de ICMP
editar /etc/sysctl.conf e acrescentar
net.ipv4.conf.all.accept_source_route =0
Reiniciar a rede digitando:
/etc/init.d/networking restart
Ativar proteo TCP SYN Cookie (o recurso syncookies
utilizado pelo sistema toda vez que fila de syn excede o valor
mximo)
net.ipv4.tcp_syncookies =1
Reiniciar a rede digitando:
/etc/init.d/networking restart

andre.his@gmail.com
Parmetros de Tunning do Kernel (3)
Desabilitar redirecionamentos de ICMP
editar /etc/sysctl.conf e acrescentar
net.ipv4.conf.all.accepts_redirects=0
Reiniciar a rede digitando:
/etc/init.d/networking restart
Ativar proteo contra fragmentao/desfragmentao
net.ipv4.ip_always_defrag=1
Reiniciar a rede digitando:
/etc/init.d/networking restart


andre.his@gmail.com
Parmetros de Tunning do Kernel (4)
Ativar proteo contra mensagens invlidas bad-error
(roteadores que enviam broadcast frames com respostas
invlidas)
editar /etc/sysctl.conf e acrescentar
net.ipv4.icmp_ignore_bogus_error_responses =1
Reiniciar a rede digitando:
/etc/init.d/networking restart
Ativar proteo contra IP spoofing, ajuda a certificar que os
pacotes usam endereos de origem legtimos
net.ipv4.conf.all.rp_filter =1
Reiniciar a rede digitando:
/etc/init.d/networking restart

andre.his@gmail.com
Parmetros de Tunning do Kernel (5)
Logar quaisquer pacotes de origem suspeita, forjados
ou redirecionados
editar /etc/sysctl.conf e acrescentar
net.ipv4.conf.all.log_martians =1
Reiniciar a rede digitando:
/etc/init.d/networking restart
andre.his@gmail.com
REGISTROS DE LOGS NO SISTEMA
andre.his@gmail.com
Servidor de Logs
A necessidade de registro das atividades dos usurios e
servios dos sistemas , notoriamente, muito importante
para os administradores. A importncia tanta, que na
norma NBR ISO/IEC 17799,recomenda-se no item 9.7.1,
que diz respeito ao Registro (log) de eventos, ser
tambm prioridade uma poltica de segurana onde os
registros de logs devam atender s seguintes
caractersticas:
Identificao dos usurios;
Datas e horrios de entrada (login, logout);
Identidade do terminal, nome da mquina ou IP;
Registro das tentativas de acesso aos aceitos e rejeitados;
Registro das tentativas de acesso a outros recursos e dados
aceitos e rejeitados.
andre.his@gmail.com
Syslog-ng
O syslog-ng um novo sistema de logs de
extrema facilidade de configurao e possui
grandes recursos.
Para instalar basta executar:
# apt-get install syslog-ng
Iremos configurar o Servidor e os Clientes para
enviarem seus logs para o Log Server
andre.his@gmail.com
Syslog-ng (2)
Estes so os passos mais importantes, configurar a
origem (source), destino (destination) e o filtro
(filter).
No filtro pode-se utilizar de algumas funes como:
facility() - Ex. facility(mail);
level() - Ex. level(notice);
program() - Ex. program(^mysqld);
andre.his@gmail.com
Syslog-ng: Servidor
Configurao do Servidor
# vi /etc/syslog-ng/syslog-ng.conf
Opes de Origem, Mquinas Remotas
source servremotos { udp();};
Opes de Filtro
## Filtro para o Servidor Remote 1
filter f_servremoto1 {host(192.168.0.1);};
## Filtro para o Servidor Remote 2
filter f_servremoto2 {host(192.168.0.2);};

andre.his@gmail.com
Syslog-ng: Servidor (2)
Configurao do Servidor
Opes de Destino
# Destino do Logs do Servidor Remote 1
destination servremoto1{
file(/var/logserver/servremoto1.log
owner(root) group(root) perm(0640));};
# Destino do Logs do Servidor Remote 2
destination servremoto2{
file(/var/logserver/servremoto2.log
owner(root) group(root) perm(0640));};


andre.his@gmail.com
Syslog-ng: Servidor (3)
Configurao do Servidor
Opes de Log (Montagem do Log)
# Logs do Servidor Remote 1
log{source(servremotos);
filter(f_servremoto1);
destination(servremoto1);};
# Logs do Servidor Remote 2
log{source(servremotos);
filter(f_servremoto2);destination(servremoto2);};
Reiniciar o Syslog-NG
# /etc/init.d/syslog-ng restart



andre.his@gmail.com
Syslog-ng: Cliente
Configurao do Cliente (Servidor Remoto)
# vi /etc/syslog-ng/syslog-ng.conf
Opes de Destino
destination servlog{ udp(192.168.0.8 port(514));};
Opes de Log (Montagem do Log)
# Registro dos Logs no Servidor
log{source(src); destination(servlog);};
source src { unix-dgram("/dev/log"); internal(); };
Reiniciar o Syslog-NG
# /etc/init.d/syslog-ng restart

andre.his@gmail.com
Rotacionamento de Logs
Como os logs crescem muito rapidamente, deve-se
definir um poltica de logs e utiliza o recurso de
rotacionamento de logs nativo do sistema, o
LogRotate.
O arquivo de configurao do rotacionamento no
Debian /etc/logrotate.conf e no Red Hat
o /etc/rotate.conf

andre.his@gmail.com
Rotacionamento de Logs (2)
Algumas opes do LogRotate
weekly
Essa opo faz com os logs sejam rotacionados
semanalmente, mas tambm pode ser diariamente (daily)
rotate 4
Define que sero mantidos os 4 ltimos rotacionamentos
para no perder o controle
mail root
Define, em que casos de erros de no tem existncias de
logos,eles sejam enviados para o root


andre.his@gmail.com
Rotacionamento de Logs (3)
Algumas opes do LogRotate
create
Essa opo determina que sejam criados novos
arquivos de log(vazios), aps os antigos rodarem
compress
Essa opo determina que as cpias de logs
sejam compactadas, mantendo sempre o
ltimo rodado descompactado
Pode-se definir uma estrutura personalizada para
cada arquivo de log, como no exemplo
mostrado ao final do arquivo
logrotate.conf
andre.his@gmail.com
Rotacionamento de Logs (4)
Mesmo o rotacionamento sendo determinado
pelo arquivo de configurao logrotate.conf,
pode-se forar a rod-lo a qualquer momento,
manualmente, por meio do comando:
# logrotate /etc/logrotate.conf
O controle das aes de rotacionamente feito
por meio do contrab, o que pode ser observado
em:
# cat /etc/crontab

andre.his@gmail.com
Perguntas? Dvidas?

Você também pode gostar