UFW/Iptables:允许响应 http(s) 请求但阻止其他所有请求

UFW/Iptables:允许响应 http(s) 请求但阻止其他所有请求

我想阻止从我的服务器发出的所有内容,同时仍允许响应传入的 http/https 请求。

一些例子:

用户使用浏览器调用我的服务器(https://myserver.example.org/test.html)防火墙应该允许响应并且服务器应该将 test.html 传递给用户。

我的服务器上的应用程序尝试连接到https://badguy.example.org/test.html 防火墙应该拒绝该传出请求,因为 badguy.example.org 没有向我的服务器请求任何内容。

我不希望它基于 IP 或 IP 范围。只要从某个 IP 联系到服务器,它就可以做出响应。如果之前没有通过这个 IP 联系过它,就不允许向那里发送任何内容。

可以使用 ufw 或 iptables 吗?我该怎么做?

答案1

关键是旗帜--state ESTABLISHED在 OUTPUT 链中仅允许建立已建立的连接而不允许建立新连接。

(可选)允许通过 SSH 登录以执行管理任务,

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

允许 HTTP 流量

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

允许 HTTPS 流量

iptables -A INPUT -i eth0 -p tcp --dport 443-m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 443-m state --state ESTABLISHED -j ACCEPT

阻止来自您的服务器的传出 http/https 请求。

iptables -A OUTPUT -o eth0 -p tcp --dport 80 -j DROP
iptables -A OUTPUT -o eth0 -p tcp --dport 443 -j DROP

相关内容