FreeBSD连载(87):基于用户的访问控制

2009-05-13 12:27:18来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折


基于用户的访问控制
  更严格、有效的控制方法还是基于用户和对应的口令对浏览客户进行控制。这使得对这个目录进行强制性的保护,浏览器用户必须输入合法的用户名和正确的口令才能浏览网页。如果要针对用户对访问服务器的客户进行控制,首先就要设置访问控制文件为对用户进行认证,因此要允许目录访问控制文件中具备AuthConfig的设置。
  设置用户认证需要为这个目录指定AuthNameAuthTypeAuthUserFile 指令,AuthUserFile定义一个口令文件,那么此后就可以使用require valid-user命令让客户输入名字和正确的口令,根据这个口令文件对用户的身份进行验证。AuthName定义这个认证的标识,用于返回给浏览器用户,起到提示作用。AuthType定义使用的认证加密类型,通常使用 Basic,即使用Unix的标准加密算法进行加密。
AuthUserFile /usr/local/etc/htpasswd
AuthName SecurityAuth
AuthType Basic
require vaild-user
  这个例子里,使用/usr/local/etc/htpasswd作口令文件,使用Basic的加密认证方法,并定义AuthName为SecurityAuth。
  虽然浏览器访问每个使用这种认证方式保护的网页都需要先进行认证,然而不会每访问一次网页都让用户输入用户名和口令,因为浏览器会将用户输入的用户和口令数据保存起来,每次需要认证的时候就自动进行认证操作。由于认证是通过H EAD请求来完成的,因此它不会影响浏览器显示的网页。然而,用户有可能使用浏览器访问了多个不同的对用户进行认证的网页,那么浏览器就会保存了多个不同的用户和口令对,当自动进行认证的时候,浏览器必须区分出应该使用哪个用户名和口令进行认证,而区分就是通过AuthName的值进行的,服务器将首先将AuthName的值传递给客户浏览器,此后浏览器就能发送正确的用户和口令进行认证了。
  要使用口令文件来认证合法用户,首先就必须生成这个口令文件。当认证类型为Basic时,口令文件与Unix 的passwd文件非常类似,甚至可以直接使用系统passwd文件来作认证文件,当然由于现代Unix使用了sha dow技术,/etc/passwd中并没有保存真实的加密口令,因此直接使用系统passwd文件进行认证只能适合那些没有使用shadow技术的Unix系统。而使用shadow技术的Unix系统的真实口令文件(FreeBSD 下为master.passwd)被保护起来,读取它需要root权限,而Web服务器通常以普通用户的权限运行,不能直接使用系统口令对用户进行认证。如果强制使用root权限启动httpd守护进程来访问shadow之后的口令,那么必然会带来严重的安全漏洞。
  因此一般使用与系统口令相分离的口令文件来认证Web服务器用户,这样即使口令被泄露,并被破译,造成的安全影响也很小,不至于影响系统的正常运行。可以使用Apache附带的htpasswd命令来创建口令文件,并设置用户及其口令。
$ htpasswd -c .htpasswd user1
Adding Password for user1
New password:
Re-type new password:
  htpasswd的-c选项告诉htpasswd创建一个新口令文件为.htpasswd,如果没有这个选项,htpasswd就将用户及其口令加入已经存在的口令文件中。此后的参数就是口令文件名和需要增加或改变口令的用户名。
  为了便于管理,可以进一步将这些用户分组,组文件的每一行定义了一个组及其成员的名字,然后在.htaccess 中使用AuthGroupFile指定这个目录使用的组文件的名字,例如:
group1: user1 user2 user3 user4
  这条内容创建了一个口令组group1,包括user1,user2,user3,user4成员。
  除了可以使用require valid-user要求输入的用户必须为口令文件中的合法用户之外,也可以设置要求只有特定的合法用户才能访问的目录,这就需要使用require user或require group指令。例如使用require user user1要求只有user1用户才能访问,使用require group g roup1就要求必须是group1组的合法成员才能访问。针对具体用户和组的访问控制就进一步增加了访问控制的灵活性。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:FreeBSD连载(86):对IP地址和域名的控制

下一篇:FreeBSD连载(88):安全连接方式SSL