如何使用Fail2Ban禁止Syn Flood攻击?

在我的日志里,我经常看到像这样丢弃的ips:

> Oct 30 17:32:24 IPTables Dropped: IN=eth0 OUT= > MAC=04:01:2b:bd:b0:01:4c:96:14:ff:df:f0:08:00 SRC=62.210.94.116 > DST=128.199.xxx.xxx LEN=40 TOS=0x00 PREC=0x00 TTL=244 ID=45212 > PROTO=TCP SPT=51266 DPT=5900 WINDOW=1024 RES=0x00 SYN URGP=0 > > Oct 30 17:29:57 Debian kernel: [231590.140175] IPTables Dropped: > IN=eth0 OUT= MAC=04:01:2b:bd:b0:01:4c:96:14:ff:ff:f0:08:00 > SRC=69.30.240.90 DST=128.199.xxx.xxx LEN=40 TOS=0x00 PREC=0x00 TTL=245 > ID=12842 DF PROTO=TCP SPT=18534 DPT=8061 WINDOW=512 RES=0x00 SYN > URGP=0 

从上面,我假设这些是由我的IpTables规则丢弃的Syn洪水。 这是我在iptables中为Syn所做的(尽pipe不知道这些规则中的哪一个正在删除上面的那些规则):

 # Drop bogus TCP packets iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN -j DROP iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP # --- Common Attacks: Null packets, XMAS Packets and Syn-Flood Attack --- iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP 

在Fail2ban中,我在filter.d文件夹中没有看到Syn攻击的特定filter。 我的问题是:

1)我只是忽略了上面的日志,而不用担心为它们设置一个Fail2Banfilter,因为它的互联网,并不断有脚本小子这样做呢?

2)由于Fail2ban基于iptables日志工作,有没有办法在我的服务器上禁止上面的同步尝试?

这是我的一个filter,它不工作的跛脚的尝试。 不知道它甚至有效:

 [Definition] failregex = ^<HOST> -.*IPTables Dropped:.*SYN URGP=0 ignoreregex = 

我正在使用Debian + Nginx

我想出了另一个解决scheme,这似乎是迄今为止工作。 基本上,我写了一个filter,扫描日志,并阻止在给定的findtime时间由于各种原因被丢弃的所有恶意IP地址。 因此,这个filter将阻止由于Syn,Xmas攻击,端口扫描等而被丢弃的IP地址 – 无论您在iptables规则中列出了什么。 换句话说,由于各种原因,它阻止了在iptables阻止列表中显示的那些内容。

Jail.local

 [iptables-dropped] enabled = true filter = iptables-dropped banaction = iptables-allports port = all logpath = /var/log/messages bantime = 1800 maxretry = 3 

FILTER:iptables-dropped.conf

 [Definition] failregex = IPTables Dropped: .* SRC=<HOST> ignoreregex = 

确保你在iptables规则中logging这样丢弃的IP,以便上面的filter工作:

 # log iptables denied calls (access via 'dmesg' command) to /var/log/messages file iptables -N LOGGING iptables -A INPUT -j LOGGING iptables -A LOGGING -m limit --limit 5/min -j LOG --log-prefix "IPTables Dropped: " --log-level 4 iptables -A LOGGING -j DROP 

以上似乎为我工作。