iptables:阻止除某些 IP 地址以外的出站流量

net*_*lux 8 security linux firewall iptables

使用 iptables,我需要阻止服务器上的所有出站流量,除了:

  • SSH 访问少量 IP 地址
  • HTTPS 访问相同的小 IP 地址列表

谁能告诉我一套合适的规则?

谢谢你。

Kev*_*n M 5

iptables -I OUTPUT -d <remote_ip> -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -s <remote_ip> -p tcp --sport 22 -j ACCEPT
iptables -I OUTPUT -d <remote_ip> -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -s <remote_ip> -p tcp --sport 443 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
Run Code Online (Sandbox Code Playgroud)

您需要为每个 IP 输入前 4 条规则。但是请注意,因为您必须通过这台机器上的控制台登录;对它的所有其他访问都将被阻止。


Cry*_*vok 3

现在我了解您问题的背景,请尝试:

iptables -P OUTPUT DROP
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -s 8.8.8.8 --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp -s 8.8.8.8 --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp -s 10.11.12.13/24 --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp -s 10.11.12.13/24 --dport 443 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

等等。这会将默认策略设置为 DROP,然后仅允许列出的 IP 地址(或范围)访问。第二行允许相关流量(例如正在进行的 SSH 会话的出站数据包),第三行和第四行示例用于 DNS 查找。

不要忘记您需要类似于第 2 行的 INPUT 规则。