有一个带有网站的小型服务器:
apache 8080
nginx 80
mysql 3306
ssh 22
有必要关闭一切,只留下22和80。
我这样做如下:
iptables -A INPUT -p tcp -m tcp -m multiport --dports 80,22 -j ACCEPT
iptables -A INPUT -m conntrack -j ACCEPT --ctstate RELATED,ESTABLISHED
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -j DROP
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -j DROP
结果,一切正常,但出现了疯狂的刹车。该站点会等待很长时间,然后加载(并非总是如此),如果没有这些规则,它可以很好地工作。这就是问题。
也许 DNS 变慢了(不确定网站是否需要它,但仍然如此)。允许传出到 UDP 端口 53(您也可以使用 TCP 端口 53)。
lo此外,在所有协议的接口上打开传入和传出。此外,从所描述的情况来看,尚不清楚为什么您在 FORWARD 中有规则。
iptables -A OUTPUT -j DROP- 你不能这样做,你需要设置默认规则:阅读文档,不了解就使用 iptables 很危险。你:
该规则只跳过已经建立的连接,它不能创建新的连接,该站点很可能试图访问某些东西并冻结,直到它因超时而掉线。
您可以尝试此规则并查看尝试连接的位置和对象:
不带刹车的工作配置: