Procedimentos técnicos do PoP-BA

PR-271 - Instalação de ferramenta de ataques brute-force em servidores GNU/Linux
Data Criação:
Data Revisão:

1. Objetivo

Instalar e configurar o fail2ban para bloqueio de ataque brute-force.

2. Aplicação

Cabe aos funcionários do PoP-BA.

3. Definições

Conceitue todos os itens relevantes com este processo, a fim de tornar o texto do processo claro e sem duplas interpretações

4. Descrição das etapas

Qualquer servidor que rode um serviço sujeito a ataques brute-force é necessário planejar a implementação de uma ferramenta de identificação e contenção, que nesse caso será o fail2ban.

O fail2ban é uma ferramenta que provê uma solução automatizada de contenção de ataques brute-force a sistemas protegidos por senha. Basicamente o fail2ban verifica os logs dos serviços e identifica padrões e a partir destes bloqueia origens de tentativas indevidas de login.

Para instalar e configurar a ferramenta basta seguir os passos abaixo logado no servidor em questão.

Instalação do fail2ban

Para instalar o fail2ban basta o comando abaixo.

aptitude update
aptitude install fail2ban

Configuração

Usaremos o fail2ban para conter ataques brute-force no serviço de autenticação de serviços como ssh, smtp, imap, pop, http e etc. Para cada serviço é necessário configurar uma classe de serviço, que contem parâmetros específicos para identificar e conter o ataque.

Por padrão o fail2ban vem configurado no arquivo /etc/fail2ban/jail.conf para conter ataques ao SSH, mas podemos estender ou modificar a configuração padrão criando um arquivo chamado /etc/fail2ban/jail.local (arquivos .local no fail2ban são usados para configurações locais do administrador do sistema).

cat > /etc/fail2ban/jail.local <<EOF
[<NOME DO SERVICO>]
enabled  = true
port    = <LISTA DE SERVICOS>
filter   = <FILTRO>
logpath  = <CAMINHO PRO LOG>
maxretry = <NUMERO>
findtime = <VALOR EM SEGUNDOS>
bantime  = <VALOR EM SEGUNDOS>
# para enviar e-mail basta usar a action %(action_mw)s
action = %(action_mw)s

Abaixo a descrição de cada um dos parâmetros acima:

  • enabled: Habilita e desabilita a checagem do serviço
  • port: Porta do serviço no qual o bloqueio será realizado, usa-se o nome do protocolo associado (ex: smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s)
  • filter: Arquivo com a expressão regular pela qual o fail2ban usará para checar o log do serviço (as expressões são separadas por arquivos no diretório /etc/fail2ban/filter.d/)
  • logpath: Caminho completo até o arquivo com o log do serviço que será monitorado
  • maxretry: Número de tentativas que serão usadas para bloquear um usuário do serviço
  • findtime: Tempo em segundos que o fail2ban usa como intervalo para checar a quantidade de tentativas do usuário
  • bantime: Tempo que será usado para bloquear um IP de origem (usuário do serviço)
  • action: Ação que será aplicada a quem for identificado como atacante (geralmente bloqueio, mas também pode agregar notificação ao administrado do sistema - por exemplo na ação '%(action_mw)s')

Por padrão enviamos notificações de bloqueio à nossa lista de monitoramento, sendo necessário editar o e-mail de destino padrão no arquivo /etc/fail2ban/jail.conf, A variável destemail deve possuir o seguinte conteúdo.

destemail = <ENDEREÇO DE E-MAIL>

Configuração de bloqueio autenticação SASL (SMTP - Opcional)

Para configurar a checagem e bloqueio de autenticações invalidas no SMTP, usa-se o log produzido pelo SASL. Basta adicionar no arquivo /etc/fail2ban/jail.local a seguinte configuração.

cat > /etc/fail2ban/jail.local <<EOF
# configuracoes para SASL
[sasl]
enabled  = true
port    = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
filter   = sasl
logpath  = /var/log/mail.log
maxretry = <NUMERO>
findtime = <VALOR EM SEGUNDOS>
bantime  = <VALOR EM SEGUNDOS>
# para enviar e-mail basta usar a action %(action_mw)s
action = %(action_mw)s
EOF

Configuração de bloqueio para courier (IMAP, POP - Opcional)

É necessário apenas adicionar a respectiva configuração, abaixo o comando.

cat > /etc/fail2ban/jail.local <<EOF
# configuracoes para COURIER
[courier]
enabled  = true
port     = imap2,imap3,imaps,pop3,pop3s
filter   = courierlogin
logpath  = /var/log/mail.log
maxretry = <NUMERO>
findtime = <VALOR EM SEGUNDOS>
bantime  = <VALOR EM SEGUNDOS>
action = %(action_mw)s
EOF

Configuração de bloqueio para apache (HTTP - Opcional)

É necessário apenas adicionar a respectiva configuração, abaixo o comando.

cat > /etc/fail2ban/jail.local <<EOF
# configuracoes para apache
[apache]
enabled  = true
port     = http, https
filter   = apache-auth
logpath  = /var/log/apache2/error.log
maxretry = <NUMERO>
findtime = <VALOR EM SEGUNDOS>
bantime  = <VALOR EM SEGUNDOS>
action = %(action_mw)s
EOF

Configuração de bloqueio para webmail (Opcional)

TODO

Agora basta reiniciar o serviço.

invoke-rc.d fail2ban restart

5. Responsabilidades e Autoridades

Definição das pessoas e suas responsabilidades com relação a tarefas deste processo, inclusive a manutenção deste

6. Fluxograma

Fluxograma com os passos para a execução deste processo

7. Documentos Relacionados

8. Referências