构建虚拟主机以及访问控制

理论部分:

上一章我们讲到的AWSTATS系统,统计页面在WEB界面上呈现出来,有一个问题我们都注意到了,只要是输入地址就可以访问,这样任何人都可以看到公司的网站访问情况,这样做非常的有风险,今天我们第一个目的就是为了解决这样的问题,进行访问控制,只允许,那些人访问或者是拒绝那些人访问。有两种方法可以实现,一种是通过IP地址或者是主机名来进行控制,第二种是通过建立验证的文件,在里面添加用户。

设置去访问控制需要在主配置文件中的区域配置文件中进行设置

Order allow,deny

Allow from all

Deny from 192.168.1.10

第一行为先匹配允许的规则,在匹配拒绝的规则,Order定义的是匹配的顺序,但是这里要注意,不是允许规则匹配成功之后,就不匹配拒绝规则了,而继续匹配拒绝规则,最后一条规则是拒绝则拒绝,最后一条规则允许,则允许

第二行为允许所有人通过,但是第三行拒绝了192.168.1.10这个IP地址,那么也就是说,第一条规则匹配完成之后,允许所有人通过,但是还有拒绝的属性,所以还需要匹配拒绝的规则,拒绝规则拒绝了192.168.1.10所以192.168.1.10不能访问网站

Order deny ,allow

Deny from 192.168.1.10

这个例子说明了,先匹配拒绝的规则,192.168.1.10不能访问,在匹配允许规则,没有定义允许规则,这里是不匹配拒绝规则则默认为全部允许,因为allow没有定义规则,则默认为允许所有,上诉案例只拒绝了192.168.1.10这个IP地址访问

通过IP地址控制访问就介绍到这里,接下来我们介绍一下如何通过用户验证的方式进行访问控制

使用Apache自带的工具生成一个验证文件,在这个文件里面添加需要授权的用户即可。这里我们到了实验部分在进行介绍。

虚拟主机分为三种,分别是基于域名的虚拟主机,基于IP的虚拟主机,基于端口号的虚拟主机。

基于域名的虚拟主机需要DNS服务器的支持,不能使用IP地址进行访问,基于域名的也是最常用的

基于IP地址的,就是一个地址对应一个WEB站点。

基于端口号的,IP地址相同,域名可以不相同,但是端口号不能相同,访问时除了默认端口80和443其他端口必须以192.168.1.10:901这种格式去访问,用户需要记住端口号才能访问,所以一般情况下不使用。

理论部分就介绍这么多,现在我们进行我们今天的实验部分:

拓扑图还是上一次的拓扑图

构建虚拟主机以及访问控制_网站

实验案例:

基于域名的虚拟主机

构建虚拟主机以及访问控制_网站_02 需求描述

构建虚拟主机以及访问控制_用户_03 设置www.di.com、www.tian.com站点目录

构建虚拟主机以及访问控制_统计_04 构建基于域名的虚拟主机服务器

构建虚拟主机以及访问控制_网站_05 站点www.jbit.com启用用户认证功能

搭建AWstats系统为两个站点统计日志,并且实现只有192.168.100.20和lzg这个用户才能访问

PS:在实际的生产环境下拒绝IP地址是不常用的。

先搭建DNS服务器为www.di.com和www.tian.com提供域名解析,BIND服务在上一章我们已经搭建完成了,这一次直接修改配置文件即可

vim /var/named/chroot/etc/named.conf

options{

directory "/var/named";

};

zone "di.com" IN{

type master;

file "di.com.zone";

};

zone "tian.com" IN{

type master;

file "tian.com.zone";

};

:wq

vim /var/named/chroot/var/named/di.com.zone

$ttl 86400

