我希望我可以在这里问这个问题,因为我有点搞不清楚什么可以问,什么不能问:> 所以我想用 iptables 来分离 iptables 中的前缀,例如:连接首次进入最终 DROP 规则,之后我有工具可以分析它并将其添加到不同的前缀和链中,因此如果它已经被丢弃并添加到链中,它将被分开丢弃日志。我有这个,但它不起作用,HB_LOG_AND_DROP 从未显示。始终只显示最后一个 DROPLOG,为什么?
$IPTABLES -N HB_LOG_AND_DROP;
$IPTABLES -A HB_LOG_AND_DROP -j LOG --log-prefix "IPTABLES-DROPPED: " --log-level 6;
$IPTABLES -A HB_LOG_AND_DROP -j HB_LOG_AND_DROP;
$IPTABLES -N LOGPSCAN;
$IPTABLES -A LOGPSCAN -p tcp --syn -m limit --limit 2000/hour -j RETURN;
$IPTABLES -A LOGPSCAN -m limit --limit 200/hour -j LOG --log-prefix "RULE PORT-SCAN [DROP] ";
$IPTABLES -A LOGPSCAN -j LOGPSCAN;
$IPTABLES -A INPUT -p tcp --syn -j LOGPSCAN;
$IPTABLES -N DROPLOG;
$IPTABLES -A INPUT -j DROPLOG;
$IPTABLES -A DROPLOG -m limit --limit 1/sec -j LOG --log-prefix "[DROP] " --log-level 6;
$IPTABLES -A DROPLOG -j DROP
答案1
下列规则是错误的:
$IPTABLES -A HB_LOG_AND_DROP -j HB_LOG_AND_DROP
此命令向链中添加一条规则HB_LOG_AND_DROP
,以再次跳转到同一链。这会导致数据包循环。
幸运的是,您的规则没有任何可跳转的规则HB_LOG_AND_DROP
,因此您不会看到规则集中的数据包循环。
答案2
检查
iptables -nvL
链是否在最后一个链之上。问题在于,用于自动禁止和报告的脚本使用 -A 插入规则,当更改为 -I 时,它在最后一个 DROP 之前开始正常拦截。
是的,我已经尝试了所有可能的组合大约 40 次。最后一个是这个
$IPTABLES -N HB_LOG_AND_DROP;$IPTABLES -A HB_LOG_AND_DROP -m limit --limit 1/sec -j LOG --log-prefix "IPTABLES-DROPPED: " --log-level 6;
$IPTABLES -A HB_LOG_AND_DROP -j DROP;
$IPTABLES -N LOGPSCAN;$IPTABLES -A LOGPSCAN -p tcp --syn -m limit --limit 2000/hour -j RETURN;
$IPTABLES -A LOGPSCAN -m limit --limit 200/hour -j LOG --log-prefix "PORT-SCAN-DROPPED: " --log-level 6;
$IPTABLES -A LOGPSCAN -j DROP;
问题是 HB_LOG_AND_DROP; 正在从带有 -A 的脚本中添加 INPUT,当我将其更改为 -I 时,一切正常