一、Apache的访问控制


  • 可对特定的网站目录添加访问授权,对客户机地址限制、用户授权做限制;两种控制方式都应用与httpd.conf配置文件中的虚拟目录区域

    <Directory 目录位置>目录相关的配置参数和指令
    </Directory>

*每个Diretory段以<Diretory>开始,以</Diretory>结束,段作用于<Diretory>中制定的目录及其里面的所有文件和子目录。在段中可设置与目录相关的参数和指令,包括访问控制和认证,控制方法主要有基于ip地址、域名、http方法、用户等。

1.客户机地址限制

  • 通过配置项Order、Deny from、Allow from,根据客户机的主机名或IP地址决定是否允许客户端访问;其中Order配置项用于设置限制顺序,Deny from和Allow from用于设置具体限制内容

Apache-2.2.x

  • Allow,deny:先“允许”后“拒绝”,默认拒绝所有未明确允许的客户机地址
  • Deny,allow:先“拒绝”后“允许”,默认允许所有未明确拒绝的客户机地址

  • 使用Allow from和Deny from配置项时,需要设置客户机地址以构成完整的限制策略,地址的形式可以是IP地址、网络地址、主机名或域名,使用名称“all”时表示任意地址。限制策略格式如下
    Deny from address1 address2 ...
    Allow from address1 address2 ...

  • 通常情况,网站服务器对所有客户机开放,网页文档未作任何限制,因此使用的是“Allow from all”的策略,表示允许从任何客户机访问,策略格式如下
    <Directory “/usr/local/httpd/htdocs”>
    ..    //省略部分内容
    Order Allow,deny
    Allow from all
    </Directory>
  • 需要使用“仅允许”的限制策略时,应将处理顺序改为“allow,deny”,并明确设置允许策略,只允许一部分主机访问。例如,若只希望IP地址为173.17.17.173的网管工作用机能够访问AWStats系统,则针对AWStats系统的目录区域做如下设置
    <Directory “/usr/local/awstats/wwwroot:”>
    ...  //省略部分内容
    Order allow,deny              //先允许后拒绝
    Allow from 173.17.17.173          //只允许此IP访问
    </Directory>
  • 反之,需要使用“仅拒绝”的限制策略时,应将处理顺序改为“deny,allow”,并明确设置拒绝策略,只禁止一部分主机访问。例如,若只希望禁用来自两个内网网段192.168.0.0/24和192.168.1.0/24的主机访问,但允许其它任何主机访问,可以使用如下限制策略
    <Directory “/usr/local/awstats/wwwroot”>
    ...  //省略部分内容
    Order deny,allow
    Deny from 192.168.0.0/24 192.168.1.0/24
    </Directory>

    当通过未被授权的客户机访问网站目录时,将会被拒绝访问

Apache-2.4.x
(1)允许所有

    Require all granted

(2)拒绝所有

    Require all denied

(3)只允许指定IP访问

    Require ip <允许的IP地址>

(4)只拒绝指定IP访问

    <RequireAll>Require all grantedRequire not ip xxx        </RequireAll>

例:

  • 允许所有人访问/usr/local/httpd/htdocs/
    <Directory “/usr/local/httpd/htdocs”>
    Require all granted
    </Directory>
  • 拒绝所有人访问/usr/local/httpd/htdocs/
    <Directory “/usr/local/httpd/htdocs”>
    Require all denied
    </Directory>
  • 只允许192.168.1.10主机访问/usr/local/httpd/htdocs/,相当于白名单
    <Directory “/usr/local/httpd/htdocs”>
    Require ip 192.168.1.10
    </Directory>
  • 拒绝192.168.1.10主机访问/usr/local/httpd/htdocs/,其余主机全部允许,相当于黑名单
    <Directory “/usr/local/httpd/htdocs”>
    <RequireAll>
    Require all granted
    Require not ip 192.168.1.10
    </RequireAll>
    </Directory>

2.用户授权限制

  • httpd服务器支持使用摘要认证(Digest)和基本认证(Basic)两种方式。使用摘要认证需要在编译httpd之前添加“--enable-auth-digest”选项,但并不是所有的浏览器都支持摘要认证。而基本认证是httpd服务的基本功能,不需要预先配置特别选项
  • 基于用户的访问控制包括认证(Authentication)和授权(Authorization)两个过程。认证是指识别用户身份的过程,授权是指允许特定用户访问特点目录区域的过程

