我要投稿
  • 您当前的位置:365bet官方 -> 技术教程 -> 操作系统教程 -> Win2000教程 -> 教程内容
  • [ 收藏本页教程 ]
  • win2k平台下mysql的默认设置的脆弱性

    教程作者:佚名    教程来源:不详   教程栏目:Win2000教程    收藏本页
    写在前面:无事可做,生命被消耗,痛~~~啊,所以就写了,本文no原创,整理而成!
    默认安装的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           |
    +-----------+------+------------------+-------------+
    更好的做法是,对远程主机的连接,指定为特定的
    修改host中的%为允许连接的主机,比如:
    192.168.0.% 允许一个特定的子网
    www.sandflee.net 允许一个特定的主机
    帐号默认的名字也是担心的问题。有可能导致被暴力破解
    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.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目录到一个合适,安全的访问权限。
    over...
    我要投稿   -   广告合作   -   关于本站   -   友情连接   -   网站地图   -   联系我们   -   版权声明   -   设为首页   -   加入收藏   -   网站留言
    Copyright © 2009 - 20012 www.www.ct131.com All Rights Reserved.365bet官方 版权所有