httpd 基于用户的访问控制的配置

当我们在网站的某些特定目录放置了比较私密的信息,而又只想提供给我们信任的指定用户访问,这时就需要使用httpd的基于用户访问控制,其能帮你实现只有通过认证的用户才能被允许访问特定的资源,从而大大提高了网站的安全性。

一、httpd基于用户的访问控制简介

基于用户的访问控制包含认证和授权两个过程:
        认证(Authentication)是指识别用户身份的过程
        授权(Authorization)是允许特定用户访问特定区域信息的过程。

Apache的认证包含基本认证(Basic)和摘要认证(Digest)两种方式
        基本认证是Apache的基本功能,采用base64 加密 明文发送
        摘要认证需要在编译httpd的过程中预先配置“--enable-auth-digest”,部分浏览器不支持

当用户访问基于用户认证网页时会经历一下两个阶段:
        质询:
          WWW-Authenticate: 服务器用401状态拒绝客户端请求,说明需要用户提供用户名和密码;弹出对话框;
        认证:
           Authorization:客户端用户填入账号密码后再次发请求至服务器;认证通过,则请求授权;

二、基于basic认证的配置
    1、创建需要认证的目录

    [[email protected] html]# mkdir /vhost/www/html/net
    [[email protected] html]# echo "<h1>This is a basic Page</h1>" > /vhost/www/html/net/index.html
    [[email protected] html]#

2、创建虚拟用户
        2.1、创建虚拟用户及文件

创建虚拟账户需要用到htpasswd命令,具体参数如下:
     htpasswd命令用于维护用户认证文件
            htpasswd [ -c ] [ -m ] [ -D ] passwdfile username
                         -c: 添加第一用户时创建此文件;
                         -m: 以md5格式加密用户密码存放;
                         -s: 以sha格式加密用户密码存放;
                         -D:删除指定用户
[[email protected] html]# mkdir /etc/httpd/users
[[email protected] html]# htpasswd -m -c /etc/httpd/users/.htpasswd sina    //第一次需要用-c 创建文件 
New password:         //输入认证时的密码
Re-type new password: 
Adding password for user sina
[[email protected] html]# htpasswd -m /etc/httpd/users/.htpasswd baidu    //创建第二个虚拟用户
New password: 
Re-type new password: 
Adding password for user baidu
[[email protected] html]# htpasswd -m /etc/httpd/users/.htpasswd ifeng
New password: 
Re-type new password: 
Adding password for user ifeng
[[email protected] html]#

2.2、为了保证认证用户的账号密码安全,通常对其文件进行权限修改

[[email protected] html]# ls -l /etc/httpd/users/.htpasswd 
-rw-r--r--. 1 root root 131 Mar 29 04:58 /etc/httpd/users/.htpasswd
[[email protected] html]# chmod 600 /etc/httpd/users/.htpasswd
[[email protected] html]# ls -l /etc/httpd/users/.htpasswd 
-rw-------. 1 root root 131 Mar 29 04:58 /etc/httpd/users/.htpasswd
[[email protected] html]#

3、修改/etc/httpd/conf/httpd.conf

<Directory "/vhost/www/html/net">
     Options None
     AllowOverride None
     AuthType Basic    //基于basic认证
     AuthName "Please input user and password to login"    //登录提示的欢迎信息
     AuthUserFile /etc/httpd/users/.htpasswd    //认证用户密码文件
     Require user sina ifeng baidu    //指定.htpasswd 文件中的特定用户登录
</Directory>

AuthName:定义受保护的领域名称,将在弹出的认证登录对话框中显示。

AuthType:设置认证的类型,Basic为基本认证
        AuthUserFile:设置用于保存用户帐号、密码的认证文件路径。
        Require valid-user:授权给认证文件中的所有有效用户
        Require user user1 user2 ...: 仅允许AuthUserFile文件中定义的的user1,user2用户登录;用户之间用空格隔开

AuthGroupFile  用户组文件
        Require group GRP1 GRP2 ...    修改完成后 ,

重载配置文件# service httpd reload

