10.6 Apache的访问控制

Apache可以基于源主机名、源IP地址或源主机上的浏览器特征等信息对网站上的资源进行访问控制。它通过Allow指令允许某个主机访问服务器上的网站资源,通过Deny指令实现禁止访问。在允许或禁止访问网站资源时,还会用到Order指令,这个指令用来定义Allow或Deny指令起作用的顺序,其匹配原则是按照顺序进行匹配,若匹配成功则执行后面的默认指令。比如“Order Allow, Deny”表示先将源主机与允许规则进行匹配,若匹配成功则允许访问请求,反之则拒绝访问请求。

第1步:先在服务器上的网站数据目录中新建一个子目录,并在这个子目录中创建一个包含Successful单词的首页文件。

  1. [root@linuxprobe ~]# mkdir /var/www/html/server
  2. [root@linuxprobe ~]# echo "Successful" > /var/www/html/server/index.html

第2步:打开httpd服务的配置文件,在第129行后面添加下述规则来限制源主机的访问。这段规则的含义是允许使用Firefox浏览器的主机访问服务器上的首页文件,除此之外的所有请求都将被拒绝。使用Firefox浏览器的访问效果如图10-18所示。

  1. [root@linuxprobe ~]# vim /etc/httpd/conf/httpd.conf
  2. ………………省略部分输出信息………………
  3. 129 <Directory "/var/www/html/server">
  4. 130 SetEnvIf User-Agent "Firefox" ff=1
  5. 131 Order allow,deny
  6. 132 Allow from env=ff
  7. 133 </Directory>
  8. ………………省略部分输出信息………………
  9. [root@linuxprobe ~]# systemctl restart httpd
  10. [root@linuxprobe ~]# firefox

访问成功

图10-18 火狐浏览器成功访问

除了匹配源主机的浏览器特征之外,还可以通过匹配源主机的IP地址进行访问控制。例如,我们只允许IP地址为192.168.10.20的主机访问网站资源,那么就可以在httpd服务配置文件的第129行后面添加下述规则。这样在重启httpd服务程序后再用本机(即服务器,其IP地址为192.168.10.10)来访问网站的首页面时就会提示访问被拒绝了,如图10-19所示。

  1. [root@linuxprobe ~]# vim /etc/httpd/conf/httpd.conf
  2. ………………省略部分输出信息………………
  3. 129 <Directory "/var/www/html/server">
  4. 130 Order allow,deny
  5. 131 Allow from 192.168.10.20
  6. 132 </Directory>
  7. ………………省略部分输出信息………………
  8. [root@linuxprobe ~]# systemctl restart httpd
  9. [root@linuxprobe ~]# firefox

访问失败图10-19 因IP地址不符合要求而被拒绝访问

出现问题?大胆提问!

因读者们硬件不同或操作错误都可能导致实验配置出错,请耐心再仔细看看操作步骤吧,不要气馁~

Linux技术交流请加A群:560843(),B群:340829(推荐),C群:463590(推荐),点此查看全国群

*本群特色:通过口令验证确保每一个群员都是《Linux就该这么学》的读者,答疑更有针对性,不定期免费领取定制礼品。

本章节的复习作业(答案就在问题的下一行哦,用鼠标选中即可看到的~)

1.什么是Web网络服务?

答:一种允许用户通过浏览器访问到互联网中各种资源的服务。

2.相较于Nginx服务程序,Apache服务程序最大的优势是什么?

答:Apache服务程序具备跨平台特性、安全性,而且拥有快速、可靠、简单的API扩展。

3.httpd服务程序没有检查到首页文件,会提示报错信息吗?

答:不会,httpd服务在未找到网站首页文件时,会向访客显示一个默认页面。

4.简述Apache服务主配置文件中全局配置参数、区域配置参数和注释信息的作用。

答:全局配置参数是一种全局性的配置参数,可作用于对所有的子站点;区域配置参数则是单独针对于每个独立的子站点进行设置的;而注释信息一般是对服务程序的功能或某一行参数进行介绍。

5.简述SELinux服务的作用。

答:为了让各个服务进程都受到约束,使其仅获取到本应获取的资源。

6.在使用getenforce命令查看SELinux服务模式时,发现其配置模式为permissive,这代表强制开启模式吗?

答:不是,强制开启模式是enforcing,而permissive是只发出警告而不强制拦截的模式。

7.在使用semanage命令修改了文件上应用的SELinux安全上下文后,还需要执行什么命令才可以让更改立即生效?

答:还需要restorecon命令即可让新的SELinux安全上下文参数立即生效。

8.要想查询并过滤出所有与HTTP协议相关的SELinux域策略有哪些,应该怎么做呢?

答:可以结合管道符来实现,即执行getsebool -a | grep http命令。

9. Apache服务程序可以基于哪些资源来创建虚拟主机网站呢?

答:可以基于IP地址、主机名(域名)或者端口号创建虚拟主机网站。

10.相对于基于IP地址和基于主机名(域名)配置的虚拟主机网站来说,使用端口号配置虚拟主机网站有哪些特点?

答:在使用端口号来配置虚拟主机网站时,必须要考虑到SELinux域对httpd服务程序所用端口号的控制策略,还要在httpd服务程序的主配置文件中使用Listen参数来开启要监听的端口号。

本文原创地址:https://www.linuxprobe.com/chapter-10.html   编辑:刘遄,审核员:暂无

为您推荐一些与本文相关的文章:

转载必需保留本文链接:https://www.linuxprobe.com/chapter-10.html

本文依据CC-BY-NC-SA 3.0协议发布,竭诚为读者提供Linux视频教程、Linux学习资料以及红帽考试资料等优质学习资源。