构建虚拟主机以及访问控制
理论部分:
上一章我们讲到的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这种格式去访问,用户需要记住端口号才能访问,所以一般情况下不使用。
理论部分就介绍这么多,现在我们进行我们今天的实验部分:
拓扑图还是上一次的拓扑图
实验案例:
基于域名的虚拟主机
设置www.di.com、www.tian.com站点目录
构建基于域名的虚拟主机服务器
站点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文档
基本部署完成之后
打开
图1
这个目录存放了一些其他辅助的配置文件,其中虚拟主机的配置文件就在这里
图2
默认的配置文件的内容,这里我们需要修改的有
图3
我将注释全部删除掉之后剩余的有效配置项,我这里是为了看着方便注意不要删除那些注释,否则可能不能访问
NameVirtualHost配置项用于基于域名的虚拟主机,基于IP或基于端口号的虚拟主机注释掉或删除掉,不能存在
接下来我们创建站点的网页根目录,根据配置文件的路径
图4
{里面的是要创建的目录名使用逗号进行分割可以创建多个}
接下来写入主页
图5
主页建立完成了,接下来我们修改主配置文件,让主配置文件能够读取扩展的配置文件
vim /usr/local/httpd/conf/httpd.conf
图6
将前面的注释去掉也行,在下面再添加一行也行,Include就是指定扩展文件所在的路径
图7
进行语法检测,没有问题,我们将服务启动
图8
启动服务时出现的是主配置文件中ServerName没有指定站点名,不影响服务的启动
关闭iptables service iptables stop
我们进行访问
图9
访问被拒绝了,原因有两种,一种是目录没有权限,我们来看一下di这个目录order有没有读取和执行权限
图10
目录有读取的权限,那就是另外一种情况,在扩展区域中没有指定访问的权限,默认为拒绝所有,现在我们编辑 /usr/local/httpd/conf/extra/httpd-vhost.conf
图11
在这个文件中分别加入这两个站点的路径,赋予访问的权限,这就跟我们上面的理论只是相吻合,用实验验证理论
图12
语法检测没有任何问题
现在重新读取配置文件
图13
现在在进行访问
图14
图15
已经能够成功的访问这两个网站了。
现在我们控制不让所有人访问www.di.com
那么就需要修改httpd-vhosts.conf这个文件
图16
修改权限,拒绝192.168.100.204访问
service httpd graceful 重新加载配置文件
图16
已经不能访问了,在客户端将IP地址更改之后能够访问
图17
可以正常访问。接下来我们来进行用户身份验证的方式
图18
接下来我们还需要在配置文件中添加授权认证配置项
图19
加入这四行就可以了
AuthName 描述信息
AuthType 认证的类型 basic为基本认证
AuthUserFile 指定验证文件的路径
require user lzg 授权哪些用户可以访问 也可以直接授权.userpd这个文件
require valid-user 直接让这个文件的用户都可以访问
service httpd graceful
图20
验证成功
图21
已经成功的访问到了