在我的日志中,我经常看到像这样丢弃的 ip:
> 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 Flood。这就是我在 iptables for Syn 中的内容(尽管不确定这些规则中的哪一个正在删除上面的规则):
# 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 攻击的特定过滤器。我的问题是:
1)我是否只是忽略上述日志而不担心为这些日志设置 Fail2Ban 过滤器,因为它的互联网并且总是会有脚本小子在做这些吗?
2) 由于 Fail2ban 工作基于 iptables 日志,有没有办法在我的服务器上禁止上述 Syn 尝试?
这是我对过滤器的蹩脚尝试,但它不起作用。不确定它是否有效:
[Definition]
failregex = ^<HOST> -.*IPTables Dropped:.*SYN URGP=0
ignoreregex =
我正在使用 Debian + Nginx
我为此提出了另一种解决方案,到目前为止它似乎正在工作。基本上,我编写了一个过滤器,它扫描日志并阻止在给定的
findtime
. 因此,此过滤器将阻止由于 Syn、Xmas 攻击、端口扫描等原因而被丢弃的 IP - 无论您的 iptables 规则中列出什么。换句话说,它会阻止由于各种原因一直出现在 iptables 阻止列表中的那些。本地监狱
过滤器:iptables-dropped.conf
确保在 iptables 规则中记录这样丢弃的 IP,以便上述过滤器起作用:
以上似乎对我有用。
超级fail2ban过滤器!!它就像一个魅力。非常感谢!
无论如何,我建议以这种方式编辑修改正则表达式的 fail2ban 过滤器:
你能帮我一把吗?如何通过安装 nftables 而不是 iptables 来使用 SYN 过滤器?