限制来自localhost的MySQL连接以提高安全性

时间:2012-11-03 11:14:16

标签: mysql database localhost

我听说任何知道我的MySQL用户名和密码的人都可以访问它,即使它只收听 localhost

假设我的信息如下:

USER: root
PASS: 123456
Host: LOCALHOST (only)

外面的任何人(本地人)如何才能访问它?

4 个答案:

答案 0 :(得分:44)

如果您限制从远程主机访问您的用户名和密码,那么有人将无法从外部访问数据库。

您还可以将防火墙配置为仅允许从localhost计算机到3306(MySQL默认端口)的流量。

<强>更新

要设置您的用户,以便他们只能通过LOCALHOST使用:

GRANT ALL PRIVILEGES ON *.* TO db_user @'localhost' IDENTIFIED BY 'db_passwd';
GRANT ALL PRIVILEGES ON *.* TO db_user @'127.0.0.1' IDENTIFIED BY 'db_passwd';

此外,将MySQL服务器绑定到本地地址。您可以通过修改[mysqld]的{​​{1}}部分来执行此操作:

my.cnf

答案 1 :(得分:5)

这是一个我偶然发现的旧问题,但如果Darkeden有phpMyAdmin或类似的运行,任何人都可以使用有效的MySQL凭据登录。

如果它被泄露,那么除了限制连接外,还要更改所有密码。

答案 2 :(得分:4)

你可以阻止在防火墙或MySQL本身直接访问MySQL,但最有可能被黑客攻击的方式是通过一个不安全的Web应用程序 - 在这种情况下攻击者很可能会读取你的数据库登录并从服务器连接。

因此,请确保您的应用程序安全 - 保持所有内容更新,不允许文件上传,如果您有多个帐户等,请使用suPHP等。

如果您限制您的mysql应用程序,请按照以下步骤操作:

1.您可以阻止端口3306.如果该站点位于同一服务器上,那么它仍然可以使用localhost作为主机名来访问数据库。

2.只需将“bind-address = 127.0.0.1”添加到my.cnf文件的“[mysqld]”部分,即可限制只访问本地主机。

大多数人都使用这种限制。

答案 3 :(得分:2)

我没有看到回答他(调整过的)问题的答案 - 他已将其锁定到localhost并且攻击者仍在进入。

如果你真的限制它到本地主机(使用netstat -an | egrep 3306检查它是否正在侦听127.0.0.1而不是0.0.0.0), 然后访问它的唯一方法是从该本地主机发起连接。

采取的初步措施:

  1. 可能从头开始重建替换系统并在将其公开访问之前强化它(具有可重复的配方,例如使用ansible将有所帮助,因为您可能需要经历几次迭代才能了解他是如何进入的) 请与信誉良好的安全扫描仪一起检查您的明显漏洞是什么,
  2. 从安全专业人士那里获得帮助(取决于您是否愿意花费金钱或时间和挫折来修复)
  3. 应用安全补丁,
  4. 删除不需要的服务,
  5. 将数据库访问权限仅限于那些需要它的程序,
  6. 重做所有密码,
  7. 检查已安装的root工具包和其他病毒,
  8. 如果在您自己的办公室保护您的服务器并培训员工处理社会工程,
  9. 使用一项服务来监控和过滤来自的请求,并拒绝直接访问(例如,使用cloudflare作为一个起点)
  10. 检查用于访问服务器的所有计算机上的键盘记录器(物理和软件及其他病毒),
  11. 检查在访问服务器时记录击键的物理方法(例如atm中使用的网络摄像头样式),更奇特的包括声音(https://en.wikipedia.org/wiki/Acoustic_cryptanalysis),用附近的wifi接入点打字(例如{{3 }})
  12. 添加审计跟踪并监控数据库活动以确定他是如何通过的,但至少你需要先做所有明显的安全措施,否则他只会从一个安全漏洞跳到另一个安全漏洞
  13. 他也可以通过使用:

    1. 通过您正在运行的某个程序(例如Web服务器)访问,该程序可从外部访问,并且具有允许他通过其现有数据库连接运行任意sql命令的安全漏洞 - 请参阅https://www.schneier.com/blog/archives/2016/08/keystroke_recog.html

    2. 欺骗他从外部访问的某个程序,为他代理连接到localhost:3306(例如通过机器上配置错误的网络防火墙)

    3. 欺骗某些程序运行本地程序(bash.mysql等),并从中获取对数据库的访问权限 - 缓冲区溢出和其他特制数据是运行任意代码的常见问题

      < / LI>
    4. 中间人攻击具有合法访问权限的连接

    5. 自动或手动处理来自外部的数据的程序中的错误,例如电子邮件,使用脚本处理处理postscript / pdf /任何文档 - 甚至查看文本文件都很危险 - 请参阅https://www.w3schools.com/sql/sql_injection.asp

    6. 社交工程是让人们访问的一种方式

    7. 设法将硬件设备连接到可以访问的计算机上(有多少人会拿起工作停车场中的“记忆棒”并将其检出而不是“可编程键盘”,并且所有计算机都信任键盘!)

    8. 然后还有更多我不知道的其他种类的方法,但那些涉及的方法分享...

    9. 请记住,您需要具备实用的安全性,我认为xkcd说的恰到好处:https://www.proteansec.com/linux/blast-past-executing-code-terminal-emulators-via-escape-sequences/