我正在尝试丢弃所有端口上的所有传出RST和传入RST。我使用的是Debian linux。我尝试了互联网上列出的所有可能的命令组合,但似乎都不起作用。
例如,我尝试过:
iptables -A OUTPUT -o eth0 -p tcp --tcp-flags RST RST -j DROP
iptables -A OUTPUT -p tcp --tcp-flags RST RST -j DROP
iptables -A INPUT -p tcp --tcp-flags RST RST -m state --state RELATED,ESTABLISHED -j DROP
iptables -A INPUT -p tcp --tcp-flags RST RST -j DROP 尽管如此,我仍然看到内核正在发送RST数据包,同时也在接收RST数据包。请尝试解决此问题
发布于 2012-12-11 03:49:37
嗯,这很可能是通过转发链,而不是输入或输出链,因为您是在主机上运行它。
调试此命令的一个技巧是使用iptables -L -v,如果您设置了一个发送大量数据包的命令,该命令将显示每个规则发送的数据包数量
watch --interval 0.1 "nc remote.machine CLOSED_PORT"您可以计算出哪个规则正在被触发。您还应该意识到,有正交表-在不同情况下使用的规则链集(例如,用于nat)。查看NAT表可能是值得的-因为您的虚拟主机可能正在通过您的主机进行NAT,而不是拥有它自己的IP地址
iptables -L -v -t nat了解虚拟主机的IP地址将是有用的-因为如果这与您的网络子网不相交,则可能会被NAT。
发布于 2016-07-15 15:21:10
如果您希望丢弃入站RST数据包,则需要执行以下操作:
iptables -I INPUT -p tcp --tcp-flags ALL RST,ACK -j DROP
iptables -I INPUT -p tcp --tcp-flags ALL RST -j DROP如果您希望丢弃出站RST数据包,则需要执行以下操作:
iptables -I OUTPUT -p tcp --tcp-flags ALL RST,ACK -j DROP根据的规定,对包含SYN的数据包的任何响应都必须确认该序列号。因此,即使您指示您的端口已关闭,您也会以RST ACK响应。
如果您尝试使用像Scapy这样的工具来试验IP行为,您将经常需要阻止主机的IP堆栈发送回RST 。或者,您可以在Scapy中实现一个伪栈,声明一个MAC,响应IPv6的ARP或ICMP ND,并绑定您自己的IP地址,这也会阻止主机的堆栈响应。显然,这比简单地阻止出站RST数据包需要更多的工作。
发布于 2013-12-04 18:51:13
重置数据包激活了RST和ACK标志。所以,正确的规则是:
iptables -I INPUT -p tcp --tcp-flags ALL RST,ACK -j DROP
https://stackoverflow.com/questions/13215135
复制相似问题