Linux 下特殊目录的安全管理 例如 phpMyAdmin 或者后台什么的
一、 对phpMyAdmin目录加用户身份验证:
这样当用户第一次浏览进入该目录时,都将出现一个提示窗口,提示用户输入用户名和密码验证,其是通过使用Apache Server的标准 mod_auth模块实现的,具体操作方法如下:
1) vi编辑Apache Server配置文件,确保文件中如下两句话没有加注释,如果这两句话前有"#"符号,去掉"#"号(默认几乎都是允许的)。
vim /etc/httpd/conf/httpd.conf
DocumentRoot /var/www/htdocs #自己配置域名的忽略
AccessFileName .htaccess
AllOerride All
2) passwd程序创建用户文件:
htpasswd -cm /var/www/htdocs/www.mysql.com/.htpasswd username
其中,-c表示选项告诉htpasswd你想生成一个新的用户文件,/var/www/htdocs/www.mysql.com/ 是你想存放 .htpasswd 文件的目录,文件名称为 .htpasswd,username 是在验证时所用到的用户名,敲如以上命令后,系统提示你输入密码,这个密码就是验证时所需要用到的密码,该密码在 .htpasswd 文件中是加密的。现在用more来查看/data/web/apache/secrects/.htpasswd文件,可以看到其中有一行用户名和一串加密密码。
htpasswd 参数选项
-b
使用批处理方式。也就是直接从命令行获取密码而不进行提醒。使用这个选项需要特别注意,因为命令行中的密码是清晰可见的。
-c
创建passwdfile文件。如果passwdfile已经存在,那么将被清空并改写。该选项不能和 -n 同时使用。
-n
在标准输出上显示结果而不是更新文件。用于生成可以为Apache非文本输出存储格式所接受的密码记录。这个选项改变了命令行语法,因为passwdfile参数(通常是第一个)被忽略了
。该选项不能和 -c 同时使用。
-m
使用MD5加密密码。在Windows, Netware, TPF上这是默认方法。
-d
使用crypt()对密码进行加密。在Windows, Netware, TPF以外的平台上这是默认方法。虽然有可能在所有的平台上被htpasswd支持,但是在Windows, Netware, TPF上,该方法不能被httpd所支持。
-s
使用 SHA 对密码进行加密。这种方法易于通过LDAP目录交换格式和Netscape server进行交换。
-p
使用明文密码(不加密)。虽然htpasswd在所有平台上都支持这种方法,但是httpd只能在Windows, Netware, TPF上支持这种方法。
-D
如果username存在于passwdfile中,则删除该用户。
3) 创建 .htaccess 文件:
使用文本编辑器,在目录 phpMyAdmin (如果已经改名,就是新的目录名)下创建 .htaccess 文件,在文件中加入如下语句:
vim /var/www/htdocs/www.mysql.com/.htaccess
AuthName "用户验证的提示信息"
AuthType Basic
AuthUserFile /var/www/htdocs/www.mysql.com/.htpasswd
require user username
保存所做操作后,再去看phpMyAdmin目录,将提示验证窗口,输入刚用 htpasswd 命令创建的用户名和密码,即可进入该目录。
二、 增加基于主机的访问控制:
在修改了目录名和增加访问验证机制后,应该说现在的phpMyAdmin已经很安全了,但由于phpMyAdmin目录一般只是数据库管理员使用,为防止别人还知道目录名称和验证密码,还可以增
加如下的基于主机的访问控制,基于主机的访问是通过验证用户机器IP来实现的,即只有符合条件的IP才可以访问该目录,否则拒绝访问(更安全)。
修改 .htaccess 文件如下:
vim /var/www/htdocs/www.mysql.com/.htaccess
AuthName "用户验证的提示信息"
AuthType Basic
AuthUserFile /var/www/htdocs/www.mysql.com/.htpasswd
require user username
order deny,allow
deny from all
allow from 允许IP
这里增加了三条基于主机访问控制指令:
第一条 order 指令的值是由一个逗号隔开的名单,这个名单表明了哪一个指令更高的优先权;
第二条指令 deny 定义不能访问该目录的主机;
第三条指令 allow 定义可以访问该目录的主机;
这样,该目录除了IP地址为 添加的 “允许IP” 的机器可以访问该目录之外,其他的都不能访问,读者可以把该地址该为用户数据库管理 IP。
没有评论