阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

httpd网页身份认证

443次阅读
没有评论

共计 4925 个字符,预计需要花费 13 分钟才能阅读完成。

本文目录:
1.1 htpasswd 命令
1.2 身份认证类基本指令
1.3 Require 指令
1.4 web 身份认证示例

httpd 对 web 身份认证的支持很丰富,提供的控制也非常细致。无疑,功能丰富意味着模块多。关于完整的模块,见http://httpd.apache.org/docs/2.4/mod/ ,其中 mod_authX_XXX 都是和认证有关的模块。要实现最基本的帐户认证访问控制,只需几个常见的模块即可:mod_authz_core,mod_authz_user,mod_authz_host…。

 

1.1 htpasswd 命令

htpasswd 用于为指定用户生成基于网页用户身份认证的密码,由 httpd-tools 软件包提供。支持 3 种加密算法:MD5、SHA 和系统上的 crypt()函数,不指定算法时,默认为 md5。

htpasswd [-c] [-m] [-D] passwdfile username
htpasswd -b [-c] [-m | -d | -p | -s ] [-D] passwdfile username password
htpasswd -n [-m | -d | -s | -p ] username
htpasswd -nb [-m | -d | -s | -p ] username password
选项说明:passwdfile:包含用户名及其密码的用户密码文件。如果使用了 "-c" 选项,则会创建或覆盖文件。不使用 "-n" 选项时必须指定 passwdfile 参数。username:为指定的用户名创建密码。如果该用户记录已存在,则更新。-c:创建用户密码文件 passwdfile,如果文件已经存在则会覆盖已存在的文件。不能和 "-n" 一起使用。-n:在标准输出中输出结果,而不是将其写入到用户密码文件中。该选项会忽略用户密码文件 passwdfile 参数。不能和 "-c" 选项一起使用。-m:使用 MD5 加密算法。默认。-d:使用 crypt()函数计算密码,不安全。-s:使用 SHA 加密算法。安全。-P:强制不加密密码,保持明文状态,不安全。-B:强制 bcrypt 加密密码,非常安全。-D:从用户密码文件中删除指定的用户及其密码。-b:使用批处理模式,即非交互模式,可以直接待加密的传递明文密码。password:指定要输入的明文密码。只能在批处理模式中使用,即和 "-b" 一起使用。

例如:

(1). 使用 ”-n” 选项直接将结果输出到标准输出而不创建 passwdfile。

[root@linuxidc ~]# htpasswd -n Jim
New password: 
Re-type new password: 
Jim:ZKHud9tziGucY

(2). 使用批处理模式直接传递密码。

[root@linuxidc ~]# htpasswd -nb Jim 123456 ; htpasswd -nb Jim 123456
Jim:r.BF8RVw56BOA

Jim:xXoNgOS8nN3LQ

发现密码完全是随机的。

(3). 创建用户密码文件 passwdfile。

[root@linuxidc ~]# htpasswd -cb Bobfile Bob 123456
[root@linuxidc ~]# cat Bobfile 
Bob:fvUxzB3kcnDPk

(4). 删除用户文件中的某用户。

[root@linuxidc ~]# htpasswd -D Bobfile Bob

(5). 使用 sha 和 md5 加密算法计算密码。

[root@linuxidc ~]# htpasswd -mb Bobfile Bob 123456
[root@linuxidc ~]# cat Bobfile 
Bob:$apr1$bllkodFt$GUmeb8hXngOAschs1SBgq0
[root@linuxidc ~]# htpasswd -sb Bobfile Bob 123456 
[root@linuxidc ~]# cat Bobfile  
Bob:{SHA}fEqNCco3Yq9h5ZUglD3CZJT4lBs=

1.2 身份认证类基本指令

AuthType:指定 web 身份认证的类型。有效值为 none、basic、digest 以及 form。通常最基本的认证使用的是文件认证,所以通常使用 basic。
AuthName:设置身份认证时的提示信息。
AuthUserFile file-path:指定 web 用户认证列表。由 htpasswd 命令生成。
AuthGroupFile file-path:指定组认证文件,文件中分组格式为 ”mygroup: Jim Bob Alice”。如果文件路径为相对路径,则相对于 ServerRoot

基于 basic 类型的认证就这么几个指令,最主要的还是 require 指令的使用。更多的认证方法见官方手册的 auth 类模块。

1.3 Require 指令

该指令只能放在 Directory 容器中,用于控制对目录的访问权限。它的主要功能是由 mod_authz_core 模块提供,但有些身份认证类模块也提供它额外的功能,这时它可以放在 < Directory >、< Files > 或 < Location > 容器中。

主要功能:

  • Require all granted
    无条件允许所有人访问该目录
  • Require all denied
    无条件拒绝所有人访问该目录
  • Require env env-var [env-var] …
    只有给定的环境变量 var-env 已经定义才允许访问该目录
  • Require method http-method [http-method] …
    只有给定的 HTTP 请求方法才允许访问该目录,如只允许 GET 才能访问
  • Require expr expression
    只有给定的表达式为 true 才允许访问该目录

