Fail2ban: Difference between revisions

From QmailToaster
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
  # Install fail2ban
  # Install fail2ban
  # yum install fail2ban -y
  # yum install fail2ban -y
  # Create the filter definition files in filter.d
  # Create the filter definition files in filter.d


Line 11: Line 9:
  ignoreregex =
  ignoreregex =
  EOL
  EOL
 
<br>
  # cat >/etc/fail2ban/filter.d/qmail-smtps-auth.conf<< EOL
  # cat >/etc/fail2ban/filter.d/qmail-smtps-auth.conf<< EOL
  [Definition]
  [Definition]
Line 18: Line 16:
  ignoreregex =
  ignoreregex =
  EOL
  EOL
 
<br>
  # cat >/etc/fail2ban/filter.d/qmail-smtps-passfail.conf<< EOL
  # cat >/etc/fail2ban/filter.d/qmail-smtps-passfail.conf<< EOL
  [Definition]
  [Definition]
Line 25: Line 23:
  ignoreregex =
  ignoreregex =
  EOL
  EOL
 
<br>
  # cat >/etc/fail2ban/filter.d/qmail-smtps-usernotfound.conf<< EOL
  # cat >/etc/fail2ban/filter.d/qmail-smtps-usernotfound.conf<< EOL
  [Definition]
  [Definition]
Line 31: Line 29:
  ignoreregex =
  ignoreregex =
  EOL
  EOL
 
<br>
  # cat >/etc/fail2ban/filter.d/qmail-submission-passfail.conf<< EOL
  # cat >/etc/fail2ban/filter.d/qmail-submission-passfail.conf<< EOL
  [Definition]
  [Definition]
Line 37: Line 35:
  ignoreregex =
  ignoreregex =
  EOL
  EOL
 
<br>
  # cat >/etc/fail2ban/filter.d/qmail-submission-usernotfound.conf<< EOL
  # cat >/etc/fail2ban/filter.d/qmail-submission-usernotfound.conf<< EOL
  [Definition]
  [Definition]
Line 43: Line 41:
  ignoreregex =
  ignoreregex =
  EOL
  EOL
 
<br>
  # Add filter definitions to jail.conf
  # Add filter definitions to jail.conf
  # cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak-`date`
  # cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak-`date`
  # cat >>/etc/fail2ban/jail.conf << EOL
  # cat >>/etc/fail2ban/jail.conf << EOL
  [qmail-submission-passfail]
  [qmail-submission-passfail]
  enabled = true
  enabled = true
Line 58: Line 53:
  bantime  = 86400
  bantime  = 86400
  findtime = 3600
  findtime = 3600
  backend = auto
  backend = auto<br>
 
  [qmail-submission-usernotfound]
  [qmail-submission-usernotfound]
  enabled = true
  enabled = true
Line 68: Line 62:
  bantime  = 86400
  bantime  = 86400
  findtime = 3600
  findtime = 3600
  backend = auto
  backend = auto<br>
 
  [qmail-smtps-passfail]
  [qmail-smtps-passfail]
  enabled  = true
  enabled  = true
Line 78: Line 71:
  bantime  = 86400
  bantime  = 86400
  findtime = 3600
  findtime = 3600
  backend = auto
  backend = auto<br>
 
  [qmail-smtps-usernotfound]
  [qmail-smtps-usernotfound]
  enabled = true
  enabled = true
Line 101: Line 93:


  # Set up Authorization not available
  # Set up Authorization not available
   In order to log SMTP transactions do the following:
   In order to log SMTP transactions do the following:
   1) # qmailctl stop
   1) # qmailctl stop
   2) Add 'SMTP_DEBUG="1"' to /etc/tcprules.d/tcp.smtp  
   2) Add 'SMTP_DEBUG="1"' to /etc/tcprules.d/tcp.smtp  
   3) Replace contents of '/var/qmail/supervise/smtp/log/run' script with below to log transactions to different file:  
   3) Replace contents of '/var/qmail/supervise/smtp/log/run' script with below to log transactions to different file:  
     
       #!/bin/sh
       #!/bin/sh
       LOGSIZE=`cat /var/qmail/control/logsize`
       LOGSIZE=`cat /var/qmail/control/logsize`
