Block Hosts: Bloqueando ataques de força-bruta (brute force) em FTP, SSH e outros

Entenda melhor este tipo de ataque e conheça as principais maneiras de evitá-lo com ajuda da ferramenta Block Hosts.

[ Hits: 41.132 ]

Por: Perfil removido em 17/11/2009


Configuração e execução do Block Hosts



Toda a configuração está concentrada no arquivo /etc/blockhosts.cfg. O arquivo de configuração tem muitos comentários e explicação de cada item (em inglês). Na prática você precisa apenas remover o caractere de comentário (#) e modificar o valor de cada item conforme sua necessidade. Mesmo assim vou comentar os principais itens:

HOSTS_BLOCKFILE = "/etc/hosts.deny"
-> Onde está localizado o arquivo 'hosts.deny'

HOST_BLOCKLINE = ["ALL: ", " : deny"]
-> Esta precisa apenas remover o comentário e deixar padrão, é a linha de bloqueio que será inserida no arquivo 'hosts.deny'.

VERBOSE = Log.MESSAGE_LEVEL_INFO
-> Define o nível de log. Para minhas necessidades o nível "info" é suficiente.

COUNT_THRESHOLD = 7
-> Número de vezes que o usuário pode errar a senha. Neste caso, se errar 7 vezes, será bloqueado.

AGE_THRESHOLD = 48
-> Quanto tempo o IP de origem ficará bloqueado. Neste caso, 48 horas.

WHITELIST = [ "127.0.0.1", "192\.168\..*\..*", ]
-> Lista de IPs ou range de IPs que nunca serão bloqueados. Na maioria das vezes é interessante listar aqui a sua rede interna. Podem ser utilizadas expressões regulares para a definição. Para saber mais sobre expressões regulares, acesse: http://www.vivaolinux.com.br/artigo/Iniciando-no-mundo-das-expressoes-regulares-%28parte-1%29/

BLACKLIST = [ "192.168.10.1", "10\..*", ]
-> Se deseja manter um IP ou range de IPs sempre bloqueados, este é o local. Também podem ser utilizadas expressões regulares.

LOGFILES = [ "/var/log/auth.log", "/var/log/proftpd/proftpd.log", ]
-> Aqui você define quais serão os logs analisados. Neste caso está verificando o log do SSH e do ProFTPd.

LOCKFILE = "/tmp/blockhosts.lock"
-> Arquivo temporário de lock. Pode deixar o padrão.

Este é o básico da configuração... o restante pode ficar na configuração padrão que já vai funcionar muito bem!

Agora o último passo... rodando via cron!

Executando o Block Hosts

Para execução do Block Hosts você deve adicionar uma linha no agendador de tarefas Cron. Para isto edite o arquivo /etc/crontab e insira no final dele as seguintes linhas:

# Executa Block Hosts a cada 5 minutos
*/5 *   * * *   root    /usr/bin/blockhosts.py --verbose >> /var/log/blockhosts.log 2>&1

Após isto basta monitorar o arquivo de log armazenado em "/var/log/blockhosts.log" que tudo deve estar funcionando corretamente! Se tudo deu certo, pode respirar aliviado, você já está mais seguro...

Espero que seja útil!

Att,
Alexandro Corrêa - Porto Alegre - RS

Página anterior    

Páginas do artigo
   1. Introdução
   2. Instalação do Block Hosts
   3. Configuração e execução do Block Hosts
Outros artigos deste autor

Básico sobre tratamento de exceções em Python 3.4

Configurando suporte Firebird no LAMP (xampp) em Lubuntu

Removendo dependências desnecessárias no Debian

Criando uma aplicação que mostra os processos em execução

Os segredos dos modems

Leitura recomendada

Teste de Intrusão com Metasploit

Bloqueio de repetidas tentativas de login ao seu Linux

Nessus Portscanner

Impedindo o compartilhamento de conexão

Melhorando a segurança de servidores GNU/Linux (Parte 1)

  
Comentários
[1] Comentário enviado por magnolinux em 17/11/2009 - 07:31h

Parabens.. otimo artigo...



[2] Comentário enviado por luizvieira em 17/11/2009 - 08:31h

Bom artigo!
Apenas um adendo: uma ferramenta boa pra verificar ataques à serviços é um IDS (Snort, por exemplo).
Valeu!

[3] Comentário enviado por removido em 17/11/2009 - 09:21h

Obrigado pelos comentários! Como nosso amigo Luiz comentou, é muito importante ter um IDS na sua rede também.

[4] Comentário enviado por cleysinhonv em 17/11/2009 - 10:09h

Olá,
Parabéns pelo artigo está bem explicado e isso é importante, fiquei só na dúvida sobre, se os serviços que ele bloqueia é ssh e o FTP são por padrão, ou se se eu quiser adicionar um outro serviço como o faço.
Esse foi para FAVORITOS.

[5] Comentário enviado por removido em 17/11/2009 - 10:52h

Obrigado pelo comentário José Cleydson! Para adicionar outros serviços, você precisa apenas saber lidar com Expressões Regulares. Verifique no arquivo de configuração a diretiva "ALL_REGEXS", nela que são determinados as linhas do LOG que devem ser monitoradas. Por padrão o BlockHosts monitora os serviços ssh, proftpd, vsftpd, pure-ftpd, ftpd-Solaris, ipop3d, dovecot, qpopper, postfix, mas nada impede de você adicionar tantos outros quanto você queira. Boa sorte!

[6] Comentário enviado por grandmaster em 17/11/2009 - 20:15h

Muito bom, guardado também

---
Renato de Castro Henriques
CobiT Foundation 4.1 Certified ID: 90391725
http://www.renato.henriques.nom.br

[7] Comentário enviado por valterrezendeeng em 21/11/2009 - 19:21h

Muito bom o Artigo

Parabens !!!



[8] Comentário enviado por jucaetico em 27/11/2009 - 09:29h

Valeu! show esse artigo!

[9] Comentário enviado por jucaetico em 27/11/2009 - 10:01h

cara só uma dúvida, fiz uns testes aqui.. olha meu "/var/log/blockhosts.log":

blockhosts 2.4.0 started: 2009-11-27 10:55:01 BRST
... loaded /etc/hosts.deny, starting counts: blocked 0, watched 2
... loading log file /var/log/auth.log, offset: 27431
... discarding all host entries older than 2009-11-25 10:55:01 BRST
... final counts: blocked 0, watched 3

arquivo "hosts.deny":

#---- BlockHosts Additions
#bh: ip: 192.X.X.X : 4 : 2009-11-27 10:55:01 BRST
#bh: ip: 192.X.X.X : 5 : 2009-11-27 10:50:01 BRST
#bh: ip: 10.X.X.X : 4 : 2009-11-27 10:50:01 BRST

#bh: logfile: /var/log/auth.log
#bh: offset: 30060
#bh: first line:Nov 24 14:55:37 SERVIDOR login[2334]: pam_unix(login:session): session opened for user root by LOGIN(uid=0)

#---- BlockHosts Additions

Esses ips que estão em "hosts.deny" são os ips que eu forcei o login via ssh por mais de 7 vezes. porque não foram bloqueados?

Valeu

[10] Comentário enviado por andrezc em 29/12/2009 - 12:02h

O artigo ficou com uma explicação bem completa, do inicio ao fim.

Outra ferramenta boa para evitar esse tipo de ataque em vários serviços é o Fail2ban, outro dia postei uma dica ensinando a instalar, configurar e usar. Além do SSH, o Fail2ban monitora também os arquivos de log do apache e também tentativas de acesso ao servidor de e-mails (postfix) ou ao servidor FTP.

Ótimo artigo :)


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts