Go to file
Yaroslav Halchenko b1d7c3f3ff 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 gh-824
    * UTF-8 fixes in pure-ftp thanks to Johannes Weberhofer. Closes gh-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 gh-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 gh-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 gh-824).
      Thanks to Joost Molenaar for good catch (reported gh-820).
    * Fail2ban-regex - add print-all-matched option. Closes gh-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
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iEYEABECAAYFAlRO9sEACgkQjRFFY3XAJMi/5wCgktRXWZyyjT/vBWPqYGbpjT0x
 29UAnAxPZaUBBuzenJ5ROMNA7Xbrmzoq
 =Fd3J
 -----END PGP SIGNATURE-----

Merge tag '0.9.1' into debian

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 gh-824
   * UTF-8 fixes in pure-ftp thanks to Johannes Weberhofer. Closes gh-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 gh-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 gh-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 gh-824).
     Thanks to Joost Molenaar for good catch (reported gh-820).
   * Fail2ban-regex - add print-all-matched option. Closes gh-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 #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;
  ...
2014-10-27 21:52:39 -04:00
bin ENH: do use @staticmethod (we are well beyond support of 2.4 now) 2014-10-25 09:25:18 -04:00
config merge master 2014-10-25 18:15:34 +02:00
debian adjusted changelog revision, apparently I fell into a trap of unannotated tag for 0.9.0 release 2014-10-12 16:45:57 -04:00
doc DOC: sphinx documentation 2014-03-29 22:07:33 +00:00
fail2ban Changes for the 0.9.1 release versioning 2014-10-27 21:43:17 -04:00
files RF: moving logwatch setup/sample logs under files/logwatch 2014-09-14 09:48:14 -04:00
man Refreshed manpages 2014-10-27 21:47:48 -04:00
.coveragerc TST+BF: Use separate coveragerc for Travis CI 2013-03-29 20:14:13 +00:00
.gitignore Adding vagrant support 2014-07-17 16:44:45 +02:00
.project - Added Eclipse project file 2006-10-17 21:24:27 +00:00
.pydevproject - Removed Python 2.4. Minimum required version is now Python 2.3. 2007-12-16 21:38:04 +00:00
.pylintrc ENH: added a .pylintrc to help with consistent appearance and catch obvious problems 2011-10-04 10:55:16 -04:00
.travis.yml We better check that installation doesn't cause any errors as well 2014-10-12 17:28:35 -04:00
.travis_coveragerc TST: TravisCI coverage now includes untested systemd backend elements 2013-05-13 23:44:01 +01:00
CONTRIBUTING.md DOC: minor -- added a link to pull requests in CONTRIBUTING 2014-04-17 23:16:41 -04:00
COPYING - Added ISO 8601 date/time format. 2008-05-18 19:53:18 +00:00
ChangeLog Changes for the 0.9.1 release versioning 2014-10-27 21:43:17 -04:00
DEVELOP DOC: documentation about available vagrantfile setup 2014-10-25 10:38:18 -04:00
FILTERS DOC: sphinx documentation 2014-03-29 22:07:33 +00:00
MANIFEST Populated MANIFEST with more entries which were preiously missed or duplicated. Sorted within each "section" 2014-10-27 21:43:11 -04:00
MANIFEST.in Populated MANIFEST with more entries which were preiously missed or duplicated. Sorted within each "section" 2014-10-27 21:43:11 -04:00
README.Solaris DOC: minor changes just to trigger the build 2014-04-17 14:34:26 -04:00
README.md ENH: additional versioning changes 2014-10-27 21:49:40 -04:00
RELEASE ENH: additional versioning changes 2014-10-27 21:49:40 -04:00
THANKS Added myself into THANKS 2014-10-25 10:37:28 -04:00
TODO DOC: deadlock resolved with locking introduced in 3a58d0e and d07df66 now uses subprocess.Popen. 2014-03-15 09:38:20 +11:00
Vagrantfile Vagrant with two Ubuntu Trusty64 boxes 2014-07-18 17:51:06 +02:00
fail2ban-2to3 TST: Fix up fail2ban python3 scripts 2013-04-13 17:01:18 +01:00
fail2ban-testcases-all ENH+TST: Move fail2ban-* scripts to bin/ 2013-04-01 19:06:13 +01:00
fail2ban-testcases-all-python3 TST: Fix up fail2ban python3 scripts 2013-04-13 17:01:18 +01:00
kill-server - Initial commit of the new development release 0.7 2006-06-26 20:05:00 +00:00
setup.cfg Merge branch 'master' into 0.9 2013-05-02 23:55:26 -04:00
setup.py Clean up setup.py 2014-04-04 02:54:53 +00:00

README.md

                     __      _ _ ___ _               
                    / _|__ _(_) |_  ) |__  __ _ _ _  
                   |  _/ _` | | |/ /| '_ \/ _` | ' \ 
                   |_| \__,_|_|_/___|_.__/\__,_|_||_|
                   v0.9.1                  2014/10/29

Fail2Ban: ban hosts that cause multiple authentication errors

Fail2Ban scans log files like /var/log/pwdfail and bans IP that makes too many password failures. It updates firewall rules to reject the IP address. These rules can be defined by the user. Fail2Ban can read multiple log files such as sshd or Apache web server ones.

Fail2Ban is able to reduce the rate of incorrect authentications attempts however it cannot eliminate the risk that weak authentication presents. Configure services to use only two factor or public/private authentication mechanisms if you really want to protect services.

This README is a quick introduction to Fail2ban. More documentation, FAQ, HOWTOs are available in fail2ban(1) manpage and on the website http://www.fail2ban.org

Installation:

It is possible that Fail2ban is already packaged for your distribution. In this case, you should use it instead.

Required:

Optional:

To install, just do:

tar xvfj fail2ban-0.9.1.tar.bz2
cd fail2ban-0.9.1
python setup.py install

This will install Fail2Ban into the python library directory. The executable scripts are placed into /usr/bin, and configuration under /etc/fail2ban.

Fail2Ban should be correctly installed now. Just type:

fail2ban-client -h

to see if everything is alright. You should always use fail2ban-client and never call fail2ban-server directly.

Configuration:

You can configure Fail2Ban using the files in /etc/fail2ban. It is possible to configure the server using commands sent to it by fail2ban-client. The available commands are described in the fail2ban-client(1) manpage. Also see fail2ban(1) and jail.conf(5) manpages for further references.

Code status:

  • tests status travis-ci.org (master branch)

  • Coverage Status

Contact:

Bugs, feature requests, discussions?

See CONTRIBUTING.md

You just appreciate this program:

send kudos to the original author ([Cyril Jaquier](mailto: Cyril Jaquier cyril.jaquier@fail2ban.org)) or better to the mailing list since Fail2Ban is "community-driven" for years now.

Thanks:

See THANKS file.

License:

Fail2Ban is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

Fail2Ban is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with Fail2Ban; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA