mirror of https://github.com/fail2ban/fail2ban
ENH: framework for distro paths
parent
1e1261ccb4
commit
1a1e3bec86
|
@ -0,0 +1,44 @@
|
||||||
|
# Common
|
||||||
|
#
|
||||||
|
|
||||||
|
[INCLUDES]
|
||||||
|
|
||||||
|
before = common-paths.conf
|
||||||
|
|
||||||
|
after = paths-overrides.local
|
||||||
|
|
||||||
|
[DEFAULT]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
sshd_log = %(syslog_authpriv)s
|
||||||
|
|
||||||
|
dropbear_log = %(syslog_authpriv)s
|
||||||
|
|
||||||
|
|
||||||
|
# from /etc/audit/auditd.conf
|
||||||
|
auditd_log = /var/log/audit/audit.log
|
||||||
|
|
||||||
|
|
||||||
|
nginx_error_log = /var/log/nginx/error.log
|
||||||
|
|
||||||
|
nginx_access_log = /var/log/nginx/access.log
|
||||||
|
|
||||||
|
|
||||||
|
lighttpd_error_log = /var/log/lighttpd/error.log
|
||||||
|
|
||||||
|
# http://www.hardened-php.net/suhosin/configuration.html#suhosin.log.syslog.facility
|
||||||
|
# syslog_user is the default. Lighttpd also hooks errors into its log.
|
||||||
|
|
||||||
|
suhosin_log = %(syslog_user)s %(lighttpd_error_log)s
|
||||||
|
|
||||||
|
# defaults to ftp or local2 if ftp doesn't exist
|
||||||
|
proftpd_log = %(syslog_ftp)s
|
||||||
|
|
||||||
|
# http://svnweb.freebsd.org/ports/head/ftp/proftpd/files/patch-src_proftpd.8.in?view=markup
|
||||||
|
# defaults to ftp but can be overwritten.
|
||||||
|
pureftpd_log = %(syslog_ftp)s
|
||||||
|
|
||||||
|
|
||||||
|
postfix_log = %(syslog_mail_warn)s
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
# Debian
|
||||||
|
|
||||||
|
[INCLUDES]
|
||||||
|
|
||||||
|
before = common-paths.conf
|
||||||
|
|
||||||
|
after = paths-overrides.local
|
||||||
|
|
||||||
|
|
||||||
|
[DEFAULT]
|
||||||
|
|
||||||
|
syslog_mail = /var/log/mail.log
|
||||||
|
|
||||||
|
syslog_mail_warn = /var/log/mail.warn
|
||||||
|
|
||||||
|
syslog_authpriv = /var/log/auth.log
|
||||||
|
|
||||||
|
syslog_auth = /var/log/auth.log
|
||||||
|
|
||||||
|
syslog_daemon = /var/log/daemon.log
|
||||||
|
|
||||||
|
|
||||||
|
syslog_user = /var/log/user.log
|
||||||
|
|
||||||
|
syslog_ftp = /var/log/syslog
|
||||||
|
|
||||||
|
|
||||||
|
apache_error_log = /var/log/apache2/*error.log
|
||||||
|
|
||||||
|
apache_access_log = /var/log/apache2/*access.log
|
||||||
|
|
||||||
|
|
||||||
|
lighttpd_error_log = /var/log/lighttpd/error.log
|
||||||
|
|
||||||
|
|
||||||
|
# was in debian squeezy but not in wheezy
|
||||||
|
# /etc/proftpd/proftpd.conf (SystemLog)
|
||||||
|
proftpd_log =/var/log/proftpd/proftpd.log
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Fedora
|
||||||
|
|
||||||
|
|
||||||
|
[INCLUDES]
|
||||||
|
|
||||||
|
before = common-paths.conf
|
||||||
|
|
||||||
|
after = paths-overrides.local
|
||||||
|
|
||||||
|
[DEFAULT]
|
||||||
|
|
||||||
|
syslog_mail = /var/log/maillog
|
||||||
|
|
||||||
|
syslog_mail_warn = /var/log/mail.warn
|
||||||
|
|
||||||
|
syslog_authpriv = /var/log/secure
|
||||||
|
|
||||||
|
syslog_user = /var/log/messages
|
||||||
|
|
||||||
|
syslog_ftp = /var/log/messages
|
||||||
|
|
||||||
|
|
||||||
|
# Or should this be /etc/httpd/logs/.. since is the original symlink?
|
||||||
|
|
||||||
|
apache_error_log = /var/log/httpd/error_log
|
||||||
|
|
||||||
|
apache_access_log = /var/log/httpd/access_log
|
||||||
|
|
||||||
|
# /etc/proftpd/proftpd.conf (ExtendedLog for Anonymous)
|
||||||
|
# proftpd_log = /var/log/proftpd/auth.log
|
||||||
|
# Tested and it worked out in /var/log/messages so assuming syslog_ftp for now.
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
# FreeBSD
|
||||||
|
|
||||||
|
[INCLUDES]
|
||||||
|
|
||||||
|
before = common-paths.conf
|
||||||
|
|
||||||
|
after = paths-overrides.local
|
||||||
|
|
||||||
|
[DEFAULT]
|
||||||
|
|
||||||
|
syslog_mail = /var/log/maillog
|
||||||
|
|
||||||
|
syslog_mail_warn = /var/log/maillog
|
||||||
|
|
||||||
|
syslog_authpriv = /var/log/auth.log
|
||||||
|
|
||||||
|
|
||||||
|
syslog_ftp = ???
|
||||||
|
|
||||||
|
# Linux things
|
||||||
|
# we fake to avoid parse error in startups
|
||||||
|
|
||||||
|
auditd_log = /dev/null
|
||||||
|
|
||||||
|
# http://svnweb.freebsd.org/ports/head/www/apache24/files/patch-docs__conf__extra__httpd-ssl.conf.in?view=markup
|
||||||
|
# http://svnweb.freebsd.org/ports/head/www/apache22/files/patch-docs__conf__extra__httpd-ssl.conf.in?view=markup
|
||||||
|
# http://svnweb.freebsd.org/ports/head/www/apache24/files/patch-config.layout
|
||||||
|
# http://svnweb.freebsd.org/ports/head/www/apache22/files/patch-config.layout
|
||||||
|
|
||||||
|
apache_error_log = /usr/local/www/logs/*error[_.]log
|
||||||
|
|
||||||
|
apache_access_log = /usr/local/www/logs/*access[_.]log
|
||||||
|
|
||||||
|
# http://svnweb.freebsd.org/ports/head/www/nginx/Makefile?view=markup
|
||||||
|
|
||||||
|
nginx_error_log = /var/log/nginx-error.log
|
||||||
|
|
||||||
|
nginx_access_log = /var/log/nginx-access.log
|
||||||
|
|
||||||
|
lighttpd_error_log =
|
|
@ -30,6 +30,12 @@
|
||||||
|
|
||||||
# Comments: use '#' for comment lines and ';' (following a space) for inline comments
|
# Comments: use '#' for comment lines and ';' (following a space) for inline comments
|
||||||
|
|
||||||
|
|
||||||
|
[INCLUDES]
|
||||||
|
|
||||||
|
#before = disto-paths.conf
|
||||||
|
before = debian-paths.conf
|
||||||
|
|
||||||
# The DEFAULT allows a global definition of the options. They can be overridden
|
# The DEFAULT allows a global definition of the options. They can be overridden
|
||||||
# in each jail afterwards.
|
# in each jail afterwards.
|
||||||
|
|
||||||
|
@ -192,27 +198,27 @@ action = %(action_)s
|
||||||
[sshd]
|
[sshd]
|
||||||
|
|
||||||
port = ssh
|
port = ssh
|
||||||
logpath = /var/log/auth.log
|
logpath = %(sshd_log)s
|
||||||
/var/log/sshd.log
|
|
||||||
|
|
||||||
[sshd-ddos]
|
[sshd-ddos]
|
||||||
# This jail corresponds to the standard configuration in Fail2ban.
|
# This jail corresponds to the standard configuration in Fail2ban.
|
||||||
# The mail-whois action send a notification e-mail with a whois request
|
# The mail-whois action send a notification e-mail with a whois request
|
||||||
# in the body.
|
# in the body.
|
||||||
port = ssh
|
port = ssh
|
||||||
logpath = /var/log/auth.log
|
logpath = %(sshd_log)s
|
||||||
/var/log/sshd.log
|
|
||||||
|
|
||||||
[dropbear]
|
[dropbear]
|
||||||
|
|
||||||
port = ssh
|
port = ssh
|
||||||
logpath = /var/log/dropbear
|
logpath = %(dropbear_log)s
|
||||||
|
|
||||||
|
|
||||||
[selinux-ssh]
|
[selinux-ssh]
|
||||||
|
|
||||||
port = ssh
|
port = ssh
|
||||||
logpath = /var/log/audit/audit.log
|
logpath = %(auditd_log)s
|
||||||
maxretry = 5
|
maxretry = 5
|
||||||
|
|
||||||
|
|
||||||
|
@ -224,7 +230,7 @@ filter = sshd
|
||||||
action = hostsdeny[daemon_list=sshd]
|
action = hostsdeny[daemon_list=sshd]
|
||||||
sendmail-whois[name=SSH, dest=you@example.com]
|
sendmail-whois[name=SSH, dest=you@example.com]
|
||||||
ignoreregex = for myuser from
|
ignoreregex = for myuser from
|
||||||
logpath = /var/log/sshd.log
|
logpath = %(sshd_log)s
|
||||||
|
|
||||||
|
|
||||||
# Here we use blackhole routes for not requiring any additional kernel support
|
# Here we use blackhole routes for not requiring any additional kernel support
|
||||||
|
@ -234,7 +240,7 @@ logpath = /var/log/sshd.log
|
||||||
|
|
||||||
filter = sshd
|
filter = sshd
|
||||||
action = route
|
action = route
|
||||||
logpath = /var/log/sshd.log
|
logpath = %(sshd_log)s
|
||||||
|
|
||||||
|
|
||||||
# Here we use a combination of Netfilter/Iptables and IPsets
|
# Here we use a combination of Netfilter/Iptables and IPsets
|
||||||
|
@ -246,21 +252,21 @@ logpath = /var/log/sshd.log
|
||||||
|
|
||||||
filter = sshd
|
filter = sshd
|
||||||
action = iptables-ipset-proto4[name=SSH, port=ssh, protocol=tcp]
|
action = iptables-ipset-proto4[name=SSH, port=ssh, protocol=tcp]
|
||||||
logpath = /var/log/sshd.log
|
logpath = %(sshd_log)s
|
||||||
|
|
||||||
|
|
||||||
[sshd-iptables-ipset6]
|
[sshd-iptables-ipset6]
|
||||||
|
|
||||||
filter = sshd
|
filter = sshd
|
||||||
action = iptables-ipset-proto6[name=SSH, port=ssh, protocol=tcp, bantime=600]
|
action = iptables-ipset-proto6[name=SSH, port=ssh, protocol=tcp, bantime=600]
|
||||||
logpath = /var/log/sshd.log
|
logpath = %(sshd_log)s
|
||||||
|
|
||||||
|
|
||||||
[sshd-apf]
|
[sshd-apf]
|
||||||
|
|
||||||
filter = sshd
|
filter = sshd
|
||||||
action = apf[name=SSH]
|
action = apf[name=SSH]
|
||||||
logpath = /var/log/secure
|
logpath = %(sshd_log)s
|
||||||
maxretry = 5
|
maxretry = 5
|
||||||
|
|
||||||
|
|
||||||
|
@ -273,7 +279,7 @@ maxretry = 5
|
||||||
filter = sshd
|
filter = sshd
|
||||||
action = ipfw[localhost=192.168.0.1]
|
action = ipfw[localhost=192.168.0.1]
|
||||||
sendmail-whois[name="SSH,IPFW", dest=you@example.com]
|
sendmail-whois[name="SSH,IPFW", dest=you@example.com]
|
||||||
logpath = /var/log/auth.log
|
logpath = %(sshd_log)s
|
||||||
|
|
||||||
|
|
||||||
# bsd-ipfw is ipfw used by BSD. It uses ipfw tables.
|
# bsd-ipfw is ipfw used by BSD. It uses ipfw tables.
|
||||||
|
@ -286,14 +292,14 @@ logpath = /var/log/auth.log
|
||||||
|
|
||||||
filter = sshd
|
filter = sshd
|
||||||
action = bsd-ipfw[port=ssh,table=1]
|
action = bsd-ipfw[port=ssh,table=1]
|
||||||
logpath = /var/log/auth.log
|
logpath = %(sshd_log)s
|
||||||
|
|
||||||
|
|
||||||
[sshd-pf]
|
[sshd-pf]
|
||||||
# PF is a BSD based firewall
|
# PF is a BSD based firewall
|
||||||
filter = sshd
|
filter = sshd
|
||||||
action = pf
|
action = pf
|
||||||
logpath = /var/log/sshd.log
|
logpath = %(sshd_log)s
|
||||||
maxretry= 5
|
maxretry= 5
|
||||||
|
|
||||||
|
|
||||||
|
@ -302,14 +308,14 @@ maxretry= 5
|
||||||
|
|
||||||
filter = sshd
|
filter = sshd
|
||||||
action = osx-ipfw
|
action = osx-ipfw
|
||||||
logpath = /var/log/secure.log
|
logpath = %(sshd_log)s
|
||||||
|
|
||||||
|
|
||||||
[osx-sshd-afctl]
|
[osx-sshd-afctl]
|
||||||
|
|
||||||
filter = sshd
|
filter = sshd
|
||||||
action = osx-afctl[bantime=600]
|
action = osx-afctl[bantime=600]
|
||||||
logpath = /var/log/secure.log
|
logpath = %(sshd_log)s
|
||||||
maxretry = 5
|
maxretry = 5
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -319,15 +325,14 @@ maxretry = 5
|
||||||
[apache-auth]
|
[apache-auth]
|
||||||
|
|
||||||
port = http,https
|
port = http,https
|
||||||
logpath = /var/log/apache*/*error.log
|
logpath = %(apache_error_log)s
|
||||||
|
|
||||||
|
|
||||||
[apache-badbots]
|
[apache-badbots]
|
||||||
# Ban hosts which agent identifies spammer robots crawling the web
|
# Ban hosts which agent identifies spammer robots crawling the web
|
||||||
# for email addresses. The mail outputs are buffered.
|
# for email addresses. The mail outputs are buffered.
|
||||||
port = http,https
|
port = http,https
|
||||||
logpath = /var/log/apache*/*access.log
|
logpath = %(apache_access_log)s
|
||||||
/var/www/*/logs/access_log
|
|
||||||
bantime = 172800
|
bantime = 172800
|
||||||
maxretry = 1
|
maxretry = 1
|
||||||
|
|
||||||
|
@ -335,45 +340,42 @@ maxretry = 1
|
||||||
[apache-noscript]
|
[apache-noscript]
|
||||||
|
|
||||||
port = http,https
|
port = http,https
|
||||||
logpath = /var/log/apache*/*error.log
|
logpath = %(apache_error_log)s
|
||||||
maxretry = 6
|
maxretry = 6
|
||||||
|
|
||||||
|
|
||||||
[apache-overflows]
|
[apache-overflows]
|
||||||
|
|
||||||
port = http,https
|
port = http,https
|
||||||
logpath = /var/log/apache*/*error.log
|
logpath = %(apache_error_log)s
|
||||||
/var/www/*/logs/error_log
|
|
||||||
maxretry = 2
|
maxretry = 2
|
||||||
|
|
||||||
|
|
||||||
[apache-nohome]
|
[apache-nohome]
|
||||||
|
|
||||||
port = http,https
|
port = http,https
|
||||||
logpath = /var/log/apache*/*error.log
|
logpath = %(apache_error_log)s
|
||||||
/var/www/*/logs/error_log
|
|
||||||
maxretry = 2
|
maxretry = 2
|
||||||
|
|
||||||
|
|
||||||
[apache-botsearch]
|
[apache-botsearch]
|
||||||
|
|
||||||
port = http,https
|
port = http,https
|
||||||
logpath = /var/log/apache*/*error.log
|
logpath = %(apache_error_log)s
|
||||||
maxretry = 2
|
maxretry = 2
|
||||||
|
|
||||||
|
|
||||||
[apache-modsecurity]
|
[apache-modsecurity]
|
||||||
|
|
||||||
port = http,https
|
port = http,https
|
||||||
logpath = /var/log/apache*/*error.log
|
logpath = %(apache_error_log)s
|
||||||
/var/www/*/logs/error_log
|
|
||||||
maxretry = 2
|
maxretry = 2
|
||||||
|
|
||||||
|
|
||||||
[nginx-http-auth]
|
[nginx-http-auth]
|
||||||
|
|
||||||
ports = http,https
|
ports = http,https
|
||||||
logpath = /var/log/nginx/error.log
|
logpath = %(nginx_error_log)s
|
||||||
|
|
||||||
|
|
||||||
# Ban attackers that try to use PHP's URL-fopen() functionality
|
# Ban attackers that try to use PHP's URL-fopen() functionality
|
||||||
|
@ -383,20 +385,20 @@ logpath = /var/log/nginx/error.log
|
||||||
[php-url-fopen]
|
[php-url-fopen]
|
||||||
|
|
||||||
port = http,https
|
port = http,https
|
||||||
logpath = /var/www/*/logs/access_log
|
logpath = %(nginx_access_log)s %(apache_access_log)s
|
||||||
|
|
||||||
|
|
||||||
[suhosin]
|
[suhosin]
|
||||||
|
|
||||||
port = http,https
|
port = http,https
|
||||||
logpath = /var/log/lighttpd/error.log
|
logpath = %(suhosin_log)s
|
||||||
|
|
||||||
|
|
||||||
[lighttpd-auth]
|
[lighttpd-auth]
|
||||||
# Same as above for Apache's mod_auth
|
# Same as above for Apache's mod_auth
|
||||||
# It catches wrong authentifications
|
# It catches wrong authentifications
|
||||||
port = http,https
|
port = http,https
|
||||||
logpath = /var/log/lighttpd/error.log
|
logpath = %(lighttpd_error_log)s
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -483,7 +485,7 @@ logpath = /var/log/proftpd/proftpd.log
|
||||||
[pure-ftpd]
|
[pure-ftpd]
|
||||||
|
|
||||||
port = ftp,ftp-data,ftps,ftps-data
|
port = ftp,ftp-data,ftps,ftps-data
|
||||||
logpath = /var/log/auth.log
|
logpath = %(pureftpd_log)s
|
||||||
maxretry = 6
|
maxretry = 6
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
# OSX
|
||||||
|
#
|
||||||
|
|
||||||
|
[INCLUDES]
|
||||||
|
|
||||||
|
before = common-paths.conf
|
||||||
|
|
||||||
|
after = paths-overrides.local
|
||||||
|
|
||||||
|
|
||||||
|
[DEFAULT]
|
||||||
|
|
||||||
|
syslog_authpriv = /var/log/secure.log
|
||||||
|
|
||||||
|
#syslog_auth = /var/log/auth.log
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
syslog_mail = /var/log/mail.log
|
||||||
|
|
||||||
|
syslog_mail_warn = /var/log/mail.warn
|
||||||
|
|
|
@ -67,6 +67,8 @@ class JailsReader(ConfigReader):
|
||||||
# Get the options of all jails.
|
# Get the options of all jails.
|
||||||
parse_status = True
|
parse_status = True
|
||||||
for sec in sections:
|
for sec in sections:
|
||||||
|
if sec == 'INCLUDES':
|
||||||
|
continue
|
||||||
jail = JailReader(sec, basedir=self.getBaseDir(),
|
jail = JailReader(sec, basedir=self.getBaseDir(),
|
||||||
force_enable=self.__force_enable)
|
force_enable=self.__force_enable)
|
||||||
jail.read()
|
jail.read()
|
||||||
|
|
|
@ -435,7 +435,8 @@ class JailsReaderTest(LogCaptureTestCase):
|
||||||
# All jails must have filter and action set
|
# All jails must have filter and action set
|
||||||
# TODO: evolve into a parametric test
|
# TODO: evolve into a parametric test
|
||||||
for jail in jails.sections():
|
for jail in jails.sections():
|
||||||
|
if jail == 'INCLUDES':
|
||||||
|
continue
|
||||||
filterName = jails.get(jail, 'filter')
|
filterName = jails.get(jail, 'filter')
|
||||||
allFilters.add(filterName)
|
allFilters.add(filterName)
|
||||||
self.assertTrue(len(filterName))
|
self.assertTrue(len(filterName))
|
||||||
|
|
Loading…
Reference in New Issue