httpd配置(一)-- 基于用户的访问控制的配置

本文涉及的产品
访问控制,不限时长
简介:


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


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

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

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

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

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

1
2
3
     [root@1inux html]#  mkdir  /vhost/www/html/net
     [root@1inux html]#  echo  "<h1>This is a basic Page</h1>"  > /vhost/www/html/net/index.html
     [root@1inux html]#

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

1
2
3
4
5
6
7
创建虚拟账户需要用到htpasswd命令,具体参数如下:
      htpasswd命令用于维护用户认证文件
             htpasswd [ -c ] [ -m ] [ -D ] passwdfile username
                          -c: 添加第一用户时创建此文件;
                          -m: 以md5格式加密用户密码存放;
                          -s: 以sha格式加密用户密码存放;
                          -D:删除指定用户


1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@1inux html]#  mkdir  /etc/httpd/users
[root@1inux html]# htpasswd -m -c /etc/httpd/users/.htpasswd sina     //第一次需要用-c 创建文件 
New password:          //输入认证时的密码
Re-type  new  password: 
Adding password  for  user sina
[root@1inux html]# htpasswd -m /etc/httpd/users/.htpasswd baidu     //创建第二个虚拟用户
New password: 
Re-type  new  password: 
Adding password  for  user baidu
[root@1inux html]# htpasswd -m /etc/httpd/users/.htpasswd ifeng
New password: 
Re-type  new  password: 
Adding password  for  user ifeng
[root@1inux html]#

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

1
2
3
4
5
6
[root@1inux html]# ls -l /etc/httpd/users/.htpasswd 
-rw-r--r--. 1 root root 131 Mar 29 04:58 /etc/httpd/users/.htpasswd
[root@1inux html]#  chmod  600 /etc/httpd/users/.htpasswd
[root@1inux html]# ls -l /etc/httpd/users/.htpasswd 
-rw-------. 1 root root 131 Mar 29 04:58 /etc/httpd/users/.htpasswd
[root@1inux html]#

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

1
2
3
4
5
6
7
8
<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目录时,提示要输入用户名密码验证完成才能访问,如下图
    wKiom1VBAoeDu7x9AAHrUvKPjwo496.jpg

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

wKioL1VBBUfisPwkAAHzx5cFbLk626.jpg

