让 iptables 在新连接尝试时运行命令/脚本

让 iptables 在新连接尝试时运行命令/脚本

iptables 如何在新的连接尝试上运行命令或脚本?

要求:

发送到(服务器接口 eth0)的外部数据包 ---> (服务器接口 eth0)输入表检测到端口 22 上收到的新数据包 --> iptables 运行命令或脚本

到目前为止,我认为例如:

iptables -A INPUT -i eth0 -p tcp --dport 22 -s xxx.xxx.xxx.xxx/24 -d xxx.xxx.xxx.xxx/32 -m state --state NEW (then do something here like run a script or command (but how?) ) -j ACCEPT

进一步阅读类似问题的两个答案:

根据 IPTABLES 端口访问尝试运行 shell 脚本

答案1

我认为iptables没有这个能力。我认为你最好的选择是:

  1. iptables为( -j LOG --log-prefix "NEW_CONN_ATTEMPT ")设置特殊日志记录
  2. 监控日志tail
  3. 找到匹配项时运行命令

对于 2 和 3,像这样的 oneliner 就可以解决问题:

tail -f /var/log/firewall.log | awk '/NEW_CONN_ATTEMPT/ {system("/usr/local/bin/script.sh")}'

相关内容