Web服务基础四之Apache访问控制

本文涉及的产品
访问控制,不限时长
简介:

基于客户端地址的访问控制

通过对客户端IP地址的限制可以增强服务器的安全性,客户端IP地址限制只能针对服务器上的某个目录进行设置,大致格式如下:

1
2
3
4
5
317 <Directory  "/var/www/html" >
338     AllowOverride None
343     Order allow,deny
344     Allow from all
346 < /Directory >

<Directory "/var/www/html">...</Directory>表示对站点的主目录设置,“Order allow,deny”表示默认拒绝所有客户端访问,然后再配合使用“Allow from”语句指定允许访问的客户端。如果是要设置拒绝访问的客户端,那么就得反过来,先用“Order deny,allow”允许所有客户端访问,然后再配合使用“deny from”拒绝指定的客户端。设置允许访问的地址可以是多个,地址之间用空格间隔,如deny from 10.15.72.73 10.16.72.83

如不允许Client访问Apache Server:

Apache server ip:10.15.72.38   Client:10.15.72.73

当前访问Apache Server:

wKioL1Lcutbw4LB_AACJrQbTEFk033.jpg

修改Apache不允许访问:

1
2
3
4
5
6
7
8
9
10
11
[root@justin html] # vim /etc/httpd/conf/httpd.conf
  317 <Directory  "/var/www/html" >
  331     Options Indexes FollowSymLinks
  338     AllowOverride None
  343     Order deny,allow
  344     Deny from 10.15.72.73
  346 < /Directory >
[root@justin html] # service httpd restart
停止 httpd:                                               [确定]
正在启动 httpd:                                           [确定]
[root@justin html] #

wKioL1Lcu--AiXw1AAXfLwLAYuw603.jpg


Client无法访问Apache Server

对虚拟目录设置访问控制

如对bbs的虚拟目录/virdir设置,设置前:

wKiom1LcwgijAo88AACanhmxv6o403.jpg

1
2
3
4
5
6
7
8
9
10
11
12
[root@justin html] # vim /etc/httpd/conf/httpd.conf
1010 NameVirtualHost 10.15.72.38:80
1011 <VirtualHost 10.15.72.38:80>
1012     DocumentRoot  /var/www/html/bbs
1013     ServerName bbs.justin.com
1014     Alias  /virdir  "/home/www/virdir"
1015     <Directory  "/home/www/virdir" >
1016  #   order allow,deny
1017     order deny,allow
1018     deny from 10.15.72.73
1019     < /Directory >
1020 < /VirtualHost >

设置后:

wKioL1LcwiOQAGxeAAD0sdOFSZk497.jpg


基于用户的访问控制

在实际应用中,我们大都是希望通过对用户进行身份验证从而来进行访问控制,Apache支持的身份验证方法有基本认证(Basic)和摘要认证(Digest)两种,应用较多的同样是基本认证,以下介绍基本认证。

基于用户的访问控制也是只能针对服务器上的某个目录进行设置,设置内容必须包含在<Directory 目录> …… </Directory>的区域中。

如设置只允许justin1、justin2可以访问apache主目录,其他用户无法访问:

1、修改主配置文件中MAIN SERVER参数

1
2
3
4
5
6
7
8
9
10
317 <Directory  "/var/www/html" >
331     Options Indexes FollowSymLinks
338     AllowOverride None
343     Order allow,deny
344     allow from all
345     AuthName  "html"
346     AuthType Basic
347     AuthUserFile  /etc/httpd/conf/ .htpasswd
348     require valid-user
349 < /Directory >

   AuthName:定义受保护的领域名称,客户端访问时在弹出的认证登陆对话框中将显示该名称。

   AuthType:设置认证的类型,Basic为基本认证

   AuthUserFile:设置用于保存用户帐号、密码的认证文件路径。(文件可以自由定义,但通常都是保存于/etc/httpd/conf目录中,并采           用.htpasswd的文件名,文件名前面加.表示隐藏文件。)

    require valid-user:授权给认证文件中的所有有效用户。这一项也可以写成“require user [用户名]”,指定一个具体的用户,这样无论认证文件中如何定义,也只有该用户才可以访问。

2、添加认证用户

这个认证用户与系统用户没有任何关系,不需要先创建相应的系统用户,可以直接来添加认证用户。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@justin html] # htpasswd -cm /etc/httpd/conf/.htpasswd justin1
New password:
Re- type  new password:
Adding password  for  user justin1
[root@justin html] # htpasswd -m /etc/httpd/conf/.htpasswd justin2
New password:
Re- type  new password:
Adding password  for  user justin2
[root@justin html] # cat /etc/httpd/conf/.htpasswd
justin1:$apr1$Zii8HQ7.$0EBdyJmQixiLifXuRDk7O/
justin2:$apr1$uUzIxR4R$e8vtC61eUdURYOY3F6rlj.
[root@justin html] # service httpd restart
停止 httpd:                                               [确定]
正在启动 httpd:                                           [确定]
[root@justin html] #

