在IPTables中记录丢弃的数据包?

时间:2014-09-05 19:25:04

标签: iptables

我正在尝试从恶意IP地址中记录iptables中的一些丢弃数据包,这些地址一直在袭击我的服务器。

来自此恶意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

2 个答案:

答案 0 :(得分:5)

您的配置存在的问题是,指定应丢弃数据包的规则先于规则指定应在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

为了完整起见,我将建议一种替代解决方案,它不涉及创建新的临时链:

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

这种方法建立在以下警告之上。如前所述,iptables默认行为是查找手头的第一个匹配项,一旦找到一个匹配项,就停止搜索其他匹配项。但是,此规则有一个例外:

  • 根据指定LOG操作的规则进行匹配不会导致iptables停止搜索其他适用规则。

虽然这种解决方案较短,因此乍一看似乎更具吸引力,但不建议这样做,因为它不那么强大。一旦存在多个需要相同处理的源,则应为每个新源复制这两个配置行(而不是在先前的解决方案中仅添加一行)。此外,一旦完成,更改日志记录详细信息将需要更改多个规则(而不是前一个解决方案中的单个规则)。
我还认为,由于此解决方案依赖于上述警告,因此在遵循和理解时并不容易,这是在配置iptables时需要考虑的重要因素,但这只是我个人的意见。

注意 - 有关iptables的简明教程,请参阅this useful link

答案 1 :(得分:0)

我当然没有在日志中看到任何结果,但是接受了这一行。

iptables -A INPUT -s 80.82.65.0/24 -m limit --limit 5 / min -j LOG --log-prefix“iptables丢弃数据包”--log-level 4