问题:
我试图设置一些规则来阻止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-save
和iptables-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
相关文章