Line 118: Line 108:


  # Start fail2ban
  # Start fail2ban
  # systemctl start fail2ban
  # systemctl start fail2ban


  # Script to check blocking
  # Script to check blocking
  # cat >./f2bstat << EOL
  # cat >./f2bstat << EOL
  #!/bin/bash
  #!/bin/bash
  for FILTER in qmail-submission-passfail \
  for FILTER in qmail-submission-passfail \
               qmail-submission-usernotfound \
               qmail-submission-usernotfound \
Line 139: Line 125:


  # Set permissions & run script (w/output sample)
  # Set permissions & run script (w/output sample)
# chmod 755 ./f2bstat && ./f2bstat


# chmod 755 ./f2bstat && ./f2bstat
  qmail-submission-passfail:<br>
 
  qmail-submission-passfail:
 
  Status for the jail: qmail-submission-passfail
  Status for the jail: qmail-submission-passfail
  |- Filter
  |- Filter
Line 154: Line 138:
     `- Banned IP list:
     `- Banned IP list:


  qmail-submission-usernotfound:
  qmail-submission-usernotfound:<br>
 
  Status for the jail: qmail-submission-usernotfound
  Status for the jail: qmail-submission-usernotfound
  |- Filter
  |- Filter
Line 166: Line 149:
     `- Banned IP list:
     `- Banned IP list:


  qmail-smtps-passfail:
  qmail-smtps-passfail:<br>
 
  Status for the jail: qmail-smtps-passfail
  Status for the jail: qmail-smtps-passfail
  |- Filter
  |- Filter
Line 178: Line 160:
     `- Banned IP list:
     `- Banned IP list:


  qmail-smtps-usernotfound:
  qmail-smtps-usernotfound:<br>
 
  Status for the jail: qmail-smtps-usernotfound
  Status for the jail: qmail-smtps-usernotfound
  |- Filter
  |- Filter
Line 190: Line 171:
     `- Banned IP list:  5.34.207.174 212.70.149.72
     `- Banned IP list:  5.34.207.174 212.70.149.72


  qmail-smtp-authnotavail:
  qmail-smtp-authnotavail:<br>
 
  Status for the jail: qmail-smtp-authnotavail
  Status for the jail: qmail-smtp-authnotavail
  |- Filter
  |- Filter

Revision as of 16:02, 26 March 2024

