Linux从青铜到王者-apache的认证授权和访问控制

大家好,我是互联网老辛,这是我参与更文挑战的第22天, 活动详情查看:更文挑战

前言

上篇文章我们探讨了虚拟主机,我们可以通过ip或者ip+端口号或者域名访问一个网站,但有的网站我们不希望别人访问或者有权限的人才能访问,比如在公司内网的网站,我们只允许与这个项目有关的人访问,这时候我们就会用到访问控制。

在工作中你应该也遇到过类似的场景,当你点击某个连接时,浏览器会弹出一个身份验证的对话框,要求输入账号及密码,如果你没有账号和密码,就无法继续浏览了。这其实就是www服务器的用户授权和访问控制在发挥作用

今天我们就来聊聊apache的认证授权和访问控制。

ip访问控制

在apache访问目录权限时,经常看到以下配置:

<Directory "/www">
    Order Allow,Deny
</Directory>
复制代码

,and .htaccess 这些标签里也经常见到

这个是什么意思呢? 我们来做一下解释:

目录控制语句以<Directory 目录名>开头;以结束。
先允许后拒绝,默认拒绝所有:Order allow,deny
先拒绝后允许,默认允许所有:Order deny,allow
AllowOverride None:不允许覆盖,即不允许从根目录向子目录覆盖。即默认情况下拒绝从根目录下向子目录访
问,如果要看根目录下的一个子目录,必须先打开子目录的访问权限。
Order allow,deny:访问控制的顺序,先匹配允许,再匹配拒绝,默认拒绝。
Allow from all:表示允许任何地址访问。
Allow from 172.18.49.0/24
Deny from 172.18.49.102

关于用户身份认证授权,我们来看下面的表格:

用户身份认证授权

主要参数
参数 作用
Authtype 是认证类型 Basic apache自带的基本认证
Authname 认证名字,是提示你输入密码的对话框的提示语
Authuserfile 是存放认证用户的文件
require user 用户名 允许指定的一个或多个用户访问,如果认证文件里面还有其他用户,还是不能访问
require valid-user 所有认证文件里面的用户都可以访问
require group 组名 授权给一个组,较少用

关于配置文件生效顺序问题,我们总结为几点:

1.以最后的顺序为准
Order Deny,Allow
Deny from all
Allow from example.org 这个域名可以访问
2.以默认为准
<Directory”/www”>
Order Allow,Deny

没有具体allow deny 指令,默认禁止所有访问
3.以显示为准
Order deny,allow
deny from all #全部都不能通行

注意:
因版本不同,旧版apache(2.2)
Apache2.2版本中,访问控制是基于客户端的主机名、IP地址以及客户端请求中的其他特征。
使用Order(排序), Allow(允许), Deny(拒绝),Satisfy(满足)指令来实现。
在Apache2.4以后的版本中,使用mod_authz_host这个新的模块,来实现访问控制,其他授权检查也以同样的方式来完成。旧的访问控制语句应当被新的授权认证机制所取代

配置案例
a. 创建访问用户及密码
[root@gaosh-1 ~]# useradd gaosh   #创建一个用户
[root@gaosh-1 ~]# htpasswd -c /etc/httpd/webpasswd gaosh
New password: 
Re-type new password: 
Adding password for user gaosh
[root@gaosh-1 ~]# cat /etc/httpd/webpasswd 
gaosh:rHBrfxVHhn4F6
[root@gaosh-1 ~]# 

复制代码

注意: 只有在第一次使用的时候才用-c参数

b. 配置文件修改

[root@gaosh-1 ~]# vim /etc/httpd/conf/httpd.conf

<VirtualHost 192.168.1.22:80>
    DocumentRoot /var/www/html/zmgaosh22
    ServerName www.zmgaosh22.com
    <Directory /var/www/html/zmgaosh22>
    AuthType Basic
    AuthName Password
    AuthUserFile /etc/httpd/webpasswd
    require user gaosh
  </Directory>

</VirtualHost>
复制代码
c. 重启服务

[root@gaosh-1 ~]# service httpd restart

d. 测试

在浏览器输入网址进行测试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

这样是不是可以看到,当我们登陆网站的时候,必须输入用户名和密码才可以访问,你学会了吗?

image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享