httpd服务的访问控制
为了更好地控制对网站资源的访问,可以为特定的网站目录添加访问授权。
作用
控制对网站资源的访问
为特定的网站目录添加访问授权
常用访问控制方式
客户机地址限制
用户授权限制
基于客户端地址的访问控制
使用Require配置项实现访问控制,按先后顺序限制 可用于
用户授权限制
创建用户认证数据库
添加用户授权配置
验证用户访问授权
虚拟Web主机
在同一台服务器中运行多个Web站点,其中每一个站点并不独立占用一台真正的计算机。
httpd支持的虚拟主机类型
基于域名的虚拟主机
基于IP地址的虚拟主机
基于端口的虚拟主机
操作步骤:客户机地址限制
Require配置项的常见语法
Require all granted——表示允许所有主机访问。
Require all denied——表示拒绝所有主机访问。
Require local——表示仅允许本地主机访问。
Require [not] host <主机名或域名列表>
Require [not] ip
注:not表示拒绝
通常情况下,网站服务器是对所有客户机开放的,网页文档目录未做任何限制,因此使用的是Require all granted策略,表示允许从任何客户机访问,具体配置如下。
vim /usr/local/httpd/conf/httpd.conf 文本下搜索......//省略部分内容 Require all granted //添加(默认有)
若只希望 禁止来自一个内网网段和一个IP地址。但允许其他任何主机访问,可以使用如下限制策略。
vim /usr/local/htpd/conf/httpd.conf 搜索//加 Require all granted Require not ip 192.168.1.10 192.168.2.0/24 //添加要禁止的网段或主机 //加
未做路径优化的重启apachectl服务
/usr/local/httpd/bin/apachectl restart
重启后,未被授权的客户机访问网站目录时,将会拒接访问。
因为本机地址为1.100,客户机1.10所以访问被拒绝。修改成1.0网段没有地址冲突的地址即可访问。
修改地址后可以访问的默认网页
用户授权限制
基于用户的访问控制包含认证(Authentication)和授权(Authorization)两个过程,是Apache允许指定用户使用用户名的密码访问特定资源的一种方式。
httpd服务器支持使用摘要认证(Digest)和基本认证(Basic)两种方式。使用摘要认证需要在编译httod之前添加“--enable-auth-digest” 选项,但并不是所有的浏览器都支持摘要认证;而基本认证是httpd服务的基本功能,不需要预先配置特别选项。
-
创建用户认证数据文件
httpd的基本认证通过校验用户名,密码组合来判断是否允许用户访问。使用专门的htpasswd工具程序,可以创建授权用户数据文件,并维护其中的用户账号。
使用htpasswd工具时,必须指定用户数据文件的位置,添加“-c”选项表示新建此文件。
创建zhang3用户,/.awspwd为存放目录,新密码输入两次。
[root@localhost ~]# cd /usr/local/httpd [root@localhost httpd]# bin/htpasswd -c /usr/local/httpd/conf/.awspwd zhang3 New password: Re-type new password: Adding password for user zhang3 [root@localhost httpd]# cat /usr/local/httpd/conf/.awspwd zhang3:$apr1$T1/SEmVK$k7VqIYih78oHFcfst3a.B/
已创好/.awpwd目录后创建用户取消“-c”选项,创建li4用户
[root@localhost httpd]# bin/htpasswd /usr/local/httpd/conf/.awspwd li4 New password: Re-type new password: Adding password for user li4 [root@localhost httpd]# cat /usr/local/httpd/conf/.awspwd zhang3:$apr1$T1/SEmVK$k7VqIYih78oHFcfst3a.B/ li4:$apr1$SLNy2tvP$H36ifUr/wsz.klI1cY1bt0
-
添加用户授权配置
有了授权用户之后还需要修改httpd.conf 配置文件,在特定的目录区域中添加授权配置,以启用基本认证并配置允许哪些用户访问。例如,若只允许.awspwd 数据文件中的任何一用户访问网页,可以执行以下操作。
注:客户机地址限制的配置需要Require all granted改成Require all denied或者注释掉。
# Require all granted // 加#号注释掉,其他不用改 Require not ip 192.168.1.10 192.168.2.0/24
[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf 搜索此文件......省略部分 输入以下四行配置 authname "123.com" authtype basic authuserfile /usr/local/httpd/conf/.awspwd require valid-user [root@localhost ~]# systemctl restart httpd.service
上述配置文件内容中,相关配置项的含义如下:
authname:定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示。
authtype:设置认证的类型,basic表示基本认证。
authuserfile:设置用于保存用户账号,密码的认证文件路径。
require valid-user:要求只有认证文件中的合法用户才能访问。
需要注意的是,用户访问授权与主机访问控制同时设置时,设置的主机访问控制优先生效。
-
验证用户访问授权
当再次访问网站的默认首页时,浏览器会首先弹出认证对话框。
构建虚拟web主机
基于域名的虚拟主机:相同IP,相同端口号,不同域名。
基于IP地址的虚拟主机: 不同IP相同端口。
基于端口的虚拟主机: 相同IP,相同域名,不同端口号。
基于域名的虚拟主机
-
为虚拟主机提供域名解析
安装dns
没有dns需要安装,有的话可省略此部分
挂载系统盘安装源码包
[root@localhost ~]# mount /dev/cdrom /media mount: /dev/sr0 写保护,将以只读方式挂载 [root@localhost ~]# cd /media/Packages/ [root@localhost Packages]# rpm -ivh bind-9.9.4-37.el7.x86_64.rpm bind-chroot-9.9.4-37.el7.x86_64.rpm
主配置文件
[root@localhost ~]# vim /etc/named.conf
配置如图,将红框中的两行删除
添加两个区域
zone "123.com" in {
type master;
file "123.com.zone";
};
zone "456.com" in {
type master;
file "456.com.zone";
};
保存退出
区域数据1文件(正向)
[root@localhost ~]# vim /var/named/123.com.zone
文件内配置
$ttl 86400
@ in soa 123.com. admin.123.com. (
201801
3h
15m
1w
1d
)
in ns ns1.123.com.
ns1 in a 192.168.1.100
www in a 192.168.1.100
区域数据2文件(正向)
[root@localhost ~]# vim /var/named/456.com.zone
文件内配置
$ttl 86400 @ in soa 456.com. admin.456.com. ( 202253 3h 15m 1w 1d ) in ns ns1.456.com. ns1 in a 192.168.1.100 www in a 192.168.1.100
重启服务
systemctl restart named
排错(没错跳过)
检查/etc/named.conf文件:
named-checkconf -z /etc/named.conf
检查正向和反向数据文件:
named-checkzone 123.com /var/named/123.com.zone
为每个虚拟web主机准备网站目录及网页文档。
[root@localhost ~]# mkdir -p /var/www/html/123com [root@localhost ~]# mkdir -p /var/www/html/456com [root@localhost ~]# echo "www.123.com" > /var/www/html/123com/index.html [root@localhost ~]# echo "www.456.com" > /var/www/html/456com/index.html
添加虚拟主机配置
[root@localhost ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
VirtualHost *:80> 虚拟站点区域
ServerAdmin 123@.com 邮箱
DocumentRoot "/var/www/html/123com" 网站根目录
ServerName www.123.com 完整名称(别名)
ErrorLog "logs/www.123.com-error_log" 错误日志
CustomLog "logs/www.123.com-access_log" common 访问日志
设置访问权限
require all granted
ServerAdmin 456@.com
DocumentRoot "/var/www/html/456com"
ServerName www.456.com
ErrorLog "logs/www.456.com-error_log"
CustomLog "logs/www.456.com-access_log" common
require all granted
加载独立的配置文件
[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf # nclude conf/extra/httpd-vhosts.conf 取消#注释
重启服务
/usr/local/httpd/bin/apachectl restart
在客户机上访问虚拟web主机
基于IP地址的虚拟主机
对于基于IP地址的虚拟主机,每个虚拟web主机各自使用不同的IP地址,但是都通过同一台httpd服务器对外提供web浏览服务。
虚拟机临时配置IP命令如下
[root@localhost ~]# ifconfig ens33:2 192.168.1.200 [root@localhost ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 插入模式下网站1(不同地址相同端口)改成 网站2 改成 加载独立的配置文件 [root@localhost ~]# vim //usr/local/httpd/conf/httpd.conf # nclude conf/extra/httpd-vhosts.conf 取消#注释 [root@localhost ~]# systemctl restart httpd
在客户机上访问虚拟web主机
基于端口的虚拟主机
基于端口的虚拟机通常只用于同一个web站点,其针对的网站名称、、IP地址往往都是相同的,但通过不同的TCP端口来提供不同网页内容的服务入口。
配置基于端口的虚拟web主机时,需要通过多个 Listen配置项来指定要监听的TCP端口号,每个虚拟web主机的VirtualHost配置中应同时指定IP地址和端口号。
特别注意的是基于端口的虚拟主机需要监听端口号,如Listen 80。
[root@localhost ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf加端口号 ...... ...... Listen 80 监听80端口 Listen 8080 监听8080端口
加载独立的配置文件并重启
[root@localhost ~]# vim //usr/local/httpd/conf/httpd.conf # nclude conf/extra/httpd-vhosts.conf 取消#注释 [root@localhost ~]# systemctl restart httpd