三、基于用户访问的访问控制验证
    1、当访问我们要保护的net目录时,提示要输入用户名密码验证完成才能访问,如下图
   

2、输入认证的用户名密码,然后点击确定

OK httpd基于用户认证的到此就配置完毕

四、基于用户组的访问控制

当网站有过个需要认证的目录时,并且每个目录需要认证用户群体不一样,这时就需要用到基于用户组的访问控制了。

4.1、创建认证保护的目录及存储用户的文件,同上2.2

[[email protected] ~]# mkdir /vhost/www/html/{news,blog}
[[email protected] ~]# ls /vhost/www/html/
al  blog  in.html  net  news
[[email protected] ~]# echo "<h1>This is a news page </h1>" > /vhost/www/html/news/index.html
[[email protected] ~]# echo "<h1>This is a blog page </h1>" > /vhost/www/html/blog/index.html

[[email protected] html]# htpasswd -m /etc/httpd/users/.htpasswd sina.blog
New password: 
Re-type new password: 
Adding password for user sina.blog
[[email protected] html]# cat /etc/httpd/users/.htpasswd 
sina:$apr1$rtmSis3y$F.fQjt1.jr54hFaOQxuTG1
baidu:$apr1$y8pkUJ5U$7WTUhdmI21PEDQloLaFzm0
ifeng:$apr1$RanhUWgx$4In/BYbyuNlWPUJSmuQDD0
126:$apr1$qlbgyeJs$ot.qoWMdAdV.IkElU9OZ/1
haha:$apr1$ELM3prR6$ipW3YP2A/4CBnHKvqwsUn1
51cto:$apr1$P1x815aN$LXY55k/DEZPmmUCySIx1A1
sina.blog:$apr1$EBghuchO$RpKvz/DV8XkxyidVgNHPi/
[[email protected] html]#

4.2、创建用户组文件

组文件格式:

每行定义一个组,格式
              Grp_Name: User1 User2 ..

[[email protected] html]# vim /etc/httpd/users/.htgroup
[[email protected] html]# cat /etc/httpd/users/.htgroup
news: ifeng 126 sina
blog: 51cto sina.blog
[[email protected] html]#

4.3、编辑/etc/httpd/conf/httpd.conf

#news
<Directory "/vhost/www/html/news">
Options None
AllowOverride None
AuthType Basic
AuthName "Please input user and password"
AuthUserFile /etc/httpd/users/.htpasswd
AuthGroupFile /etc/httpd/users/.htgroup  
Require Group news
</Directory>
# blog
<Directory "/vhost/www/html/blog">
Options None
AllowOverride None
AuthType Basic
AuthName "Please input blog‘s user and password" 
AuthUserFile /etc/httpd/users/.htpasswd
AuthGroupFile /etc/httpd/users/.htpgroup   
Require Group blog
</Directory>

4.4、重载配置文件

[[email protected] ~]# service httpd reload
Reloading httpd: 
[[email protected] ~]#

4.5、访问http://192.168.65.80/news/目录发现需要我们输入用户名密码进行验证,当我们输入.htgroup文件中news组中所属的用户时才能通过验证,非此组的用户无法登陆

4.5、我们访问 http://192.168.65.80/blog/目录:

当我们输入非blog组的用户126时,一直提示让输入用户名密码,而无法通过验证

当我们输入属于blog组的51cto用户时,出现了下面的界面,即通过了认证...

Ok   基于用户的访问控制基本用法已经到此就告一段落了,不足之处还请各位童鞋指正......

时间: 2024-10-31 05:46:15

httpd 基于用户的访问控制的配置的相关文章

httpd虚拟主机配置及基于用户的访问控制

本文旨在实践httpd虚拟主机及基于用户的访问控制 知识储备 虚拟主机有三种实现方案: 基于ip: 为每个虚拟主机准备至少一个独有ip地址: 基于port: 为每个虚拟主机使用至少一个独有的port: 基于FQDN: 为每个虚拟主机使用至少一个FQDN: 注意:一般虚拟机不要与中心主机混用:因此,要使用虚拟主机,得先禁用'main'主机: 禁用方法:注释中心主机的DocumentRoot指令即可: 基于用户的访问控制: http协议认证方式2种 basic:明文 digest:消息摘要认证 本次

