5 Dicas Simples para Proteger seu Servidor Linux

Servidores Linux são a espinha dorsal da Internet moderna. Hoje, quase todos os sites e serviços que você pode acessar através de um navegador da web funcionam em uma distribuição Linux. Aqui mostramos como você pode proteger seu servidor Linux.
Índice
- Remover o Acesso Root via SSH
- Usar uma Chave Pública para Acesso SSH
- Reforçar o Firewall do Seu Servidor Linux
- Criar um Novo Usuário para Cada Serviço
- Reforçar o Kernel do Seu Servidor
- Perguntas Frequentes
Nota: este tutorial foi criado usando um servidor Ubuntu, mas deve se aplicar para outras distribuições Linux também, incluindo seu servidor web local.
1. Remover o Acesso Root via SSH
Uma das maneiras mais rápidas de proteger seu servidor Ubuntu é garantir a segurança do seu daemon SSH desabilitando o acesso Root via SSH. Por padrão, o servidor OpenSSH permite qualquer conexão de entrada fazer login como o usuário root.
Por exemplo, executar o seguinte comando em um servidor inseguro fornecerá um prompt de login:

Isso pode ser um problema, pois deixa seu servidor aberto e vulnerável a um ataque de força bruta de senha. Para corrigir isso, faça login no seu servidor Linux e atualize o arquivo de configuração do seu daemon SSH.
Uma vez dentro do seu servidor Linux, edite o arquivo de configuração SSH:
sudonano/etc/ssh/sshd_config
Pesquise a variável PermitRootLogin no GNU Nano pressionando Ctrl + W e digitando PermitRootLogin.

Altere o valor de PermitRootLogin de “yes” para “no”, e depois salve o arquivo pressionando Ctrl + o, e depois Ctrl + x.
Para aplicar a nova configuração, recarregue o daemon SSH do servidor através do systemctl:
sudo systemctl restart ssh
2. Usar uma Chave Pública para Acesso SSH
Outra maneira rápida de proteger seu servidor Linux é criar um par de chaves públicas entre sua conta local e a conta de usuário SSH. Essa abordagem ignora o processo de login por senha e autentica você automaticamente em seu servidor remoto.
Para criar um par de chaves públicas, você precisa primeiro executar o seguinte comando na sua máquina local:
ssh-keygenO programa keygen pedirá que você forneça uma série de detalhes sobre a chave que você deseja criar. Você pode deixar essas opções em padrão pressionando Enter três vezes.

Exporte seu novo par de chaves públicas para seu servidor remoto usando o programa ssh-copy-id. Esta é uma utilidade simples que prepara as máquinas local e remota para autenticação por chave pública via SSH.
ssh-copy-id [email protected]
Faça login na sua máquina remota executando o seguinte comando:
Também é possível reforçar ainda mais a segurança do seu servidor Linux removendo o prompt de login no SSH. Abra o arquivo de configuração do seu daemon com o seguinte comando:
sudonano/etc/ssh/sshd_configEncontre a variável PasswordAuthentication e altere seu valor de “yes” para “no”.

Recarregue seu daemon SSH executando o seguinte comando:
sudo systemctl restart sshd3. Reforçar o Firewall do Seu Servidor Linux
Além de restringir o acesso SSH, você também pode melhorar a segurança do seu servidor Linux configurando seu firewall. Por padrão, uma nova máquina Linux aceitará todas as conexões de entrada de qualquer porta.
Isso pode ser um problema, pois deixa seu servidor vulnerável a um ataque de varredura de portas. Por exemplo, um agente mal-intencionado pode escanear sua máquina à procura de portas inseguras e usar isso para encontrar uma exploração adequada.

Uma maneira de corrigir isso é instalando o ufw, um cliente de firewall simples que pode controlar as portas e endereços que estão disponíveis para o mundo exterior.
Execute o seguinte comando para instalar o ufw no Ubuntu:
sudo apt install ufw
Defina as regras padrão para o ufw. Essas são as políticas que seu firewall seguirá para qualquer porta que você não personalizar. É uma boa prática garantir que você está bloqueando todas as conexões de entrada:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Configure seu firewall para os serviços que você deseja executar em sua máquina. Por exemplo, executar os seguintes comandos permitirá que você faça login via SSH e hospede um servidor web:
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443Por fim, você precisa habilitar sua nova configuração de firewall executando sudo ufw enable. Além disso, você pode verificar se seu firewall está ativo executando este comando:
sudo ufw status
4. Criar um Novo Usuário para Cada Serviço
Por padrão, cada arquivo e programa em um sistema Linux pertence a um usuário e um grupo específicos. Para modificar o sistema, você precisa ter as permissões corretas para as pastas corretas.
Uma maneira de aumentar a segurança do seu servidor Linux é criar uma nova conta de usuário para cada novo serviço. Essa abordagem permite que você contenha os privilégios de cada serviço em sua própria conta de usuário.

