O documento descreve como bloquear ataques de força bruta usando a ferramenta Block Hosts. Ele explica o que são ataques de força bruta, como identificá-los nos logs, e como instalar e configurar o Block Hosts para monitorar os logs e bloquear hosts após um número definido de tentativas inválidas de login.
1. Block Hosts: Bloqueando ataques de força-bruta (b... http://www.vivaolinux.com.br/artigos/impressora....
Block Hosts: Bloqueando ataques de força-bruta (brute force)
em FTP, SSH e outros
Autor: Alexandro Corrêa <alex.linux at gmail.com>
Data: 17/11/2009
Introdução
Resumidamente, ataques de força-bruta (brute-force, em inglês) são aqueles
onde o atacante tenta descobrir senhas à base de tentativa e erro. Estes
ataques consistem em tentar acessar sistemas utilizando usuários e senhas
aleatórias, ou mesmo utilizar um "dicionário" que contenham os usuários e
senhas mais prováveis. Normalmente os serviços que mais sofrem este tipo de
ataque são SSH, FTP e e-mail.
Outra característica deste tipo de ataque é que, dependendo da capacidade e
da utilização do servidor atacado, este pode ficar muito lento, já que podem ser
realizadas centenas de conexões simultâneas tentando acertar o usuário e
senha. Esta lentidão e ocupação do número de conexões pode fazer com que
usuários legítimos não consigam acessar o sistema, gerando outro tipo famoso
de ataque que é o de Negação de Serviço (Denial of Service).
Como identificar se estou sendo
atacado
A identificação deste tipo de ataque ocorre lendo os logs de cada serviço. É
uma boa prática de segurança periodicamente fazer a leitura dos logs. Segue
abaixo um exemplo de ataque a um servidor FTP:
Nov 08 16:31:41 gateway proftpd[9920] gateway
(61.152.239.49[61.152.239.49]): FTP session opened.
Nov 08 16:31:42 gateway proftpd[9920] gateway
(61.152.239.49[61.152.239.49]): no such user 'Administrator'
Nov 08 16:31:42 gateway proftpd[9920] gateway
1 de 6 06-12-2009 12:53
2. Block Hosts: Bloqueando ataques de força-bruta (b... http://www.vivaolinux.com.br/artigos/impressora....
(61.152.239.49[61.152.239.49]): USER Administrator: no such user found
from 61.152.239.49 [61.152.239.49] to 201.37.10.10:21
Nov 08 16:31:45 gateway proftpd[9920] gateway
(61.152.239.49[61.152.239.49]): no such user 'Administrator'
Nov 08 16:31:45 gateway proftpd[9920] gateway
(61.152.239.49[61.152.239.49]): USER Administrator: no such user found
from 61.152.239.49 [61.152.239.49] to 201.37.10.10:21
Nov 08 16:31:48 gateway proftpd[9920] gateway
(61.152.239.49[61.152.239.49]): no such user 'Administrator'
Nov 08 16:31:48 gateway proftpd[9920] gateway
(61.152.239.49[61.152.239.49]): USER Administrator: no such user found
from 61.152.239.49 [61.152.239.49] to 201.37.10.10:21
Nov 08 16:31:48 gateway proftpd[9920] gateway
(61.152.239.49[61.152.239.49]): FTP session closed.
A principal característica é que as linhas de log com "erro de conexão" se
repetem dezenas ou até mesmo milhares de vezes.
Como evitar este tipo de ataque na
prática
Como proteger-se?
Existem diversas técnicas e recomendações para minimizar o risco de sofrer um
ataque de força bruta, normalmente estas recomendações são muito difundidas
para o serviço de SSH. É recomendável ler o artigo do CERT.BR, que trata do
assunto, para ter um bom embasamento:
Sugestões para defesa contra ataques de força bruta para SSH
Ferramenta prática para proteção:
Block Hosts
Se mesmo seguindo as práticas mais recomendadas seus servidores continuam
sendo atacados, está na hora de tomar alguma atitude mais drástica, pois mais
cedo ou mais tarde alguém vai acertar um usuário e senha e a segurança do seu
2 de 6 06-12-2009 12:53
3. Block Hosts: Bloqueando ataques de força-bruta (b... http://www.vivaolinux.com.br/artigos/impressora....
sistema pode ficar comprometida.
A ferramenta Block Hosts tem a função de monitorar os logs dos serviços e caso
existam muitas conexões inválidas de uma mesma origem ele trata de bloquear
através de TCP_WRAPPERS (/etc/hosts.deny). Toda ação pode ser configurada:
número máximo de erros de senha, tempo que o "atacante" deve ficar
bloqueado, "Whitelist" com endereços que nunca poderão ser bloqueados,
"Blacklist" etc.
Site oficial da ferramenta: http://www.aczoom.com/cms/blockhosts
A seguir os passos para instalação e configuração.
Instalação do Block Hosts
Para descrever a instalação está sendo considerado como base um sistema
Debian Linux versão 5.0.3 com Kernel 2.6.26-2-486. Segue abaixo descrição
passo-a-passo em 4 itens.
PASSO 1: Faça download do arquivo ZIP da última versão do Block Hosts
disponível em:
http://www.aczoom.com/cms/blockhosts/download
Hoje a última versão disponível é 2.4.0.
PASSO 2: Instale os pacotes que são requisitos básicos necessários para o
funcionamento. São eles:
logwatch
python
python-optcomplete
No Debian, utilize o comando "apt-get install logwatch python python-
optcomplete", que irá instalar tudo automaticamente para você. Para outros
sistemas, basta adaptar o processo de instalação destes pacotes.
PASSO 3: Edite o arquivo "/etc/hosts.deny" e insira no início do arquivo duas
linhas, conforme descrito abaixo:
3 de 6 06-12-2009 12:53
4. Block Hosts: Bloqueando ataques de força-bruta (b... http://www.vivaolinux.com.br/artigos/impressora....
#---- BlockHosts Additions
#---- BlockHosts Additions
Esta é a marcação de qual parte do arquivo "hosts.deny" o Block Hosts vai
inserir suas entradas de bloqueio de IPs.
PASSO 4: Descompacte o arquivo "BlockHosts-2.4.0.zip" ou equivalente à sua
versão e acesse o diretório descompactado.
Para executar a instalação, rode o seguinte comando como root:
# python setup.py install --force
Este comando instalará automaticamente todos os arquivos necessários.
Se não ocorreu nenhuma mensagem de erro, a instalação está finalizada! Agora
basta configurar.
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
4 de 6 06-12-2009 12:53
5. Block Hosts: Bloqueando ataques de força-bruta (b... http://www.vivaolinux.com.br/artigos/impressora....
-> 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!
5 de 6 06-12-2009 12:53
6. Block Hosts: Bloqueando ataques de força-bruta (b... http://www.vivaolinux.com.br/artigos/impressora....
Att,
Alexandro Corrêa - Porto Alegre - RS
http://www.vivaolinux.com.br/artigo/Block-Hosts-Bloqueando-ataques-
de-forcabruta-(brute-force)-em-FTP-SSH-e-outros
Voltar para o site
6 de 6 06-12-2009 12:53