【问题标题】:Restricting MySQL 3306 port to localhost with IPTABLES使用 IPTABLES 将 MySQL 3306 端口限制为 localhost
【发布时间】:2012-06-15 14:43:05
【问题描述】:

我试图限制 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 多个域。

【问题讨论】:

  • 为什么在设置 mysql 用户时只使用权限只允许该用户从 localhost 登录,所以它会像 mysqluser@localhost 而不是 mysqluser@%
  • 请原谅我问,但如果您不想打开端口,为什么不直接使用 Unix 套接字和--skip-networking
  • 你的 iptable 规则确实有效,我刚刚试了一下。

标签: mysql iptables


【解决方案1】:

为什么不直接关闭与 MySQL 的网络?

添加到 my.cnf:

skip-networking

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

【讨论】:

    【解决方案2】:
    iptables -A INPUT -p tcp --dport 3306 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
    

    以上规则用于将两行转换为单行。

    回答你的第二个问题:

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

    【讨论】:

    • 仍然需要另一个规则来删除与第一个规则不匹配的任何连接,对吧?
    【解决方案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 (...)

    【讨论】:

      猜你喜欢
      • 2014-04-14
      • 2014-12-13
      • 1970-01-01
      • 2011-06-05
      • 1970-01-01
      • 2016-05-29
      • 1970-01-01
      • 1970-01-01
      • 2011-04-13
      相关资源
      最近更新 更多