首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使所有传出RST丢弃

如何使所有传出RST丢弃
EN

Stack Overflow用户
提问于 2012-11-04 09:08:44
回答 4查看 18.4K关注 0票数 5

我正在尝试丢弃所有端口上的所有传出RST和传入RST。我使用的是Debian linux。我尝试了互联网上列出的所有可能的命令组合,但似乎都不起作用。

例如,我尝试过:

代码语言:javascript
复制
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数据包。请尝试解决此问题

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-11 03:49:37

嗯,这很可能是通过转发链,而不是输入或输出链,因为您是在主机上运行它。

调试此命令的一个技巧是使用iptables -L -v,如果您设置了一个发送大量数据包的命令,该命令将显示每个规则发送的数据包数量

代码语言:javascript
复制
watch --interval 0.1 "nc remote.machine CLOSED_PORT"

您可以计算出哪个规则正在被触发。您还应该意识到,有正交表-在不同情况下使用的规则链集(例如,用于nat)。查看NAT表可能是值得的-因为您的虚拟主机可能正在通过您的主机进行NAT,而不是拥有它自己的IP地址

代码语言:javascript
复制
iptables -L -v -t nat

了解虚拟主机的IP地址将是有用的-因为如果这与您的网络子网不相交,则可能会被NAT。

票数 7
EN

Stack Overflow用户

发布于 2016-07-15 15:21:10

如果您希望丢弃入站RST数据包,则需要执行以下操作:

代码语言:javascript
复制
iptables -I INPUT -p tcp --tcp-flags ALL RST,ACK -j DROP
iptables -I INPUT -p tcp --tcp-flags ALL RST -j DROP

如果您希望丢弃出站RST数据包,则需要执行以下操作:

代码语言:javascript
复制
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数据包需要更多的工作。

票数 11
EN

Stack Overflow用户

发布于 2013-12-04 18:51:13

重置数据包激活了RST和ACK标志。所以,正确的规则是:

iptables -I INPUT -p tcp --tcp-flags ALL RST,ACK -j DROP

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13215135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档