我正在尝试弄清楚如何实现某件事,但我不确定是否可以实现,因此需要帮助。我做了研究,但找不到可靠的信息。希望这个问题不是重复的。
设置:
我使用 iptables 作为防火墙来阻止恶意 IP 活动。目前,我正在手动将条目写入文件中,然后使用 执行iptables-restore < /etc/iptables/rules
。在这些规则中,我有一个记录每个入站连接的规则-A INPUT -m state --state NEW -j LOGALL
。我还设置了 apache 来记录连接到网页的 IP。(每个页面有不同的日志,iptables 有不同的日志文件)
问题: 我收到许多此类 iptables 日志:
Apr 4 14:52:18 kernel: [53326.219105] LOGALL IN=eth0 OUT= MAC=xxxxxxxxxxxx SRC=174.111.111.206 DST=192.168.1.5 LEN=44 TOS=0x00 PREC=0x00 TTL=244 ID=40132 PROTO=TCP SPT=179 DPT=443 WINDOW=5840 RES=0x00 SYN URGP=0
Apr 4 14:53:27 kernel: [53395.130551] LOGALL IN=eth0 OUT= MAC=xxxxxxxxxxxx SRC=45.146.164.211 DST=192.168.1.5 LEN=44 TOS=0x04 PREC=0x00 TTL=247 ID=26977 PROTO=TCP SPT=55172 DPT=443 WINDOW=1024 RES=0x00 SYN URGP=0
每天有数千个不同的 IP 发送请求。从日志中我可以看出他们只发送一个SYN
数据包。我使用过Wireshark检查流量,我能发现的是,在我的服务器响应后,大多数都没有回答SYN,ACK
54215 187.717006840 180.234.40.115 192.168.1.5 TCP 60 56412 ? 443 [SYN] Seq=0 Win=5840 Len=0 MSS=1460
54216 187.717251257 192.168.1.5 180.234.40.115 TCP 58 443 ? 56412 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460
54411 188.716638340 192.168.1.5 180.234.40.115 TCP 58 [TCP Retransmission] 443 ? 56412 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460
我尝试过使用 iptables 来限制这些SYN
数据包。但这些连接不是 SYN 洪水攻击(我限制了 SYN 连接),但可能是一些爬虫和扫描。我也尝试过https://inai.de/documents/Chaostables.pdf这给了我很大的希望......但它没有起作用,或者我无法让它起作用。
我也研究过 fail2ban(还没有使用过),但是因为我自己将条目写入 iptables 并用 执行iptables-restore < /etc/iptables/rules
,而且 failt2ban 也使用 iptables,所以我不知道两者如何协同工作。
问题:
是否可以阻止出现在 iptables 的日志文件中但不出现在 apache 日志文件中的 IP?(对我来说,这意味着 IP 没有到达我的服务器来打开网页,因此正在做其他事情)
例子:1.1.1.1 IP 打开我的网页,这意味着 iptables 和 apache 中都会有日志。但是,如果 1.1.1.1 IP 仅SYN
向端口 443 发送数据包,则只有 iptables 日志会显示该信息 -> 阻止该 IP?
希望我说得够清楚了。如能得到任何帮助,我将不胜感激。谢谢
答案1
由于我自己将条目写入 iptables 并用 执行
iptables-restore < /etc/iptables/rules
,并且 failt2ban 也使用 iptables,所以我不知道两者如何协同工作。
你可以:
- 要么使用
--noflush
选项来iptables-restore
避免删除 fail2ban(和其他规则),要么f2b-*
通过 过滤链iptables-save
。 - 或者切换到
nftables
(因为 fail2ban 支持此操作)并且它可以通过分别转储和恢复来定位表,因此它们不会删除或覆盖 fail2ban 链。