文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>apache的安全配置(上)

apache的安全配置(上)

时间:2006-10-26  来源:windychan

apache作为一款广泛使用的web服务器软件,由于其优良的性能,以及良好的安全性, 
赢得了广大用户的青睐。关于如何配置apache方面的文章已经很多了,我主要是介绍一下 
apache的配置中安全方面的内容,由于本人知识水平有限,难处出现疏漏和错误,望指教 
。 
首先介绍一下AAA认证。AAA指的是认证(Authentication),授权(Authorization) 
,和访问控制(Access control)。认证是辨别某人是否真的是其声称的身份,这通常包 
括用户名和密码,但是也可以采用其他的方式,比如智能卡,虹膜扫描,语音识别或是指 
纹。认证就相当于向********自己的身份证。授权指的是在通过认证之后,判定用户是否 
允许拥有某种资源。这通常是看用户是否是某一个组的成员,是否这个用户被赋予了管理 
员的权限(如SetUID)。授权就相当于在培训时对学生进行点名或是在车站检票。访问控 
制则是一种web资源进行控制性访问的方法。访问控制可以基于很多的方面,如客户端的I 
P地址,时间,浏览器的种类(这一点真的很有用,我遇到过一个站点,只能使用realpla 
yer进行在线欣赏,就是不能下载,研究到最后的主要原因是HTTP_USER_AGENT必须是real 
player才能下载,而我们的浏览器一般是Mozilla/4.0或是MSIE,所以不能下载),甚至可 
以依据月亮的圆缺进行访问控制。访问控制就相当于定时关门或是只有穿西装打领带才能 
进餐厅一样。由于这三种技术在实际应用中关系如此密切,我们很难将其分开。在大多数 
的应用中,认证和授权是必不可少的。 

apache的基本认证 

正如名字所示,基本认证提供一种最简单的方式来进行认证,也是很长一段时间以来 
人们所使用的方式。尽管这样,其他方式的认证正在逐步取代基本认证,这将在稍后进行 
介绍。让我们来看看基本人正是如何工作的。当某一资源一基本认证的方式被保护时,ap 
ache发送一个包含请求响应的401 Authentiction Request的报头(header)给客户端,用 
以确定客户端的浏览器是否支持基本验证。当客户端的浏览器收到一个401的http头部时, 
如果浏览器支持基本认证,将会要求用户输入用户名和密码来提交到服务器,从而进行身 
份鉴别。比如在IE(Internet Explorer)或是Netcape收到一个401头部时,将会弹出一个对 
话框来要求输入用户名和密码。如果用户名在允许访问的列表中并且密码正确,那么服务 
器将客户请求的资源发送到客户端。因为http协议是无国界的,所以每一个请求都以相同 
的方式被处理,哪怕是来自同一个客户端的请求。也就是说,用户在先后访问同一资源时 
,要经过多次认证。幸运的是,这里面的细节有浏览器来处理,我们只需要在每一个进程 
中输入一次用户名和密码,要是选择了“保存密码”,那么以后访问同一资源时尽管不是 
同一进程,仍然不需要输入密码,但是我不推荐这样做,因为这些密码文件可能被破解而泄密。随着401的响应,一些其他的信息会随着返回到客户端。特殊情 
况下,服务器会发送保护的域的名称到客户端,客户端在接收到输入的用户名和密码之后 
会缓存这些信息与访问的域在一起,要是同一个域中其他的资源被访问,浏览器便将缓存 
的用户名和密码发送到服务器,通常浏览器只在一个进程中缓存用户名和密码。 
接下来介绍一下基本认证在apache上面是如何实现的,我们两步完成:首先,创建一 
个密码文档。然后配置apache来使用这个密码文档,第三步是可选的:创建组文档。我们 
一步一步来配置。客户端提交的用户名和密码就是与密码文档进行比较,我们需要为密码 
文档添加允许访问的用户的用户名和密码。由于这个文档包含有敏感的信息,所以应该将 
其放置在一个安全的目录中,并且设定它的访问权限,并且不要以明文的形式存放密码。 
我们使用与apache一起发布的htpasswd组件来创建密码文档,htpasswd位于apache的安装 
目录中,如progra~1apache~1apacheinhtpasswd(在windows中)或是/usr/local/a 
pache/bin/htpasswd(Linux/Unix)。以下介绍在Linux下面的操作,在widnows下面的操作 

类似。输入 
htpasswd -c /usr/local/apache/passwd/passwords username 
htpasswd将会要求输入密码,然后是要求确定密码 
# htpasswd -c /usr/local/apache/passwd/passwords httpuser 
New password: mypassword 
Re-type new password: mypassword 
Adding password for user httpuser 
这将创建一个包含用户名为httpuser密码为mypassword的用户的密码文档。如果htpasswd 
没有在你的当前目录下,你需要输入完整的路径来运行htpasswd。至于参数,这里不详细 
介绍了。说说-c,它表示新建一个密码文档,要是想一个已经存在的密码文档添加用户, 
只需要省略-c这个参数就可以了。在Windows和NetWare中,密码默认情况下一MD5形式被加 
密,在其他系统中使用crypt来加密。这里要特别小心,要是在你向一个已经存在的密码文 
档中增加用户时使用了-c,那么将创建一个新的文档,里面只有你刚才添加的那一个用户 
。对于生成的密码文档,我们最好使用chmod来修改其权限为640。 
生成了密码文档之后我们接着来配置apache来使密码文档生效,注意,修改httpd.co 
nf以前请先备份,切记切记!!!这将需要修改以下参数 
AuthType 所使用的认证方式,修改为 Basic 
AuthName 认证的域或名字 
AuthUserFile 密码文档的位置 
AuthGroupFile 组文档的位置 
Require 授权登陆所必须满足的请求 
这些参数可以被存为文件.htaccess放在需要保护目录下,也可以在httpd.conf中的
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载