====== Fortalecimento de Servidores Debian ======
===== Introdução =====
Esse roteiro tem como base o Debian Securing How-to[1] ([[http://www.debian.org/doc/manuals/securing-debian-howto/|http://www.debian.org/doc/manuals/securing-debian-howto/]]).
\\ ====== Depois da instalação ======
Essas dicas de hardening se destinam à pós-instalação de um servidor com Debian GNU/Linux 8, para roteiro de instalação leia Instalação básica de Debian para Servidores
===== Diminuir os 5 segundos de espera do Grub para inicialização rápida =====
Editar o arquivo /etc/default/grub editando a linha a seguir com o número de tempo correspondente em segundos:
GRUB_TIMEOUT=2
Após a edição do arquivo executar o comando abaixo para que a configuração entre em vigor:
# update-grub
===== O arquivo /etc/inittab (apenas para servidores físicos)[editar] =====
Para restringir a reinicialização via Ctrl+Alt+Del, comente a linha:
#ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
Para desativar os consoles de 3 a 6, mantenha o trecho referente aos consoles assim:
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6
===== Setando permissão de desligamento do sistema =====
Para que somente o root consiga desligar/reinicializar o sistem rode o comando:
# echo "root" > /etc/shutdown.allow
===== Restringindo uso do su =====
Para para restringir o uso do su criaremos um grupo wheel e adicionaremos os usuários com esse privilégio ao grupo Criar o grupo:
# groupadd wheel
Adicione nesse grupo o root e outros usuários que podem usar o su:
# adduser root wheel
# adduser nome_admin wheel
Onde: nome_admin é usuário que terá acesso ao su
===== No arquivo /etc/pam.d/su =====
Adicione a linha "auth requisite pam_wheel.so group=wheel debug" abaixo da linha comentada "# auth required pam_wheel.so", deixando o resultado assim:
# auth required pam_wheel.so
auth requisite pam_wheel.so group=wheel debug
====== Tornando logins mais seguros ======
===== Utilizando senhas shadow =====
# dpkg-reconfigure --priority=high passwd
===== Restringir login do root no console =====
Comente TODAS as linhas do aquivo /etc/securetty, desta forma não será permitido o login do root em nenhum terminal. O acesso de administrador deverá ser obtido logando como usuário comum e posteriormente usando o comando su. O arquivo ficará mais ou menos assim:
# /etc/securetty: list of terminals on which root is allowed to login.
# See securetty(5) and login(1).
#console
# Local X displays (allows empty passwords with pam_unix's nullok_secure)
#:0
#:0.0
#:0.1
#:1
...
===== Restringir usuários que podem logar por ssh =====
# echo "nome_admin" > /etc/sshusers-allowed
Onde: nome_admin é usuário que logará via ssh
- No arquivo /etc/pam.d/sshd insira a linha "auth required pam_listfile.so item=user sense=allow file=/etc/sshusers-allowed onerr=fail" após a linha "auth requiredpam_env.so envfile=/etc/default/locale" deixando o trecho do arquivo assim:
# In Debian 4.0 (etch), locale-related environment variables were moved to
# /etc/default/locale, so read that as well.
auth required pam_env.so envfile=/etc/default/locale
auth required pam_listfile.so item=user sense=allow file=/etc/sshusers-allowed onerr=fail
# Standard Un*x authentication.
@include common-auth
No arquivo /etc/ssh/sshd_config Na linha [[infraestrutura_de_ti:sistemas_operacionais:PermitRootLogin]] troque "yes" para "no"
PermitRootLogin no
Descomente a linha **Banner /etc/issue.net**
===== Banir múltiplas tentativas de acesso com senha errada =====
* Instale o fail2ban:
# aptitude install fail2ban
* Configurações básicas para proteger o SSH.
cd /etc/fail2ban
vi jail.local
* Cole as configurações a seguir:
[DEFAULT]
# Destination email address used solely for the interpolations in
# jail.{conf,local} configuration files.
destemail = you@emailservice.com
##
#Choose default action. To change, just override value of 'action' with the
# interpolation to the chosen action shortcut (e.g. action_mw, action_mwl, etc) in jail.local
# globally (section [DEFAULT]) or per specific section
action = %(action_mwl)s
#
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
#
[ssh-ddos]
enabled = true
port = ssh
filter = sshd-ddos
logpath = /var/log/auth.log
maxretry = 3
===== Fazendo logout de usuários ociosos =====
Instale o autolog:
# aptitude install autolog
===== Ocultando informações sobre o SO e fornecendo aviso legal =====
Edite o arquivo /etc/issue.net e deixe-o assim:
*********************************************************
* ACESSO RESTRITO - Todas as atividades sao monitoradas *
*********************************************************
Edite o arquivo /etc/issue e deixe-o assim:
\n \l
*********************************************************
* ACESSO RESTRITO - Todas as atividades são monitoradas *
*********************************************************
Deixe o arquivo /etc/motd.tail vazio (não apague o arquivo, apague apenas o conteúdo)
\\ ====== Fechar portas e acessos indevidos ======
Nesse caso, é conveniente limitar acesso às portas default de aplicações conhecidas, como SSH (22), FTP (20 e 21), HTTP e HTTPS (80,443) etc. Recomenda-se adotar política de proibir todo acesso via iptables primeiro e depois liberar apenas aqueles serviços necessários.