我正在尝试从恶意IP地址中记录iptables中的一些丢弃数据包,这些IP地址一直在攻击我的服务器.
来自这个恶意IP的一切都被删除了,我不再在Web服务器日志中看到它,这是一件好事.使用tcpdump,我可以看到仍然来自这个IP的流量,我想在iptables中记录丢弃的数据包,因为我知道它正在工作,它们正在被丢弃.
我有一些iptables规则,我不知道为什么日志记录不起作用.我确定我错过了什么.
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state INVALID -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
-A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
-A INPUT -s 80.82.65.0/24 -j DROP
-A INPUT -s 167.74.0.0/18 -j DROP
-A INPUT -s 167.87.0.0/16 -j DROP
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -j LOGGING
-A FORWARD -m state --state INVALID -j DROP
-A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A OUTPUT -m state --state INVALID -j DROP
-A LOGGING -s 80.82.65.0/24 -m limit --limit 5/min -j LOG --log-prefix"iptables丢弃的数据包"--log-level 7
$ grep iptables /etc/rsyslog.conf
kern.debug /var/log/iptables.log
您的配置存在的问题是,指定应丢弃数据包的规则在规则之前指定应在LOGGING链中处理,其中将记录该数据包.
一旦iptables将数据包与第一个规则(DROP操作的规则)匹配,它就会停止搜索并且不会达到其他规则.
我会改变规则的顺序并重写它们如下:
iptables -N LOGANDDROP
iptables -A INPUT -s 80.82.65.0/24 -j LOGANDDROP
iptables -A LOGANDDROP -m limit --limit 5/min -j LOG --log-prefix "iptables dropped packets " --log-level 7
iptables -A LOGANDDROP -j DROP
Run Code Online (Sandbox Code Playgroud)
为了完整起见,我将建议一种替代解决方案,它不涉及创建新的临时链:
iptables -A INPUT -s 80.82.65.0/24 -m limit --limit 5/min -j LOG --log-prefix "iptables dropped packets " --log-level 7
iptables -A INPUT -s 80.82.65.0/24 -j DROP
Run Code Online (Sandbox Code Playgroud)
这种方法建立在以下警告的基础上.如前所述,iptables默认行为是查找手头的第一个匹配项,一旦找到一个匹配项,就停止搜索其他匹配项.但是,此规则有一个例外:
LOG操作的规则匹配不会导致iptables停止搜索其他适用规则.虽然这种解决方案较短,因此乍一看似乎更具吸引力,但不建议这样做,因为它不那么强大.一旦存在多个需要相同处理的源,则应为每个新源复制这两个配置行(而不是在先前的解决方案中仅添加一行).此外,一旦完成,更改日志记录详细信息将需要更改多个规则(而不是前一个解决方案中的单个规则).
我也认为,由于这个解决方案依赖于前面提到的警告,因此不容易理解,这是配置时需要考虑的重要因素iptables,但这只是我个人的观点.
注 - 请参阅此有用链接以获得简明教程iptables.
| 归档时间: |
|
| 查看次数: |
5641 次 |
| 最近记录: |