Uma das tarefas mais importantes ao configurar qualquer novo servidor público é garantir que ele seja seguro!
Antes de prosseguir, quero salientar que estou totalmente ciente das chaves SSH e de sua finalidade; no entanto, este guia é um conjunto básico de etapas de baixo nível para proteger seu servidor.
Eu escolho adotar esse método em vez de chaves por uma questão de preferência porque, assim como tudo o mais, chaves SSH versus senhas têm prós e contras para cada uma.
Agora, é claro que as chaves SSH são uma maneira sólida de proteger seu servidor Linux, assim como todas as coisas.
Etapa 1: crie um novo usuário com privilégios
A primeira coisa que faço sempre que provisiono um novo servidor para qualquer finalidade é o acesso seguro a ele. Para fazer isso, vou criar uma nova conta de usuário chamada 'admin' com privilégios sudo que sempre será usada para acessar o servidor e executar comandos. O acesso root remoto será desativado.
Execute o comando adduser e siga as instruções na tela para definir sua senha e outras informações, se necessário.
- Comando:
- sudo adduser admin
Agora que configuramos o usuário 'admin', é hora de conceder privilégios sudo.
- Comando:
- sudo usermod -aG sudo admin
Agora você criou um novo usuário chamado ‘admin’ com privilégios sudo que permitirão acessar seu servidor via SSH.
Observação: eu recomendaria testar o novo usuário antes de prosseguir, abrindo uma nova sessão SSH em seu servidor.
Etapa 2: alterar a porta SSH padrão
É provável que em breve (se ainda não) alguém capture o endereço IP do seu servidor e tente forçar a porta 22. Portanto, vamos alterar a porta de escuta do SSH da porta 22 para 22334.
- Comando:
- sudo nano /etc/ssh/sshd_config
Conforme você avança na configuração, você verá que a linha para o número da porta está comentada. Simplesmente descomente, altere o número da porta e salve o arquivo.
- Antes:
- Porta 22
- Depois:
- Porta 22334
Agora que alteramos o número da porta para algo diferente, vamos desabilitar o acesso root remoto antes de abrir uma nova sessão com a nova porta, pois estamos atualmente conectados na porta 22.
Etapa 3: desative o acesso root remoto
Nem é preciso dizer, mas você realmente não quer que ninguém tenha acesso não autorizado e indesejado ao seu servidor, especialmente acesso root, então vamos evitar que isso aconteça.
Para fazer isso vamos editar o arquivo `sshd_config` novamente.
- Comando:
- sudo nano /etc/ssh/sshd_config
Desta vez estamos procurando a linha que diz 'PermitRootLogin yes’ e simplesmente vamos alterá-la para 'no’.
- Antes:
- PermitRootLogin yes
- Depois:
- PermitRootLogin no
Essas alterações não terão efeito até que você reinicie o serviço sshd.
- Comando:
- sudo service sshd restart
Agora podemos testar o novo número da porta e fazer login com o usuário 'admin'.
- Se estiver usando PuTTY no Windows: insira a porta 22334 no campo porta.
- Se estiver usando terminal no Mac:'ssh -p 22334 admin@your-server-ip'
Etapa 4: configurar o firewall do Linux (ufw)
O Ubuntu vem com o ufw pré-instalado, porém, se por algum motivo você não tiver o pacote instalado, você pode instalá-lo usando o apt-get.
- Comando:
- sudo apt-get install ufw
Agora vamos definir a regra de entrada padrão para negar tráfego, a menos que seja explicitamente permitido.
- Comando:
- sudo ufw default deny incoming
Se nesta fase você ativar o firewall, ele bloqueará todas as conexões de entrada, incluindo SSH (22), FTP (21), etc., então espere até criarmos mais algumas regras.
Vamos habilitar sua porta recém-configurada (22334) para acesso de entrada.
- Comando:
- sudo ufw allow 22334
Finalmente precisamos habilitar o firewall.
- Comando:
- sudo ufw enable
É isso. Agora você tem um servidor que só pode ser acessado usando uma porta personalizada e um usuário não root.
Provavelmente adicionarei algumas outras medidas de segurança no futuro. Este guia é apenas uma visão geral para proteger seu servidor em um nível básico.