2016-11-27 32 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

相关问题