我有一个打开的套接字连接,如果通过的数据包包含特定字符串,我想立即关闭它。我使用 iptables 尝试过以下操作:
sudo iptables -A INPUT -p tcp --dport 1342 -m string --algo bm --string ".." -j REJECT
sudo iptables -A INPUT -p tcp --dport 1342 -m string --algo bm --string ".." -j DROP
但这些都不起作用,它只是永久冻结连接。如何永久“切断”连接?
注意:作为测试应用程序,我使用了简单的 netcat。首先,我连接客户端和侦听器,然后发送包含禁止的字符串。此后,即使使用 REJECT 规则,也不会收到任何响应,并且无法通过此连接发送更多行。
答案1
我希望这对你有用。将 REJECT 与 tcp-reset 结合使用:
sudo iptables -A INPUT -p tcp --dport 1342 -m string --algo bm --string ".." -j REJECT --reject-with tcp-reset
如果不起作用,请尝试 kmp:
sudo iptables -A INPUT -p tcp --dport 1342 -m string --algo kmp --string ".." -j REJECT --reject-with tcp-reset