web网站服务
(1)httpd服务的访问控制
作用:
控制对网站资源的访问
为特定的网站目录添加访问授权
常用访问控制方式:
客户机的限制
用户授权限制
*(2)基于客户端地址的访问控制
1.使用Require配置项实现访问控制,按先后顺序限制
2.可用于,,,,配置段中
3.Require配置项的常见语法
Require all granted 允许所有主机访问
Require all denied 拒绝所有主机访问
Require local 仅允许本地主机访问
Require [not] host <主机名或域名列表> 允许或拒绝指定主机或域访问
Require [not] ip <ip地址或网段列表> 允许或拒绝指定ip或网段访问
/usr/local/httpd
4.使用not禁止访问时要将其置于 容器中并在容器中指定相应的限制策略
5.多个不带not的require配置语句之间是‘或’关系,满足一条即可访问
Require 192.168.10.1
Require not 192.168.10.2
Require 192.168.10.10
Require 192.168.10.4
6、出现即不带not又有带not的语句,之间是‘与’关系。同时满足所有要求才可以访问
练习:
linux-1:apache服务器
练习1:仅允许192.168.10.10 访问
[root@www ~]# vim /usr/local/httpd/conf/httpd.conf
226 <Directory “/usr/local/httpd/htdocs”>
251 #Require all granted
252 Require ip 192.168.10.10
253
[root@www ~]# systemctl restart httpd
[root@localhost httpd]# netstat -anput |grep httpd
验证:
- linux-2 客户机 192.168.10.2
验证:curl http://192.168.10.1
[root@ns2 ~]# curl http://192.168.10.1
Forbidden
You don't have permission to access / on this server.
2.apache服务器
[root@www ~]# tail -f /usr/local/httpd/logs/access_log
其他客户机访问时服务器会返回错误代码的网页(403)
练习2:禁止内网网段192.168.0.0/24和192.168.10.0/24的主机访问,允许其他任何主机访问
[root@www ~]# vim /usr/local/httpd/conf/httpd.conf
226 <Directory “/usr/local/httpd/htdocs”>
251
252 Require all granted
Require ip 192.168.10.10
253 Require not ip 192.168.10.128/25 192.168.0.0/24
254
255
[root@www ~]# systemctl restart httpd
- linux-2 客户机 192.168.10.2
[root@ns2 ~]# curl http://192.168.10.1
Forbidden
You don't have permission to access / on this server.
(三)用户授权限制
Apache提供了认证(Authentication)与授权(Authorization)机制,当用户访问使用此机制控制的目录时,会提示用户输入用户名和密码,只有输入正确的用户名和密码的主机才可以访问该资源。
2.1 Apache的认证类型分为两种:基本(Basic)认证和摘要认证(Digest)认证两种。摘要认证比基本认证更加安全,然是并非所有浏览器都支持摘要认证,所以本节只针对基本认证进行介绍。基本认证的方式是:当Web浏览器请求经过认证模式保护的URL时,将会出现一个对话框,要求用户输入用户名和口令。用户输入后,传送给服务器,Web服务器验证它的正确性。如果正确,则返回页面;否则出现401错误。
1.创建用户认证数据库
[root@www ~]# cd /usr/local/httpd/
新建密码数据文件.awspwd,其中包含一个名为webadmin用户信息
[root@www httpd]# bin/htpasswd -c /usr/local/httpd/conf/.awspwd webadmin
New password:
Re-type new password:
Adding password for user webadmin
确认用户数据库文件
[root@www httpd]# cat /usr/local/httpd/conf/.awspwd
webadmin:2tmD3LVFynBAE
在已有数据文件中添加新用户ly
[root@www ~]# htpasswd /usr/local/httpd/conf/.awspwd ly
2.添加用户授权配置
[root@www ~]# vi /usr/local/httpd/conf/httpd.conf
……
226 <Directory “/usr/local/httpd/htdocs”>
251 #
252 #Require all granted
253 # Require not ip 192.168.10.0/24 192.168.0.0/24
254 #
255
256 AuthName “xu yao mi ma”
257 AuthType Basic
258 AuthUserFile /usr/local/httpd/conf/.awspwd
259 Require valid-user
260
261
注释:
受保护的领域名称,该内容在浏览器弹出的认证对话框中显示。
256 AuthName “xu yao mi ma”
设置认证的类型(basic基本认证)
257 AuthType Basic
用户认证账号文件
258 AuthUserFile /usr/local/httpd/conf/.awspwd
要求通过认证才能访问
varlid-user 合法用户,如果单个用户可直接指定
259 Require valid-user
[root@www ~]# systemctl restart httpd
验证用户访问授权
1.打开win7客户机使用浏览器访问尝试http://192.168.10.1
查看是否需要用户名和密码来进行访问
2. linux-2 客户机 192.168.10.2
[root@ns2 ~]# curl http://192.168.10.1
访问失败
扩展:混合模式设置
注意:主机访问控制 > 用户访问授权
设置了两种混合模式时。主机访控中允许的主机可以直接访问网站,不需要用户授权;主机访控禁止的主机在需要用户授权才能访问网站
练习:
主机访问控制:允许192.168.10.2访问
用户授权:要求合法用户访问
[root@www ~]# vi /usr/local/httpd/conf/httpd.conf
……
226 <Directory “/usr/local/httpd/htdocs”>
Require all granted
Require ip 192.168.10.2
AuthName "xu yao mi ma"
AuthType Basic
AuthUserFile /usr/local/httpd/conf/.awspwd
Require valid-user
[root@www ~]# systemctl restart httpd
验证:
1.win7客户机 192.168.10.10
需要用户授权访问
-
linux-2 192.168.10.2
直接可以访问二、构建虚拟web主机
1.虚拟Web主机、
在同一台服务器中运行多个Web站点,其中每一个站点并不独立占用一台真正的计算机
2.httpd支持的虚拟主机类型
*基于域名的虚拟主机
*基于IP地址的虚拟主机
*基于端口的虚拟主机
(一)构建虚拟主机——基于域名
1.应用示例:
*构建2个虚拟Web站点:
。www.benet.com,IP地址为 192.168.10.1
。 www.accp.com,IP地址为 192.168.10.1
在浏览器中访问这两个域名时,分别显示不同的内容
1.为虚拟主机提供域名解析(有dns环境)
[root@dnssvr ~]# vi /var/named/chroot/etc/named.conf
……
zone “benet.com” IN {
type master;
file “benet.com.zone”;
};
zone “accp.com” IN {
type master;
file “accp.com.zone”;
};
课本有错误(benet.com后面不能有".")
cd /var/named
cp -a named.localhost benet.com.zone
cp -a named.localhost accp.com.zone
ls -ld benet.com.zone accp.com.zone
[root@dnssvr ~]# vi /var/named/chroot/var/named/benet.com.zone
@ IN SOA benet.com. admin.benet.com. (
……
@ IN NS dnssvr.benet.com.
dnssvr IN A 173.17.17.2
www IN A 192.168.10.1
[root@dnssvr ~]# vi /var/named/chroot/var/named/accp.com.zone
@ IN SOA accp.com. admin.accp.com. (
……
@ IN NS dnssvr.benet.com.
www IN A 192.168.10.1
……为基本的配置命令,需要从样本里面复制
2.为虚拟主机准备网页文档
[root@www ~]# mkdir -p /var/www/html/benetcom
[root@www ~]# mkdir -p /var/www/html/accpcom
[root@www ~]# echo “
www.benet.com
” > /var/www/html/benetcom/index.html[root@www ~]# echo “
www.accp.com
” > /var/www/html/accpcom/index.html3.添加虚拟主机配置
*配置独立的虚拟主机配置文件,然后在主文件里面加载即可,方便配置内容的维护
[root@www ~]# vim /usr/local/httpd/conf/extra/vhosts.conf
<VirtualHost *:80>
ServerName www.benet.com
DocumentRoot /var/www/html/benetcom
ErrorLog logs/www.benet.com.error_log
CustomLog logs/www.benet.com.access_log common
<Directory “/var/www/html”>
Require all granted
</Directory>
<VirtualHost *:80>
ServerName www.accp.com
DocumentRoot /var/www/html/accpcom
ErrorLog logs/www.accp.com.error_log
CustomLog logs/www.accp.com.access_log common
<Directory “/var/www/html”>
Require all granted
</Directory>
配置选项:
1.虚拟主机区域VirtualHost
2.目录权限Directory
继承其父目录 的授权许可即可
主文件里面加载
[root@www ~]# vim /usr/local/httpd/conf/httpd.conf
485 # Virtual hosts
486 #Include conf/extra/httpd-vhosts.conf
添加此选项–加载独立的配置文件
487 Include conf/extra/vhosts.conf
[root@www ~]# /usr/local/httpd/bin/apachectl restart
4.在客户机分别访问虚拟Web主机
实验环境中没有配置dns,可以的hosts文件中配置主机ip映射
4.1 win7 客户机
c:\windows\system32\drivers\etc\hosts
4.2 linux主机
/etc/hosts
(二)构建虚拟主机——基于IP
应用示例:
1,构建2个虚拟Web站点:
www.benet.com,IP地址为 192.168.10.1
www.accp.com,IP地址为 192.168.10.111
[root@www ~]# ifconfig ens33:0 192.168.10.111
[root@www ~]# vim /usr/local/httpd/conf/extra/vhosts.conf
<VirtualHost 192.168.10.1:80>
ServerName www.benet.com
DocumentRoot /var/www/html/benetcom
ErrorLog logs/www.benet.com.error_log
CustomLog logs/www.benet.com.access_log common
<Directory “/var/www/html”>
Require all granted
</Directory>
<VirtualHost 192.168.10.111:80>
ServerName www.accp.com
DocumentRoot /var/www/html/accpcom
ErrorLog logs/www.accp.com.error_log
CustomLog logs/www.accp.com.access_log common
<Directory “/var/www/html”>
Require all granted
</Directory>
[root@www ~]# systemctl restart httpd
2.在浏览器中访问这两个IP时,分别显示不同的内容
http://192.168.10.1
http://192.168.10.111
(三)构建虚拟主机——基于端口
应用示例:
1.构建2个虚拟Web站点:
www.benet.com,IP地址、端口为 192.168.10.1:80
www.accp.com,IP地址、端口为 192.168.10.1:8353
[root@www ~]# vim /usr/local/httpd/conf/extra/vhosts.conf
Listen 80
Listen 8353
<VirtualHost 192.168.10.1:80>
ServerName www.benet.com
DocumentRoot /var/www/html/benetcom
ErrorLog logs/www.benet.com.error_log
CustomLog logs/www.benet.com.access_log common
<Directory “/var/www/html”>
Require all granted
</Directory>
<VirtualHost 192.168.10.1:8353>
ServerName www.accp.com
DocumentRoot /var/www/html/accpcom
ErrorLog logs/www.accp.com.error_log
CustomLog logs/www.accp.com.access_log common
<Directory “/var/www/html”>
Require all granted
</Directory>
[root@www ~]# systemctl restart httpd
2.在浏览器中访问这两个端口时,分别显示不同的内容
http://192.168.10.1
http://192.168.10.1:8353