Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for postfix/submission/smtpd matching. #804

Merged
merged 2 commits into from
Sep 13, 2014
Merged

Add support for postfix/submission/smtpd matching. #804

merged 2 commits into from
Sep 13, 2014

Conversation

pleasantone
Copy link

By default, on debian, and perhaps globally, the postfix smtpd daemon running on port 587 logs with the daemon name

postfix/submission/smtpd

instead of

postfix/smtpd

This covers both cases (old, new, port 25, port 587).

Close #803

@coveralls
Copy link

Coverage Status

Coverage remained the same when pulling 544cfaf on pleasantone:master into 0d9cfb8 on fail2ban:master.

@grooverdan
Copy link
Contributor

seems sane ref: http://anonscm.debian.org/cgit/users/lamont/postfix.git/tree/conf/master.cf
Want to include postfix/smtps too?
Can you add some test cases?

@pleasantone
Copy link
Author

done

@coveralls
Copy link

Coverage Status

Coverage remained the same when pulling 249e169 on pleasantone:master into 0d9cfb8 on fail2ban:master.

@pleasantone
Copy link
Author

Please let me know if this is what you want, or if there is an issue. I also added a match line for concurrency limit exceeded, as I was smtp connection bombed a few times recently.


failregex = ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 554 5\.7\.1 .*$
^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.7\.1 : Helo command rejected: Host not found; from=<> to=<> proto=ESMTP helo= *$
^%(__prefix_line)sNOQUEUE: reject: VRFY from \S+\[<HOST>\]: 550 5\.1\.1 .*$
^%(__prefix_line)swarning: Connection concurrency limit exceeded: \d+ from \S+\[<HOST>\] for service.*$
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it indeed does look like a possible attack vector but per se might also happen in non-malicious cases. So is not a clear indicator... may be worth for smth like postfix-dos filter but IMHO not for this one.
similar argumentation for the one below -- couldn't it happen simply on unstable connection without any malicious attempt?

so let's keep this PR solely for the original purpose.

@yarikoptic
Copy link
Member

to proceed forward I will merge it, and then remove those additional two regexes and their sample logs... please initiate new PR to discuss more etc

yarikoptic added a commit that referenced this pull request Sep 13, 2014
Add support for postfix/submission/smtpd matching.
@yarikoptic yarikoptic merged commit 96c20c8 into fail2ban:master Sep 13, 2014
@yarikoptic yarikoptic added this to the 0.9.1 milestone Sep 13, 2014
yarikoptic added a commit to yarikoptic/fail2ban that referenced this pull request Oct 28, 2014
What aught to be a bugfix release delayed into a featured release 0.9.1

ver. 0.9.1 (2014/10/29) - better, faster, stronger
----------

- Refactoring (IMPORTANT -- Please review your setup and configuration):
   * iptables-common.conf replaced iptables-blocktype.conf
     (iptables-blocktype.local should still be read) and now also
     provides defaults for the chain, port, protocol and name tags

- Fixes:
   * start of file2ban aborted (on slow hosts, systemd considers the server has
     been timed out and kills him), see fail2bangh-824
   * UTF-8 fixes in pure-ftp thanks to Johannes Weberhofer. Closes fail2bangh-806.
   * systemd backend error on bad utf-8 in python3
   * badips.py action error when logging HTTP error raised with badips request
   * fail2ban-regex failed to work in python3 due to space/tab mix
   * recidive regex samples incorrect log level
   * journalmatch for recidive incorrect PRIORITY
   * loglevel couldn't be changed in fail2ban.conf
   * Handle case when no sqlite library is available for persistent database
   * Only reban once per IP from database on fail2ban restart
   * Nginx filter to support missing server_name. Closes fail2bangh-676
   * fail2ban-regex assertion error caused by miscount missed lines with
     multiline regex
   * Fix actions failing to execute for Python 3.4.0. Workaround for
     http://bugs.python.org/issue21207
   * Database now returns persistent bans on restart (bantime < 0)
   * Recursive action tags now fully processed. Fixes issue with bsd-ipfw
     action
   * Fixed TypeError with "ipfailures" and "ipjailfailures" action tags.
     Thanks Serg G. Brester
   * Correct times for non-timezone date times formats during DST
   * Pass a copy of, not original, aInfo into actions to avoid side-effects
   * Per-distribution paths to the exim's main log
   * Ignored IPs are no longer banned when being restored from persistent
     database
   * Manually unbanned IPs are now removed from persistent database, such they
     wont be banned again when Fail2Ban is restarted
   * Pass "bantime" parameter to the actions in default jail's action
     definition(s)
   * filters.d/sieve.conf - fixed typo in _daemon.  Thanks Jisoo Park
   * cyrus-imap -- also catch also failed logins via secured (imaps/pop3s).
     Regression was introduced while strengthening failregex in 0.8.11 (bd175f)
     Debian bug #755173
   * postfix-sasl - added journalmatch.  Thanks Luc Maisonobe
   * postfix* - match with a new daemon string (postfix/submission/smtpd).
     Closes fail2bangh-804 .  Thanks Paul Traina
   * apache - added filter for AH01630 client denied by server configuration.

- New features:
   - New filters:
     - monit  Thanks Jason H Martin
     - directadmin  Thanks niorg
     - apache-shellshock  Thanks Eugene Hopkinson (SlowRiot)
   - New actions:
     - symbiosis-blacklist-allports  for Bytemark symbiosis firewall
   - fail2ban-client can fetch the running server version
   - Added Cloudflare API action

- Enhancements
   * Start performance of fail2ban-client (and tests) increased, start time
     and cpu usage rapidly reduced. Introduced a shared storage logic, to
     bypass reading lots of config files (see fail2bangh-824).
     Thanks to Joost Molenaar for good catch (reported fail2bangh-820).
   * Fail2ban-regex - add print-all-matched option. Closes fail2bangh-652
   * Suppress fail2ban-client warnings for non-critical config options
   * Match non "Bye Bye" disconnect messages for sshd locked account regex
   * courier-smtp filter:
     - match lines with user names
     - match lines containing "535 Authentication failed" attempts
   * Add <chain> tag to iptables-ipsets
   * Realign fail2ban log output with white space to improve readability. Does
     not affect SYSLOG output
   * Log unhandled exceptions
   * cyrus-imap: catch "user not found" attempts
   * Add support for Portsentry

* tag '0.9.1': (36 commits)
  ENH: additional versioning changes
  Refreshed manpages
  ENH: fail early in generate-man + provide PYTHONPATH upstairs
  Changes for the 0.9.1 release versioning
  Populated MANIFEST with more entries which were preiously missed or duplicated. Sorted within each "section"
  Add portsentry to changelog
  ConfigReader.touch renamed into protected _create_unshared
  DOC: documentation about available vagrantfile setup
  Added myself into THANKS
  DOC: adjust docs in mytime to place docs into docstrings
  ENH: do use @staticmethod (we are well beyond support of 2.4 now)
  testExecuteTimeout fixed: give a test still 1 second, because system could be too busy
  coverage: no cover (for failed except)
  fix: fail2ban-regex with filter file failed (after merging fail2ban#824, because test case missing); test case for 'readexplicit' added;
  ENH:  remove obsolete code for python < 2.6 (we support >= 2.6)
  DOC: very minor (tabs/spaces)
  We better check that installation doesn't cause any errors as well
  code review, change log entries added;
  reset share/cache storage (if we use 'reload' in client with interactive mode)
  normalize tabs/spaces in docstrings;
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants