Apache访问控制和Web虚拟主机

一、httpd服务的访问控制


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

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 granted
      Require 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,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.152>
    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>
/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,deny
    Allow from all
        (httpd2.4.x这里的两行换成Require all granted)
</Directory>
<VirtualHost 192.168.1.100:80>
    DocumentRoot "/usr/local/httpd/htdocs/www"
    ServerName www.xueluo.org
    ErrorLog "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.org
    ErrorLog "logs/blog.xueluo.org_error_log"
    CustomLog "logs/blog.xueluo.org_access_log" common
</VirtualHost>

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

vim /usr/local/httpd/conf/httpd.conf
  Listen 192.168.1.151:999
    Listen 192.168.1.152:888
/etc/init.d/httpd restart

(3)客户机访问虚拟Web

原文地址:http://blog.51cto.com/13770206/2152338

时间: 2024-10-13 16:11:38

Apache访问控制和Web虚拟主机的相关文章

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

今天在单位服务器上用rpm包的方式部署多个服务的时候,出现问题.结果在网上查到了一篇帖子<rpm包安装apache发布多个虚拟主机>,看完这篇帖子之后才知道自己哪些地方配置的时候出现了遗漏.在此摘抄过来,以备自己以后查看.链接地址:http://www.2cto.com/net/201107/96685.html Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.用rpm包安装apac

Httpd服务器中构建Web虚拟主机

Web虚拟主机指的是在同一台服务器中运行多个Web站点,其中的每一个站点实际上并不肚子占用整个服务器,因此被成为"虚拟"Web主机.通过虚拟Web主机服务可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本'虚拟的Web主机有三种类型 基于域名的虚拟主机 基于IP地址的虚拟主机 基于端口的虚拟主机对于基于IP地址的虚拟主机,每个虚拟Web主机使用不同的IP地址,但是都通过同一台httpd服务器对外提供Web浏览服务.正因如此,用来支撑这些虚拟Web主机的服务器就需要大量的网络接

linux环境apache多端口配置虚拟主机的方法深入介绍

本篇文章是对linux环境apache多端口配置虚拟主机的方法进行了详细的分析介绍,需要的朋友参考下 默认情况下,linux上apache使用的默认文档目录是:/var/www默认端口是:80如果想发布自己的一个系统资源目录,可以使用下面的方法,执行如下命令:(1)添加监听端口#cd /etc/apache2#vim ports.conf文件添加:NameVirtualHost *:8000Listen 8000(2)配置虚拟目录#cd /etc/apache2/sites-available#

Apache搭建web虚拟主机

在同一台Apache服务器中运行多个web站点,其中的每一个站点实际上不会占用着整个服务器,通过虚拟web主机服务可以充分利用服务器的硬件资源,从而降低网站构建以及运行成本.虚拟主机主要类型分为三种: 1.基于IP端口对每个不同域名的虚拟主机设置单独IP,因此,在服务器中需要设置多个网卡,对于硬件成本和IP成本要求都高,此种方式在实际中不常用,本文暂且略过: 2.基于端口IP使用TCP不同端口来区分不同的站点内容,需要在用户访问站点时跟上指定端口号才可实现访问: 3.基于主机名 每个服务器主机可

APache网站服务配置访问控制和构建虚拟主机

博文目录一.Httpd服务的访问控制1.客户机地址限制2.用户授权限制二.构建虚拟Web主机三.配置基于域名的虚拟主机四.配置基于IP地址的虚拟主机五.配置基于端口号的虚拟主机 一.Httpd服务的访问控制 为了更好地控制对网站资源的访问.可以为特定的网站目录添加访问授权.主要分为客户机地址限制和用户授权限制,这两种访问控制方式都应用于httpd.conf配置文件中的目录区域范围内. 1.客户机地址限制 通过Require配置项,可以根据主机的主机名或IP地址来决定是否允许客户端访问.在http

基于Linux搭建apache服务后,怎么构建web虚拟主机?

虚拟web主机指的是在同一台服务器中运行多个web站点,其中的每个站点实际上并不独立占用整个服务器,因此被称为"虚拟"web主机,通过虚拟web主机服务可以充分利用服务器的硬件资源. 使用httpd可以非常方便的去搭建虚拟主机服务器,只需要运行一个httpd服务就能够同时支撑大量的web站点.httpd支持的虚拟主机类型有这么三种(与Windows 的IIS服务一样): 1.相同IP.端口号.不同域名的虚拟主机: 2.相同IP.不同端口号的虚拟主机: 3.不同IP.相同端口号的虚拟主机

基于 Apache 构建 web虚拟主机详解

虚拟 web 主机指的是在同一台服务器中运行多个 web 站点,其中的每个站点实际上并不独立占用整个服务器,因此被称为"虚拟" web主机.通过虚拟 web 主机可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本.使用 httpd 可以非常方便地构建虚拟主机服务器,只需要运行一个 httpd 服务就能够同时支撑起大量的 web 站点.httpd 支持的虚拟主机类型包括以下三种:基于域名:相同IP .相同端口 .不同域名基于IP地址:不同IP.相同端口基于端口:相同IP.不同端

使用httpd(即apache)搭建多个虚拟主机和https相关的用法

要求: 分别使用httpd-2.2和httpd-2.4实现 1.建立httpd服务,要求: (1) 提供两个基于名称的虚拟主机www1, www2:有单独的错误日志和访问日志: (2) 通过www1的/server-status提供状态信息,且仅允许tom用户访问: (3) www2不允许192.168.0.0/24网络中任意主机访问: 2.为上面的第2个虚拟主机提供https服务: 以下将会演示分别在CentOS 6和CentOS 7上搭建httpd,并实现对web的访问控制以及https,在

apache 基于域名的虚拟主机配置

当我们安装完apache之后,搭建一个虚拟主机. 首先启动apache,由于我的apache安装在 /application/apache下,所以通过/application/apache/bin/apachectl -k start 来启动apache.启动完之后可以查看一下 然后进入apache的安装目录找到Hosts这一行 把Include前面的#号去掉 就可以启动虚拟主机了 然后在/var下创建了一个目录/var/fisherman,并且在该目录下的html文件中输入一行内容 [[ema