MySQL默认设置的危险性分析第1/2页
2022-11-12 09:17:14
内容摘要
这篇文章主要为大家详细介绍了MySQL默认设置的危险性分析第1/2页,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!默认安装的mysql服务不安
文章正文
这篇文章主要为大家详细介绍了MySQL默认设置的危险性分析第1/2页,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
默认安装的mysql服务不安全因素涉及的内容有:一.mysql默认的授权表二.缺乏日志能力三.my.ini文件泄露口令四.服务默认被绑定全部的网络接口上五.默认安装路径下的mysql目录权限~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~一.mysql默认的授权表由于mysql对身份验证是基于mysql这个数据库的,也叫授权表。所有的权限设置都在这里了。我们只讨论最为重要的一个表 user表。它控制的是接受或拒绝连接。先看一下select host,user,password,Delete_priv from user;+-----------+------+------------------+-------------+| host | user | password | Delete_priv |+-----------+------+------------------+-------------+| localhost | root | 67457e226a1a15bd | Y || % | root | | Y || localhost | | | Y || % | | | N |+-----------+------+------------------+-------------+现在新的版本,安装完毕都会出现一个快速设置窗口,用于设置口令。以上,就是user表里的内容(略了点)看看有什么问题?我们知道mysql的验证方式是比较特殊的,它基于两个2个信息来进行的1.从那里连接2.用户名第一条没什么问题,当然口令必须是安全的。第二条从任何主机,以用户root,不需要口令都可以连接,权限为所有的权限。(注:这里的权限是全局权限)第三条从本地主机,任何用户名(注:user为空白,不表示不需要用户名),不需要口令,都可以连接,所有的权限第四条从任何主机,任何用户名,不需要口令,都可以连接,无任何权限。可以看出,2\3\4都是不安全的,如何攻击这里就不说了,请参看资料文库。如果你mysql只允许本地连接,删除host的%和user中的nul(表示空)delete from user where host='% ';delete from host where user=' ';最后的user表,看起来因该是这个样子+-----------+------+------------------+-------------+| host | user | password | Delete_priv |+-----------+------+------------------+-------------+| localhost | root | 67457e226a1a15bd | Y |+-----------+------+------------------+-------------+最后需要刷新授权表,使其立刻生效flush privileges;如果你的mysql需要被远程使用,需要为%段中的root帐号,加上一个安全的密码update user set password=password(‘youpass‘) where host=‘%‘;其中youpass,就是口令mysql> select host,user,password,Delete_priv from user;+-----------+------+------------------+-------------+| host | user | password | Delete_priv |+-----------+------+------------------+-------------+| localhost | root | 67457e226a1a15bd | Y || % | root | 77c590fa148bc9fb | Y |+-----------+------+------------------+-------------+12下一页阅读全文
对此感兴趣的朋友,看看idc笔记做的技术笔记!
更好的做法是,对远程主机的连接,指定为特定的修改host中的%为允许连接的主机,比如:192.168.0.% 允许一个特定的子网www.512pic.com 允许一个特定的主机帐号默认的名字也是担心的问题。有可能导致被暴力破解update user set user=‘localadmin‘ where host=‘localhost‘;update user set user=‘remoteadmin‘ where host=‘%‘;最后的user表看起来像是这个样子mysql> select host,user,password,Delete_priv from user;+-----------+-------------+------------------+-------------+| host | user | password | Delete_priv |+-----------+-------------+------------------+-------------+| localhost | localadmin | 67457e226a1a15bd | Y || % | remoteadmin | 77c590fa148bc9fb | Y |+-----------+-------------+------------------+-------------+更为详细的资料,请去参考晏子的《MySQL中文参考手册》。随便那都有下二.缺乏日志能力mysql安装完成以后,会在%SystemRoot%目录下产生my.ini的设置文件默认的内容如下:——————————————————————————————basedir=C:/mysql#bind-address=192.168.0.1datadir=C:/mysql/data#language=C:/mysql/share/your language directory#slow query log#=#tmpdir#=#port=3306#set-variable=key_buffer=16M[WinMySQLadmin]Server=C:/mysql/bin/mysqld-nt.exeuser=rootpassword=root———————————————————————————————注意log#=这个它没有被定义,且被注销掉了。更改为一个适合的路径,比如:log=c:/mysql/logs/mysql.log三.my.ini文件泄露口令我们看到my.ini最后,有这两句user=rootpassword=root如果,你安装完成时,使用了mysql所提供的快速设置功能,(较新的版本)你的帐号和口令将被写到my.ini文件中。这也是mysql写到启动组里的winmysqladmin.exe工具,运行时需要读取的。它提供的mysql服务的一些监视功能。这样winmysqladmin.exe才能获得mysql服务的状态信息。其实,这个也不算漏洞,我们看看my.ini默认的权限,它可以被user组用户读取。从而导致口令被泄露解决方法:从新设定my.ini文件的权限.从新设定帐号及口令不使用快速设置四.服务默认被绑定全部的网络接口上服务被绑定到了所有的网络接口上,比如,你只需要一个运行在内网的mysql服务,但是你的机器有外网的接口,mysql也会被绑定上,从而带来一些不必要的麻烦和威胁。在my.ini里的这句#bind-address=192.168.0.1它默认被注销掉了应该打开它如果,只是本地使用,更改为bind-address=127.0.0.1如果是其它情况,应该选者一个合适的网络接口五.默认安装路径下的mysql目录权限mysql默认的安装路径为c:\mysql,基本上都难得改,要改的话也是麻烦,还要去改my.ini。但,这样就有个问题通常c:\的权限是everyone组-所有的权限。这是默认的,由于继承性,导致mysql下的data目录也是everyone组-所有的权限。导致被随意访问、读取、删除,可能泄露和破坏数据。更改mysql目录到一个合适,安全的访问权限。上一页12阅读全文
注:关于MySQL默认设置的危险性分析第1/2页的内容就先介绍到这里,更多相关文章的可以留意
代码注释