Via SSH
Apesar de o bypass ser uma mudança muito fácil de ser realizada, o simples fato de alterar a porta padrão em que o serviço roda dificulta a ação de robôs mais simples. Consequentemente, cada passo que você adicionar para dificultar um acesso não autorizado, ajuda.
Para mudar a porta padrão do serviço de SSH, basta alterar a diretiva Port no arquivo /etc/ssh/sshd_config, citado na dica anterior. Para o serviço de SSH responder, por exemplo, na porta 2222, basta fazer a alteração no arquivo e reiniciar o serviço:
root@cpro36320:~# vim /etc/ssh/sshd_config # What ports, IPs and protocols we listen for Port 2222 # Port 22 root@cpro36320:~# service ssh restart ssh stop/waiting ssh start/running, process 28867 root@cpro36320:~#
Para bloquear ataques de bruteforce, existe algumas ferramentas como denyhosts e fail2ban, que bloqueiam, temporariamente, o endereço IP do atacante para qualquer tentativa de acesso via SSH. O fail2ban pode ser configurado para bloquear acesso a outros serviços como Apache, Asterisk e MySQL-auth, entre outros.
Você também pode personalizar as ações a serem tomadas, mais do que apenas bloquear o atacante no iptables, como enviar e-mails de notificações de alerta.
Fail2ban
Utilize o gerenciador de pacotes em nossa Distribuição Linux:
- Para CentOS, RedHat, Fedora e similares:
root@cpro36320:~# yum install fail2ban
- Para Debian, Ubuntu, Mint e similares:
root@cpro36320:~# apt-get install fail2ban
O arquivo de configuração do fail2ban fica em /etc/fail2ban/jail.conf. Você deve se ater aos seguintes parâmetros:
- ignoreip: define que redes serão ignoradas do monitoramento. Deve ser declarado no formato de CIDR, ex.: 192.168.1.0/255.255.255.0 ou 192.168.1.0/24;
- bantime: tempo em segundos que o atacante será banido;
- maxretry: define o máximo de tentativas permitidas;
- banaction: define qual será a ação que o fail2ban vai tomar, o padrão é bloquear o acesso a todas as portas via iptables.
Essas configurações são para qualquer serviço e ficam dentro de [DEFAULT]. As diretivas específicas para acesso SSH estão agrupadas pela marcação [ssh] e, dentre elas, destacam-se as seguintes:
- enable: habilita o serviço;
- port: define a porta a ser monitorada para o serviço;
- filter: define o filtro que será usado pelo ao analisar os arquivos de logs;
- logpath: define o caminho para o arquivo de log que será usado durante o monitoramento;
- maxretry: usado para sobreescrever o valor padrão de tentativas global.
O mais interessante é que você pode ver os endereços IPs sendo bloqueados e desbloqueados no log:
root@cpro36320:~# tail -f /var/log/fail2ban.log
Evite realizar o acesso ao seu servidor Linux via usuário root, prefira sempre logar no ambiente com um usuário comum e assumir, então, o acesso root com o comando sudo su ou sudo -i. Lembrando que:
- Ao utilizar o comando su, é necessário informar a senha do root;
- Com o comando sudo, basta apenas a senha do usuário comum;
Antes de bloquear o acesso root, lembre-se de já ter criado um usuário comum. Veja abaixo o exemplo de comando em Linux para criar um usuário:
root@cpro36320:~# adduser wsilva
- Para bloquar o root, você deverá editar o arquivo /etc/ssh/sshd_config:
root@cpro36320:~# vim /etc/ssh/sshd_config
- A linha com o conteúdo PermitRootLogin yes deve ser alterada para PermitRootLogin. Depois, não se esqueça de gravar e sair do arquivo de configuração e, em seguida, reiniciar o serviço de SSH:
root@cpro36320:~# sudo service ssh restart ssh stop/waiting ssh start/running, process 30751 root@cpro36320:~#
Dicas
Essa é uma técnica usada para assustar a atacante mais inexperiente.
- No arquivo /etc/ssh/sshd_config, descomente a opção banner:
root@cpro36320:~# vim /etc/ssh/sshd_config Banner /etc/issue.net
- No arquivo /etc/issue.net, colocamos o texto e ascii art, se tivermos:
root@cpro36320:~# cat /etc/issue.net ############################################################## # All connections are monitored here. # # Disconnect IMMEDIATELY if you are not an authorized user. # # LAWS will be applied in case of RULES VIOLATION. # ##############################################################
Em seguida, basta reiniciar o serviço SSH e acessar novamente para ver a mensagem inserida.
Esta técnica consiste em gerar um par de chaves (uma chave pública e uma chave privada) e enviar a chave pública para o servidor. Ao acessar o servidor, não será mais necessário digitar a sua senha.
Para criar a chave, veja nosso procedimento.
Uma técnica muito eficaz é colocar os servidores em uma rede privada inacessível. Nessa mesma rede, deixe um servidor exclusivo para acesso, chamado bastion. O acesso a qualquer servidor é feito via bastion.
Servidores windows
Mantenha seus servidores sempre atualizados: sempre instale as atualizações de segurança disponibilizadas pela Microsoft, pelo menos uma vez por mês, elas normalmente corrigem falhas que podem ser exploradas por atacantes mal intencionados.
- Basta ir em Control Panel > System and Security > Windows Update para verificar se existe alguma atualização disponível. Você pode aproveitar para checar o que será alterado com a atualização. Isso o ajuda a se prevenir e instalar as atualizações disponíveis.
Bloqueie o acesso remoto para administradores: usuários administradores têm muitos privilégios. Não é seguro acessar o servidor diretamente com esse tipo de usuário. Assim como no Linux é recomendado bloquear o acesso, se necessário, faça login com um usuário comum e execute os programas que precisa como administrador. Lembre-se de que é possível o acesso por meio do painel de administração da Locaweb.
- No Windows, para remover esse privilégio de acesso remoto, devemos acessar Computer Configuration > Windows Settings > Security Settings > Local Policies > User Rights Assignment.
Utilize firewalls: execute as tarefas do servidor com o firewall habilitado. Somente libere as portas que são necessárias para que a aplicação relacionada ao servidor seja acessada. Você pode acessar o Firewall do Windows 2012 Server pelo Server Manager > Tools > Windows Firewall with Advanced Security.
Assim como no Linux, mostramos a técnica de acesso via Bastion no Windows. É recomendado que seu servidor esteja em uma rede DMZ, protegendo sua rede interna ou privada.