(1)创建用户认证数据文件

  • httpd的基本认证通过校验用户名、密码组合来判断是否允许用户访问。授权访问的用户账号需要事先建立,并保存在固定的数据文件中。使用专门的htpasswd工具程序,可以创建授权用户数据文件,并维护其中的用户账号。
  • 使用htpasswd时,必须指定用户数据文件的位置,添加“-c”选项表示新建立此文件。例如,执行以下操作可以新建数据文件/usr/local/httpd/conf/.awspwd,其中包含一个名为webadmin的用户信息
    cd /usr/local/httpd    //进入httpd安装目录方便执行命令
    bin/htpasswd -c /usr/local/httpd/conf/.awspwd webadmin    //创建用户账号webadmin(只能用于登录web界面)
    cat /usr/local/httpd/conf/.awspwd    //查看用户账号数据文件
  • 若省略“-c”选项,则表示指定的用户数据文件已经存在,用于添加新的用户或修改现有用户的密码。例如,需要向.awspwd数据文件中添加一个新用户tsengyia时,可以执行以下操作
    bin/htpasswd /usr/local/httpd/conf/.awspwd tsengyia
    cat /usr/local/httpd/conf/.awspwd

    (2)添加用户授权配置

  • 有授权用户账号以后,还需修改httpd.conf配置文件,在特定的目录区域中添加授权配置,以启用基本认证并设置允许哪些用户访问。例如,若只允许.awspwd数据文件中的任一用户访问AWStats系统,可以执行以下操作
    vim /usr/local/httpd/conf/httpd.conf
    <Directory "/usr/local/awstats/wwwroot">
    ···
    AuthName "AWStats Directory"
    AuthType Basic
    AuthUserFile /usr/local/httpd/conf/.awspwd
    require valid-user
    </Directory>

    注释
    AuthName:定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示
    AuthType:设置认证的类型,Basic表示基本认证
    AuthUserFile:设置用户保存用户账号、密码的认证文件路径
    required valid-user:要求只有认证文件中的合法用户才能访问。其中valid-user表示所有合法用户,若只授权给单个用户,可改为指定的用户名(如require user webadmin)
    (3)验证用户访问授权

  • 再次访问AWStats系统时,浏览器会首先弹出认证对话框。只有输入正确的用户名和密码后才能查看日志分析报告,否则将拒绝访问

二、构建虚拟Web主机


  • 虚拟Web主机指的是在同一台服务器中运行多个Web站点。其中的每个站点实际上并不独立占用整个服务器,因此被称为“虚拟Web主机”,通过虚拟Web主机服务可以充分利用服务器的硬件资源,降低网络构建及运行程序
  • 基于域名:为每个虚拟主机使用不同的域名,但是对应IP地址相同;同IP、同端口、不同域名
  • 基于IP地址:为每个虚拟主机使用不同的域名,且各自对应的IP地址也不相同,需要为服务器配置多个网络接口;不同IP、同端口、不同域名
  • 基于端口:不使用域名、IP来区分不同站点内容,使用不同TCP端口号;同域名、同IP、不同端口

    1.基于域名的虚拟主机

    (1)为虚拟主机提供域名解析(搭建DNS,测试使用)

    yum -y install bind bindg -chroot bind-utils    //安装bind软件包
    vim /etc/named.conf    //修改named服务主配置文件
    cp /var/named/named.empty /var/named/hiahia.org.zone    //拷贝模板文件
    vim /var/named/hiahia.org.zone    //编辑正向解析文件
    chown named:named /var/named/hiahia.org.zone    //设置文件属主和属组为named
    /etc/init.d/named start && 8mchkconfig --level 35 named on

    (2)为虚拟主机准备网页文档
    每个虚拟Web主机准备网站目录及网页文档。

    mkdir -p /usr/local/httpd/htdocs/www
    mkdir -p /usr/local/httpd/htdocs/blog
    echo "<h1>www.xueluo.org</h1>">/usr/local/httpd/htdocs/www/index.html
    echo "<h1>blog.xueluo.org</h1>">/usr/local/httpd/htdocs/blog/index.html

    (3)添加虚拟主机配置

  • 监听地址:使用NameVirtualHost配置项指定提供虚拟主机服务的IP地址,也就是进行域名查询时各虚拟Web主机的IP地址
  • 虚拟主机区域:使用<VirtualHost 监听地址>...</VirtualHost>区域配置,为每一个虚拟Web主机建立独立的配置内容。其中至少应包含虚拟主机的网站名称、网页根目录的配置项
  • 目录权限:使用<Directory 目录位置>...</Directory>区域配置,为每一个虚拟Web主机的网站目录设置访问权限;目录访问可继承其父目录的授权许可
    vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
    <Directory "/usr/local/httpd/htdocs/">
    Order allow,deny
    Allow from all
    (httpd2.4.x这里的两行换成Require all granted)
    </Directory>
    <VirtualHost 192.168.1.151>
    DocumentRoot "/usr/local/httpd/htdocs/www"
    ServerName www.hiahia.com
    ErrorLog "logs/www.hiahia.com_error_log"
    CustomLog "logs/www.hiahia.com_access_log" common
    </VirtualHost>
    <VirtualHost 192.168.1.151>
    DocumentRoot "/usr/local/httpd/htdocs/blog"
    ServerName blog.hiahia.com
    ErrorLog "logs/blog.hiahia.com_error_log"
    CustomLog "logs/blog.hiahia.com_access_log" common
    </VirtualHost>
    vim /usr/local/httpd/conf/httpd.conf
    Include conf/extra/httpd-vhosts.conf    //删除开头#号,读取虚拟主机配置文件
    /etc/init.d/httpd restart

    (4)客户机中访问虚拟Web主机

    2.基于IP地址的虚拟主机

    (1)添加虚拟接口IP或新增加网卡配置IP地址

