Henrique/Pessoal,
Não dá para usar variável. O fail2ban trabalha da seguinte maneira: ele
olha o log da aplicação e faz a contagem. O que você precisa implementar é
o log do Mailman para que informe a falha de autenticação como você mesmo
disse, depois no fail2ban dizer que linhas e parte do log vai ler para
realizar uma ação relacionada a esse evento.
Aqui temos uma jail para o serviço ssh que faz o bloqueio em 3 tentativas,
onde fica o log e outras configurações:
/etc/fail2ban/jail.conf
[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
backend = %(sshd_backend)s
maxretry = 3
findtime = 60
# 604800 = 1 week
bantime = 604800
action = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s",
port="%(port)s", protocol="tcp", chain="%(chain)s",
actname=%(banaction)s-tcp]
%(mta)s-whois-lines[name=%(__name__)s, sender="%(sender)s",
dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s"]
Aqui a regex para o fail2ban localizar no log os eventos e executar as
actions
/etc/fail2ban/filter.d/sshd.conf
# Fail2Ban filter for openssh
#
# If you want to protect OpenSSH from being bruteforced by password
# authentication then get public key authentication working before disabling
# PasswordAuthentication in sshd_config.
#
#
# "Connection from <HOST> port \d+" requires LogLevel VERBOSE in sshd_config
#
[INCLUDES]
# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf
[DEFAULT]
_daemon = sshd
# optional prefix (logged from several ssh versions) like "error: ",
"error: PAM: " or "fatal: "
__pref = (?:(?:error|fatal): (?:PAM: )?)?
# optional suffix (logged from several ssh versions) like " [preauth]"
__suff = (?: \[preauth\])?\s*
__on_port_opt = (?: port \d+)?(?: on \S+(?: port \d+)?)?
# single line prefix:
__prefix_line_sl = %(__prefix_line)s%(__pref)s
# multi line prefixes (for first and second lines):
__prefix_line_ml1 = (?P<__prefix>%(__prefix_line)s)%(__pref)s
__prefix_line_ml2 = %(__suff)s$<SKIPLINES>^(?P=__prefix)%(__pref)s
mode = %(normal)s
normal = ^%(__prefix_line_sl)s[aA]uthentication (?:failure|error|failed)
for .* from <HOST>( via \S+)?\s*%(__suff)s$
^%(__prefix_line_sl)sUser not known to the underlying
authentication module for .* from <HOST>\s*%(__suff)s$
^%(__prefix_line_sl)sFailed \S+ for (?P<cond_inv>invalid user
)?(?P<user>(?P<cond_user>\S+)|(?(cond_inv)(?:(?! from ).)*?|[^:]+)) from
<HOST>%(__on_port_opt)s(?: ssh\d*)?(?(cond_user): |(?:(?:(?! from ).)*)$)
^%(__prefix_line_sl)sROOT LOGIN REFUSED.* FROM <HOST>\s*%(__suff)s$
^%(__prefix_line_sl)s[iI](?:llegal|nvalid) user .*? from
<HOST>%(__on_port_opt)s\s*$
^%(__prefix_line_sl)sUser .+ from <HOST> not allowed because not
listed in AllowUsers\s*%(__suff)s$
^%(__prefix_line_sl)sUser .+ from <HOST> not allowed because
listed in DenyUsers\s*%(__suff)s$
^%(__prefix_line_sl)sUser .+ from <HOST> not allowed because not
in any group\s*%(__suff)s$
^%(__prefix_line_sl)srefused connect from \S+
\(<HOST>\)\s*%(__suff)s$
^%(__prefix_line_sl)sReceived disconnect from
<HOST>%(__on_port_opt)s:\s*3: .*: Auth fail%(__suff)s$
^%(__prefix_line_sl)sUser .+ from <HOST> not allowed because a
group is listed in DenyGroups\s*%(__suff)s$
^%(__prefix_line_sl)sUser .+ from <HOST> not allowed because none
of user's groups are listed in AllowGroups\s*%(__suff)s$
^%(__prefix_line_sl)spam_unix\(sshd:auth\):\s+authentication
failure;\s*logname=\S*\s*uid=\d*\s*euid=\d*\s*tty=\S*\s*ruser=\S*\s*rhost=<HOST>\s.*%(__suff)s$
^%(__prefix_line_sl)s(error: )?maximum authentication attempts
exceeded for .* from <HOST>%(__on_port_opt)s(?: ssh\d*)? \[preauth\]$
^%(__prefix_line_ml1)sUser .+ not allowed because account is
locked%(__prefix_line_ml2)sReceived disconnect from <HOST>: 11:
.+%(__suff)s$
^%(__prefix_line_ml1)sDisconnecting: Too many authentication
failures for .+?%(__prefix_line_ml2)sConnection closed by <HOST>%(__suff)s$
^%(__prefix_line_ml1)sConnection from
<HOST>%(__on_port_opt)s%(__prefix_line_ml2)sDisconnecting: Too many
authentication failures for .+%(__suff)s$
Estranho o Mailman não informar as falhas de login no log.
Aqui tem um thread sobre a mesma dúvida
https://mail.python.org/pipermail/mailman-users/2012-May/073532.html
Sugiro você ler a documentação na parte do logs para tentar achar
informações sobre como funciona o log do Mailman
Caso não exista, não haverá outra maneira a não ser mexer no código.
Atenciosamente,
Adauto Serpa
Analista de Infraestrutura TI
Em sáb, 9 de jun de 2018 às 13:22, Paulo Fernandes <[email protected]>
escreveu:
> Prezado Henrique,
>
> estás lidando com o MailMan, o Syslog e o fail2ban (tem coisa grega aí,
> pra mim!). Como eles se interrelacionam? Quem faz a aprovação do Usuário
> e Senha? O MailMan? Olha, sem nem entender direito tua problemática,
> deve haver, sim, uma maneira de implementar isso que queres!
> Se estiveres disposto, que tal mapear um pouco melhor esse nó?
> Valeu!
>
> Paulo
>
>
>
>
> Em 8 de junho de 2018 11:20, Henrique Fagundes <
> [email protected]>
> escreveu:
>
> > Prezado,
> >
> > Eu preciso implementar algo no MailMan para que o mesmo sinalize ao
> Syslog
> > as tentativas de login sem sucesso.
> >
> > Somente assim, o fail2ban conseguirá bloquear o IP do "invasor".
> >
> > Atenciosamente,
> >
> > Henrique Fagundes
> > [email protected]
> > Skype: magnata-br-rj
> > Linux User: 475399
> >
> > https://www.aprendendolinux.com
> > https://www.facebook.com/AprendendoLinux
> > https://youtube.com/AprendendoLinux
> > https://twitter.com/AprendendoLinux
> > https://telegram.me/AprendendoLinux
> > ______________________________________________________________________
> > Participe do Grupo Aprendendo Linux
> > https://listas.aprendendolinux.com/listinfo/aprendendolinux
> >
> > Ou envie um e-mail para:
> > [email protected]
> >
> > Em 07/06/2018 22:14, Paulo Fernandes escreveu:
> >
> >> Boa!
> >>
> >> Vamos ver se entendi: o invasor digita uma senha no campo apropriado.
> >> Essa senha é comparada com a tabela de Usuários+Senha, correto?
> >> A função que faz a comparação devolve V ou F, é isso?
> >> Não seria aqui a hora de incrementar as tentativas infrutíferas?
> >>
> >> Votos de sucesso!
> >>
> >> Paulo
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> Em 6 de junho de 2018 16:01, Henrique Fagundes <
> >> [email protected]>
> >> escreveu:
> >>
> >> Prezado,
> >>>
> >>> E como eu implementaria esta variável?!
> >>>
> >>> Atenciosamente,
> >>>
> >>> Henrique Fagundes
> >>> [email protected]
> >>> Skype: magnata-br-rj
> >>> Linux User: 475399
> >>>
> >>> https://www.aprendendolinux.com
> >>> https://www.facebook.com/AprendendoLinux
> >>> https://youtube.com/AprendendoLinux
> >>> https://twitter.com/AprendendoLinux
> >>> https://telegram.me/AprendendoLinux
> >>> ______________________________________________________________________
> >>> Participe do Grupo Aprendendo Linux
> >>> https://listas.aprendendolinux.com/listinfo/aprendendolinux
> >>>
> >>> Ou envie um e-mail para:
> >>> [email protected]
> >>>
> >>> Em 06/06/2018 15:25, Paulo Fernandes escreveu:
> >>>
> >>> Uma variável de memória contando
> >>>> as tentativas infrutíferas não solucionaria?
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> Em 3 de junho de 2018 13:46, Henrique Fagundes <
> >>>> [email protected]>
> >>>> escreveu:
> >>>>
> >>>> Prezado Colegas,
> >>>>
> >>>>>
> >>>>> Prezados Colegas,
> >>>>>
> >>>>> Primeiramente saudações “pinguianas” a todos.
> >>>>>
> >>>>> Estou com uma dificuldade em utilizar o Fail2Ban junto com o software
> >>>>> de
> >>>>> gerência de listas de discussão MailMan.
> >>>>>
> >>>>> A minha ideia é que quando o invasor/atacante digitar incorretamente
> a
> >>>>> senha do campo de login na interface web por mais de 3 vezes, ele
> seja
> >>>>> bloqueado. Mas para que isso funcione, é necessário que o MailMan
> >>>>> informe
> >>>>> em seu log as tentativas de login sem sucesso.
> >>>>>
> >>>>> Já pesquisei para ver se existe algum plugin ou extensão (assim como
> >>>>> existe para o Wordpress e PHPMyAdmin), mas parece que não há nada
> >>>>> desenvolvido para isso.
> >>>>>
> >>>>> Então, gostaria de saber se alguém já teve a necessidade de fazer
> essa
> >>>>> implementação, para que eu possa ter algum caminho.
> >>>>>
> >>>>> Se alguém puder me ajudar, ficarei muito grato.
> >>>>>
> >>>>> Atenciosamente,
> >>>>>
> >>>>> Henrique Fagundes
> >>>>> Analista de Suporte Linux
> >>>>> [email protected]
> >>>>> Skype: magnata-br-rj
> >>>>> Linux User: 475399
> >>>>>
> >>>>> https://www.aprendendolinux.com
> >>>>> https://www.facebook.com/AprendendoLinux
> >>>>> https://youtube.com/AprendendoLinux
> >>>>> https://twitter.com/AprendendoLinux
> >>>>> https://telegram.me/AprendendoLinux
> >>>>>
> ______________________________________________________________________
> >>>>> Participe do Grupo Aprendendo Linux
> >>>>> https://listas.aprendendolinux.com/listinfo/aprendendolinux
> >>>>>
> >>>>> Ou envie um e-mail para:
> >>>>> [email protected]
> >>>>>
> >>>>> BRASIL acima de tudo, DEUS acima de todos!
> >>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece
> >>>>>
> >>>>> Lista de discussão Ubuntu Brasil
> >>>>> Histórico, descadastramento e outras opções:
> >>>>> https://lists.ubuntu.com/mailman/listinfo/ubuntu-br
> >>>>>
> >>>>>
> >>>>>
> >>>
> >>> --
> >>> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece
> >>>
> >>> Lista de discussão Ubuntu Brasil
> >>> Histórico, descadastramento e outras opções:
> >>> https://lists.ubuntu.com/mailman/listinfo/ubuntu-br
> >>>
> >>>
> >
> >
> > --
> > Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece
> >
> > Lista de discussão Ubuntu Brasil
> > Histórico, descadastramento e outras opções:
> > https://lists.ubuntu.com/mailman/listinfo/ubuntu-br
> >
> --
> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece
>
> Lista de discussão Ubuntu Brasil
> Histórico, descadastramento e outras opções:
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-br
>
--
Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece
Lista de discussão Ubuntu Brasil
Histórico, descadastramento e outras opções:
https://lists.ubuntu.com/mailman/listinfo/ubuntu-br