Fail2ban Versions Save

Daemon to ban hosts that cause multiple authentication errors

0.10.0

6 years ago

ver. 0.10.0 (2017/08/09) - long-awaited 0.10th version

IPv6 support, faster more then ever, more secure, many new features etc. See the ChangeLog for more information.

Compatibility warning: Although we have endeavoured to maintain the backwards-compatibility, some custom filter or action configuration files resp. distribution-relevant configs of 0.9th version could be incompatible with this release. Please check it after upgrade to new version.

0.9.7

6 years ago

0.9.6

7 years ago

0.9.5

7 years ago

0.9.x line is no longer heavily developed. If you are interested in new features (e.g. IPv6 support), please consider 0.10 branch and its releases.

Fixes

  • filter.d/monit.conf
    • Extended failregex with new monit "access denied" version (gh-1355)
    • failregex of previous monit version merged as single expression
  • filter.d/postfix.conf, filter.d/postfix-sasl.conf
    • Extended failregex daemon part, matching also postfix/smtps/smtpd now (gh-1391)
  • Fixed a grave bug within tags substitutions because of incorrect detection of recursion in case of multiple inline substitutions of the same tag (affected actions: bsd-ipfw, etc). Now tracks the actual list of the already substituted tags (per tag instead of single list)
  • filter.d/common.conf
    • Unexpected extra regex-space in generic __prefix_line (gh-1405)
    • All optional spaces normalized in common.conf, test covered now
    • Generic __prefix_line extended with optional brackets for the date ambit (gh-1421), added new parameter __date_ambit
  • gentoo-initd fixed --pidfile bug: --pidfile is option of start-stop-daemon, not argument of fail2ban (see gh-1434)
  • filter.d/asterisk.conf
    • Fixed security log support for PJSIP and Asterisk 13+ (gh-1456)
    • Improved log support for PJSIP and Asterisk 13+ with different callID (gh-1458)

New Features

  • New Actions:
    • action.d/firewallcmd-rich-rules and action.d/firewallcmd-rich-logging (gh-1367)
  • New filters:
    • slapd - ban hosts, that were failed to connect with invalid credentials: error code 49 (gh-1478)

Enhancements

  • Extreme speedup of all sqlite database operations (gh-1436), by using of following sqlite options:
    • (synchronous = OFF) write data through OS without syncing
    • (journal_mode = MEMORY) use memory for the transaction logging
    • (temp_store = MEMORY) temporary tables and indices are kept in memory
  • journald journalmatch for pure-ftpd (gh-1362)
  • Added additional regex filter for dovecot ldap authentication failures (gh-1370)
  • filter.d/exim*conf
    • Added additional regexes (gh-1371)
    • Made port entry optional

0.10.0a1

7 years ago

