Hardening Linux
Fábio Costa
[email protected]
AGENDA
Hardening 1:
Definição
Importante
Checklist
Hardening 2:
Serviços e Aplicações
Hardening 3:
Controle de log e Auditoria
DEFINIÇÕES
Processo de fortificação do sistema operacional aplicando
técnicas específicas de controles
Efeito de blindagem do sistema
Exemplos:
– Aplicar e manter patches atualizados, tanto do sistema
operacional quanto das aplicações.
– Revisar e modificar as permissões dos sistemas de
arquivos, em especial no que diz respeito a escrita e
execução.
– Reforçar a segurança do login, impondo uma política de
senhas fortes.
IMPORTANTE
ISO 17799 e ISO 27002
– Controle de Acesso (Lógico e Físico)
– Políticas
– Gestão da continuidade de negócio
– Gerenciamento de Riscos
Instalação e Hardening
A instalação padrão de qualquer sistema
operacional não é recomendável seja qual for a
finalidade do servidor.
Administradores de sistema tem por obrigação
melhorar a segurança ativando controles nativos
ou implementando-os.
Esse processo é classicamente denominado
Hardening.
O Linux nos possibilita implementar vários
“Controles Técnicos”.
Antes da Instalação
Planejamento:
Documentação
Quais serviços serão instalados?
Quantos Usuários?
Qual a média de acesso?
Senha segura para root/usuário principal
Pensar em redundância!!!
Hardening Físico: Instalação
Desabilitar a inicialização a partir de dispositivos como
disquete, cdrom, drive usb e rede
– Impedir que pessoas indesejadas tente iniciar o
sistema a partir de um disco especial de boot
– Proteger contra mudanças nas características da BIOS
Reinicializar a máquina e mudar a sequência de boot para Hard Drive
ONLY
Incluir uma senha para a BIOS
Hardening Físico: Instalação
Particionamento:
/boot
/home
/usr
/var
/var/log
/tmp
swap
Para evitar qualquer problema com tamanho de partições use LVM
Controle sobre Sistema de
Arquivos
Eis as principais opções
– defaults: permite alguns parâmetros (Depende da distribuição e do
tipo de FS)
– noquota: não ajustar quotas para usuários
– nosuid: não permitir SUID/SGID
– nodev: não permitir acesso a dispositivos especiais ou de caractere
– noexec: não permitir a execução de nenhum binário
– quota: permitir uso de quotas por usuário
– ro: permitir para somente-leitura
– rw: permitir para leitura-escrita
– suid: permitir acessos SUID/SGID
Controle sobre Sistema de
Arquivos
Ponto de
Montagem
nosuid
noexec
noatime
/boot
X
----
----
/
----
----
----
/home
X
X
/usr
X
----
----
/tmp
X
X
----
/var
X
X
----
/var/log
X
X
X
Controle sobre Sistema de
Arquivos
$ sudo vim /etc/fstab
/dev/hda1
/dev/hda3
/dev/hda4
/dev/hda5
/dev/hda6
/dev/hda7
/dev/hda8
/boot
ext4
/
ext4
/home ext4
/usr
ext4
/tmp
ext4
/var
ext4
/var/log ext4
defaults,nosuid
defaults
defaults,nosuid,noexec
defaults,nosuid
defaults,nosuid,noexec
defaults,nosuid,noexec
defaults,nosuid,noexec,noatime
Hardening no Sistema
Os pacotes precisam vir de uma fonte
segura:
# vim /etc/apt/sources.list
deb http://ftp.br.debian.org/debian/ squeeze main
Para garantir que a fonte é segura:
# apt-get install debian-keyring
Hardening no Sistema
Escolha cuidadosamente os pacotes que deverão ser
instalados e desinstalados
– Exemplo:
Lynx – cliente http/ftp que possibilita transferência de malwares
Wget – cliente http/ftp que possibilita transferência de malwares
Netcat (nc) – canivete suíço que possibilita transferência de
malwares ou até mesmo criar backdoors
Hping – montador de pacotes – que possibilita criar backdoors via
rawsocket
Remoção de Programas e
Serviços Desnecessários
Primeiramente, deve-se fazer uma pesquisa por todos
os pacotes e suas versões instalados no sistema,
fazendo uma lista para ser melhor analisado.
No Debian:
$ sudo dpkg -l | awk '{print $2, $3}' | sed '1,5d' > /root/pacotes
$ sudo cat /root/pacotes
No Red Hat:
rpm -qa
Protegendo o GRUB
Arquivo de Configuração do GRUB é /boot/grub/grub.cfg mas é aconselhável a sua
modificação e compilação através de seus módulos.
Incluir/alterar a variável timeout=0 no arquivo /etc/default/grub , para não mostrar
menu.
$ sudo vim /etc/default/grub
Gerar hash da senha SHA512 por meio do comando:
#grub-mkpasswd-pbkdf2
Enter password:
Reenter password:
Your PBKDF2 is
grub.pbkdf2.sha512.10000.706A070CD168B759801D2790C6D48D5C3842
B9165CF08600918CD9A496B6BFF9CD9BB8F7C99DEC431DF3AD0D4667
09ECE041FC00C5C1B58F00A879E0322959B7.6FC5058001DFFC1CD6B35
F9A5DA66ED6C8745E4999E064E712C9BF302E8F2547CD0B591C33A34
0F229FD79D2252E23CFC41410C9A3300537E54C9CE6F7008100
Protegendo o GRUB
Adicionando o código de proteção abaixo no final do arquivo /etc/grub.d/00_header
Código:
cat << EOF
set superusers="testuser"
password_pbkdf2 testuser
grub.pbkdf2.sha512.10000.706A070CD168B759801D2790C6D48D5C3842B9165
CF08600918CD9A496B6BFF9CD9BB8F7C99DEC431DF3AD0D466709ECE041FC
00C5C1B58F00A879E0322959B7.6FC5058001DFFC1CD6B35F9A5DA66ED6C87
45E4999E064E712C9BF302E8F2547CD0B591C33A340F229FD79D2252E23CF
C41410C9A3300537E54C9CE6F7008100
EOF
Onde: testuser e o usuário que pode editar o arquivo e grub.pbkdf2.sha512... e a
senha do testuser;
Execute agora:
$ sudo update-grub
Dessa forma o arquivo /boot/grub/grub.cfg será recompilado e terá adicionado a proteção
Desabilitar Ctrl-Alt-Delete
Sabemos que pressionando Ctrl-Alt-Delete
reiniciamos o sistema então devemos prevenir que
a máquina seja reinicializada.
Abra e edite o seguinte arquivo:
$ sudo vim /etc/inittab
ca:12345:ctrlaltdel:/sbin/shutdown-t1-a-rnow
Comentar ou modificara ação:
ca:12345:ctrlaltdel:/bin/echo“Control+Alt+Del desativado”
Bloquear login do root nos
terminais de texto
Edite o arquivo /etc/securetty e procure a seção
Virtual consoles.
#tty1
#tty2
#tty3
#tty4
#tty5
...
Bloquear o Terminal
A variável TMOUT do ambiente BASH é que
controla em quanto tempo o terminal será
deslogado em caso de desuso. Não vem
definida por padrão em sistemas Linux.
Podemos setá-la provisoria e manualmente:
$ TMOUT=15
Ou, definitivamente, inserido-a ao final do
arquivo /etc/profile
Bloquear o Terminal
vlock é um programa para bloquear uma ou
mais sessões no console do Linux.
$ vlock
Bloquear todas os terminais
$ vlock -a
Controles de Sudo
Com o sudo, pode-se definir que comandos cada
usuário comum pode executar como se fosse root
# apt-get install sudo
O arquivo de configuração do sudo é /etc/sudoers
(readonly) utilize visudo para editar.
Exemplo de configuração:
teste ALL=/sbin/ifconfig, /sbin/iptables
Define que o usuário teste pode executar os comandos
ifconfig e iptables, sendo solicitada a senha de root
Controles de Sudo
Exemplo de configuração:
teste ALL=NOPASSWD: /bin/reboot, /bin/halt
Define que o usuário teste pode executar os comandos
reboot e halt, sem que seja solicitada a senha de root
Exemplo de configuração:
teste ALL=/sbin/passwd [A-Z]*,!/usr/bin/passwd root
Define que o usuário teste pode alterar a senha de
qualquer usuário cujo login estiver no intervalo de A-Z,
exceto a senha de root
Controle de Sudo
Cuidado com o SUBSHELL
- less
- vim
- more
- etc
Exemplo:
$ sudo vim /etc/services
(tecle esc e digite)
:!bash
Controle de Sudo
Edite o arquivo /etc/sudoers.d/teste
teste ALL = (root) NOPASSWD: sudoedit /etc/services
Tente fazer o subshell
$ sudoedit /etc/services
(tecle esc e digite novamente)
:!bash
Limite de Recursos
:(){ :|:& };:
Limite de Recursos
Por padrão, qual o número máximo de processos que podem
ser executados ao mesmo tempo?
$ sudo ulimit -u
unlimited
Qual o tempo máximo de uso de cpu?
$ sudo ulimit-t
unlimited
Qual o tamanho máximo de arquivo que os usuários podem
criar?
$ sudo ulimit-f
unlimited
Limite de Recursos
Limitando por usuário
$ sudo vim /etc/security/limits.conf
<usuario/grupo> <tipo_de_limite> <recurso> <valor_do_limite>
* hard nproc 100
* soft nproc 70
* hard cpu 480
* hard fsize 100000
* hard maxlogins 2
* hard rss 100000
Bastille Hardening
É um programa de Hardening para S.O, que configura-o de forma
proativa para aumentar a segurança e diminuir sua suscetibilidade
à comprometimentos.
modo hardening padrão, questiona de forma interativa, explicando
cada tópico questionado, construindo uma política baseada nas
respostas do administrador.modo hardening padrão, questiona de
forma interativa, explicando cada tópico questionado, construindo
uma política baseada nas respostas do administrado.
Suporte para Linux, Mac OS X e HP-UX
Modo automático ou manual
Bastille Hardening
Terminal:
$ sudo bastille -c
Grafico:
$ sudo bastille -x
Recomendação
OBRIGADO!!!
?
Download

Hardening Linux - PoP-BA