-c:创建用户认证文件   -m:MD5加密 ;因为创建justin1时候已经生成了认证文件/.htpasswd,后面就不需要在加参数,只需要把用户写入认证文件即可。

3、访问Apache服务

wKioL1Lcy3rjOcQdAAGysccGoSA243.jpgwKiom1Lcy57jARqjAACFAdqAGn0209.jpg

上面定义的AuthName "html"就显示在上图中了

对虚拟目录设置访问控制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@justin html] # vim /etc/httpd/conf/httpd.conf
1013 NameVirtualHost 10.15.72.38:80
1014 <VirtualHost 10.15.72.38:80>
1015     DocumentRoot  /var/www/html/bbs
1016     ServerName bbs.justin.com
1017     Alias  /virdir  "/home/www/virdir"
1018     <Directory  "/home/www/virdir" >
1019     AuthName  "virdir"
1020     AuthType Basic
1021     AuthUserFile  /etc/httpd/conf/ .htpasswd
1022     require user justin2
1023     < /Directory >
1024 < /VirtualHost >
[root@justin html] # service httpd restart
停止 httpd:                                               [确定]
正在启动 httpd:                                           [确定]
[root@justin html] #

访问Apache服务,这时候输入http://10.15.72.38/virdir会弹出身份认证对话框,此时输入据说justin1是无法访问,输入justin2就可以正常访问




本文转自 justin_peng 51CTO博客,原文链接:http://blog.51cto.com/ityunwei2017/1353149,如需转载请自行联系原作者

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
目录
打赏
0
0
0
0
265
分享
相关文章
FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
本文介绍了如何使用FastAPI和Selenium搭建RESTful接口,访问免版权图片网站Pixabay并采集图片及其描述信息。通过配置代理IP、User-Agent和Cookie,提高爬虫的稳定性和防封禁能力。环境依赖包括FastAPI、Uvicorn和Selenium等库。代码示例展示了完整的实现过程,涵盖代理设置、浏览器模拟及数据提取,并提供了详细的中文注释。适用于需要高效、稳定的Web数据抓取服务的开发者。
61 15
FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
Web服务
【10月更文挑战第18天】Web服务
82 9
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
43 7
使用 Apifox、Postman 测试 Dubbo 服务,Apache Dubbo OpenAPI 即将发布
Apache Dubbo 3.3.3(即将发布)实现了与 OpenAPI 的深度集成,通过与 OpenAPI 的深度集成,用户能够体验到从文档生成到接口调试、测试和优化的全流程自动化支持。不论是减少手动工作量、提升开发效率,还是支持多语言和多环境,Dubbo 3.3.3 都展现了其对开发者体验的极大关注。结合强大的 Mock 数据生成和自动化测试能力,这一版本为开发者提供了极具竞争力的服务治理解决方案。如果你正在寻找高效、易用的微服务框架,Dubbo 3.3.3 将是你不容错过的选择。
|
4月前
|
Web服务是通过标准化的通信协议和数据格式
【10月更文挑战第18天】Web服务是通过标准化的通信协议和数据格式
211 69
|
3月前
|
Go Web服务中如何优雅平滑重启?
在生产环境中,服务升级时如何确保不中断当前请求并应用新代码是一个挑战。本文介绍了如何使用 Go 语言的 `endless` 包实现服务的优雅重启,确保在不停止服务的情况下完成无缝升级。通过示例代码和测试步骤,详细展示了 `endless` 包的工作原理和实际应用。
83 3
|
3月前
|
Go Web服务中如何优雅关机?
在构建 Web 服务时,优雅关机是一个关键的技术点,它确保服务关闭时所有正在处理的请求都能顺利完成。本文通过一个简单的 Go 语言示例,展示了如何使用 Gin 框架实现优雅关机。通过捕获系统信号和使用 `http.Server` 的 `Shutdown` 方法,我们可以在服务关闭前等待所有请求处理完毕,从而提升用户体验,避免数据丢失或不一致。
48 1
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。
|
4月前
|
定义Web服务
【10月更文挑战第18天】定义Web服务
97 12
Web Services 服务 是不是过时了?创建 Web Services 服务实例
本文讨论了WebServices(基于SOAP协议)与WebAPI(基于RESTful)在开发中的应用,回顾了WebServices的历史特点,比较了两者在技术栈、轻量化和适用场景的差异,并分享了使用VB.net开发WebServices的具体配置步骤和疑问。
122 0

热门文章

最新文章

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等