ver. 0.10.0a1 (2016/07/14) - ipv6-support-etc

  • Fixes:
    • [grave] memory leak's fixed (gh-1277, gh-1234)
    • tricky bug fix: last position of log file will be never retrieved (gh-795), because of CASCADE all log entries will be deleted from logs table together with jail, if used "INSERT OR REPLACE" statement
    • asyncserver (asyncore) code fixed and test cases repaired (again gh-161)
    • testSocket: sporadical bug repaired - wait for server thread starts a socket (listener)
    • testExecuteTimeoutWithNastyChildren: sporadical bug repaired - wait for pid file inside bash, kill tree in any case (gh-1155)
  • New Features:
    • IPv6 support:
      • IP addresses are now handled as objects rather than strings capable for handling both address types IPv4 and IPv6
      • iptables related actions have been amended to support IPv6 specific actions additionally
      • hostsdeny and route actions have been tested to be aware of v4 and v6 already
      • pf action for *BSD systems has been improved and supports now also v4 and v6
      • name resolution is now working for either address type
        • new conditional section functionality used in config resp. includes:
      • [Init?family=inet4] - IPv4 qualified hosts only
      • [Init?family=inet6] - IPv6 qualified hosts only
  • Enhancements:
    • huge increasing of fail2ban performance and especially test-cases performance (see gh-1109)
    • datedetector: in-place reordering using hits and last used time: matchTime, template list etc. rewritten because of performance degradation
    • prevent out of memory situation if many IP's makes extremely many failures (maxEntries)
    • introduced string to seconds (str2seconds) for configuration entries with time, use 1h instead of 3600, 1d instead of 86400, etc
    • seekToTime - prevent completely read of big files first time (after start of service), initial seek to start time using half-interval search algorithm (see issue gh-795)
    • ticket and some other modules prepared to easy merge with newest version of 'ban-time-incr'
    • cache dnsToIp, ipToName to prevent long wait during retrieving of ip/name, especially for wrong dns or lazy dns-system
    • FailManager memory-optimization: increases performance, prevents memory leakage, because don't copy failures list on some operations
    • fail2ban-testcases - new options introduced:
      • -f, --fast to decrease wait intervals, avoid passive waiting, and skip few very slow test cases (implied memory database, see -m and no gamin tests -g)
      • -g, --no-gamin to prevent running of tests that require the gamin (slow)
      • -m, --memory-db - run database tests using memory instead of file
      • -i, --ignore - negate [regexps] filter to ignore tests matched specified regexps
    • background servicing: prevents memory leak on some platforms/python versions, using forced GC in periodic intervals (latency and threshold)
    • executeCmd partially moved from action to new module utils
    • several functionality of class DNSUtils moved to new class IPAddr, both classes moved to new module ipdns
    • pseudo-conditional section introduced, for conditional substitution resp. evaluation of parameters for different family qualified hosts, syntax [Section?family=inet6] (currently use for IPv6-support only).

ver. 0.9.5 - in-line part of 0.10.a1 release

  • Fixes:
    • filter.d/monit.conf
      • extended failregex with new monit "access denied" version (gh-1355);
      • failregex of previous monit version merged as single expression.
    • filter.d/postfix.conf, filter.d/postfix-sasl.conf
      • extended failregex daemon part, matching also postfix/smtps/smtpd now (gh-1391)
    • fixed a grave bug within tags substitutions because of incorrect detection of recursion in case of multiple inline substitutions of the same tag (affected actions: bsd-ipfw, etc). Now tracks the actual list of the already substituted tags (per tag instead of single list)
    • filter.d/common.conf
      • unexpected extra regex-space in generic __prefix_line (gh-1405)
      • all optional spaces normalized in common.conf, test covered now
      • generic __prefix_line extended with optional brackets for the date ambit (gh-1421), added new parameter __date_ambit
    • gentoo-initd fixed --pidfile bug: --pidfile is option of start-stop-daemon, not argument of fail2ban (see gh-1434)
    • filter.d/asterisk.conf
      • fix security log support for PJSIP and Asterisk 13+ (gh-1456)
      • improved log support for PJSIP and Asterisk 13+ with different callID (gh-1458)
  • New Features:
    • New Actions:
      • action.d/firewallcmd-rich-rules and action.d/firewallcmd-rich-logging (gh-1367)
  • Enhancements:
    • Extreme speedup of all sqlite database operations (gh-1436), by using of following sqlite options:
      • (synchronous = OFF) write data through OS without syncing
      • (journal_mode = MEMORY) use memory for the transaction logging
      • (temp_store = MEMORY) temporary tables and indices are kept in memory
    • journald journalmatch for pure-ftpd (gh-1362)
    • Add additional regex filter for dovecot ldap authentication failures (gh-1370)
    • filter.d/exim*conf
      • added additional regexes (gh-1371)
      • made port entry optional

0.9.4

8 years ago
  • Fixes:
    • roundcube-auth jail typo for logpath
    • Fix dnsToIp resolver for fqdn with large list of IPs (gh-1164)
    • filter.d/apache-badbots.conf
      • Updated useragent string regex adding escape for +
    • filter.d/mysqld-auth.conf
      • Updated "Access denied ..." regex for MySQL 5.6 and later (gh-1211, gh-1332)
    • filter.d/sshd.conf
      • Updated "Auth fail" regex for OpenSSH 5.9 and later
    • Treat failed and killed execution of commands identically (only different log messages), which addresses different behavior on different exit codes of dash and bash (gh-1155)
    • Fix jail.conf.5 man's section (gh-1226)
    • Fixed default banaction for allports jails like pam-generic, recidive, etc with new default variable banaction_allports (gh-1216)
    • Fixed fail2ban-regex stops working on invalid (wrong encoded) character for python version < 3.x (gh-1248)
    • Use postfix_log logpath for postfix-rbl jail
    • filters.d/postfix.conf - add 'Sender address rejected: Domain not found' failregex
    • use fail2ban_agent as user-agent in actions badips, blocklist_de, etc (gh-1271)
    • Fix ignoring the sender option by action_mw, action_mwl and action_c_mwl
    • Changed filter.d/asterisk regex for "Call from ..." (few vulnerable now)
    • Removed compression and rotation count from logrotate (inherit them from the global logrotate config)
  • New Features:
    • New interpolation feature for definition config readers - <known/parameter> (means last known init definition of filters or actions with name parameter). This interpolation makes possible to extend a parameters of stock filter or action directly in jail inside jail.local file, without creating a separately filter.d/*.local file. As extension to interpolation %(known/parameter)s, that does not works for filter and action init parameters
    • New actions:
      • nftables-multiport and nftables-allports - filtering using nftables framework. Note: it requires a pre-existing chain for the filtering rule.
    • New filters:
      • openhab - domotic software authentication failure with the rest api and web interface (gh-1223)
      • nginx-limit-req - ban hosts, that were failed through nginx by limit request processing rate (ngx_http_limit_req_module)
      • murmur - ban hosts that repeatedly attempt to connect to murmur/mumble-server with an invalid server password or certificate.
      • haproxy-http-auth - filter to match failed HTTP Authentications against a HAProxy server
    • New jails:
      • murmur - bans TCP and UDP from the bad host on the default murmur port.
    • sshd filter got new failregex to match "maximum authentication attempts exceeded" (introduced in openssh 6.8)
    • Added filter for Mac OS screen sharing (VNC) daemon
  • Enhancements:
    • Do not rotate empty log files
    • Added new date pattern with year after day (e.g. Sun Jan 23 2005 21:59:59) http://bugs.debian.org/798923
    • Added openSUSE path configuration (Thanks Johannes Weberhofer)
    • Allow to split ignoreip entries by ',' as well as by ' ' (gh-1197)
    • Added a timeout (3 sec) to urlopen within badips.py action (Thanks M. Maraun)
    • Added check against atacker's Googlebot PTR fake records (Thanks Pablo Rodriguez Fernandez)
    • Enhance filter against atacker's Googlebot PTR fake records (gh-1226)
    • Nginx log paths extended (prefixed with "*" wildcard) (gh-1237)
    • Added filter for openhab domotic software authentication failure with the rest api and web interface (gh-1223)
    • Add *_backend options for services to allow distros to set the default backend per service, set default to systemd for Fedora as appropriate
    • Performance improvements while monitoring large number of files (gh-1265). Use associative array (dict) for monitored log files to speed up lookup operations. Thanks @kshetragia
    • Specified that fail2ban is PartOf iptables.service firewalld.service in .service file -- would reload fail2ban if those services are restarted
    • Provides new default fail2ban_version and interpolation variable fail2ban_agent in jail.conf
    • Enhance filter 'postfix' to ban incoming SMTP client with no fqdn hostname, and to support multiple instances of postfix having varying suffix (gh-1331) (Thanks Tom Hendrikx)
    • files/gentoo-initd to use start-stop-daemon to robustify restarting the service

0.9.3

8 years ago

0.9.2

9 years ago

0.9.1

9 years ago

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 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

0.8.14

9 years ago
  • Fixes:
    • minor fixes for claimed Python 2.4 and 2.5 compatibility
    • Handle case when inotify watch is auto deleted on file deletion to stop error messages
    • tests - fixed few "leaky" file descriptors when files were not closed while being removed physically
    • grep in mail*-whois-lines.conf now also matches end of line to work with the recidive filter