我有 Ubuntu 服务器,并且我只想允许到以下任何 IP 的传出连接:
- HTTPS
- HTTP
- Postgres
我想阻止所有其他端口。我还想查看从这些端口建立的连接,以便在需要时可以打开这些端口。
如何在 Ubuntu 18.04 上进行设置?
答案1
为传出连接设置的规则可能是:
# Allow establishing connections to desired set of services
sudo iptables -A OUTPUT -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 5432 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# Log any outgoing connection attempts
sudo iptables -A OUTPUT -m conntrack --ctstate NEW -m tcp -p tcp -j LOG --log-uid --log-prefix="outgoing connection: "
# Allow incomig traffic for established connections
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# set default policy to drop
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP
如果需要,使用 ip6tables 添加 IPv6 规则。
我认为您仍然需要允许 ssh 访问才能访问主机。
**请注意:如果远程错误配置防火墙规则,您可能会被锁定!**