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