我听说任何知道我的MySQL用户名和密码的人都可以访问它,即使它只收听 localhost 。
假设我的信息如下:
USER: root
PASS: 123456
Host: LOCALHOST (only)
外面的任何人(本地人)如何才能访问它?
答案 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), 然后访问它的唯一方法是从该本地主机发起连接。
采取的初步措施:
他也可以通过使用:
通过您正在运行的某个程序(例如Web服务器)访问,该程序可从外部访问,并且具有允许他通过其现有数据库连接运行任意sql命令的安全漏洞 - 请参阅https://www.schneier.com/blog/archives/2016/08/keystroke_recog.html
欺骗他从外部访问的某个程序,为他代理连接到localhost:3306(例如通过机器上配置错误的网络防火墙)
欺骗某些程序运行本地程序(bash.mysql等),并从中获取对数据库的访问权限 - 缓冲区溢出和其他特制数据是运行任意代码的常见问题
< / LI>中间人攻击具有合法访问权限的连接
自动或手动处理来自外部的数据的程序中的错误,例如电子邮件,使用脚本处理处理postscript / pdf /任何文档 - 甚至查看文本文件都很危险 - 请参阅https://www.w3schools.com/sql/sql_injection.asp
社交工程是让人们访问的一种方式
设法将硬件设备连接到可以访问的计算机上(有多少人会拿起工作停车场中的“记忆棒”并将其检出而不是“可编程键盘”,并且所有计算机都信任键盘!)
然后还有更多我不知道的其他种类的方法,但那些涉及的方法分享...
请记住,您需要具备实用的安全性,我认为xkcd说的恰到好处:https://www.proteansec.com/linux/blast-past-executing-code-terminal-emulators-via-escape-sequences/