Como instalar Fail2ban em RHEL/CentOS/Fedora

Fail2ban é um framework open source gratuito, desenvolvido em python. O programa opera monitorando arquivos de log, como /var/log/pwdfail, /var/log/auth.log, /var/log/secure etc. Ele também bane um determinado IP de acessar o sistema no caso de haverem muitas falhas de senha incorreta na hora de acessar o sistema. Esse artigo explicará como é possível instalar e configurar o Fail2ban no RHEL 6.3/6.2/6.1/6.0/5.8, CentOS 6.3/6.2/6.1/6.0/5.8 e Fedora 17/16/15/14/13/12. O Fail2ban é executado usando scrits de python para analisar os arquivos de log tentando encontrar tentativas de invasão no sistema.

Instalando Fail2ban em RedHat/CentOS/Fedora 
Antes de começar com a instalação e configuração do Fail2Ban, é bom saber que a maioria dos hackers tentam realizar ataques via SSH. Por isso, é recomendado que você desative logins em root no SSH, e use duas chaves de autenticação. 

Por padrão, o Fail2Ban não está disponível para sistemas Linux, por isso é necessário adiciona-lo e ativa-lo através de repositórios RPMForge ou EPEL.  Uma vez adicionado ao repositório, a instalação pode ser feita através do comando YUM. 

# yum install fail2ban

Configurando a sessão padrão do Fail2Ban 
O principal arquivo de configuração do Fail2Ban fica localizado em /etc/fail2ban/jail.conf. Abra o arquivo usando o VI Editor ou qualquer outro editor que você se sinta confortável. 

# vi /etc/fail2ban/jail.conf

Em seguida, você verá uma sessão com algumas regras básicas do Fail2BAN. Você também pode personalizar a seção de cada regra de acordo com suas necessidades. 

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1

# "bantime" is the number of seconds that a host is banned.
bantime = 600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 3

O que significa cada uma dessas regras?

    ignoreip : Essa regra permite que você crie um whitelist de IPs que não podem ser bloqueados. Insira seu próprio IP também. 
    bantime : Essa regra trata do número de segundos que um host pode ficar banido do servidor. Por padrão, o tempo é de 600 segundos (10 minutos), mas pode ser aumentado. 
    findtime : Essa regra é sobre o tempo que um host tem para tentar logar. O padrão está definido para dez minutos. Se houverem tentativas incorretas de acesso após o limite de tempo, o host é banido. 
    maxretry : Essa regra deve ser a tentativa de logins que um host tem. Se passar o valor indicado, ele será banido.

Configurando SSH-IPTables no Fail2Ban 
A sessão mostrada a seguir é a configuração de ssh-iptables padrão. Não é preciso fazer alterações nessa sessão. 

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
logpath  = /var/log/secure
maxretry = 5

Reiniciando o serviço Fail2Ban 
Uma vez que você fez alterações no arquivo de configuração do Fail2Ban, você deverá reiniciar o serviço.

# chkconfig --level 23 fail2ban on
# service fail2ban start
Starting fail2ban:                                         [  OK  ]

Verificando a regras Fail2Ban 
Verifique as regras adicionadas e se elas estão funcionando corretamente. Utilize o seguinte comando. 

# iptables -L

Se alguém tentar realizar tentativas de login incorretas, isso é o que aparecerá no painel para você. 

Message from syslogd@tecmint at Nov 23 13:57:53 ...
fail2ban.actions: WARNING [ssh-iptables] Ban 15.13.14.40
iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-SSH  tcp  --  anywhere             anywhere            tcp dpt:ssh
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp multiport dports 5901:5903,6001:6003
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain fail2ban-SSH (1 references)
target     prot opt source               destination
DROP all -- 15.13.14.40 anywhere
RETURN     all  --  anywhere             anywhere

Verificando tentativas de login com falha 
Para verificar todas as falhas, use o comando abaixo.

# cat /var/log/secure | grep 'Failed password' |  sort | uniq -c

1 Nov 19 16:53:37 tecmint sshd[28185]: Failed password for root from 172.16.25.125 port 1302 ssh2
1 Nov 23 13:57:43 tecmint sshd[19079]: Failed password for root from 115.113.134.40 port 57599 ssh2
1 Nov 23 13:57:46 tecmint sshd[19079]: Failed password for root from 115.113.134.40 port 57599 ssh2
1 Nov 23 13:57:50 tecmint sshd[19079]: Failed password for root from 115.113.134.40 port 57599 ssh2
1 Oct 18 14:11:58 tecmint sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2
1 Oct 18 14:12:03 tecmint sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2
1 Oct 18 14:12:11 tecmint sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2
1 Oct 18 14:12:16 tecmint sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2
1 Oct 18 14:12:22 tecmint sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2
1 Oct 18 14:12:28 tecmint sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2
1 Oct 18 14:12:47 tecmint sshd[10719]: Failed password for root from 172.16.18.249 port 4774 ssh2

Removendo um IP Address do Fail2Ban 
Para remover um IP banido do Fail2Ban, use o seguinte comando. 

# iptables -D fail2ban-ssh 1

Para informações adicionais, visite a página oficial do Fail2Ban.

  • Fail2ban, RHEL, centOS, fedora
  • 0 Usuários acharam útil
Esta resposta lhe foi útil?

Related Articles

Como reiniciar a rede Ubuntu?

O reiniciamento da interface de rede Ubuntu só pode ser realizado depois que a interface de rede...

Como saber a última vez que um usuário esteve logado no sistema Linux?

  Neste tutorial, você irá conseguir saber como verificar quem usou recentemente o servidor...

Como saber o quanto de RAM ainda há no sistema?

  Alguns usuários pensam que o Linux "rouba" espaço de memória RAM não utilizada para o seu...

Como otimizar seu MySQL

Para realizar otimização do MySQL é recomendado utilizar o mysqlmymonlite.sh...

Como se conectar remotamente com um servidor MySQL

Esse é um tutorial que irá lhe ensinar a como se configurar e se conectar a um servidor MySQL...