httpd基于用户的站点访问控制

基于用户或组进行认证 一.各字段参数 Options:开启的功能 AllowOverride:是否开启认证 AuthType:认证模式 Basic:基本认证,明文传送,较常用 digest:摘要认证,密文传送,一些浏览器不支持 AuthName:显示的认证信息 AuthBasicProvider:认证的类型,默认为基于file文件进行认证 file:文本文件认证 dbm:数据库引擎认证,并提供API接口 还有ldap认证与Sql数据库认证等方式 AuthUserFile:认证文件路径 AuthG

apache2 httpd 基于域名的虚拟主机配置 for centos6X 和debian-8

全系统虚拟主机: for debian 系统的apache2 域名 虚拟主机 for centos6 系统的 httpd 基于玉米的虚拟主机

httpd实现基于用户的访问控制

编辑配置文件 vim /etc/httpd/conf/httpd.conf  添加 <Directory "www/html/zhou"> Options none AllowOverRide none AuthType Basic AuthName "STRING" AuthUserFile "/etc/httpd/conf.d/.htpasswd" Require valid-name </Directory> 保存退

httpd中站点资源访问控制的设置

站点的资源有两种表现形式,文件和URL,为了保证网站运行的安全,必须对这些资源的访问使用某些方式来加以限制,达到控制访问的目的,由于文件通常都存放于目录中,所以从控制对象的角度上看,我们要控制的站点访问对象通常为目录和URL,虽然目录不能作为网站的真正资源,但是出于访问控制对象的角度却是我们主要的控制对象. 以上两种控制对象的控制方式有:1.基于用户的访问控制:2.基于组的访问控制:3.基于IP的访问控制.上面的两类控制对象,它们都可以通过这三种方式来加以控制. 一.目录的控制设置: 站点资源通

Linux 中httpd基于文件的用户的访问控制和CGI

基于用户访问控制(这里控制的是整个页面控制)         用户认证类型:             基本认证:Basic             摘要认证:digest,是否明文还是密文的控制. 虚拟用户:仅用于访问某服务和获取资源的凭证:         用户帐号密码存放位置:.htpasswd 这个文件用户名是明文的,密码是加密的.这个文件的名字也是你自己取的,一般我们不改动.htpasswd存放在httpd配置文件下即可                 实例:我们这里基于文件的认证(文件

vsftpd基于本地用户和mysql认证配置

虚拟用户认证 vsftp vsftpd软件包仅140KB 官方站点:http://vsftpd.beasts.org/ 主程序:/usr/sbin/vsftpd 服务名:vsftpd 用户控制列表文件 /etc/vsftpd/ftpusers /etc/vsftpd/user_list                    //禁止登录的FTP用户列表, 仅提供一份FTP用户列表,是否禁止登录取决于主配置文件中的设置 主配置文件 /etc/vsftpd/vsftpd.conf ftp的典型消息

Linux中基于apache httpd的svn服务器搭建与配置

mod_dav_svn是apache连接svn的模块 yum install subversion mod_dav_svn httpd 配置文件简单说明, SVNParentPath 说明可以在指定的目录下,创建多个SVN项目 ----------------------- vim /etc/httpd/conf.d/subversion.conf LoadModule dav_svn_module     modules/mod_dav_svn.so LoadModule authz_svn_

httpd基于域名不同的虚拟主机配置

apache2.2.x版本 1. 注释主配置文件/etc/httpd/conf/httpd.conf中的 DoucumentRoot #DocumentRoot "/var/www/html" 2.把主配置文件NameVirtualHost前面注释去掉,添加本地主机名称 NameVirtualHost 192.168.136.131:80 3.如果注释了ServerName,或者默认为localahost:80或者127.0.0.1:80则会报错,但不影响虚拟主机的使用 "S