身份认证类模块提供的 require 指令功能包括:

  • mod_authz_user 为 require 指令提供的功能:
    • Require user userid [userid] …:认证列表中只有指定的 userid 才能访问
    • Require valid-user:认证列表中的所有用户都可以访问
  • mod_authz_groupfile 为 require 指令提供的功能:
    • Require group group1 [group2] …:指定组内的用户都可以访问
  • 本地文件系统身份参考类:
    • Require file-owner:要求 web 用户名必须和请求文件的 uid 对应的 username 完全相同
    • Require file-group:要求 web 用户名必须为请求文件的 gid 组中的一员
  • mod_authz_host 为 require 指令提供的 ip 和 host 功能:
    • Require ip 192.168.1.104 192.168.1.205
    • Require ip 10.1
    • Require ip 10 172.20 192.168.2
    • Require ip 10.1.0.0/255.255.0.0
    • Require ip 10.1.0.0/16
    • Require host www.example.org
    • Require host example.org
    • Require host .net example.edu
    • Require local

可以在 require 指令后紧跟 not 关键字,表示取反。例如 ”require not group group1″、”require not local” 等。

还支持 require 条件容器,包括 < RequireAll >、< RequireAny > 和 < RequireNone >,当 require 指令没有写在任何 Require 容器中时,它们隐式包含在一个 < RequireAny > 容器中。

  • < RequireAll >:其内封装的 Require 指令必须全都不能失败,且至少有一个成功时,该容器成功。如果其内所有指令既不成功又不失败,则该容器中立。其余所有情况都会导致该容器失败。
  • < RequireAny >:其内封装的 Require 指令只要有一个成功,该容器就成功。如果其内所有指令既不成功又不失败,则该容器中立。其余所有情况 (即全部失败时) 都会导致该容器失败。
  • < RequireNone >:其内封装的 Require 指令只要有一个成功时该容器就失败,否则就中立。

1.4 web 身份认证示例

以最常见的 Basic 认证方式为例。支持基于用户的认证和基于组的认证。

1.4.1 基于用户的认证

先创建一个 web 用户及其密码列表文件。其内有 4 个用户:Jim、Bob、Alice 和 Tom。

[root@linuxidc ~]# htpasswd -cb /usr/local/apache/a_com.pass Jim 123456
[root@linuxidc ~]# htpasswd -b /usr/local/apache/a_com.pass Bob 123456
[root@linuxidc ~]# htpasswd -b /usr/local/apache/a_com.pass Alice 123456
[root@linuxidc ~]# htpasswd -b /usr/local/apache/a_com.pass Tom 123456

修改 httpd 配置文件,假设只有 www.a.com 中的 a.com 目录才需要认证且只有 Jim 和 Bob 可以认证,而其他目录以及 www.b.com 不需要认证,其他用户认证不通过。

<VirtualHost 192.168.100.14:80>
        ServerName www.a.com
        DocumentRoot /usr/local/apache/htdocs/a.com
        <Directory /usr/local/apache/htdocs/a.com>
                AllowOverride Authconfig
                AuthType Basic
                AuthName "please enter your name & passwd"
                AuthUserFile a_com.pass
                Require user Jim Bob
        </Directory>
</VirtualHost>

<VirtualHost 192.168.100.14:80>
        ServerName www.b.com
        DocumentRoot /usr/local/apache/htdocs/b.com
</VirtualHost>

此处 AuthUserFile 使用的相对路径,所以该文件必须放在 ServerRoot(我的测试环境 ServerRoot 为 /usr/local/apache)下。且 Require user 行可以替换为 ”Require valid-user” 表示 a_com.pass 中的所有用户都允许认证。

然后重启 httpd,并修改客户端 hosts 文件。

192.168.100.14 www.a.com www.b.com

再测试访问。

httpd 网页身份认证

1.4.2 基于组的认证

基于组的认证只需创建一个组文件,文件中包含的是组名和组中用户成员。

例如,将 Tom 和 Alice 加入到 allow 组,使它们也可以访问 a.com 目录。

[root@linuxidc ~]# echo 'allow:Tom Alice' >/usr/local/apache/auth_group

修改配置文件,例如:

<VirtualHost 192.168.100.14:80>
        ServerName www.a.com
        DocumentRoot /usr/local/apache/htdocs/a.com
        <Directory /usr/local/apache/htdocs/a.com>
                AllowOverride Authconfig
                AuthType Basic
                AuthName "please enter your name & passwd"
                AuthUserFile a_com.pass
                AuthGroupFile auth_group
                Require user Jim Bob
                Require group allow
        </Directory>
</VirtualHost>

<VirtualHost 192.168.100.14:80>
        ServerName www.b.com
        DocumentRoot /usr/local/apache/htdocs/b.com
</VirtualHost>

再重启进行测试。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/147309.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4925字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7985138
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛 NAS-11:咪咕视频订阅部署全攻略 前言 在家庭影音系统里,NAS 不仅是存储中心,更是内容...