CentOS 7 中httpd服务的用户限制详解
Apache HTTP Server 之所以受到众多企业的青睐,得益于其代码开源、跨平台、功能模块haul、可灵活定制等诸多优点,其不仅性能稳定,在安全性方面的表现也十分出色。
为了更好的控制对网站资源的访问,可以为特定的网站目录添加访问授权。授权的方式有两种:客户机地址限制,用户授权限制。
以下所有操作必须基于httpd服务的环境下,搭建httpd服务可以参考博文CentOS 7 利用Apache搭建Web网站服务
我们来详细了解如何实现web服务器对用户的限制
客户机地址限制
通过Require配置项,可以根据主机的主机名或IP地址来决定是否允许客户端访问。在httpd服务器的主配置文件的<Location>、<Directory>、<Files>、<Limit>配置段中均可使用Require配置项来控制客户端的访问。
限制策略的常用格式:
比如:
[root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf //修改httpd服务的主配置文件 ………… //省略部分内容 <Directory "/usr/local/httpd/htdocs"> ………… //省略部分内容 Require all granted //允许所有客户机访问 </Directory>
[root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf //修改httpd服务的主配置文件 ………… //省略部分内容 <Directory "/usr/local/httpd/htdocs"> ………… //省略部分内容 Require ip 192.168.1.1 //仅允许192.168.1.1客户机访问 </Directory>
[root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf //修改httpd服务的主配置文件 ………… //省略部分内容 <Directory "/usr/local/httpd/htdocs"> ………… //省略部分内容 <RequireAll> Require all granted Require not ip 192.168.1.10 192.168.2.0/24 //拒绝192.168.1.10和192.168.2.0网段客户机访问 </RequireAll> </Directory>
定义限制策略时,多个不带not的Require配置语句之间是或的关系,即任意一条Require配置语句满足条件均可以访问;若出现了不带not的Require配置语句,又出现了带not的Require配置语句,则语句之间是并且的关系。即满足所有Require配置语句才可以访问。
在使用not禁止访问时要将其置于<RequireAll></Require>容器中,并在容器中指定相应的策略。
当未被授权的客户机访问网站目录时,将会被拒绝访问,在不同版本的浏览器中,拒绝的消息可能会略有差异。比如Windows 7自带的浏览器,如图:
用户授权限制
基于用户的访问控制包含认证和授权两个过程,是Apache允许指定用户使用用户名和密码访问特定资源的一种方式。认证是指识别用户身份的过程,授权是指允许特定用户访问特定目录区域的过程。
基于APache搭建httpd服务支持使用摘要认证和基本认证两种方式。使用摘要认证需要在编译安装httpd之前添加“--enable-auth-digest”选项,但并不是所有的浏览器都支持摘要认证,而基本认证是httpd服务的基本功能,不需要预先配置特别的选项。
创建步骤:
1.创建用户认证数据文件
[root@localhost httpd-2.4.25]# cd /usr/local/httpd/ [root@localhost httpd]# bin/htpasswd -c /usr/local/httpd/conf/123.txt xiaozhang New password: Re-type new password: Adding password for user xiaozhang [root@localhost httpd]# cat /usr/local/httpd/conf/123.txt //查看用户认证数据文件 xiaozhang:$apr1$OoqDbhzG$goxDWnRDhCa7mvcZE1ylw.
使用htpasswd工具时,必须指定用户数据文件的位置,添加“-c”选项表示新建立此文件。
[root@localhost httpd]# bin/htpasswd /usr/local/httpd/conf/123.txt xiaoli New password: Re-type new password: Adding password for user xiaoli [root@localhost httpd]# cat /usr/local/httpd/conf/123.txt //查看用户认证数据文件 xiaozhang:$apr1$OoqDbhzG$goxDWnRDhCa7mvcZE1ylw. xiaoli:$apr1$8yXF3xYm$MpUHjRqht4yN1AAnRbyem.
若省略“-c”选项,则表示指定的用户数据文件已经存在,用于添加新的用户或修改现有用户的密码。
2.添加用户授权配置
[root@localhost httpd]# vim /usr/local/httpd/conf/httpd.conf //修改httpd服务的主配置文件 ………… //省略部分内容 <Directory "/usr/local/httpd/htdocs"> ………… //省略部分内容 AuthName "DocumentRoot" AuthType Basic AuthUserFile /usr/local/httpd/conf/123.txt Require valid-user </Directory> [root@localhost httpd]# systemctl restart httpd //重新启动httpd服务
上述配置内容中,相关配置项的含义:
需要注意的是,用户访问授权与主机访问控制同时设置时,设置的主机访问控制优先生效。
3.验证用户访问授权
现实环境中,客户机地址限制应用并不广泛;用户授权限制应用较为广泛!
- 总结之:CentOS 6.5 HTTPD服务的全面解读及配置详解(1)
- 详解CentOS7 FTP服务搭建(虚拟用户访问FTP服务)
- 总结之:CentOS 6.5 HTTPD服务的全面解读及配置详解(2) 推荐
- centos快速部署ftp服务带用户验证
- CentOS 7搭建基于虚拟用户的FTP服务
- CentOS7系统操作httpd服务 - 开机启动/重启/查看状态
- 详解CentOS 7下安装Tomcat到服务
- Linux服务器 CentOS 6系列最小化安装优化脚本详解02————修改history记录、定时校正服务器时间、停止IPv6网络服务、调整最大文件打开数、关闭写磁盘I/O功能、配置SSH服务
- CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动
- CentOS添加Root权限(超级用户)用户方法|su,sudo命令详解
- centos 服务详解
- CentOS 6.5自动化运维之基于cobbler服务的自动化安装操作系统详解
- Centos 6 apache httpd 2.2 主要配置详解
- CentOS下安装svn,添加新用户,重启svn服务(找到安装成功的案例)
- CentOS 7之Systemd详解之服务单元设置system.service
- Linux中centos中httpd源码安装过程详解
- 限制sftp服务用户登录
- Centos FTP文件传输服务学习笔记之《搭建本地用户验证的FTP服务》
- CentOS (Linux) 上开启FTP服务并配置用户
- 详解CentOS配置和管理web服务-Apache 推荐