Mysql应用Mysql默认设置的危险性分析第1/2页
发布时间:2020-12-12 02:53:55 所属栏目:MySql教程 来源:网络整理
导读:《Mysql应用Mysql默认设置的危险性分析第1/2页》要点: 本文介绍了Mysql应用Mysql默认设置的危险性分析第1/2页,希望对您有用。如果有疑问,可以联系我们。 默认安装的mysql服务不平安因素涉及的内容有: 一.mysql默认的授权表 二.缺乏日志能力 三.my.ini文
《Mysql应用Mysql默认设置的危险性分析第1/2页》要点: 一.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为空白,不表示不需要用户名),不需要口令,都可以连接,所有的权限 第四条从任何主机,任何用户名,无任何权限. 可以看出,234都是不平安的,如何攻击这里就不说了,请参看资料文库. 如果你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,Delete_priv from user; +-----------+------+------------------+-------------+ | host | user | password | Delete_priv | +-----------+------+------------------+-------------+ | localhost | root | 67457e226a1a15bd | Y | | % | root | 77c590fa148bc9fb | Y | +-----------+------+------------------+-------------+ _baidu_page_break_tag_ 更好的做法是,对远程主机的连接,指定为特定的 修改host中的%为允许连接的主机,比如: 192.168.0.% 允许一个特定的子网 www.aspzz.cn 允许一个特定的主机 帐号默认的名字也是担心的问题.有可能导致被暴力破解 update user set user=‘localadmin‘ where host=‘localhost‘; update user set user=‘remoteadmin‘ where host=‘%‘; 最后的user表看起来像是这个样子 mysql> select host,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.1 datadir=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.exe user=root password=root ――――――――――――――――――――――――――――――― 注意log#=这个 它没有被定义,且被注销掉了. 更改为一个适合的路径,比如: log=c:/mysql/logs/mysql.log 三.my.ini文件泄露口令 我们看到my.ini最后,有这两句 user=root password=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目录到一个合适,平安的访问权限. 编程之家PHP培训学院每天发布《Mysql应用Mysql默认设置的危险性分析第1/2页》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |