二、身份验证
我们怎样才能仅允许那些拥有正确口令和用户名的用户访问部分web root呢?下面的步骤将向你展示如何安全地做到这一点:
1. 基本验证
允许.htaccess:
| # vi /etc/apache2/apache2.conf |
将AllowOveride None改为AllowOveride AuthConfig
重新加载以使改变生效:
| # sudo /etc/init.d/apache2 reload |
创建一个口令文件:
| # mkdir /var/www/misc # chmod a+rx /var/www/misc # cd /var/www/misc # htpasswd -bc private.passwords username password Adding password for user username |
创建.htaccess
| # cd /home/username/public_html/cgi-bin # vi .htaccess |
在.htaccess中增加下面的命令:
| AuthName My Private Area" AuthType Basic AuthUserFile /var/www/misc/private.passwords AuthGroupFile /dev/null require valid-user |
将AllowOverride None Options ExecCGI Order Deny,Allow Deny from all Allow from 192.168.0.0/16
改变为:AllowOverride .htaccess Options ExecCGI Order Deny,Allow Deny from all Allow from 192.168.0.0/16
然后重新加载以使更改生效:
| # /etc/init.d/apache2 reload |
2、摘要验证(Digest authentication)
另外一种验证方法称之为摘要验证。如果采用摘要验证,你的口令将不是以明文通过网络传送,因为它们总是作为用户口令的一个MD5摘要传送的。如果采用这种方法,那么通过嗅探网络通信的方法就不能决定用户的口令了。
下面创建口令文件:
| # mkdir /var/www/misc # chmod a+rx /var/www/misc # cd /var/www/misc # htdigest -c private.passwords realm username Adding password for username in realm realm. New password: |
创建 .htaccess :
| # cd /home/username/public_html/cgi-bin # vi .htaccess |
在.htaccess中增加下面的内容:
| AuthName "My Private Area" AuthType Digest AuthUserFile /var/www/misc/private.passwords AuthGroupFile /dev/null require valid-user |
注意:
1、一些老的浏览器并不支持摘要验证(Digest authentication)
2、要完全地保护你的.htaccess就要使用SSL
三、总结
使Apache更安全的下一步措施是使用Apache的模块来帮助实现更好的安全性,例如mod_security 和 mod_chroot。此外,要保护我们的验证我们还需要配置SSL。
![]() |

