使用 iptables 终止已建立的 tcp 连接

使用 iptables 终止已建立的 tcp 连接

我有一个打开的套接字连接,如果通过的数据包包含特定字符串,我想立即关闭它。我使用 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

相关内容