2016-11-27 42 views
3

我已經啓用遠程MySQL通過編輯遠程MySQL丟棄所有連接和僅允許本地主機與IP地址

/etc/mysql/mysql.conf.d/mysqld.cnf 
    bind-address = 0.0.0.0 

現在我可以通過任何遠程IP訪問MySQL。

我想要的是禁用與IP表的所有連接到我的MySQL,並且只允許從本地主機和一個IP地址訪問。我做了以下操作

/sbin/iptables -A INPUT -p tcp -d 127.0.0.1 --dport 3306 -j ACCEPT 
/sbin/iptables -A INPUT -p tcp -d 16x.xxx.xx.xx --dport 3306 -j ACCEPT 
/sbin/iptables -A INPUT -p tcp --dport 3306 -j DROP 

以下代碼將刪除所有連接,並且不接受本地主機或遠程ip。我使用Ubuntu 16.10。


編輯:我也試過鏈

iptables -N mysql 
iptables -A mysql --src 127.0.0.1 -j ACCEPT 
iptables -A mysql --src 14x.xxx.xx.xx -j ACCEPT 
iptables -A mysql -j DROP 
iptables -I INPUT -m tcp -p tcp --dport 3306 -j mysql 

DROP線後百般口堵住,

回答

1

的規則的順序是不正確的。

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

應該放在最後。

+0

(110「連接超時」)我tryed之前也和它不會工作。它仍然會丟棄所有的連接,並且端口被阻塞,然後 – user1769322

+0

您可以在這裏粘貼iptables-save命令的輸出。 – Marko

+0

http://pastebin.com/Tyrghebf – user1769322

0

規則

2 ACCEPT tcp -- 14x.xxx.xxx.xx 14x.xxx.xxx.xx tcp dpt:3306 

看起來不正確的。它看起來像源和目標IP地址是相同的。您必須將您連接的服務器的IP地址列入白名單。

爲了識別IP地址的下降規則

iptables -I INPUT -m tcp -p tcp --dport 3306 -m limit --limit 5/min -j LOG --log-prefix "Mysql access log: " 

日誌進去的dmesg和syslog前添加下面的防火牆規則(在/ var /日誌在Ubuntu /系統日誌),看起來像這樣

Nov 28 08:55:57 myServer kernel: Mysql access log: IN=eth0 OUT= MAC=00:19:99:ce:15:cb:b0:c6:9a:67:d6:81:08:00 SRC=1.2.3.4 DST=5.6.7.8 LEN=60 TOS=0x10 PREC=0x00 TTL=56 ID=63880 DF PROTO=TCP SPT=40807 DPT=3306 WINDOW=14600 RES=0x00 SYN URGP=0 

在我的例子源IP地址應該被列入白名單是1.2.3.4

+0

ACCE PT tcp - 144.xx.xx.xx 213..xx.xx.xx tcp dpt:3306 ACCEPT tcp - 144..xx.xx.xx 127.0.0.1 tcp dpt:3306 DROP tcp - 0.0。 0.0/0 0.0.0.0/0 tcp dpt:3306我照你說的做了,但仍然不起作用SRC = 144.xx.xx.xx DST = 213.xx.xx.xx LEN = 54 TOS = 0x02 PREC = 0x00 TTL = 52 ID = 7163 DF PROTO = TCP SPT = 62891 DPT = 3306 W $ – user1769322

+0

http://pastebin.com/dTVFcGbL – user1769322