我通过编辑启用了远程MySQL
/etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0
现在我可以通过任何远程ip访问MySQL。
我想要的是禁用与IP表连接到MySQL的所有连接,并且只允许从localhost和一个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
以下代码将删除所有连接,并且不接受localhost或远程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线路端口被阻止
答案 0 :(得分:1)
规则的顺序不正确。
行
/sbin/iptables -A INPUT -p tcp --dport 3306 -j DROP
应该是最后一次。
答案 1 :(得分:0)
规则
2 ACCEPT tcp -- 14x.xxx.xxx.xx 14x.xxx.xxx.xx tcp dpt:3306
看起来不对。看起来源和目标IP地址是相同的。您必须将要连接的服务器的IP地址列入白名单。
为了识别IP地址,在删除规则之前添加以下iptables规则
iptables -I INPUT -m tcp -p tcp --dport 3306 -m limit --limit 5/min -j LOG --log-prefix "Mysql access log: "
日志进入dmesg和syslog(Ubuntu上的/ var / log / syslog),看起来像这样
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