在一台centos7上搭建apache网站后,通常都是容许全部人访问的,那么可能会有一些特殊状况,须要对访问网站的人进行限制,出于这种状况,apache能够经过Require配置项,来对客户端进行一些访问限制,能够基于IP地址、网段、主机名或域名。使用名称“all”时表示任意地址。web
安装apache服务的参考博文:http://www.javashuo.com/article/p-qamvjqdc-mt.htmlapache
一、客户机地址限制:vim
限制策略的经常使用格式有下面几种:centos
定义限制策略时,多个不带not的require配置语句之间是或的关系,就是知足任意一条require配置语句就能够访问;浏览器
若即有不带not的require配置语句,又出现了带not的require配置语句,则语句之间是与的关系,即同时知足全部require配置语句才可访问。服务器
来吧,举个栗子(只要更改了服务的配置文件,必须重启服务,才可生效):ide
作一个策略,仅容许ip地址为192.168.1.2的主机可以访问/usr/local/httpd/htdocs网页目录下的内容,则策略以下(进入网站主配置文件httpd.conf后,在末行模式下输入:/Directory,按n查找到相应的位置):工具
<Directory "/usr/local/httpd/htdocs"> ................ #省略部份内容 Require ip 192.168.1.2 #仅容许192.168.1.2的主机访问网站服务 </Directory>
OK了,如今只有上面这个1.2的ip地址能够访问该网站了。网站
那么,如今换一个策略,禁止192.168.1.0网段的主机不能访问网站,可是别的网段的主机均可访问,策略以下:ui
<Directory "/usr/local/httpd/htdocs"> ................ #省略部份内容 <RequireAll> Require all granted #容许全部主机访问 Require not ip 192.168.1.0/24 #但1.0网段不可访问 </RequireAll> </Directory>
在上面的配置中,须要注意的是只有访问规则中出现了not语句,那么必须把规则放在 <RequireAll> </RequireAll>标签中。
二、用户受权限制:
基于用户的访问控制包含认证和受权两个过程,httpd服务器支持使用摘要认证(Digest)和基本认证(Basic)两种方式。使用摘要认证的话须要在编译http以前添加“--enable-auth-digest”选项,但并非全部的浏览器都支持摘要认证,因此不推荐使用;而基本认证是httpd服务的基本功能,不须要预先配置特别的选项。
这里就写一下基本认证方式吧
一、建立用户认证数据文件:
[root@localhost httpd]# cd /usr/local/httpd/ #切换至网站安装根目录 [root@localhost httpd]# bin/htpasswd -c /usr/local/httpd/conf/.aaa webadmin #使用 htpasswd工具建立用户,该用户与系统用户无关,.aaa文件以.开头,表示为隐藏目录,该 目录默认不存在,因此要加-c选项,在之后须要添加用户时,不能加-c选项, 不然会覆盖原来的内容 New password: #输入密码 Re-type new password: #确认密码 Adding password for user webadmin #提示添加成功
能够确认用户是否添加:
[root@localhost httpd]# cat conf/.aaa webadmin:$apr1$YCIyEmlx$R57m0/9Tc/SbZLsLiAGev/ #用户webadmin的信息
二、添加用户受权配置:
[root@localhost httpd]# vim /usr/local/httpd/conf/httpd.conf #编辑网站主配置文件 ............. <Directory "/usr/local/httpd/htdocs"> authname "bbb" #定义受保护的领域名称 authtype basic #设置认证类型,basic表示基本认证 authuserfile /usr/local/httpd/conf/.aaa #设置用于保存用户帐号、密码的认证文件路径 require valid-user #要求只有认证文件中的合法用户才可访问。 其中valid-user表示全部合法用户,若只受权给单个用户,可改成指定的用户名, 如webadmin。
须要注意的是,用户访问受权与主机访问控制同时设置时,设置的主机访问控制优先生效。因此在进行用户受权限制时,须要删除掉其中的require语句。要否则,用户访问受权不会生效。