设置iptables规则后,无法访问实例

分享于 

2分钟阅读

互联网

  繁體

问题:

我试图设置一些规则来阻止TCP (SSH和FTP )上除21和22以外的所有端口,但是,当我尝试运行这个脚本时,我被锁在实例之外,无法访问它,这是脚本:


# Flush the FW Rules 


iptables -F


iptables -X



# Block all traffic


iptables -P INPUT DROP


iptables -P FORWARD DROP


iptables -P OUTPUT DROP



# Allow SSH


iptables -A INPUT -p tcp --dport 22 -j ACCEPT


iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT



# Allow FTP


iptables -A INPUT -p tcp --dport 21 -j ACCEPT


iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT



# Allow ICMP (ping)


iptables -A INPUT -p icmp -j ACCEPT


iptables -A OUTPUT -p icmp -j ACCEPT




答案1:

  • 对于OUTPUT链中的规则,你应该指定源端口匹配(--sport ),而不是目标端口(--dport )
  • 无论如何,OUTPUT链中的DROP策略不是一种常见的做法。
  • 阅读iptables教程和示例规则集
  • 为了避免连接丢失,最好使用iptables-saveiptables-apply工具

答案2:

你应该设置状态跟踪,并且去除-A OUTPUT ... -j ACCEPT


IPTABLES -I INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT


IPTABLES -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT


IPTABLES -I OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT





相关文章