2013年7月23日星期二

Linux下PhpMyAdmin程序目录的安全管理

PhpMyAdmin是一套放在服务器端的通过浏览器界面管理的程序,因此,确保其目录安全性十分重要,否则,将导致数据被盗取甚至遭到恶意破坏。下面将详细讲述一般的防范措施。
一、 修改phpMyAdmin目录名:
  在不修改目录名前,其他人很容易洞察该目录名,造成安全隐患。如,假设一台Linux主机的域名为:www.test.com,那么不修改目录名的情况下,在地址栏中输入:www.test.com/phpMyAdmin/ 就将进入phpMyAdmin管理程序。因此如果将phpMyAdmin目录改名为一个别人不易知道的目录,如mynameadmin,这样,你在管理自己的数据库时,只要键入:www.test.com/mynameadmin/ 就可以通过浏览器管理数据库了。(注:下面仍将使用phpMyAdmin目录名,如果目录名已换,只需把phpMyAdmin改名为新的目录名即可。)

二、 对phpMyAdmin目录加用户身份验证:
  这是很多网站需要用户验证时普遍使用的方法,这样当用户第一次浏览进入该目录时,都将出现一个提示窗口,提示用户输入用户名和密码验证,其是通过使用Apache Server的标准 mod_auth模块实现的,具体操作方法如下:
  1、VI编辑Apache Server配置文件,确保文件中如下两句话没有加注释,如果这两句话前有"#"符号,去掉"#"号。
  DocumentRoot /data/web/apache/public/htdocs
  AccessFileName . htaccess
  AllOerride All
  2、passwd程序创建用户文件:
  htpasswd - c /data/web/apache/secrects/.htpasswd 88998
  其中,-c表示选项告诉htpasswd你想生成一个新的用户文件,/data/web/apache/secrects/ 是你想存放 .htpasswd 文件的目录,文件名称为 .htpasswd,88998 是在验证时所用到的用户名,敲如以上命令后,系统提示你输入密码,这个密码就是验证时所需要用到的密码,该密码在 .htpasswd 文件中是加密的。现在用more来查看 /data/web/apache/secrects/.htpasswd文件,可以看到其中有一行用户名和一串加密密码。
  3、创建 .htaccess 文件:
  使用文本编辑器,在目录 phpMyAdmin (如果已经改名,就是新的目录名)下创建 .htaccess 文件,在文件中加入如下语句:
  AuthName "用户验证"
  AuthType Basic
  AuthUserFile /data/web/apache/public/htdocs/phpMyAdmin/.htpasswd
require user 88998
  保存所做操作后,再去看phpMyAdmin目录,将提示验证窗口,输入刚用 htpasswd 命令创建的用户名和密码,即可进入该目录。

三、 增加基于主机的访问控制:
  在修改了目录名和增加访问验证机制后,应该说现在的phpMyAdmin已经很安全了,但由于phpMyAdmin目录一般只是数据库管理员使用,为防止别人还知道目录名称和验证密码,还可以增加如下的基于主机的访问控制,基于主机的访问是通过验证用户机器IP来实现的,即只有符合条件的IP才可以反问该目录,否则拒绝访问。
修改 .htaccess 文件如下:
  AuthName "用户验证"
  AuthType Basic
  AuthUserFile /data/web/apache/public/htdocs/phpMyAdmin/.htpasswd
require user 88998
  order deny,allow
  deny from all
  allow from 202.100.222.80

这里增加了三条基于主机访问控制指令,其中第一条 order 指令的值是由一个逗号隔开的名单,这个名单表明了哪一个指令更高的优先权,第二条指令 deny 定义不能访问该目录的主机,第三条指令 allow 定义可以访问该目录的主机,这样,该目录除了IP地址为 202.100.222.80 的机器可以访问该目录之外,其他的都不能访问,读者可以把该地址该为用户数据库管理员IP。

总结:通过以上三点相结合,就可很好的确保 phpMyAdmin 目录的安全,非数据库管理员将很难通过phpMyAdmin程序读取数据。这里所讲的是针对于phpMyAdmin目录进行讲述,其他目录如需加访问限制,也可依此方法操作。

phpMyAdmin安全配置

第一种方法
xampp下通过修改phpmyadmin访问路径,增强安全性。
1、phpmyadmin 下修改 config.inc.php 添加
$cfg['PmaAbsoluteUri'] = ‘http://localhost/sunMyAdmin’;
其中,sunMyAdmin为修改后的phpmyadmin路径
2、修改 xampp\apache\conf\extra\httpd-xampp.conf
Alias /phpmyadmin “D:/xampp/phpMyAdmin/”  改为
Alias /sunmyadmin “D:/xampp/phpMyAdmin/”
其中,sunMyAdmin为修改后的phpmyadmin路径
其下的directory改为
<Directory “D:/xampp/phpMyAdmin”>
       AllowOverride None
       Order deny,allow
       Deny from all
       Allow from localhost
</Directory>
设置只允许本地访问

第二种方法
未经配置的phpMyAdmin很不安全,容易受到攻击,或者根本无法正常使用,phpMyAdmin有3种授权模式:
  • cookie: 显示一个web登录页面,输入mysql的用户名和密码,然后进入管理界面
  • http: 显示1个windows登录框,输入mysql的用户名和密码,然和进入管理
  • config: 把mysql用户名和密码直接填入config.inc.php,不显示登录界面,直接进入管理界面
phpMyAdmin的配置文件名为config.inc.php,各版本的config.inc.php修改方法如下:
  • 2.6以前版本:将config.inc.sample.php改为config.inc.php
  • 2.7版本:将config.default.php改为config.inc.php
  • 2.8版本:用配置脚本 ‘/script/setup.php’生成配置文件,生成的文件拷贝下来,手动存为config.inc.php
 config.inc.php配置脚本
2.8以上版本提供的配置脚本

一、使用cookie授权模式
将'auth_type'改为'cookie',然后修改'blowfish_secret'用一个任意字符串作为cookie的加密字符串,如果没有加密钥匙,系统会显示"配置文件现在需要绝密的短语密码(blowfish_secret) " ,配置文件如下:
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['blowfish_secret'] = '44e2f5aece2855.93921574';
修改完毕后,登录窗口入下
phpMyAdmin登录(cookie模式)
http授权模式的web登陆页面

二、使用config授权模式
   config需要这几个参数:
$cfg['Servers'][$i]['auth_type'] = 'config';  //授权模式
$cfg['Servers'][$i]['user'] = 'root';         //mysql登陆用户
$cfg['Servers'][$i]['password'] = '12345';    //mysql登陆用户密码

三、用http授权模式
$cfg['Servers'][$i]['auth_type'] = 'http';
http授权模式的登陆窗口
http授权模式的登陆窗口

注意事项:如果mysql服务器端采用了4.1以上版本,而客户端连接用的是mysql4.1一下版本,对用户设置密码时注意使用OLD_PASSWORD函数,举例:
  • mysql > SET PASSWORD = OLD_PASSWORD('12345');
  • mysql >