VPS Starter Kit

Aprenda sobre práticas de segurança essenciais ao obter uma VPS, aplicáveis a qualquer computador remoto que você necessite acessar remotamente através do SSH. Os comandos descritos serão baseados nas distribuições Debian e Ubuntu.

Conteúdo:

Este guia destina-se a VPS que fornecem apenas o IP e as credenciais de login root, excluindo aquelas que já oferecem níveis predefinidos de segurança, como chaves de segurança e WAF (Web Application Firewall).

Atualizar o Sistema

Faça login no seu VPS como root.

Uma prática de segurança recomendada é manter o sistema sempre atualizado. Portanto, o primeiro passo é realizar a atualização do sistema usando o comando abaixo:

apt update
apt upgrade
Atualizações Automáticas

Instale o pacote unattended-upgrades com o comando:

sudo apt install unattended-upgrades

Depois de instalado, você pode configurar o unattended-upgrades para atualizar automaticamente o seu sistema. Para isso, você pode usar o comando:

sudo dpkg-reconfigure -plow unattended-upgrades

Este comando abrirá uma janela perguntando se você deseja que o sistema baixe e instale atualizações estáveis automaticamente. Selecione “Sim” ou “Yes” para ativar as atualizações automáticas

Finalmente, dois comandos finais para ativar as atualizações automáticas no início do sistema:

sudo systemctl enable unattended-upgrades
sudo systemctl start unattended-upgrades

Criar um Novo Usuário

Crie um novo usuário: 

adduser nome_do_usuario

Defina e confirme a nova senha do usuário.

Adicione o novo usuário ao grupo sudo:

usermod -aG sudo nome_do_usuario

Criar Chaves de Segurança

Usando o Windows:

Para criar chaves no Windows você pode seguir esse guia Gerar Chaves de Segurança com Putty

Usando o Linux:

No seu sistema local, abra um terminal.

Digite o comando abaixo no terminal e pressione Enter

ssh-keygen

Isso inicia o processo de criação da chave.

ssh-keygen

Você será solicitado a fornecer um local para salvar a chave. Se você quiser usar o local padrão, basta pressionar Enter.

Enter file in which to save the key (/home/username/.ssh/id_rsa):

Em seguida, você será solicitado a fornecer uma senha. Isso adiciona uma camada extra de segurança à sua chave. Se você não quiser usar uma senha, basta pressionar Enter quando solicitado.

Enter passphrase (empty for no passphrase):

Se você escolheu usar uma senha, será solicitado a confirmá-la. Digite a mesma senha novamente e pressione Enter.

Enter same passphrase again:

Seu novo par de chaves SSH é gerado. A chave privada (id_rsa) e a chave pública (id_rsa.pub) são salvas no diretório especificado.

Enviando a chave de segurança para o Servidor

No seu sistema local, use o comando ssh-copy-id para copiar a chave pública para o servidor remoto. Substitua nome_do_usuario pelo nome do usuário que você criou no servidor remoto e seu_vps_ip pelo endereço IP do seu VPS

ssh-copy-id nome_do_usuario@seu_vps_ip

Tente se conectar ao servidor remoto usando SSH. Você deve ser capaz de se conectar sem digitar uma senha

ssh nome_do_usuario@seu_vps_ip

No servidor remoto, a chave pública é adicionada a um arquivo chamado authorized_keys no diretório ~/.ssh do usuário. Você pode verificar isso com o seguinte comando:

cat ~/.ssh/authorized_keys

Lembre-se, a chave privada deve ser mantida em segredo e segura.

Configurando o SSH

Antes de prosseguir para esta etapa de configuração, assegure-se de que consegue acessar o SSH utilizando sua chave de segurança, ou seja, sem o uso de login e senha. Além disso, confirme se o comando ‘sudo’ está funcionando corretamente, tentando utilizá-lo em algum comando que exige privilégios de root. Com essas verificações confirmadas, podemos avançar para a próxima etapa.

Desabilitando o Acesso SSH como Root e por Senha

Abra o arquivo de configuração do SSH: 

sudo nano /etc/ssh/sshd_config

Localize a linha que diz PermitRootLogin e altere para no.

Localize a linha que diz PasswordAuthentication e altere para no.

Salve e feche o arquivo.

Reinicie o serviço SSH:

sudo systemctl restart ssh

ou

sudo service ssh restart

Instalando e Habilitando um Firewall

Instale o UFW (Uncomplicated Firewall): 

sudo apt install ufw

Setando as Primeiras Regras:

Negar Todas as Entradas e Permitir Tráfego de Saída

sudo ufw default deny incoming
sudo ufw default allow outgoing

Habilitando Acesso ao SSH:

sudo ufw allow 22

Ativando o Firewall:

sudo ufw enable

Firewall com Docker

O Docker modifica as regras do iptables, o firewall do Linux, para administrar o tráfego e o isolamento dos containers. Essa ação pode resultar na violação das regras preexistentes do iptables, permitindo, por exemplo, tráfego em portas bloqueadas pelo firewall para os containers do Docker.

