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
进一步阅读类似问题的两个答案:
答案1
我认为iptables
没有这个能力。我认为你最好的选择是:
iptables
为(-j LOG --log-prefix "NEW_CONN_ATTEMPT "
)设置特殊日志记录- 监控日志
tail
- 找到匹配项时运行命令
对于 2 和 3,像这样的 oneliner 就可以解决问题:
tail -f /var/log/firewall.log | awk '/NEW_CONN_ATTEMPT/ {system("/usr/local/bin/script.sh")}'