Configurações iniciais e de segurança em um servidor Ubuntu 18.04

Instalar um novo servidor requer alguns cuidados iniciais que devem ser tomados na questão de segurança e configurações de localização. Nesse tutorial vou passar alguns passos que realizo quando instalo um novo servidor com Ubuntu (a versão utilizada era a mais atual 18.04).

Locales e timezone

O primeiro passo é configurar os Locales e timezone para o novo servidor:

dpkg-reconfigure locales
timedatectl set-timezone America/Sao_Paulo

O primeiro comando você tem a opção de instalar novos locales, e setar o padrão que deseja utilizar. O segundo define o fuso horário que no meu caso é America/Sao_Paulo.

Hardening

Já de cara alterar senhas do usuário criado na instalação e senha do root do Ubuntu. Uso senhas geradas automaticamente pelo 1Password e guardo por lá mesmo.

O próximo passo é adicionar minha chave pública, como chave autorizada para o usuário root do servidor. Deve ser inserido no arquivo:

nano ~/.ssh/authorized_keys

Algumas alterações que realizo na configuração do servidor SSH. /etc/ssh/sshd_config

PermitRootLogin prohibit-password – Acesso do root não pode ser feito por senha

PasswordAuthentication No – Não permitir o acesso por senha

MaxAuthTries 6 – Limitar tentativas de autenticação

Firewall

O serviço que utilizo para firewall é o ufw, que utiliza uma sintaxe simples como interface para automaticamente criar regras do IPTABLES. Alguns exemplos de regras criadas:

ufw allow ssh
ufw allow http
ufw allow https
ufw allow 1234/tcp
ufw enable

Fail2ban

O Fail2ban é um serviço que bane tentativas de autenticação repetidas por IP. Esse banimento é feito lendo logs de tentativa de autenticação e criando regras no firewall quanto se ultrapassa as tentativas sem sucesso configurada.

apt install fail2ban
nano /etc/fail2ban/jail.d/sshd.conf

O primeiro comando instala o fail2ban e o segundo criamos um arquivo de texto para cuidar das tentativas de autenticação por SSH no servidor. Inserimos o seguinte conteúdo:

[sshd]
enable = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3

Em seguida reiniciamos o serviço e alguns comandos para verificarmos o status do serviço:

systemctl restart fail2ban
fail2ban-client status
fail2ban-client status sshd

Conclusões

Depois desses passos você tem um servidor pronto pra começar a ser configurado para rodar algum serviço. Já tem acesso por SSH com autenticação por chaves, um firewall configurado e o fail2ban banindo tentativas de ataques.