Acesso seguro

wolf

Quando temos um servidor público, seja o sistema operativo que for, temos de tomar precauções para acessos indevidos e temos de estar sempre atentos a tentativas de intrusão. Podem dizer que ninguém tem interesse no vosso servidor particular mas não se esqueçam que há máquinas que varrem os IP de todo o mundo na procura de potenciais vitimas. O objectivo pode não ser roubar dados mas tornar a máquina “zombie” para ataques a terceiros.

No caso de Linux em geral e Ubuntu em particular, por norma acedemos à nossa máquina por SSH. Este protocolo é bastante seguro na sua essência, no entanto há algumas precauções a tomar.

  1. Password – É a chave  da vossa casa. Uma password forte, com 12 ou mais caracteres, letras e números. Há programas que geram palavras especiais mas podem sempre escolher uma frase vossa e acrescentar uns números.
  2. Autenticação com chave encriptada. Um método muitas vezes ignorado mas bastante seguro. Na prática geramos um par de chaves (pública e privada) e guardamos a pública no servidor. e a privada no nosso PC. Já perceberam que só entra quem tiver a chave privada do respectivo par. Este método é teoricamente imune aos ataques de brute-force. Tem a desvantagem de que se perdermos a chave privada…
  3. Usar o failt2ban. Podem ver um artigo aqui.
  4. Alterar a porta de acesso SSH. By default, a porta de acesso SSH é a 22. É onde os scanners de IP públicos costumam “bater á porta”. O objectivo não é entrar logo mas sim saber se o servidor X tem a porta 22 à escuta.
    É possível e devemos alterar a porta de acesso. Na consola editamos o seguinte ficheiro:
    nano /etc/ssh/sshd_config
    Vão encontrar o seguinte logo no início:
    # What ports, IPs and protocols we listen for
    Port 22
    Agora é só alterar o 22 para outro número, de preferência acima de 1024 e no máximo 65535. Garantam que o numero da porta em causa não coincida com outra já em uso no vosso servidor.
    No fim é só salvar e reiniciar o serviço ssh:
    sudo service ssh restart
  5. Verificar se alguém anda a tentar entrar ou se já entrou.
    Para ver quem está ligado ao nosso servidor basta fazer o comando:
    who
    Para  ver as tentativas falhadas:
    grep sshd.*Failed /var/log/auth.log | less  ( para sair carregar na tecla Q )
    Para ver as tentativas sem autenticação  (comum nos scanners de IP ):
    grep sshd.*Did /var/log/auth.log | less  ( para sair carregar na tecla Q )

Há outros métodos de protecção mais complexos mas na minha opinião estes são essenciais para dormir mais descansado.

SSH ao Raspberri

Um dia destes ao falar com um amigo meu que tinha comprado um raspberry, perguntei todo entusiasmado o que já tinha feito quando ele triste me responde que “dá muito trabalho escrever o comboio de comandos que aparecem nos artigos!”
Bom, sei que isto parece estranho de dizer mas os maluquinhos de Linux são tão preguiçosos como os outros e fazem tudo para facilitar a vida no dia-a-dia!
Para  acedermos a um Raspberry e inserir os comandos que vemos na Internet não precisamos de escrever no teclado local. Podemos fazer isso com um “copiar & colar”, a partir do nosso computador pessoal, usando para isso um protocolo de nome SSH. Aliás, podemos fazer tudo como se tivéssemos ligados directamente ao Raspberry desde que este esteja ligado pelo menos com o cabo de rede, no mesmo Router onde o nosso computador pessoal está ligado. A única informação que precisamos é de saber qual o IP do nosso Raspberry. Para isso basta ver no arranque do nosso Raspberry o IP:
raspberry_piNeste caso é o IP 192.168.1.15.

Também é possível ver com o comando ifconfig:
raspberry_pi1Neste caso é o IP 192.168.1.70

Assim, já temos como aceder ao nosso Raspberry. Vamos imaginar que o IP do nosso Raspberry é o 192.168.2.100 e que o utilizador é o “pi“.
Em Linux ou em OSX abrimos uma consola e escrevemos “ssh pi@192.168.2.100“. Se o sistema conseguir chegar ao nosso Raspberry, vai ser pedida a password (por defeito é Raspberry). E pronto, é como se estivéssemos ligados directamente no nosso Raspberry!

Em Windows podemos usar um programa muito simples mas poderoso, de nome Putty. O programa não exige instalação e é um só ficheiro.
putty-defaultNo hostname escrevemos o IP do nosso Raspberry e clicamos em Open. Abre-se uma janela de consola onde inserimos o utilizador e password. E pronto! Já podemos copiar os comandos dos milhares de projectos que há pela Internet para o nosso Raspberry, sem ter que os escrever. Para “colar” no Putty basta clicar com o botão direito do rato na consola.

Bons projectos! 🙂

Fail2ban

fail2ban-logo

Quem tem um (ou mais) servidor on-line e precisa de o administrar via SSH sem recurso a VPN nunca pode ficar muito descansado pois há sempre quem ande a rastrear IP em busca de servidores que aceitem SSH. E mais cedo ou mais tarde vão tentar entrar no seu… Bom,  há sempre maneira de minimizar um ataque BruteForce, de uma maneira fácil e rápida.

Fail2ban é um programa que funciona da seguinte maneira: filtra os logs do servidor em busca de logins falhados. De acordo com a configuração, ao fim de X tentativas falhadas o IP de origem fica bloqueado durante o tempo que quisermos. Parece fácil não é? Instalar e configurar ainda é mais fácil!

Esta aplicação pode ser instalada em quase todas as Distros e o método de configuração é semelhante, mas vou focar a instalação e configuração em Debian/Ubuntu.

Para instalar fazemos:
sudo apt-get install fail2ban

Para configurar fazemos:
sudo cp /etc/fail2ban/jail.conf  /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.local
Aqui temos o ficheiro de configuração. Há vários campos que podem ser personalizados. Os principais são:
bantime – como o nome indica, é o tempo de bloqueio (em segundos) do IP que tentou entrar. Por defeito 600 (10 minutos)
maxretry – é o número de tentativas standard ao fim das quais o IP que tentou entrar é bloqueado. Aconselho 3

Bom, a partir deste momento, o Fail2ban está pronto a trabalhar. Mas uma coisa fantástica que este programa tem é que pode avisar-nos por email das tentativas  de BruteForce que o nosso servidor irá sofrer. Inclusive pode enviar dados pormenorizados. Como? O nosso servidor terá que de alguma maneira poder enviar email para fora. Um bom exemplo está aqui.
No ficheiro de configuração (jail.local) alteramos o campo destemail para o email de destino que pretendemos para receber os avisos.
Para recebermos os emails temos que ativar a opção, alterando o campo action = $(action_)s para action = $(action_mw)s. Para recebermos informação mais detalhada do ataque alteramos o campo action = $(action_mw)s para action = $(action_mwl)s.
Mais em baixo vamos encontrar os vários serviços pré-configurados, sendo o primeiro (e único ativo) o SSH. Podem ativar os outros mas só se tiverem a certeza do que estão a fazer!

E pronto! No fim, basta ativar o serviço:
sudo service fail2ban start (ou restart, caso já esteja ativo)

Há mais serviços que o nosso corajoso Fail2ban pode proteger,  sendo o limite a nossa imaginação. Há muita ajuda na Internet e no portal da comunidade.

Podem testar fazendo um “ataque” a partir de um ip externo à máquina. Não esqueçam que vão ficar bloqueados durante 10 minutos 😀
Boa sorte!