(2)添加虚拟主机配置

vim /var/named/xueluo.org.zone    //修改dns正向解析文件,更改其中一个IP地址为新增网卡IP
/etc/init.d/named restart    //重启namd服务
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<Directory "/usr/local/httpd/htdocs/">Order allow,denyAllow from all(httpd2.4.x这里的两行换成Require all granted)
</Directory>
<VirtualHost 192.168.1.151>DocumentRoot "/usr/local/httpd/htdocs/www"ServerName www.hiahia.comErrorLog "logs/www.hiahia.com_error_log"CustomLog "logs/www.hiahia.com_access_log" common
</VirtualHost>
<VirtualHost 192.168.1.152>DocumentRoot "/usr/local/httpd/htdocs/blog"ServerName blog.hiahia.comErrorLog "logs/blog.hiahia.com_error_log"CustomLog "logs/blog.hiahia.com_access_log" common
</VirtualHost>
vim /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf    //删除开头#号,读取虚拟主机配置文件
/etc/init.d/httpd restart    //重启httpd服务

(3)客户机访问虚拟Web

3.基于端口的虚拟主机

(1)添加虚拟主机配置

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<Directory "/usr/local/httpd/htdocs/">Order allow,denyAllow from all(httpd2.4.x这里的两行换成Require all granted)
</Directory>
<VirtualHost 192.168.1.100:80>DocumentRoot "/usr/local/httpd/htdocs/www"ServerName www.xueluo.orgErrorLog "logs/www.xueluo.org_error_log"CustomLog "logs/www.xueluo.org_access_log" common
</VirtualHost>
<VirtualHost 192.168.1.200:81>DocumentRoot "/usr/local/httpd/htdocs/blog"ServerName blog.xueluo.orgErrorLog "logs/blog.xueluo.org_error_log"CustomLog "logs/blog.xueluo.org_access_log" common
</VirtualHost>

(2)加载额外配置文件,并设置监听端口

vim /usr/local/httpd/conf/httpd.confListen 192.168.1.151:999Listen 192.168.1.152:888
vim /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf    //删除开头#号,读取虚拟主机配置文件
/etc/init.d/httpd restart

(3)客户机访问虚拟Web

转载于:https://blog.51cto.com/13770206/2152338