Para fazer isso, execute os seguintes comandos:
sudo useradd -s/bin/bash-d/home/new-service -m-Gsudo new-service
sudopasswd new-service- A flag
-sdefine o shell do sistema para a nova conta de usuário. No meu caso, minha nova conta usa o Bash como shell. - Tanto as flags
-dquanto-mdefinem o diretório do usuário padrão para a nova conta. - A flag
-G, por outro lado, adiciona a nova conta a quaisquer grupos secundários que você especificar. Por exemplo, adicionar a nova conta ao grupo sudo permitirá que ela execute comandos de superusuário. - O comando
passwdpermite que você defina uma nova senha para a nova conta de usuário.
Uma vez feito, você pode usar sua nova conta de usuário saindo de sua conta atual ou executando su new-service.

5. Reforçar o Kernel do Seu Servidor
O kernel é uma das partes mais importantes de um sistema Linux e é o que liga o hardware da sua máquina ao seu software. Por exemplo, compilar seu próprio kernel Linux permite que você habilite suporte para hardware e recursos exóticos.

Além disso, o kernel também serve como o processo raiz do sistema operacional. Proteger o kernel é uma das partes mais vitais da proteção do seu servidor Linux.
Uma das maneiras mais rápidas de proteger seu kernel é através do sysctl. Esta é uma utilidade interna que permite que você ajuste as opções de execução do kernel Linux.

No entanto, é importante notar que sysctl não cobrirá todo o processo de endurecimento do kernel, pois proteger o kernel dependerá muito do que você precisa dele.
Sabendo disso, você pode executar os seguintes comandos para impedir que seu kernel reporte qualquer informação de diagnóstico:
sudo sysctl kernel.kptr_restrict=2
sudo sysctl kernel.dmesg_restrict=1
sudo sysctl kernel.kexec_load_disabled=1
Você também pode executar os seguintes comandos para instruir seu kernel a descartar qualquer solicitação de conexão falsa feita ao seu servidor:
sudo sysctl net.ipv4.tcp_syncookies=1
sudo sysctl net.ipv4.tcp_rfc1337=1
Esses comandos, por outro lado, forçarão o kernel a validar cada conexão de entrada à máquina:
sudo sysctl net.ipv4.conf.all.rp_filter=1
sudo sysctl net.ipv4.conf.default.rp_filter=1
Por fim, o seguinte conjunto de comandos impedirá qualquer conexão de entrada de redirecionar o tráfego de rede para um gateway diferente. Fazendo isso, evitará que sua máquina caia em um ataque man-in-the-middle.
sudo sysctl net.ipv4.conf.all.accept_redirects=0
sudo sysctl net.ipv4.conf.default.accept_redirects=0
sudo sysctl net.ipv4.conf.all.secure_redirects=0
sudo sysctl net.ipv4.conf.default.secure_redirects=0
sudo sysctl net.ipv6.conf.all.accept_redirects=0
sudo sysctl net.ipv6.conf.default.accept_redirects=0
sudo sysctl net.ipv4.conf.all.send_redirects=0
sudo sysctl net.ipv4.conf.default.send_redirects=0
Dicas: além das dicas acima, você também pode fazer uso dessas ferramentas de código aberto para proteger seu servidor Linux.
Perguntas Frequentes
Eu perdi minha máquina local. Ainda é possível fazer login no meu servidor Ubuntu via SSH?
Na maioria das vezes, não deverá ser possível fazer login via SSH se ele estiver usando apenas autenticação por chave pública. No entanto, pode ainda ser possível acessar o prompt SSH se você não desabilitou a variável PasswordAuthentication.
Além disso, você poderia acessar fisicamente a máquina e atualizar “/etc/ssh/sshd_config” ou acessar o console root do seu provedor VPS.
Meu servidor tem tanto iptables quanto ufw. Preciso configurar ambos para meu firewall?
Não! Tanto iptables quanto ufw são softwares de firewall que controlam os mesmos intervalos de endereços e portas. Você só precisa configurar um deles para ter um firewall funcional no seu servidor Linux.
É possível remover os privilégios de superusuário de um usuário que eu criei?
Sim! É possível remover um usuário existente de um grupo. Use a utilidade usermod. Por exemplo, executando usermod -G video new-service removerá o usuário “new-service” do grupo “sudo” e o adicionará ao grupo “video”.
Créditos da imagem: Unsplash. Todas as alterações e capturas de tela por Ramces Red.