hardening linux · a variável tmout do ambiente bash é que controla em quanto tempo o terminal...

31
Hardening Linux Fábio Costa [email protected]

Upload: others

Post on 13-Nov-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Hardening Linux · 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

Hardening Linux

Fábio [email protected]

Page 2: Hardening Linux · 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

AGENDA

Hardening 1:

Definição

Importante

Checklist

Hardening 2:

Serviços e Aplicações

Hardening 3:

Controle de log e Auditoria

Page 3: Hardening Linux · 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

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.

Page 4: Hardening Linux · 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

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

Page 5: Hardening Linux · 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

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”.

Page 6: Hardening Linux · 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

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!!!

Page 7: Hardening Linux · 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

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 BIOSReinicializar a máquina e mudar a sequência de boot para Hard Drive ONLY

Incluir uma senha para a BIOS

Page 8: Hardening Linux · 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

Particionamento:

/boot

/home

/usr

/var

/var/log

/tmp

swap

Para evitar qualquer problema com tamanho de partições use LVM

Hardening Físico: Instalação

Page 9: Hardening Linux · 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

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

Page 10: Hardening Linux · 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

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

Page 11: Hardening Linux · 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

Controle sobre Sistema de Arquivos

$ sudo vim /etc/fstab

/dev/hda1 /boot ext4 defaults,nosuid/dev/hda3 / ext4 defaults/dev/hda4 /home ext4 defaults,nosuid,noexec/dev/hda5 /usr ext4 defaults,nosuid/dev/hda6 /tmp ext4 defaults,nosuid,noexec/dev/hda7 /var ext4 defaults,nosuid,noexec/dev/hda8 /var/log ext4 defaults,nosuid,noexec,noatime

Page 12: Hardening Linux · 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

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

Page 13: Hardening Linux · 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

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

Page 14: Hardening Linux · 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

Remoção de Programas eServiç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

Page 15: Hardening Linux · 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

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

Page 16: Hardening Linux · 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

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

Page 17: Hardening Linux · 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

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”

Page 18: Hardening Linux · 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

Bloquear login do root nosterminais de texto

Edite o arquivo /etc/securetty e procure a seção Virtual consoles.

#tty1

#tty2

#tty3

#tty4

#tty5

...

Page 19: Hardening Linux · 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

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

Page 20: Hardening Linux · 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

Bloquear o Terminal

vlock é um programa para bloquear uma ou mais sessões no console do Linux.

$ vlock

Bloquear todas os terminais

$ vlock -a

Page 21: Hardening Linux · 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

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

Page 22: Hardening Linux · 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

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

Page 23: Hardening Linux · 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

Controle de Sudo

Cuidado com o SUBSHELL

- less

- vim

- more

- etc

Exemplo:

$ sudo vim /etc/services

(tecle esc e digite)

:!bash

Page 24: Hardening Linux · 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

Controle de Sudo

Edite o arquivo /etc/sudoers.d/testeteste ALL = (root) NOPASSWD: sudoedit /etc/services

Tente fazer o subshell$ sudoedit /etc/services

(tecle esc e digite novamente)

:!bash

Page 25: Hardening Linux · 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

Limite de Recursos

:(){ :|:& };:

Page 26: Hardening Linux · 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

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

Page 27: Hardening Linux · 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

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

Page 28: Hardening Linux · 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

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

Page 29: Hardening Linux · 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

Bastille Hardening

Terminal:

$ sudo bastille -c

Grafico:

$ sudo bastille -x

Page 30: Hardening Linux · 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

Recomendação

Page 31: Hardening Linux · 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

OBRIGADO!!!

?