wKiom1VBA9-jSP4pAAEvuusM0MU819.jpg

 

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


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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@1inux ~]#  mkdir  /vhost/www/html/{news,blog}
[root@1inux ~]# ls /vhost/www/html/
al  blog  in.html  net  news
[root@1inux ~]#  echo  "<h1>This is a news page </h1>"  > /vhost/www/html/news/index.html
[root@1inux ~]#  echo  "<h1>This is a blog page </h1>"  > /vhost/www/html/blog/index.html
 
 
[root@1inux html]# htpasswd -m /etc/httpd/users/.htpasswd sina.blog
New password: 
Re-type  new  password: 
Adding password  for  user sina.blog
[root@1inux 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/
[root@1inux html]#

    4.2、创建用户组文件

        组文件格式:

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

1
2
3
4
5
[root@1inux html]# vim /etc/httpd/users/.htgroup
[root@1inux html]# cat /etc/httpd/users/.htgroup
news: ifeng 126 sina
blog: 51cto sina.blog
[root@1inux html]#

 

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#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、重载配置文件

1
2
3
[root@1inux ~]# service httpd reload
Reloading httpd: 
[root@1inux ~]#


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

wKiom1VBDUHChIXBAAJ7kZdzR_M235.jpg

wKioL1VBDk2TTe4WAAGzFX9FiLk626.jpg


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

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

wKioL1VBEGKCtUOFAAJ8ff05p3I475.jpg

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

wKiom1VBD2bzI0zXAAGvCFu4Kt8605.jpg


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


本文转自 1inux 51CTO博客,原文链接:http://blog.51cto.com/1inux/1640556

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
29天前
|
网络虚拟化 数据安全/隐私保护 数据中心
对比了思科和华为网络设备的基本配置、接口配置、VLAN配置、路由配置、访问控制列表配置及其他重要命令
本文对比了思科和华为网络设备的基本配置、接口配置、VLAN配置、路由配置、访问控制列表配置及其他重要命令,帮助网络工程师更好地理解和使用这两个品牌的产品。通过详细对比,展示了两者的相似之处和差异,强调了持续学习的重要性。
36 2
|
2月前
|
网络协议 网络虚拟化 数据安全/隐私保护
访问控制列表(ACL)配置
访问控制列表(ACL)配置
访问控制列表(ACL)配置
|
2月前
|
安全 Java 数据安全/隐私保护
如何配置 Java 安全管理器来避免访问控制异常
配置Java安全管理器以防止访问控制异常,需在启动JVM时通过 `-Djava.security.manager` 参数启用,并设置安全策略文件,定义权限规则,限制代码执行操作,确保应用安全。
133 1
|
3月前
|
Apache 数据安全/隐私保护
HAProxy的高级配置选项-ACL篇之基于源地址访问控制案例
这篇文章介绍了HAProxy的ACL(访问控制列表)功能,特别是如何基于源地址进行访问控制的高级配置选项,并通过实战案例展示了如何配置ACL规则以允许或阻止特定IP地址或IP范围的访问。
60 7
HAProxy的高级配置选项-ACL篇之基于源地址访问控制案例
|
3月前
|
Apache 数据安全/隐私保护
HAProxy的高级配置选项-ACL篇之基于策略的访问控制
这篇文章介绍了HAProxy的高级配置选项,特别是如何使用ACL(访问控制列表)进行基于策略的访问控制,通过实战案例展示了如何配置HAProxy以允许或拒绝来自特定源地址的访问。
73 6
HAProxy的高级配置选项-ACL篇之基于策略的访问控制
ly~
|
3月前
|
消息中间件 搜索推荐 大数据
一般情况下在 RocketMQ 中添加 access key 的步骤: 一、确定配置文件位置 RocketMQ 的配置文件通常位于安装目录下的 conf 文件夹中。你需要找到 broker.conf 或相关的配置文件。 二、编辑配置文件 打开配置文件,查找与 ACL(访问控制列表)相关的配置部分。 在配置文件中添加以下内容:
大数据广泛应用于商业、金融、医疗和政府等多个领域。在商业上,它支持精准营销、客户细分及流失预测,并优化供应链管理;金融领域则利用大数据进行风险评估、市场预测及欺诈检测;医疗行业通过大数据预测疾病、提供个性化治疗;政府运用大数据进行城市规划和公共安全管理;工业领域则借助大数据进行设备维护、故障预测及质量控制。
ly~
157 2
|
3月前
|
NoSQL 关系型数据库 MySQL
HAProxy的高级配置选项-haproxy的四层负载及访问控制案例
这篇文章介绍了HAProxy的高级配置选项,特别是如何进行四层负载均衡和基于策略的访问控制。通过实战案例,展示了如何配置HAProxy以实现对特定IP地址的访问控制,以及如何通过四层负载均衡将流量分配到后端的MySQL和Redis服务。
165 6
|
4月前
|
安全 Nacos 数据库
【技术安全大揭秘】Nacos暴露公网后被非法访问?!6大安全加固秘籍,手把手教你如何保护数据库免遭恶意篡改,打造坚不可摧的微服务注册与配置中心!从限制公网访问到启用访问控制,全方位解析如何构建安全防护体系,让您从此告别数据安全风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其公网暴露可能引发数据库被非法访问甚至篡改的安全隐患。本文剖析此问题并提供解决方案,包括限制公网访问、启用HTTPS、加强数据库安全、配置访问控制及监控等,帮助开发者确保服务安全稳定运行。
414 0
|
4月前
|
应用服务中间件 nginx 数据安全/隐私保护
nginx配置源IP访问控制
nginx配置源IP访问控制
|
7月前
|
网络虚拟化 数据安全/隐私保护 数据中心
【专栏】对比了思科与华为网络设备的基本配置、接口、VLAN、路由、访问控制列表及其它关键命令
【4月更文挑战第28天】本文对比了思科与华为网络设备的基本配置、接口、VLAN、路由、访问控制列表及其它关键命令。尽管两者在很多操作上相似,如设备命名(思科:`hostname`,华为:`sysname`)、查看版本信息(思科:`show version`,华为:`display version`),但在某些方面存在差异,如接口速率设置(两者都使用`speed`和`duplex`,但命令结构略有不同)和VLAN配置(华为的`port hybrid`命令)。
518 0