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: 40.799 ]

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

Linux Terminal Server - LTS

Algoritmo... como fazer?

Instalando fontes true type no Linux via Kcontrol

JSP - Parte 2

Introdução ao Conceito de Hardening

Leitura recomendada

Bloqueando e desbloqueando falhas de login em SSH usando o pam_tally2

Criptografia chave simétrica de bloco e de fluxo

Burlando "MSN Sniffers" com TOR e Gaim

Instalação do ClamAV com DazukoFS

Gaim + Gaim Encryption - Bate-papo com segurança

  
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