Executando fail2ban sem raiz no debian

Sempre que possível, preferimos executar serviços como um usuário não root. fail2ban também suporta isso, no entanto, os documentos run-rootless.txt não detalham totalmente todas as etapas necessárias.

Algumas das etapas são explicadas no /etc/default/fail2banscript de configuração. Além dessas, algumas outras etapas são necessárias. Abaixo estão todas as etapas para obter um fail2ban sem raiz funcional no debian wheezy.

  • Editar /etc/default/fail2ban
    • defina a variável na última linha FAIL2BAN_USER="fail2ban"
  • Execute o comando para criar o usuário
    • useradd --system --no-create-home --home-dir / --groups adm fail2ban
  • Edite seu /etc/fail2ban/jail.localcom as substituições para seu ambiente local.
    • O principal argumento aqui é o banaction.
    • Adicione qualquer outro IP confiável à igonreipconfiguração.
[DEFAULT]
banaction
= iptables-xt_recent-echo
ignoreip
= 127.0.0.1/8 10.1.1.0/24
bantime
= 3600
destemail
= ops@domain.org
chain
= F2B
  • Adicione a seguinte linha a /etc/fail2ban/action.d/iptables-xt_recent-echo.local
    • Uma vez que fail2ban é executado como um usuário não root, não será capaz de adicionar a entrada de módulo “recente” necessária do iptables. Vamos adicionar isso manualmente mais tarde.
[Definition]
actionstart
=
  • Configure o iptables com linhas como as seguintes.
    • NOTA ESTE NÃO É UM CONJUNTO DE REGRAS COMPLETAS DE IPTABLES, SOMENTE AS LINHAS PARA FAIL2BAN !!
    • Eles dizem ao iptables para usar o módulo “recente” para procurar IPs dos quais ele descartará os pacotes. A tabela referenciada é /proc/net/recent/fail2ban-sshreferenciada pelo argumento –name. Este é o arquivo ao qual fail2ban adicionará IPs, e iptables será responsável por remover esses IPs após o tempo limite de –seconds.
$IPTABLES -N F2B
$IPTABLES
-A INPUT -i eth0 -p tcp --dport 22 -j F2B
$IPTABLES
-A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$IPTABLES
-A FORWARD -i eth0 -p tcp --dport 22 -j F2B
$IPTABLES
-A FORWARD -i eth0 -p tcp --dport 22 -j ACCEPT
$IPTABLES
-A F2B -p tcp --dport 22 -m recent --update --seconds 3600 --name fail2ban-ssh -j DROP
$IPTABLES
-A F2B -j RETURN
  • Reinicie fail2ban e teste
    • /etc/init.d/fail2ban restart
    • Se você receber o erro , significa que você não ativou a regra iptables com o módulo “recente” da etapa anterior.Restarting authentication failure monitor: fail2banfind: '/proc/net/xt_recent': No such file or directory