Apache 之二 - 用户认证
关于 Apache 安装部分,请参考:在 ubuntu 22.04 中,通过源码编译安装 LAMP 中的 Apache 服务
关于 Apache 虚拟主机的配置,请参考:Apache 之一 - 虚拟主机
注意:以下操作都在 root 用户下执行
用户认证的目的
Apache配置用户认证的主要目的是确保网站内容或特定目录只能被授权用户访问,提高网站的安全性和保护敏感信息。通过用户认证,网站管理员可以限制对网站内容的访问,只允许经过身份验证的用户访问受保护的区域。
用户认证的作用包括:
- 保护敏感信息: 用户认证可以确保只有经过授权的用户才能访问包含敏感信息的页面或目录,防止未经授权的访问。
- 限制访问权限: 管理员可以根据用户的身份和权限设置不同的访问级别,例如管理员、普通用户等,从而控制其访问权限。
- 保护网站内容: 对于需要保护的网站内容,如会员信息、财务数据等,用户认证可以增加一层安全性,防止未经授权的访问。
- 监控访问记录: 用户认证可以记录每个用户的访问记录,包括登录时间、IP地址等信息,有助于监控和审计用户的访问行为。
总的来说,Apache配置用户认证可以帮助网站管理员控制和管理网站的访问权限,保护敏感信息,提高网站的安全性和可靠性。
用户认证的配置
1.编辑 apache 虚拟主机配置文件 /usr/local/apache2/conf/extra/httpd-vhost.conf
,修改 基于 80 端口的配置
的虚拟主机配置,如下:
1 | ## 基于单域名的虚拟主机配置 |
Options 参数说明:
参数 | 说明 | 备注 |
---|---|---|
Indexes | 允许在目录中显示文件列表,如果目录下没有默认的索引文件(如index.html)时,会显示目录的内容列表。 | - |
FollowSymLinks | 允许Apache服务器在处理符号链接时能够跟随符号链接指向的目标文件或目录。 | - |
AllowOveried 参数说明:
AllowOverride参数就是指明Apache服务器是否去找.htacess文件作为配置文件,如果设置为none,那么服务器将忽略.htacess文件,如果设置为All,那么所有在.htaccess文件里有的指令都将被重写。
参数 | 说明 | 备注 |
---|---|---|
None | 禁止在 .htaccess 文件中覆盖任何指令。 | - |
all | 表示允许覆盖所有配置选项。 | - |
authconfig | 允许在 .htaccess 文件中设置认证和授权相关的指令,如 AuthType 、 AuthName 、 Require 等。 | - |
FleInfo | 允许在 .htaccess 文件中设置文件控制指令,如 ErrorDocument 、 AddType 、 AddHandler 等。 | - |
Indexes | 允许在 .htaccess 文件中控制目录列表的显示,如 Options Indexes。 | - |
Limit | 允许在 .htaccess 文件中设置访问控制指令,如 Order 、 Deny 、 Allow 等。 | - |
2.在虚拟主机配置的网站目录 DocumentRoot /data/websites/apache/site03
下新建 .htaccess
文件,内容为:
1 | cat << 'EOF' > /data/websites/apache/site03/.htaccess |
.htaccess 配置参数说明:
- AuthName:定义提示信息,用户访问时提示信息会出现在认证的对话框中;
- AuthType:定义认证类型,在HTTP1.0中,只有一种认证类型:basic。在HTTP1.1中有几种认证类型,如:MD5;
- AuthUserFile:定义包含用户名和密码的文本文件,每行一对;
- AuthGroupFile:定义包含用户组和组成员的文本文件。组成员之间用空格分开,如:group1:user1 user2;
- require命令:定义哪些用户或组才能被授权访问。如:
- require user user1 user2 (只有用户user1和user2可以访问)
- requires groups group1 (只有group1中的成员可以访问)
- require valid-user (在AuthUserFile指定的文件中的所有用户都可以访问)
3.使用 apache 自带的 htpasswd
命令生成用户认证文件
1 | root@leazhi-ubuntu2204:~# htpasswd -bc /data/websites/apache/.site03.passwd linuser chekir |
注意: 这里生成的用户认证文件一定要和上面 .htaccess
文件里面的 AuthUserFile
配置路径一致,包括文件名也一样!
htpasswd 常用参数说明:
参数 | 说明 | 备注 |
---|---|---|
-c | 创建一个新的配置文件 | |
-b | 在创建用户的同时必须在用户名后面指定密码,而不是根据提示输入密码 | - |
-m | 强制使用 MD5 加密密码(默认的) | - |
-B | 强制使用 bcrypt 加密密码(非常安全) | - |
-C | 设置用于bcrypt算法的计算时间(越高越安全,但速度越慢,默认值:5,有效值:4到17) | - |
-D | 删除指定用户 | - |
-v | 验证指定用户的密码 | - |
4.执行命令 apachectl -t
测试 apache 配置是否有误,在没报错的情况下也执行下 apachectl restart
重启 apache 服务:
1 | apachectl -t && apachectl restart |
5.打开浏览器,输入配置的域名进行访问,如下: