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
    

    Apache 服务器访问控制配置
    会遇到该界面提示输入用户名密码,即在服务端 htpasswd 密码文件中的用户,且是配置文件中 Require user admin 这个admin用户
    Apache 服务器访问控制配置
    验证通过后即可访问 www.westos.com
    Apache 服务器访问控制配置