Apache访问控制和Web虚拟主机相关推荐

  1. rpm包安装apache发布多个虚拟主机

    今天在单位服务器上用rpm包的方式部署多个服务的时候,出现问题.结果在网上查到了一篇帖子<rpm包安装apache发布多个虚拟主机>,看完这篇帖子之后才知道自己哪些地方配置的时候出现了遗漏 ...

  2. 详解 nginx 配置文件及构建 web 虚拟主机

    详解 nginx 主配置文件.添加服务及构建 web 虚拟主机 一.添加为系统服务 1.方法一 2.方法二 二.nginx 主配置文件 nginx.conf 1.全局配置 2.I/O 事件配置 3.H ...

  3. ubuntu安装discourse论坛----结合在apache服务上建立虚拟主机

    指导操作:https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md 一.先安装 Docker / Git: wg ...

  4. win10系统配置apache 2.4的虚拟主机以及查看 apache的版本

    一.背景 写这篇博客的原因是因为上午在配置虚拟主机的时候,明明很简单的配置,却花了大量的时间,我这边按照win7下配置apache 2.4版本,一直出错,所以记录一下. win7下配置apache 2 ...

  5. Apache中Virtual Host虚拟主机配置及rewrite参数说明

    这篇文章主要介绍了Apache中Virtual Host虚拟主机配置及rewrite模块中的重要参数说明,是在同一个Apache服务器软件上部署多个站点的基础方法,需要的朋友可以参考下 Virtual ...

  6. 虚拟主机的服务器配置在哪,配置Apache服务器下的虚拟主机设置有什么要求?景安...

    什么是apache虚拟主机?apache虚拟主机就是在apache服务器上配置多个虚拟主机,从而把一个服务器提供多站点的服务实现.用通俗的话来说就是对同一个服务器上的不同目录进行访问.那么如何在Apa ...

  7. Apache HTTP Server搭建虚拟主机

    目录: Apache简介 安装Apache HTTP Server软件 配置文件解析应用案例 Apache简介 Apache HTTP Server项目是在Windows与Unix等平台上都可以运行的 ...

  8. 初次使用Apache、ip地址、防火墙、域名、DNS、hosts文件、端口、URL介绍、Apache配置文件、配置虚拟主机、请求响应、http协议、

    Apache提供web服务: 启动Apache,让其客户端可以使用你机器上安装的Apache提供的web服务,访问你机器上的网站.这种情况下你的计算机就是服务器,别人的机器就是客户端. 注意:确保配置 ...

  9. 分享apache http服务器设置虚拟主机的方法

    对于多个域名绑定到一台服务器上,需要进行虚拟主机(virtual host)相关的设置,假设我要设置fuwu.jb51.net到一台服务器上,应该如何做虚拟主机的设置呢? 在apache http服务 ...

最新文章

  1. 【Prometheus】Exporter详解
  2. 高通 MSM8K bootloader : SBL1 .
  3. [转]一些需要禁用的PHP危险函数和禁用方法
  4. python函数实例解析_python支持返回函数的实例解析
  5. 简述linux虚拟内存的概念,Linux进程虚拟内存中的相关概念
  6. 用C#写的汉语转拼音缩写的例子
  7. ThinkPHP admin.php后台登录
  8. 聚类算法 距离矩阵_论文阅读9——AP聚类算法
  9. Java Socket实战之六 使用NIO包实现Socket通信
  10. 异常mongodb:Invalid BSON field name XXXXXX:YYYYY.zz
  11. Capture CIS 软件功能介绍
  12. explain mysql_mysql explain详解
  13. 程序员的自我修养_之三_曾国藩与左宗棠
  14. braft-editor 富文本编辑器在谷歌复制图片出现两张
  15. AVFormatContext、AV_read_frame、av_seek_frame
  16. Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap space
  17. 在win20008上运行U890破解提示sorry,this application cannot run under a virtual machine
  18. 2021-11-02 没羞没臊的商家装傻充愣昧着良知昧着基本人格耍赖达到丧心病狂程度.
  19. OpenResty 在马蜂窝广告监测中的应用
  20. 2022年陕西最新建筑施工电工(建筑特种作业)模拟考试试题及答案

热门文章

  1. 局域网通信软件 飞鸽传书
  2. 【Axure10基础教程】第七章 设置文本
  3. matlab三维绘图注释,Matlab三维绘图与图形处理
  4. Auto CAD三维图怎么画?cad三维图怎么画教程
  5. BAT脚本实现FTP文件自动传输
  6. Sigmoid函数解析
  7. 盒子模型属性详解及案例
  8. Pruning Filters for Efficient ConvNets详解
  9. 2022广西省安全员C证上岗证题目及在线模拟考试
  10. Internal error: : 8 [#1] PREEMPT SMP ARM,vmlinux反汇编命令调试查找错误的步骤