Recebo uma tonelada de tentativas de login SMTP com falha. Eu realmente gostaria de me defender disso, mas o registro dessas tentativas é ruim.
Estou usando o sendmail 8.15, cyrus-sasl 2.1.26. A configuração do SASL é a maneira mais simples, padronizada, autenticando com pam_unix.
Recebo muitas mensagens de log como esta:
saslauthd[8292]: pam_unix(smtp:auth): check pass; user unknown
saslauthd[8292]: pam_unix(smtp:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=
saslauthd[8292]: DEBUG: auth_pam: pam_authenticate failed: Authentication failure
saslauthd[8292]: do_auth : auth failure: [user=colby] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]
Isso significa que, embora eu saiba que tentativas falsas de login estão acontecendo, não posso fazer nada a respeito, como fazer com que o fail2ban as aprisione.
Eu realmente não posso dizer se o problema é que o Sendmail está dizendo coisas ao pam_unix, e está despejando-as, ou se o sendmail não está dizendo ao pam sobre onde a tentativa está sendo feita.
O que eu quero é que as tentativas de autenticação sejam registradas com o endereço IP de onde veio, então se houver muitas falhas, o fail2ban pode prender o IP.
A sessão aqui é dividida entre o agente de transporte de correio e também
saslauthd
:Um log completo do que você deseja pode não estar disponível por padrão ou exigirá reconstrução em algum serviço de agregação de log. (O log também é ruim no Postfix ao usar
saslauthd
; alguns dos logs acabam nos logs de correio e outros em outros lugares.) O Sendmail suporta regras de syslog personalizadas; no entanto, se um cliente emitir apenasEHLO nurse
,AUTH LOGIN
,QXp1cmVEaWFtb25k
,SHVudGVyMg==
e depois falhar (com umquit
ou simplesmente descartando a conexão), isso pode não dar a nenhum dos ganchos usuais de conjunto de regras a chance de ser executado.Com o
LogLevel
11 (ou superior) ativado, há uma falha de logon que inclui o endereço do relé:Isso vem
sendmail/srvrsmtp.c
e acontece quandoLogLevel > 9
. Ou você pode corrigir esse arquivo para evitar aumentar oLogLevel
, mas isso pode apresentar problemas diferentes.Seguem outros métodos para limitar o SMTP AUTH.
limite de pam para um grupo específico
Ajuste a configuração do PAM e não
SMTP AUTH
permita a menos que o usuário pertença a um determinado grupo; isso impedirá a maioria dos ataques de adivinhação de senha, embora seja viável se apenas um subconjunto pequeno e previsível de seus usuários precisar usarSMTP AUTH
:e depois em
/etc/security/smtp_access.conf
e, em seguida, coloque os usuários no
ok-sasl
grupo.ocultar o serviço SMTP AUTH
Outra opção seria colocar uma VPN ou algo assim na frente do SMTP para que o serviço simplesmente não fique disponível para a Internet; isso deve reduzir o spray de ruído de log que um serviço voltado para o público recebe hoje em dia.
pam_tally
Eu também tentei,
pam_tally2
mas isso foi muito bom para bloquear contas, incluindo contas legítimas que fizeram login sem nenhum erro aparente... talvez funcione melhor para você?Eu tenho uma solução que ajuda um pouco. As mensagens que você lista se parecem com as que vêm de /var/log/secure (pelo menos no RedHat/Centos).
Como você notou, não há IP, então você não pode fazer muito com essas entradas.
No entanto, dê uma olhada em /var/log/maillog e você encontrará entradas parecidas com:
Estas são conexões que tentam um AUTH (ou dois), falham e desconectam. Há quase 100% de correlação entre elas e as mensagens pam em /var/log/secure.
Eu os uso como entrada para uma prisão fail2ban. Uma única ocorrência ganha um banimento, porque muitos dos sistemas automatizados de sondagem usam um espaço de endereço classe C completo (ou /24, se você preferir) e leva muito tempo até que você veja esse endereço novamente.
Atualmente tenho alguém/coisa que parece estar usando uma botnet, com IPs espalhados por toda parte. Parece que só se repetem depois de dias, às vezes nunca. Você acaba com um monte de entradas fail2ban. Mas é melhor do que não fazer nada.
Infelizmente, a resposta parece ser que com sendmail e cyrus-sasl, não há controle. Sendmail parece enviar a informação para sasl, e cyrus-sasl não faz nada com isso, e igualmente sendmail não faz nada depois que a autenticação falha.
As respostas de Thrig acima podem ser úteis para outras pessoas, e talvez um dia alguém veja isso e forneça uma resposta melhor.