我正在编写一个脚本来删除除那些端口(53、22、80、443)上的流量之外的所有输入和输出流量,但我无法进行 apt-get 更新。
#!/bin/sh
# Flushing all rules
iptables -F
iptables -X
# Setting default filter policy
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# Allow incoming SSH
iptables -A INPUT -i ens33 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ens33 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
# Allow outgoing SSH
iptables -A OUTPUT -o ens33 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ens33 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
# Allow incoming HTTP
iptables -A INPUT -i ens33 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ens33 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
# Allow outgoing HTTP
iptables -A OUTPUT -o ens33 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ens33 -p tcp --dport 80 -m state --state ESTABLISHED -j ACCEPT
# Allow incoming HTTPS
iptables -A INPUT -i ens33 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ens33 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
# Allow outgoing HTTPS
iptables -A OUTPUT -o ens33 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ens33 -p tcp --dport 443 -m state --state ESTABLISHED -j ACCEPT
# Allow incoming DNS
iptables -A INPUT -i ens33 -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ens33 -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
答案1
过滤输出(本地发起的)数据包不是一种常见的做法,如果您不确定自己在做什么,最好不要这样做。
为了允许传出的 DNS(DNS 解析所需),您应该接受将新状态数据包发送到 OUTPUT 链中的 53 端口。
iptables -A OUTPUT -p tcp --dport 53 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
另外,在您的情况下,您需要一些其他规则(以及 OUTPUT 链中对应的镜像规则):
允许本地连接(
iptables -I INPUT -i lo -j ACCEPT
)允许相关连接(添加到匹配
RELATED
中--state
),它也允许回复的 ICMP 数据包。允许 ICMP。
还要检查 ipv6 规则集(使用iptables6
命令)。
相关文档:iptables教程。