Diante disso se voce pretende utilizar docker na sua VPS é importante você configurar o arquivo /etc/ufw/after.rules

Digite no terminal

sudo nano /etc/ufw/after.rules

Adicione essas regras no fim do arquivo

# BEGIN UFW AND DOCKER
*filter
:ufw-user-forward - [0:0]
:ufw-docker-logging-deny - [0:0]
:DOCKER-USER - [0:0]
-A DOCKER-USER -j ufw-user-forward

-A DOCKER-USER -j RETURN -s 10.0.0.0/8
-A DOCKER-USER -j RETURN -s 172.16.0.0/12
-A DOCKER-USER -j RETURN -s 192.168.0.0/16

-A DOCKER-USER -p udp -m udp --sport 53 --dport 1024:65535 -j RETURN

-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16
-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8
-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 192.168.0.0/16
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 10.0.0.0/8
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 172.16.0.0/12

-A DOCKER-USER -j RETURN

-A ufw-docker-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW DOCKER BLOCK] "
-A ufw-docker-logging-deny -j DROP

COMMIT
# END UFW AND DOCKER

Atualize o sistema com as novas regras

sudo ufw reload

Breve Explicação sobre as regras que estão sendo adicionadas:

:ufw-user-forward - [0:0]:ufw-docker-logging-deny - [0:0]:DOCKER-USER - [0:0]: Essas linhas estão criando novas cadeias de regras no iptables.

-A DOCKER-USER -j ufw-user-forward: Essa linha adiciona uma regra à cadeia DOCKER-USER que encaminha o tráfego para a cadeia ufw-user-forward.

-A DOCKER-USER -j RETURN -s 10.0.0.0/8-A DOCKER-USER -j RETURN -s 172.16.0.0/12-A DOCKER-USER -j RETURN -s 192.168.0.0/16: Essas linhas adicionam regras que permitem o tráfego de retorno das respectivas sub-redes.

  • A faixa 10.0.0.0/8 engloba os IPs de 10.0.0.1 até 10.255.255.255.
  • A faixa 172.16.0.0/12 engloba os IPs de 172.16.0.1 até 172.31.255.255.
  • A faixa 192.168.0.0/16 engloba os IPs de 192.168.0.1 até 192.168.255.255

-A DOCKER-USER -p udp -m udp --sport 53 --dport 1024:65535 -j RETURN: Essa linha permite o tráfego UDP de retorno da porta 53 para as portas entre 1024 e 65535.

As próximas seis linhas começando com -A DOCKER-USER -j ufw-docker-logging-deny estão configurando o firewall para bloquear certos tipos de tráfego e registrar as tentativas de conexão bloqueadas.

-A DOCKER-USER -j RETURN: Essa linha especifica que, se nenhuma das regras anteriores corresponder, o pacote deve ser retornado à cadeia de chamada.

-A ufw-docker-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW DOCKER BLOCK] ": Essa linha configura o registro de tentativas de conexão bloqueadas, limitando a taxa de registro a três por minuto com um limite de rajada de dez.

-A ufw-docker-logging-deny -j DROP: Essa linha descarta os pacotes que correspondem às regras de negação

Essas regras ajudam a garantir que o Docker e o UFW possam coexistir sem interferir um no outro, permitindo que você gerencie as regras de firewall de maneira mais eficaz.

Mais informações podem ser obtidas no github do criador do UFW-Docker

Mudando a Porta do SSH

Atenção: Esta é uma configuração crítica que pode resultar na perda de acesso. Algumas VPS da Oracle com Ubuntu podem apresentar problemas ao tentar mudar a porta. Se ainda assim desejar testar, crie uma senha para o usuário root. Isso permitirá que você acesse o console serial e recupere o acesso em caso de erro. A maioria das VPS no mercado deve funcionar normalmente com essa configuração.

sudo passwd root

Abra o arquivo de configuração do SSH:

sudo nano /etc/ssh/sshd_config

Localize a linha que diz Port 22 e altere 22 para a nova porta que você deseja usar ela deve ter um # na frente que deve ser removido.

Ex: Port 5935

Salve e feche o arquivo.

Reinicie o serviço SSH

sudo systemctl restart sshd

Atualize a regra do UFW para permitir conexões na nova porta:

ufw allow nova_porta

Sistemas com SELinux habilitado, como o CentOS, requerem um passo adicional antes de reiniciar o serviço.

sudo semanage port -a -t ssh_port_t -p tcp NOVA_PORTA

sudo firewall-cmd –permanent –add-port=NOVA_PORTA/tcp
sudo firewall-cmd –reload

Outras Medidas de Segurança

  • Instale um scanner de malware como o ClamAV: apt install clamav.
  • Configure alertas de login do SSH enviando um email sempre que alguém fizer login no seu VPS.
  • Instale um sistema de prevenção de intrusão como o Fail2Ban.
  • Configurar SSH pelo Tunel da Cloudflare
  • SSH com Port Knocking

Deixe um comentário