Apache 服务器访问控制配置
基于IP方式访问控制
先看两个实例,它们主要用于限制某些目录的浏览、访问权限,在主配置文件 /etc/httpd/conf/httpd.conf 设置,为虚拟主机设置时,则在虚拟主机的配置文件中设置
# 实例1 限制所有以 P 开头的目录不能访问
<DirectoryMatch /P>
Order deny,allow
Deny from all
</DirectoryMatch>
;
# 实例2 限制文档目录的访问权限
<Directory "/var/www/html">
Order allow,deny
Allow from all
</Directory>
【Allow from】
允许访问的主机,可以是 all(所有主机)、完整或部分的域名(localdomain.test)、完整IP地址(192.168.1.111)、网络和子网掩码(192.168.1.0/24)
【Deny from】
拒绝访问的主机,可以是 all(所有主机)、完整或部分的域名(localdomain.test)、完整IP地址(192.168.1.111)、网络和子网掩码(192.168.1.0/24)
【Order】
设置 allow 和 deny 的先后顺序,比如 Order allow,deny 表示先 Allow 之后再 Deny,例:
# 例1:
Order allow,deny # 本来只有172.25.254.1主机可以访问,
Allow from 172.25.254.1 # 但Order顺序是 allow,deny,最后
Deny from all # 还是拒绝所有主机访问权限
# 例2:
Order deny,all # 先deny,再allow,本来拒绝所有主机访问
Allow from 172.25.254.1 # 但最后是只允许 172.25.254.1 访问
Deny from all
# 例3:
Order allow,deny # 先allow,再deny,本来允许所有主机访问
Allow from all # 但最后是只拒绝172.25.254.1访问
Deny from 172.25.254.1
## 本例所有内容适用我自己的试验环境,写在配置的默认虚拟主机配置文件 /etc/httpd/conf.d/a_default.conf中
基于用户身份认证控制
Apache 中的用户身份认证,通过 htpasswd 命令执行
**创建用户和密码**
[[email protected] ~] # htpasswd 参数 密码文件名 用户名 # 该命令在哪个路径使用,密码文件就创建在哪里
# 参数:
-b 批处理方式创建用户,htpasswd不会提示输入用户密码,要在命令行输入可见密码,并不安全
-c 新创建一个密码文件
-D 删除一个用户
-m 采用 MD5 加密
-d 采用 CRYPT 加密
-p 采用明文格式密码
-s 采用 SHA 加密
[[email protected] conf.d] # htpasswd -cm http_userlist admin # 创建登陆http的用户admin,密码文件http_userlist
[[email protected] ~] # htpasswd -m http_userlist admin1 # 密码文件存在后,只需指定加密方式,不用 -c
**认证方式**
[[email protected] conf.d] # vim /etc/httpd/conf.d/a_default.conf
<Directory "/var/www/html">
AuthUserFile /etc/httpd/conf.d/http_userlist # 指明密码文件存放路径,htpasswd命令执行时是在该目录下
AuthName "input username and password" # 认证提示
AuthType basic # 基础验证方式
Require user admin # 允许密码文件中的admin访问
#Require valid-user # 允许密码文件中所有用户访问
</Directory>
[[email protected] ~] # systemctl restart httpd # 重启服务
## 验证时清除浏览器缓存
-
客户端测试
1. ctrl + shift + delete 先清除浏览器之前测试的缓存 2. ip地址栏输入www.westos.com
会遇到该界面提示输入用户名密码,即在服务端 htpasswd 密码文件中的用户,且是配置文件中 Require user admin 这个admin用户
验证通过后即可访问 www.westos.com