使用IPTABLES将MySQL 3306端口限制为localhost

时间:2012-06-12 17:04:38

标签: mysql iptables

我试图限制Linux机器上的MySQL 3306端口与localhost之外的任何连接,以防止外部攻击。我有以下代码,我不确定它是否正确:

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

我的另一个问题是 - 只提供localhost访问权限是否正确?这是一个标准的专用centos网络服务器,上面有30多个域名。

3 个答案:

答案 0 :(得分:14)

为什么不关闭MySQL的网络?

添加到my.cnf:

skip-networking

它应该通过强制通过管道连接来提供可忽略的性能改进,这会跳过用于网络部分的大量测试。请注意,更改后您将需要使用localhost, not 127.0.0.1。

答案 1 :(得分:8)

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

上述规则是将两行转换为单行。

回答你的第二个问题:

如果您不想从localhost以外提供mysql访问,那么以这种方式配置是完美的。简单。 : - )

答案 2 :(得分:3)

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

注意:两者都可能需要root,因此:sudo iptables (...)