Security

iptables 設置輸出預設為 DROP

  • November 15, 2014

我有兩台伺服器:一台網路,一台數據庫。db 伺服器位於專用網路上。

我想我需要將 Web 伺服器上的預設 OUTPUT 限制為 DROP,並將 OUTPUT 規則創建為 ACCEPT 但是當 OUTPUT 預設設置為 DROP 時,Web 伺服器無法訪問 db 伺服器。eth0 是公共的,eth1 是私有的。我在這裡想念什麼?

網路伺服器

-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 10.131.181.201/32 -i eth1 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -s 10.131.181.201/32 -i eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 465 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -i eth1 -p tcp -m tcp --dport 3306 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o eth1 -p tcp -m tcp --sport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth1 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 465 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT

你的規則是完全矛盾的或多餘的。您接受 eth0 上的所有傳出流量,然後添加更具體的規則。您-m tcp-p tcp已經載入模組時使用。你使用-m conntrack --ctstate,而你也寫不推薦使用-m state --state的等……這需要一個大的清潔會議。

但最主要的是你顛倒了運動和dport。

-A INPUT -i eth1 -p tcp -m tcp --dport 3306 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o eth1 -p tcp -m tcp --sport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT

應該 :

-A INPUT -i eth1 -p tcp -m tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o eth1 -p tcp -m tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT

固定配置應如下所示:

-P INPUT DROP
-P FORWARD DROP
-P OUTPUT DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443,465 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp --dport 465 -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A INPUT -i eth1 -s 10.131.181.201/32 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth1 -s 10.131.181.201/32 -p tcp --dport 22 -j ACCEPT
-A INPUT -i eth1 -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp --sport 465 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth1 -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A OUTPUT -o eth1 -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

引用自:https://serverfault.com/questions/644629