mirror of https://github.com/fail2ban/fail2ban
Merge remote-tracking branch 'origin/master' into bf-nasty-children-tests
* origin/master: Comment spelling fixes logrotate: Do not rotate empty logs logrotate: Remove outdated Fedora comment Updated Changelog Bugfix for dnsToIp resolver for fqdn with large list of IPs; closes #1164 Added apache-badbots.conf Update gen_badbots Update apache-badbots.conf changelog for freshly merged PR (roundcube-auth definition of logpath) Fixed line suspected to be faulty renamed <NAME> to correct <ACT> in protocol Conflicts: fail2ban/tests/actiontestcase.py -- due to comments fix uppull/1187/head
commit
c2c4c40805
|
@ -10,10 +10,15 @@ ver. 0.9.4 (2015/XX/XXX) - wanna-be-released
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
- Fixes:
|
- 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 `+`
|
||||||
|
|
||||||
- New Features:
|
- New Features:
|
||||||
|
|
||||||
- Enhancements:
|
- Enhancements:
|
||||||
|
* Do not rotate empty log files
|
||||||
|
|
||||||
ver. 0.9.3 (2015/08/01) - lets-all-stay-friends
|
ver. 0.9.3 (2015/08/01) - lets-all-stay-friends
|
||||||
----------
|
----------
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
[Definition]
|
[Definition]
|
||||||
|
|
||||||
badbotscustom = EmailCollector|WebEMailExtrac|TrackBack/1\.02|sogou music spider
|
badbotscustom = EmailCollector|WebEMailExtrac|TrackBack/1\.02|sogou music spider
|
||||||
badbots = Atomic_Email_Hunter/4\.0|atSpider/1\.0|autoemailspider|bwh3_user_agent|China Local Browse 2\.6|ContactBot/0\.2|ContentSmartz|DataCha0s/2\.0|DBrowse 1\.4b|DBrowse 1\.4d|Demo Bot DOT 16b|Demo Bot Z 16b|DSurf15a 01|DSurf15a 71|DSurf15a 81|DSurf15a VA|EBrowse 1\.4b|Educate Search VxB|EmailSiphon|EmailSpider|EmailWolf 1\.00|ESurf15a 15|ExtractorPro|Franklin Locator 1\.8|FSurf15a 01|Full Web Bot 0416B|Full Web Bot 0516B|Full Web Bot 2816B|Guestbook Auto Submitter|Industry Program 1\.0\.x|ISC Systems iRc Search 2\.1|IUPUI Research Bot v 1\.9a|LARBIN-EXPERIMENTAL \(efp@gmx\.net\)|LetsCrawl\.com/1\.0 +http\://letscrawl\.com/|Lincoln State Web Browser|LMQueueBot/0\.2|LWP\:\:Simple/5\.803|Mac Finder 1\.0\.xx|MFC Foundation Class Library 4\.0|Microsoft URL Control - 6\.00\.8xxx|Missauga Locate 1\.0\.0|Missigua Locator 1\.9|Missouri College Browse|Mizzu Labs 2\.2|Mo College 1\.9|MVAClient|Mozilla/2\.0 \(compatible; NEWT ActiveX; Win32\)|Mozilla/3\.0 \(compatible; Indy Library\)|Mozilla/3\.0 \(compatible; scan4mail \(advanced version\) http\://www\.peterspages\.net/?scan4mail\)|Mozilla/4\.0 \(compatible; Advanced Email Extractor v2\.xx\)|Mozilla/4\.0 \(compatible; Iplexx Spider/1\.0 http\://www\.iplexx\.at\)|Mozilla/4\.0 \(compatible; MSIE 5\.0; Windows NT; DigExt; DTS Agent|Mozilla/4\.0 efp@gmx\.net|Mozilla/5\.0 \(Version\: xxxx Type\:xx\)|NameOfAgent \(CMS Spider\)|NASA Search 1\.0|Nsauditor/1\.x|PBrowse 1\.4b|PEval 1\.4b|Poirot|Port Huron Labs|Production Bot 0116B|Production Bot 2016B|Production Bot DOT 3016B|Program Shareware 1\.0\.2|PSurf15a 11|PSurf15a 51|PSurf15a VA|psycheclone|RSurf15a 41|RSurf15a 51|RSurf15a 81|searchbot admin@google\.com|ShablastBot 1\.0|snap\.com beta crawler v0|Snapbot/1\.0|Snapbot/1\.0 \(Snap Shots, +http\://www\.snap\.com\)|sogou develop spider|Sogou Orion spider/3\.0\(+http\://www\.sogou\.com/docs/help/webmasters\.htm#07\)|sogou spider|Sogou web spider/3\.0\(+http\://www\.sogou\.com/docs/help/webmasters\.htm#07\)|sohu agent|SSurf15a 11 |TSurf15a 11|Under the Rainbow 2\.2|User-Agent\: Mozilla/4\.0 \(compatible; MSIE 6\.0; Windows NT 5\.1\)|VadixBot|WebVulnCrawl\.unknown/1\.0 libwww-perl/5\.803|Wells Search II|WEP Search 00
|
badbots = Atomic_Email_Hunter/4\.0|atSpider/1\.0|autoemailspider|bwh3_user_agent|China Local Browse 2\.6|ContactBot/0\.2|ContentSmartz|DataCha0s/2\.0|DBrowse 1\.4b|DBrowse 1\.4d|Demo Bot DOT 16b|Demo Bot Z 16b|DSurf15a 01|DSurf15a 71|DSurf15a 81|DSurf15a VA|EBrowse 1\.4b|Educate Search VxB|EmailSiphon|EmailSpider|EmailWolf 1\.00|ESurf15a 15|ExtractorPro|Franklin Locator 1\.8|FSurf15a 01|Full Web Bot 0416B|Full Web Bot 0516B|Full Web Bot 2816B|Guestbook Auto Submitter|Industry Program 1\.0\.x|ISC Systems iRc Search 2\.1|IUPUI Research Bot v 1\.9a|LARBIN-EXPERIMENTAL \(efp@gmx\.net\)|LetsCrawl\.com/1\.0 \+http\://letscrawl\.com/|Lincoln State Web Browser|LMQueueBot/0\.2|LWP\:\:Simple/5\.803|Mac Finder 1\.0\.xx|MFC Foundation Class Library 4\.0|Microsoft URL Control - 6\.00\.8xxx|Missauga Locate 1\.0\.0|Missigua Locator 1\.9|Missouri College Browse|Mizzu Labs 2\.2|Mo College 1\.9|MVAClient|Mozilla/2\.0 \(compatible; NEWT ActiveX; Win32\)|Mozilla/3\.0 \(compatible; Indy Library\)|Mozilla/3\.0 \(compatible; scan4mail \(advanced version\) http\://www\.peterspages\.net/?scan4mail\)|Mozilla/4\.0 \(compatible; Advanced Email Extractor v2\.xx\)|Mozilla/4\.0 \(compatible; Iplexx Spider/1\.0 http\://www\.iplexx\.at\)|Mozilla/4\.0 \(compatible; MSIE 5\.0; Windows NT; DigExt; DTS Agent|Mozilla/4\.0 efp@gmx\.net|Mozilla/5\.0 \(Version\: xxxx Type\:xx\)|NameOfAgent \(CMS Spider\)|NASA Search 1\.0|Nsauditor/1\.x|PBrowse 1\.4b|PEval 1\.4b|Poirot|Port Huron Labs|Production Bot 0116B|Production Bot 2016B|Production Bot DOT 3016B|Program Shareware 1\.0\.2|PSurf15a 11|PSurf15a 51|PSurf15a VA|psycheclone|RSurf15a 41|RSurf15a 51|RSurf15a 81|searchbot admin@google\.com|ShablastBot 1\.0|snap\.com beta crawler v0|Snapbot/1\.0|Snapbot/1\.0 \(Snap Shots, \+http\://www\.snap\.com\)|sogou develop spider|Sogou Orion spider/3\.0\(\+http\://www\.sogou\.com/docs/help/webmasters\.htm#07\)|sogou spider|Sogou web spider/3\.0\(\+http\://www\.sogou\.com/docs/help/webmasters\.htm#07\)|sohu agent|SSurf15a 11 |TSurf15a 11|Under the Rainbow 2\.2|User-Agent\: Mozilla/4\.0 \(compatible; MSIE 6\.0; Windows NT 5\.1\)|VadixBot|WebVulnCrawl\.unknown/1\.0 libwww-perl/5\.803|Wells Search II|WEP Search 00
|
||||||
|
|
||||||
failregex = ^<HOST> -.*"(GET|POST|HEAD).*HTTP.*"(?:%(badbots)s|%(badbotscustom)s)"$
|
failregex = ^<HOST> -.*"(GET|POST|HEAD).*HTTP.*"(?:%(badbots)s|%(badbotscustom)s)"$
|
||||||
|
|
||||||
|
|
|
@ -348,7 +348,7 @@ logpath = %(lighttpd_error_log)s
|
||||||
[roundcube-auth]
|
[roundcube-auth]
|
||||||
|
|
||||||
port = http,https
|
port = http,https
|
||||||
logpath = logpath = %(roundcube_errors_log)s
|
logpath = %(roundcube_errors_log)s
|
||||||
|
|
||||||
|
|
||||||
[openwebmail]
|
[openwebmail]
|
||||||
|
|
|
@ -89,7 +89,7 @@ protocol = [
|
||||||
["set <JAIL> unbanip <IP>", "manually Unban <IP> in <JAIL>"],
|
["set <JAIL> unbanip <IP>", "manually Unban <IP> in <JAIL>"],
|
||||||
["set <JAIL> maxretry <RETRY>", "sets the number of failures <RETRY> before banning the host for <JAIL>"],
|
["set <JAIL> maxretry <RETRY>", "sets the number of failures <RETRY> before banning the host for <JAIL>"],
|
||||||
["set <JAIL> maxlines <LINES>", "sets the number of <LINES> to buffer for regex search for <JAIL>"],
|
["set <JAIL> maxlines <LINES>", "sets the number of <LINES> to buffer for regex search for <JAIL>"],
|
||||||
["set <JAIL> addaction <ACT>[ <PYTHONFILE> <JSONKWARGS>]", "adds a new action named <NAME> for <JAIL>. Optionally for a Python based action, a <PYTHONFILE> and <JSONKWARGS> can be specified, else will be a Command Action"],
|
["set <JAIL> addaction <ACT>[ <PYTHONFILE> <JSONKWARGS>]", "adds a new action named <ACT> for <JAIL>. Optionally for a Python based action, a <PYTHONFILE> and <JSONKWARGS> can be specified, else will be a Command Action"],
|
||||||
["set <JAIL> delaction <ACT>", "removes the action <ACT> from <JAIL>"],
|
["set <JAIL> delaction <ACT>", "removes the action <ACT> from <JAIL>"],
|
||||||
["", "COMMAND ACTION CONFIGURATION", ""],
|
["", "COMMAND ACTION CONFIGURATION", ""],
|
||||||
["set <JAIL> action <ACT> actionstart <CMD>", "sets the start command <CMD> of the action <ACT> for <JAIL>"],
|
["set <JAIL> action <ACT> actionstart <CMD>", "sets the start command <CMD> of the action <ACT> for <JAIL>"],
|
||||||
|
|
|
@ -855,8 +855,9 @@ class DNSUtils:
|
||||||
""" Convert a DNS into an IP address using the Python socket module.
|
""" Convert a DNS into an IP address using the Python socket module.
|
||||||
Thanks to Kevin Drapel.
|
Thanks to Kevin Drapel.
|
||||||
"""
|
"""
|
||||||
|
# retrieve ip (todo: use AF_INET6 for IPv6)
|
||||||
try:
|
try:
|
||||||
return set(socket.gethostbyname_ex(dns)[2])
|
return set([i[4][0] for i in socket.getaddrinfo(dns, None, socket.AF_INET, 0, socket.IPPROTO_TCP)])
|
||||||
except socket.error, e:
|
except socket.error, e:
|
||||||
logSys.warning("Unable to find a corresponding IP address for %s: %s"
|
logSys.warning("Unable to find a corresponding IP address for %s: %s"
|
||||||
% (dns, e))
|
% (dns, e))
|
||||||
|
|
|
@ -223,7 +223,7 @@ class CommandActionTest(LogCaptureTestCase):
|
||||||
# First test if can kill the bastard
|
# First test if can kill the bastard
|
||||||
self.assertFalse(CommandAction.executeCmd(
|
self.assertFalse(CommandAction.executeCmd(
|
||||||
'bash %s' % tmpFilename, timeout=.1))
|
'bash %s' % tmpFilename, timeout=.1))
|
||||||
# Verify that the proccess itself got killed
|
# Verify that the process itself got killed
|
||||||
self.assertFalse(pid_exists(getnastypid())) # process should have been killed
|
self.assertFalse(pid_exists(getnastypid())) # process should have been killed
|
||||||
self.assertTrue(self._is_logged('timed out'))
|
self.assertTrue(self._is_logged('timed out'))
|
||||||
self.assertTrue(self._is_logged('killed with SIGTERM'))
|
self.assertTrue(self._is_logged('killed with SIGTERM'))
|
||||||
|
@ -231,7 +231,7 @@ class CommandActionTest(LogCaptureTestCase):
|
||||||
# A bit evolved case even though, previous test already tests killing children processes
|
# A bit evolved case even though, previous test already tests killing children processes
|
||||||
self.assertFalse(CommandAction.executeCmd(
|
self.assertFalse(CommandAction.executeCmd(
|
||||||
'out=`bash %s`; echo ALRIGHT' % tmpFilename, timeout=.2))
|
'out=`bash %s`; echo ALRIGHT' % tmpFilename, timeout=.2))
|
||||||
# Verify that the proccess itself got killed
|
# Verify that the process itself got killed
|
||||||
self.assertFalse(pid_exists(getnastypid()))
|
self.assertFalse(pid_exists(getnastypid()))
|
||||||
self.assertTrue(self._is_logged('timed out'))
|
self.assertTrue(self._is_logged('timed out'))
|
||||||
self.assertTrue(self._is_logged('killed with SIGTERM'))
|
self.assertTrue(self._is_logged('killed with SIGTERM'))
|
||||||
|
|
|
@ -4,13 +4,11 @@
|
||||||
#
|
#
|
||||||
# Debian:
|
# Debian:
|
||||||
# https://github.com/fail2ban/fail2ban/blob/debian/debian/fail2ban.logrotate
|
# https://github.com/fail2ban/fail2ban/blob/debian/debian/fail2ban.logrotate
|
||||||
#
|
|
||||||
# Fedora view:
|
|
||||||
# http://pkgs.fedoraproject.org/cgit/fail2ban.git/tree/fail2ban-logrotate
|
|
||||||
|
|
||||||
/var/log/fail2ban.log {
|
/var/log/fail2ban.log {
|
||||||
rotate 7
|
rotate 7
|
||||||
missingok
|
missingok
|
||||||
|
notifempty
|
||||||
compress
|
compress
|
||||||
postrotate
|
postrotate
|
||||||
/usr/bin/fail2ban-client flushlogs 1>/dev/null || true
|
/usr/bin/fail2ban-client flushlogs 1>/dev/null || true
|
||||||
|
|
|
@ -42,7 +42,7 @@ done \
|
||||||
| grep -h -B4 '<td class="smallcell" nowrap>S </td>'\
|
| grep -h -B4 '<td class="smallcell" nowrap>S </td>'\
|
||||||
| sed -e 's/ //g' \
|
| sed -e 's/ //g' \
|
||||||
| awk '/^--/{getline; gsub(" ",""); print $0}' \
|
| awk '/^--/{getline; gsub(" ",""); print $0}' \
|
||||||
| sed -e 's/\([.\:|()]\)/\\\1/g' \
|
| sed -e 's/\([.\:|()+]\)/\\\1/g' \
|
||||||
| uniq \
|
| uniq \
|
||||||
| tr '\n' '|' \
|
| tr '\n' '|' \
|
||||||
| sed -e 's/|$//g'
|
| sed -e 's/|$//g'
|
||||||
|
|
|
@ -229,7 +229,7 @@ sets the number of <LINES> to
|
||||||
buffer for regex search for <JAIL>
|
buffer for regex search for <JAIL>
|
||||||
.TP
|
.TP
|
||||||
\fBset <JAIL> addaction <ACT>[ <PYTHONFILE> <JSONKWARGS>]\fR
|
\fBset <JAIL> addaction <ACT>[ <PYTHONFILE> <JSONKWARGS>]\fR
|
||||||
adds a new action named <NAME> for
|
adds a new action named <ACT> for
|
||||||
<JAIL>. Optionally for a Python
|
<JAIL>. Optionally for a Python
|
||||||
based action, a <PYTHONFILE> and
|
based action, a <PYTHONFILE> and
|
||||||
<JSONKWARGS> can be specified,
|
<JSONKWARGS> can be specified,
|
||||||
|
|
Loading…
Reference in New Issue