@ soa di.com. admin.di.com. (

20150915

15M

4H

1W

1D

@ IN NS dns.lzg.com.

IN MX 10 mail.di.com.

www IN A 192.168.100.2

* IN A 192.168.100.2

vim /var/named/chroot/var/named/tian.com.zone

$ttl 86400

@ soa tian. admin.tian.com. (

20150916

15M

4H

1W

1D

@ IN NS dns.lzg.com.

IN MX 10 mail.tian.com.

www IN A 192.168.100.2

* IN A 192.168.100.2

:wq

service named start

service iptables stop

接下来搭建Apache服务

参考WEB1文档

基本部署完成之后

打开

构建虚拟主机以及访问控制_网站_06

图1

这个目录存放了一些其他辅助的配置文件,其中虚拟主机的配置文件就在这里

构建虚拟主机以及访问控制_用户_07

图2

默认的配置文件的内容,这里我们需要修改的有

构建虚拟主机以及访问控制_用户_08

图3

我将注释全部删除掉之后剩余的有效配置项,我这里是为了看着方便注意不要删除那些注释,否则可能不能访问

NameVirtualHost配置项用于基于域名的虚拟主机,基于IP或基于端口号的虚拟主机注释掉或删除掉,不能存在

接下来我们创建站点的网页根目录,根据配置文件的路径

构建虚拟主机以及访问控制_网站_09

图4

{里面的是要创建的目录名使用逗号进行分割可以创建多个}

接下来写入主页

构建虚拟主机以及访问控制_网站_10

图5

主页建立完成了,接下来我们修改主配置文件,让主配置文件能够读取扩展的配置文件

vim /usr/local/httpd/conf/httpd.conf

构建虚拟主机以及访问控制_网站_11

图6

将前面的注释去掉也行,在下面再添加一行也行,Include就是指定扩展文件所在的路径

构建虚拟主机以及访问控制_用户_12

图7

进行语法检测,没有问题,我们将服务启动

构建虚拟主机以及访问控制_用户_13

图8

启动服务时出现的是主配置文件中ServerName没有指定站点名,不影响服务的启动

关闭iptables service iptables stop

我们进行访问

构建虚拟主机以及访问控制_网站_14

图9

访问被拒绝了,原因有两种,一种是目录没有权限,我们来看一下di这个目录order有没有读取和执行权限

构建虚拟主机以及访问控制_网站_15

图10

目录有读取的权限,那就是另外一种情况,在扩展区域中没有指定访问的权限,默认为拒绝所有,现在我们编辑 /usr/local/httpd/conf/extra/httpd-vhost.conf

构建虚拟主机以及访问控制_IP地址_16

图11

在这个文件中分别加入这两个站点的路径,赋予访问的权限,这就跟我们上面的理论只是相吻合,用实验验证理论

构建虚拟主机以及访问控制_用户_17

图12

语法检测没有任何问题

现在重新读取配置文件

构建虚拟主机以及访问控制_虚拟主机_18

图13

现在在进行访问

构建虚拟主机以及访问控制_虚拟主机_19

图14

构建虚拟主机以及访问控制_网站_20

图15

已经能够成功的访问这两个网站了。

现在我们控制不让所有人访问www.di.com

那么就需要修改httpd-vhosts.conf这个文件

构建虚拟主机以及访问控制_IP地址_21

图16

修改权限,拒绝192.168.100.204访问

service httpd graceful 重新加载配置文件

构建虚拟主机以及访问控制_网站_22

图16

已经不能访问了,在客户端将IP地址更改之后能够访问

构建虚拟主机以及访问控制_IP地址_23

图17

可以正常访问。接下来我们来进行用户身份验证的方式

构建虚拟主机以及访问控制_IP地址_24

图18

接下来我们还需要在配置文件中添加授权认证配置项

构建虚拟主机以及访问控制_用户_25

图19

加入这四行就可以了

AuthName 描述信息

AuthType 认证的类型 basic为基本认证

AuthUserFile 指定验证文件的路径

require user lzg 授权哪些用户可以访问 也可以直接授权.userpd这个文件

require valid-user 直接让这个文件的用户都可以访问

service httpd graceful

构建虚拟主机以及访问控制_虚拟主机_26

图20

验证成功

构建虚拟主机以及访问控制_IP地址_27

图21

已经成功的访问到了