SYNFLOOD = "1" SYNFLOOD_RATE = "100 / s" SYNFLOOD_BURST = "10" CONNLIMIT = "80; 110,443; 110" PORTFLOOD = "80; tcp; 20; 1,443; tcp; 20; 1" CT_LIMIT = "300" CT_INTERVAL = "60"
service fail2ban stop update-rc.d -f fail2ban remove
#! / bin / sh /etc/init.d/fail2ban reload
sed -i "s | enabled = true | enabled = false | g" /etc/fail2ban/jail.conf
[Definition] actionstart = actionstop = actioncheck = actionban = csf -d <ip> Added by Fail2Ban for <name> actionunban = csf -dr <ip>
sed -i -e "s | banaction = | banaction = csf-ip-deny \ n # banaction = |" /etc/fail2ban/jail.conf
[Definition] # Count all bans in the logfile failregex = fail2ban.actions: WARNING \ [(. *) \] Ban <HOST> # Ignore our own bans, to keep our counts exact. # In your config, name your jail 'fail2ban', or change this line! ignoreregex = fail2ban.actions: WARNING \ [fail2ban \] Ban <HOST>
## fail2ban with CSF to block repeat offenders [fail2ban] enabled = true filter = fail2ban action = iptables-allports # sendmail-whois [name = fail2ban] logpath = /var/log/fail2ban.log maxretry = 10 # Find-time: 1 day findtime = 86400 # Ban-time: 1 week bantime = 604800
limit_conn_zone $ binary_remote_addr zone = perip: 10m; limit_conn perip 100; limit_conn_zone $ server_name zone = perserver: 10m; limit_conn perserver 200; limit_req_zone $ binary_remote_addr zone = reqip: 10m rate = 10r / s; limit_req zone = reqip burst = 30;
# Fail2Ban configuration file # [Definition] # Option: failregex # Notes .: Regexp to catch a generic call from an IP address. # Values: TEXT # failregex = limiting connections by zone. * client: <HOST> # Option: ignoreregex # Notes .: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex =
# Fail2Ban configuration file # [Definition] # Option: failregex # Notes .: Regexp to catch a generic call from an IP address. # Values: TEXT # failregex = limiting requests. * client: <HOST> # Option: ignoreregex # Notes .: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex =
# Fail2Ban configuration file # [Definition] # Option: failregex # Notes .: Regexp to catch a generic call from an IP address. # Values: TEXT # failregex = ^ <HOST> -. * "(GET | POST). * HTTP. *" $ # Option: ignoreregex # Notes .: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex =
[nginx-conn-limit] enabled = true filter = nginx-conn-limit action = csf-ip-deny [name = nginx-conn-limit] logpath = /var/log/nginx/error.log maxretry = 4 findtime = 21600 bantime = 3600 [nginx-req-limit] enabled = true filter = nginx-req-limit action = csf-ip-deny [name = nginx-req-limit] logpath = /var/log/nginx/error.log maxretry = 4 findtime = 21600 bantime = 3600 [nginx-dos] # Based on apache-badbots but a simple IP check (any IP requesting more than # 240 pages in 60 seconds, or 4p / s average, is suspicious) enabled = true filter = nginx-dos action = csf-ip-deny [name = nginx-dos] logpath = /var/log/nginx/access.log maxretry = 240 findtime = 60 bantime = 3600
[Definition] failregex = <HOST>. * POST /wp-login.php ignoreregex = </ source> "/etc/fail2ban/filter.d/nginx-wp-xmlrpc.conf" <source lang = "bash"> [Definition] failregex = <HOST>. * POST /xmlrpc.php ignoreregex =
[Definition] failregex = ^ <HOST>. * "GET /wp-login.php\?action=register HTTP /.*". * $ ignoreregex =
[nginx-wp-login] enabled = true filter = nginx-wp-login action = csf-ip-deny [name = nginx-wp-login] logpath = /var/log/nginx/access.log maxretry = 4 findtime = 600 bantime = 3600 [nginx-wp-xmlrpc] enabled = true filter = nginx-wp-xmlrpc action = csf-ip-deny [name = nginx-wp-xmlrpc] logpath = /var/log/nginx/access.log maxretry = 4 findtime = 600 bantime = 3600 [nginx-wp-register] enabled = true filter = nginx-wp-register action = csf-ip-deny [name = nginx-wp-register] logpath = /var/log/nginx/access.log maxretry = 4 findtime = 600 bantime = 3600
2015-01-04 13: 44: 10,660 fail2ban.actions: WARNING [nginx-req-limit] Ban 188.191.47.46 2015-01-04 13: 44: 11,668 fail2ban.actions: WARNING [nginx-conn-limit] Ban 109.187.63.199 2015-01-04 13: 44: 21,061 fail2ban.actions: WARNING [nginx-req-limit] 188.191.47.46 already banned 2015-01-04 13: 44: 29,382 fail2ban.actions: WARNING [nginx-conn-limit] Ban 178.123.155.115 2015-01-04 13: 44: 36,584 fail2ban.actions: WARNING [nginx-conn-limit] Ban 109.62.153.190 2015-01-04 13: 44: 38,246 fail2ban.actions: WARNING [nginx-dos] Ban 5.143.158.88 2015-01-04 13: 44: 38,826 fail2ban.actions: WARNING [nginx-req-limit] Ban 178.158.206.140 2015-01-04 13: 44: 41,739 fail2ban.actions: WARNING [nginx-conn-limit] Ban 5.44.168.38 2015-01-04 13: 44: 49,877 fail2ban.actions: WARNING [nginx-dos] Ban 91.214.131.71 2015-01-04 13: 44: 52,333 fail2ban.actions: WARNING [nginx-conn-limit] Ban 176.125.48.22 2015-01-04 13: 44: 53,395 fail2ban.actions: WARNING [nginx-req-limit] Ban 91.207.211.222 2015-01-04 13: 44: 53,773 fail2ban.actions: WARNING [nginx-dos] Ban 178.158.206.140 2015-01-04 13: 44: 54,849 fail2ban.actions: WARNING [nginx-conn-limit] Ban 5.143.158.88 2015-01-04 13: 44: 57,395 fail2ban.actions: WARNING [nginx-req-limit] 91.207.211.222 already banned 2015-01-04 13: 44: 57,765 fail2ban.actions: WARNING [nginx-dos] Ban 37.232.87.169 2015-01-04 13: 44: 58,073 fail2ban.actions: WARNING [nginx-conn-limit] Ban 77.34.22.95 2015-01-04 13: 44: 58,506 fail2ban.actions: WARNING [nginx-req-limit] Ban 93.80.45.244 2015-01-04 13: 45: 02,733 fail2ban.actions: WARNING [nginx-dos] Ban 176.120.38.238 2015-01-04 13: 45: 05,615 fail2ban.actions: WARNING [nginx-conn-limit] Ban 178.173.4.162
2015-01-04 11: 43: 29,618 fail2ban.actions: WARNING [nginx-wp-login] Ban 95.163.121.129 2015-01-04 12: 43: 30,160 fail2ban.actions: WARNING [nginx-wp-login] Unban 95.163.121.129 2015-01-04 12: 56: 53,543 fail2ban.actions: WARNING [nginx-wp-login] Ban 95.163.121.129 2015-01-04 13: 56: 54,279 fail2ban.actions: WARNING [nginx-wp-login] Unban 95.163.121.129 2015-01-04 14: 02: 40,932 fail2ban.actions: WARNING [nginx-wp-login] Ban 95.163.121.129 2015-01-04 15: 02: 41,040 fail2ban.actions: WARNING [nginx-wp-login] Unban 95.163.121.129 2015-01-04 15: 12: 16,906 fail2ban.actions: WARNING [nginx-wp-login] Ban 95.163.121.129 2015-01-04 16: 12: 16,937 fail2ban.actions: WARNING [nginx-wp-login] Unban 95.163.121.129 2015-01-04 16: 55: 33,362 fail2ban.actions: WARNING [nginx-wp-login] Ban 95.163.121.129 2015-01-04 17: 55: 34,142 fail2ban.actions: WARNING [nginx-wp-login] Unban 95.163.121.129 2015-01-04 18: 23: 37,665 fail2ban.actions: WARNING [nginx-wp-login] Ban 95.163.121.129 2015-01-04 19: 23: 38,136 fail2ban.actions: WARNING [nginx-wp-login] Unban 95.163.121.129 2015-01-04 19: 45: 46,850 fail2ban.actions: WARNING [nginx-wp-login] Ban 95.163.121.129 2015-01-04 20: 03: 17,247 fail2ban.actions: WARNING [nginx-wp-login] Ban 92.255.28.42 2015-01-04 20:45: 47.085 fail2ban.actions: WARNING [nginx-wp-login] Unban 95.163.121.129 2015-01-04 21: 03: 17,297 fail2ban.actions: WARNING [nginx-wp-login] Unban 92.255.28.42 2015-01-04 21: 09: 51,996 fail2ban.actions: WARNING [nginx-wp-login] Ban 92.255.28.42 2015-01-04 21: 16: 22,336 fail2ban.actions: WARNING [nginx-wp-login] Ban 95.163.121.129 2015-01-04 22: 09: 52,036 fail2ban.actions: WARNING [nginx-wp-login] Unban 92.255.28.42 2015-01-04 22: 13: 27,799 fail2ban.actions: WARNING [nginx-wp-login] Ban 92.255.28.42 2015-01-04 22: 16: 23,295 fail2ban.actions: WARNING [nginx-wp-login] Unban 95.163.121.129 2015-01-04 22: 24: 56,755 fail2ban.actions: WARNING [nginx-wp-login] Ban 95.163.121.129 2015-01-04 23: 13: 28,058 fail2ban.actions: WARNING [nginx-wp-login] Unban 92.255.28.42 2015-01-04 23: 16: 50,235 fail2ban.actions: WARNING [nginx-wp-login] Ban 92.255.28.42 2015-01-04 23: 24: 56,843 fail2ban.actions: WARNING [nginx-wp-login] Unban 95.163.121.129 2015-01-05 00: 00: 42,183 fail2ban.actions: WARNING [nginx-wp-login] Ban 95.163.121.129 2015-01-05 00: 00: 43,851 fail2ban.actions: WARNING [fail2ban] Ban 95.163.121.129 2015-01-05 00: 16: 50,263 fail2ban.actions: WARNING [nginx-wp-login] Unban 92.255.28.42 2015-01-05 00: 23: 22,863 fail2ban.actions: WARNING [nginx-wp-login] Ban 92.255.28.42 2015-01-05 01: 00: 42,637 fail2ban.actions: WARNING [nginx-wp-login] Unban 95.163.121.129 2015-01-05 01: 23: 23,750 fail2ban.actions: WARNING [nginx-wp-login] Unban 92.255.28.42 2015-01-05 01: 26: 16,543 fail2ban.actions: WARNING [nginx-wp-login] Ban 92.255.28.42 2015-01-05 02: 26: 16,681 fail2ban.actions: WARNING [nginx-wp-login] Unban 92.255.28.42 2015-01-05 02: 32: 28,850 fail2ban.actions: WARNING [nginx-wp-login] Ban 92.255.28.42 2015-01-05 03: 32: 29,350 fail2ban.actions: WARNING [nginx-wp-login] Unban 92.255.28.42 2015-01-05 03: 39: 18,048 fail2ban.actions: WARNING [nginx-wp-login] Ban 92.255.28.42 2015-01-05 04: 39: 18,609 fail2ban.actions: WARNING [nginx-wp-login] Unban 92.255.28.42 2015-01-05 04: 43: 38,428 fail2ban.actions: WARNING [nginx-wp-login] Ban 92.255.28.42 2015-01-05 05: 43: 39,091 fail2ban.actions: WARNING [nginx-wp-login] Unban 92.255.28.42 2015-01-05 05: 47: 47,722 fail2ban.actions: WARNING [nginx-wp-login] Ban 92.255.28.42 2015-01-05 05: 47: 50,212 fail2ban.actions: WARNING [fail2ban] Ban 92.255.28.42 2015-01-05 06: 47: 48,343 fail2ban.actions: WARNING [nginx-wp-login] Unban 92.255.28.42
2015-01-05 14: 01: 14,432 fail2ban.actions: WARNING [nginx-wp-login] Ban 193.176.147.176 2015-01-05 14: 01: 14,656 fail2ban.actions: WARNING [nginx-wp-login] Unban 193.176 .147.249 2015-01-05 14: 01: 35,906 fail2ban.actions: WARNING [nginx-wp-login] Ban 193.176.147.198 2015-01-05 14: 02: 39,536 fail2ban.actions: WARNING [nginx-wp-login] Unban 193.176.147.154 2015-01-05 14: 02: 53,766 fail2ban.actions: WARNING [nginx-wp-login] Ban 193.176.147.132 2015-01-05 14: 02: 53,980 fail2ban.actions: WARNING [nginx-wp- login] Unban 193.176.147.202 2015-01-05 14: 04: 00,782 fail2ban.actions: WARNING [nginx-wp-login] Ban 193.176.147.136 2015-01-05 14: 04: 05,007 fail2ban.actions: WARNING [nginx- wp-login] Unban 193.176.147.104 2015-01-05 14: 04: 07,234 fail2ban.actions: WARNING [nginx-wp-login] Ban 193.176.147.167 2015-01-05 14: 04: 25,473 fail2ban.actions: WARNING [ nginx-wp-login] Ban 193.176.147.143 2015-01-05 14: 05: 26,993 fail2ban.actions: WARNING [nginx-wp-login] Unban 193.176.147.253 2015-01-05 14: 06: 25,719 fail2ban. actions: WARNING [nginx-wp-login] Unban 193.176.147.230 2015-01-05 14: 06: 27,945 fail2ban.actions: WARNING [nginx-wp-login] Ban 193.176.147.162 2015-01-05 14: 07: 23,484 fail2ban.actions: WARNING [nginx-wp-login] Ban 193.176.147.153 2015-01-05 14: 07: 56,962 fail2ban.actions: WARNING [nginx-wp-login] Ban 193.176.147.140 2015-01-05 14:08 : 11,207 fail2ban.actions: WARNING [nginx-wp-login] Unban 193.176.147.142 2015-01-05 14: 09: 37,759 fail2ban.actions: WARNING [nginx-wp-login] Unban 193.176.147.137 2015-01-05 14 : 10: 59,757 fail2ban.actions: WARNING [nginx-wp-login] Unban 193.176.147.175 2015-01-05 14: 11: 04,030 fail2ban.actions: WARNING [nginx-wp-login] Unban 193.176.147.117 2015-01- 05 14: 11: 23,273 fail2ban.actions: WARNING [nginx-wp-login] Ban 193.176.147.218 2015-01-05 14: 11: 41,517 fail2ban.actions: WARNING [nginx-wp-login] Unban 193.176.147.139 2015- 01-05 14: 13: 22,590 fail2ban.actions: WARNING [nginx-wp-login] Ban 193.176.147.204 2015-01-05 14: 13: 24,808 fail2ban.actions: WARNING [nginx-wp-logi n] Ban 193.176.147.220 2015-01-05 14: 14: 36,124 fail2ban.actions: WARNING [nginx-wp-login] Ban 193.176.147.190 2015-01-05 14: 14: 38,356 fail2ban.actions: WARNING [nginx- wp-login] Ban 193.176.147.179 2015-01-05 14: 14: 38,577 fail2ban.actions: WARNING [nginx-wp-login] Ban 193.176.147.137 2015-01-05 14: 14: 49,805 fail2ban.actions: WARNING [ nginx-wp-login] Unban 193.176.147.188 2015-01-05 14: 15: 48,398 fail2ban.actions: WARNING [nginx-wp-login] Unban 193.176.147.131
#! / bin / bash log = "/ var / log / fail2ban.log" limit = 30 grep = `which grep` $ {grep} "fail2ban.actions. * Ban" $ {log} | $ {grep} -E -o "(25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) \. (25 [ 0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) \. (25 [0-5] | 2 [0-4] [ 0-9] | [01]? [0-9] [0-9]?) \. (25 [0-5] | 2 [0-4] [0-9] | [01]? [0- 9] [0-9]?) "| awk -F '.' '{print $ 1 "." $ 2 "." $ 3}' | sort -u | while read line do count = $ ($ {grep} -c "fail2ban.actions. * Ban. * $ {line}" $ {log}) if [$ {count} -ge $ {limit}] then / usr / sbin / csf -td $ {line} .0 / 24 7d "Subnet $ {line} .0 / 24 is blocked for a week by Fail2ban after $ {count} attempts" fi done exit 0
# csf -t A / D IP Address Port Dir Time To Live Comment DENY 193.176.147.0/24 * in 6d 21h 34m 18s Subnet 193.176.147.0/24 is blocked DENY 46.148.30.0/24 * in 6d 21h 34m 19s Subnet 46.148.30.0/24 DENY 46.148.31.0/24 * in 6d 21h 34m 19s Subnet 46.148.31.0/24 is blocked
Source: https://habr.com/ru/post/247391/
All Articles