win2k平台下mysql的默认设置的脆弱性

写在前面:无事可做,生命被消耗,痛~~~啊,所以就写了,本文no原创,整理而成!
默认安装的mysql服务不安全因素涉及的内容有:
一.mysql默认的授权表
二.缺乏日志能力
三.my.ini文件泄露口令
四.服务默认被绑定全部的网络接口上
五.默认安装路径下的mysql目录权限

  1一.mysql默认的授权表   
  2由于mysql对身份验证是基于mysql这个数据库的,也叫授权表。所有的权限设置都在这里了。   
  3我们只讨论最为重要的一个表 user表。它控制的是接受或拒绝连接。   
  4先看一下   
  5select host,user,password,Delete_priv from user;   
  6+-----------+------+------------------+-------------+   
  7| host | user | password | Delete_priv |   
  8+-----------+------+------------------+-------------+   
  9| localhost | root | 67457e226a1a15bd | Y |   
 10| % | root | | Y |   
 11| localhost | | | Y |   
 12| % | | | N |   
 13+-----------+------+------------------+-------------+   
 14现在新的版本,安装完毕都会出现一个快速设置窗口,用于设置口令。   
 15以上,就是user表里的内容(略了点)看看有什么问题?   
 16我们知道mysql的验证方式是比较特殊的,它基于两个2个信息来进行的   
 171.从那里连接   
 182.用户名   
 19第一条没什么问题,当然口令必须是安全的。   
 20第二条从任何主机,以用户root,不需要口令都可以连接,权限为所有的权限。(注:这里的权限是全局权限)   
 21第三条从本地主机,任何用户名(注:user为空白,不表示不需要用户名),不需要口令,都可以连接,所有的权限   
 22第四条从任何主机,任何用户名,不需要口令,都可以连接,无任何权限。   
 23可以看出,2\3\4都是不安全的,如何攻击这里就不说了,请参看资料文库。   
 24如果你mysql只允许本地连接,删除host的%和user中的nul(表示空)   
 25delete from user where host=‘%‘;   
 26delete from host where user=‘‘;   
 27最后的user表,看起来因该是这个样子   
 28+-----------+------+------------------+-------------+   
 29| host | user | password | Delete_priv |   
 30+-----------+------+------------------+-------------+   
 31| localhost | root | 67457e226a1a15bd | Y |   
 32+-----------+------+------------------+-------------+   
 33最后需要刷新授权表,使其立刻生效   
 34flush privileges;   
 35如果你的mysql需要被远程使用,需要为%段中的root帐号,加上一个安全的密码   
 36update user set password=password(‘youpass‘) where host=‘%‘;   
 37其中youpass,就是口令   
 38mysql> select host,user,password,Delete_priv from user;   
 39+-----------+------+------------------+-------------+   
 40| host | user | password | Delete_priv |   
 41+-----------+------+------------------+-------------+   
 42| localhost | root | 67457e226a1a15bd | Y |   
 43| % | root | 77c590fa148bc9fb | Y |   
 44+-----------+------+------------------+-------------+   
 45更好的做法是,对远程主机的连接,指定为特定的   
 46修改host中的%为允许连接的主机,比如:   
 47192.168.0.% 允许一个特定的子网   
 48www.sandflee.net 允许一个特定的主机   
 49帐号默认的名字也是担心的问题。有可能导致被暴力破解   
 50update user set user=‘localadmin‘ where host=‘localhost‘;   
 51update user set user=‘remoteadmin‘ where host=‘%‘;   
 52最后的user表看起来像是这个样子   
 53mysql> select host,user,password,Delete_priv from user;   
 54+-----------+-------------+------------------+-------------+   
 55| host | user | password | Delete_priv |   
 56+-----------+-------------+------------------+-------------+   
 57| localhost | localadmin | 67457e226a1a15bd | Y |   
 58| % | remoteadmin | 77c590fa148bc9fb | Y |   
 59+-----------+-------------+------------------+-------------+   
 60更为详细的资料,请去参考晏子的《MySQL中文参考手册》。随便那都有下   
 61二.缺乏日志能力   
 62mysql安装完成以后,会在%SystemRoot%目录下产生my.ini的设置文件   
 63默认的内容如下:   
 64——————————————————————————————   
 65basedir=C:/mysql   
 66#bind-address=192.168.0.1   
 67datadir=C:/mysql/data   
 68#language=C:/mysql/share/your language directory   
 69#slow query log#=   
 70#tmpdir#=   
 71#port=3306   
 72#set-variable=key_buffer=16M   
 73[WinMySQLadmin]   
 74Server=C:/mysql/bin/mysqld-nt.exe   
 75user=root   
 76password=root   
 77———————————————————————————————   
 78注意log#=这个   
 79它没有被定义,且被注销掉了。   
 80更改为一个适合的路径,比如:   
 81log=c:/mysql/logs/mysql.log   
 82三.my.ini文件泄露口令   
 83我们看到my.ini最后,有这两句   
 84user=root   
 85password=root   
 86如果,你安装完成时,使用了mysql所提供的快速设置功能,(较新的版本)你的帐号和口令将被写到my.ini文件中。   
 87这也是mysql写到启动组里的winmysqladmin.exe工具,运行时需要读取的。它提供的mysql服务   
 88的一些监视功能。这样winmysqladmin.exe才能获得mysql服务的状态信息。   
 89其实,这个也不算漏洞,我们看看my.ini默认的权限,它可以被user组用户读取。   
 90从而导致口令被泄露   
 91解决方法:   
 92从新设定my.ini文件的权限.   
 93从新设定帐号及口令   
 94不使用快速设置   
 95四.服务默认被绑定全部的网络接口上   
 96服务被绑定到了所有的网络接口上,比如,你只需要一个运行在内网的mysql服务,但是你的机器有   
 97外网的接口,mysql也会被绑定上,从而带来一些不必要的麻烦和威胁。   
 98在my.ini里的这句   
 99#bind-address=192.168.0.1   
100它默认被注销掉了   
101应该打开它   
102如果,只是本地使用,更改为   
103bind-address=127.0.0.1   
104如果是其它情况,应该选者一个合适的网络接口   
105五.默认安装路径下的mysql目录权限   
106mysql默认的安装路径为c:\mysql,基本上都难得改,要改的话也是麻烦,还要去改my.ini。   
107但,这样就有个问题   
108通常c:\的权限是everyone组-所有的权限。这是默认的,由于继承性,导致mysql下的data目录   
109也是everyone组-所有的权限。导致被随意访问、读取、删除,可能泄露和破坏数据。   
110更改mysql目录到一个合适,安全的访问权限。   
111over...
Published At
Categories with 网络技术
comments powered by Disqus