open core »

Aumentar a segurança do SSH

SSH (Secure Shell) É um protocolo que suporta ligações remotas a uma máquina para executar comandos na mesma, utilizando comunicação cifrada entre os dois sistemas.

Para quem tem ou quer ter um servidor SSH a correr numa máquina para poder aceder à mesma do exterior, existem vários pormenores importantes que necessitam de se ter em conta para não por em causa a segurança da máquina.

Para garantir uma segurança mínima do serviço SSH terão então que editar o ficheiro de configuração do sshd: /etc/ssh/sshd_config e efectuar as alterações que menciono de seguida.

Por omissão a configuração do SSH permite que se possam fazer logins com o user root (administador do sistema), o que não é de todo desejável pelo simples motivo de que se algum possível invasor detectar o serviço a correr na máquina e quiser tentar um brute-force attack vai usar como username o nome root, cuja existência é garantida na maioria dos sistemas baseados em Unix. Se desligarem a opção de root login o invasor irá necessitar de saber um username existente na máquina. Para desabilitar esta opção basta procurar no ficheiro de configuração a seguinte linha:

PermitRootLogin Yes

E mudar para:

PermitRootLogin No

De seguida ainda no mesmo ficheiro e por omissão a porta do serviço SSH encontra-se definida para a porta 22. Isto pode ser útil por uma questão de uniformização mas tem as suas desvantagens, como por exemplo ser facilmente detectável num portscan e receber constantemente tentativas de ligação na porta. O ideal será mudar a porta para outro número preferivelmente acima de 1024 evitando assim os portscans mais básicos que normalmente só procuram nas primeiras 1024 portas do sistema. Para alterar a porta basta procurar a seguinte linha no ficheiro de configuração:

Port 22

E alterar para o número desejado. Convém actualizarem quaisquer configurações no router ou firewall para a nova porta de modo a ficar tudo funcional. Outro detalhe que convém verificar é se está a ser usada a versão 1 ou 2 do protocolo. Isto é importante porque na versão 1 foram descobertas algumas falhas críticas, logo convém certificar que só é usada a versão 2. Para isso procurem no ficheiro a linha que menciona a palavra Protocol e coloquem-na assim:

Protocol 2

Deste modo é forçado apenas o uso do protocolo 2, já que por omissão costuma ser 1 e 2.Também é importante limitar o acesso SSH apenas a alguns ou só um utilizador, nesse caso adicionamos a seguinte linha ao ficheiro:

AllowUsers user1 user2 user3

Onde user são os users aos quais pretendem dar permissão de login por SSH. Finalmente para podermos impedir uma tentativa de brute-force attack vamos definir umas regras na firewall (iptables) de modo a que esta limite o número mínimo definido de ligações por minuto.

sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH

sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j DROP

Com estas regras iptables ao fim de 3 ligações num minuto a máquina começa a rejeitar as restantes tentativas de ligação. Atenção que deverão alterar o --dport 22 para o número da porta que escolheram para o serviço SSH. Estas regras serão só válidas até a maquina reiniciar, depois disso terão novamente de ser inseridas. Para poupar trabalho poderão fazer um script que as carrega em boot.