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

cal*_*ant 9 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
Run Code Online (Sandbox Code Playgroud)

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

Wil*_*gan 15

为什么不关闭MySQL的网络?

添加到my.cnf:

skip-networking

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


小智 8

iptables -A INPUT -p tcp --dport 3306 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

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

回答你的第二个问题:

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


KKK*_*Kas 5

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
Run Code Online (Sandbox Code Playgroud)

如果要删除过滤,请使用以下命令:

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
Run Code Online (Sandbox Code Playgroud)

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