2012-06-12 147 views
9

我試圖限制Linux機器上的MySQL 3306端口與任何其他本地主機連接以防止外部攻擊。我有下面的代碼,我不知道這是否是正確的:使用IPTABLES將MySQL 3306端口限制爲本地主機

iptables -A INPUT -p tcp -s localhost --dport 3306 -j ACCEPT 

iptables -A OUTPUT -p tcp -s localhost --dport 3306 -j ACCEPT 

iptables -A INPUT -p tcp --dport 3306 -j DROP 

iptables -A OUTPUT -p tcp --dport 3306 -j DROP 

我的另一個問題是 - 它是正確的,只給本地主機訪問?這是一個標準的專用centos網絡服務器,上面有30多個域名。

+0

爲什麼不直接使用的權限時設置mysql用戶只允許該用戶從本地主機登錄,所以它會像mysqluser @ localhost而不是mysqluser @% – bretterer

+2

原諒我問,但爲什麼你不使用Unix套接字和'--skip-networking '如果你d不想讓港口開放? –

+0

你的iptable規則可以工作,我只是試了一下。 –

回答

12

爲什麼不關掉MySQL的網絡?

添加到my.cnf文件:

skip-networking

它應該也迫使通過管道連接,從而跳過了大量的用於網絡部分測試給一個微不足道的性能改善。請注意,您將需要使用本地主機,而不是 127.0.0.1,更改後。

8
iptables -A INPUT -p tcp --dport 3306 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT 

上述規則是將兩行轉換爲一行。

回答你的第二個問題:

如果你不想提供從localhost以外MySQL訪問,那麼它是完善的配置這種方式。簡單。 :-)

1
iptables -A INPUT -p tcp --dport 3306 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT 
iptables -A INPUT -p tcp --dport 3306 -j DROP 

如果你想刪除的過濾,使用此:

iptables -D INPUT -p tcp --dport 3306 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT 
iptables -D INPUT -p tcp --dport 3306 -j DROP 

注意:兩種可能需要根,所以:sudo iptables (...)

相關問題