有人对 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