# Install fail2ban
# yum install fail2ban -y
# Create the filter definition files in filter.d
# cat >/etc/fail2ban/filter.d/qmail-smtp-authnotavail.conf << EOL
[Definition]
#Looks for failed auth outside TLS to SMTP
failregex = 503 auth not available \(\#5\.3\.3\) - <HOST>
ignoreregex =
EOL

# cat >/etc/fail2ban/filter.d/qmail-smtps-auth.conf<< EOL [Definition] #Looks for failed password logins to SMTP failregex = vchkpw-smtps: password fail ([^)]*) [^@]*@[^:]*:<HOST> ignoreregex = EOL
# cat >/etc/fail2ban/filter.d/qmail-smtps-passfail.conf<< EOL [Definition] #Looks for failed password logins to SMTP failregex = vchkpw-smtps: password fail ([^)]*) [^@]*@[^:]*:<HOST> ignoreregex = EOL
# cat >/etc/fail2ban/filter.d/qmail-smtps-usernotfound.conf<< EOL [Definition] failregex = vchkpw-smtps: vpopmail user not found .*:<HOST> ignoreregex = EOL
# cat >/etc/fail2ban/filter.d/qmail-submission-passfail.conf<< EOL [Definition] failregex = vchkpw-submission: password fail ([^)]*) [^@]*@[^:]*:<HOST> ignoreregex = EOL
# cat >/etc/fail2ban/filter.d/qmail-submission-usernotfound.conf<< EOL [Definition] failregex = vchkpw-submission: vpopmail user not found .*:<HOST> ignoreregex = EOL
# Add filter definitions to jail.conf # cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak-`date` # cat >>/etc/fail2ban/jail.conf << EOL [qmail-submission-passfail] enabled = true filter = qmail-submission-passfail action = iptables[name=QMAIL-SUBMISSION, port=587, protocol=tcp] logpath = /var/log/maillog maxretry = 3 bantime = 86400 findtime = 3600 backend = auto
[qmail-submission-usernotfound] enabled = true filter = qmail-submission-usernotfound action = iptables[name=QMAIL-SUBMISSION, port=587, protocol=tcp] logpath = /var/log/maillog maxretry = 3 bantime = 86400 findtime = 3600 backend = auto
[qmail-smtps-passfail] enabled = true filter = qmail-smtps-passfail action = iptables[name=QMAIL-SMTPS, port=465, protocol=tcp] logpath = /var/log/maillog maxretry = 3 bantime = 86400 findtime = 3600 backend = auto
[qmail-smtps-usernotfound] enabled = true filter = qmail-smtps-usernotfound action = iptables[name=QMAIL-SMTPS, port=465, protocol=tcp] logpath = /var/log/maillog maxretry = 3 bantime = 86400 findtime = 3600 backend = auto
[qmail-smtp-authnotavail] enabled = true filter = qmail-smtp-authnotavail action = iptables[name=QMAIL-SMTP, port=25, protocol=tcp] logpath = /var/log/qmail/smtptx/current maxretry = 3 bantime = 86400 findtime = 300 backend = auto
EOL
# Set up Authorization not available
  In order to log SMTP transactions do the following:
  1) # qmailctl stop
  2) Add 'SMTP_DEBUG="1"' to /etc/tcprules.d/tcp.smtp 
  3) Replace contents of '/var/qmail/supervise/smtp/log/run' script with below to log transactions to different file: 
     #!/bin/sh
     LOGSIZE=`cat /var/qmail/control/logsize`
     LOGCOUNT=`cat /var/qmail/control/logcount`
     exec /usr/bin/setuidgid qmaill \
       /usr/bin/multilog t s$LOGSIZE n$LOGCOUNT \
       '-*' '+@* server:[*' '+@* client:[*' /var/log/qmail/smtptx \
       '+*' '-@* server:[*' '-@* client:[*' /var/log/qmail/smtp 2>&1
  4) # qmailctl start && qmailctl cdb
  5) # tail -f /var/log/qmail/smtptx/current | tai64nlocal
# Start fail2ban
# systemctl start fail2ban
# Script to check blocking
# cat >./f2bstat << EOL
#!/bin/bash
for FILTER in qmail-submission-passfail \
             qmail-submission-usernotfound \
             qmail-smtps-passfail \
             qmail-smtps-usernotfound \
             qmail-smtp-authnotavail
do
   fail2ban-client status $FILTER
   echo ""
done
EOL
# Set permissions & run script (w/output sample)
# chmod 755 ./f2bstat && ./f2bstat
qmail-submission-passfail:
Status for the jail: qmail-submission-passfail |- Filter | |- Currently failed: 1 | |- Total failed: 1 | `- File list: /var/log/maillog `- Actions |- Currently banned: 0 |- Total banned: 0 `- Banned IP list:
qmail-submission-usernotfound:
Status for the jail: qmail-submission-usernotfound |- Filter | |- Currently failed: 7 | |- Total failed: 7 | `- File list: /var/log/maillog `- Actions |- Currently banned: 0 |- Total banned: 0 `- Banned IP list:
qmail-smtps-passfail:
Status for the jail: qmail-smtps-passfail |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- File list: /var/log/maillog `- Actions |- Currently banned: 0 |- Total banned: 0 `- Banned IP list:
qmail-smtps-usernotfound:
Status for the jail: qmail-smtps-usernotfound |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- File list: /var/log/maillog `- Actions |- Currently banned: 2 |- Total banned: 2 `- Banned IP list: 5.34.207.174 212.70.149.72
qmail-smtp-authnotavail:
Status for the jail: qmail-smtp-authnotavail |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- File list: /var/log/qmail/smtptx/current `- Actions |- Currently banned: 0 |- Total banned: 0 `- Banned IP list: