2012-06-12 122 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 (...)

相关问题