iptables 保护 nginx 服务器

iptables 保护 nginx 服务器

有人对 iptables 很了解吗?我有一个任务,但我对它有点困惑,因为我对网络的理解相当差 :)

  • 我需要限制所有传出连接对服务器的访问,但 smtp 除外,而是将其特定地址限制为 587
  • 允许来自世界各地的 80 端口的传入连接,以便 certbot 可以毫无问题地为自己生成证书
  • 允许从本地工作子网访问服务器
  • 阻止其他一切访问:)

— 我尝试过:

  • iptables --append OUTPUT --protocol tcp --src <here is the address of the mail server> --sport 587 --jump ACCEPT
  • IPTABLES -P OUTPUT DROP
  • iptables --append INPUT --protocol tcp --src <local network/24> --dport 22 --jump ACCEPT- 使用 SSH 连接
  • iptables --append INPUT --protocol tcp --dport 80 --jump ACCEPT- 让 certbot 连接世界
  • iptables --append INPUT --protocol tcp --src <local network/24> --dst 443 --jump ACCEPT- 仅为工作子网提供访问权限
  • IPTABLES -P INPUT DROP

目前,结果是我无法从本地网络打开端口 80/443 上的地址的资源,并且代理连接失败

答案1

如果要允许本地子网(10.0.0.0/24)通过 SSH 连接到此主机,您还需要允许回复流量

sudo iptables -A INPUT -p tcp -s 10.0.0.0/24 --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp -m conntrack --ctstate ESTABLISHED -j ACCEPT

允许来自任何 IP 地址的传入 HTTP[S]

sudo iptables -A INPUT -p tcp --dport 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp -m conntrack --ctstate ESTABLISHED -j ACCEPT

答案2

允许从 80、443 端口反向出站流量,以便服务器可以回复,否则它将被链的策略丢弃。

iptables --append OUTPUT --protocol tcp --sport 80 --jump ACCEPT
iptables --append OUTPUT --protocol tcp --dst <local network/24> --sport 443 --jump ACCEPT

这里也有错误

iptables --append INPUT --protocol tcp --src <local network/24> --dst 443 --jump ACCEPT

将其更改为

 iptables --append INPUT --protocol tcp --src <local network/24> --dport 443 --jump ACCEPT

相关内容