httpd2.2访问控制与虚拟主机配置

httpd2.2访问控制与虚拟主机配置

实验环境:CentOS 6.9 httpd 2.2

基础知识:

站点访问控制

   可以基于两种类型的路径指明对那些资源进行访问控制
   文件系统路径
   <Directory ""> </Direcotry>
  <File ""> </File>
   <FileMatch ""> </FileMatch>
   URL路径:
   <Location ""> </Location>
  ...
访问控制机制
   基于来源地址
  基于账号
  Directory中“基于来源地址”实现访问控制
    (1) Options
       所有可用特性:
        Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
        None, All
        Indexes: 索引;
        FollowSymlinks:允许跟踪符号链接文件;
    (2) 基于来源地址的访问控制机制
       Order:检查次序
       Order allow,deny 白名单
       Order deny,allow 黑名单
      Allow from
      Deny from
  来源地址:
    IP
     NetAddr:
      172.16
       172.16.0.0
      172.16.0.0/16
      172.16.0.0/255.255.0.0
基于用户的访问控制
  认证质询:
     WWW-Authenticate:响应码为401,拒绝客户端请求,并说明要求客户提供账号和密码;
  认证:
  Authorization:客户端用户填入账号和密码后再次发送请求报文;认证通过,则服务器发送响应的资源;
  认证类型:
    basic:明文
    digest:消息摘要
  安全域:需要用户认证后方能访问的路径;
  应该通过名称对其进行标识,并用于告知用户认证的原因;
   虚拟账号:仅用于访问某服务时用到的认证标识;
  存储:
     文本文件
    SQL数据库
    ldap
    nis
  basic认证:
   (1) 定义安全域
   <Directory "">
  Options None
  AllowOverride None
  AuthType Basic
  AuthName "STRING"
  AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE"
  Require user username1 username2 ...
   </Directory>
  允许账号文件中的所有用户登录访问:
  Require valid-user
   (2) 提供账号和密码存储(文本文件)
   使用htpasswd命令进行管理
  htpasswd [options] passwordfile username
    -c: 自动创建passwordfile,因此,仅应该在添加第一个用户时使用;
     -m: md5加密用户密码;
    -s: sha1加密用户密码;
     -D: 删除指定用户
   (3) 实现基于组进行认证
  <Directory "">
  Options None
  AllowOverride None
   AuthType Basic
   AuthName "STRING"
   AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE"
   AuthGroupFile "/PATH/TO/HTTPD_GROUP_FILE"
   Require group GROUP1 GROUP2 ...
   </Directory>
  要提供:用户账号文件和组文件;
   组文件:每一行定义一个组
     GRP_NAME:user1 user2 user3 ...

虚拟主机
   有三种实现方案:
     基于ip:
       为每个虚拟主机准备至少一个ip地址;
    基于port:
      为每个虚拟主机准备至少一个专用port;实践中很少使用;
    基于hostname:
       为每个虚拟主机准备至少一个专用hostname;
     可混合使用上述三种方式中任意方式;
   注意:一般虚拟主机莫与中心主机混用,所以,要使用虚拟主机,先禁用中心主机;
   禁用中心主机:注释DocumentRoot
   每个虚拟主机都有专用配置:
     <VirtualHost "IP:PORT">
     SeverName
    DocumentRoot ""
    </VirtualHost>
    ServerAlias: 虚拟主机的别名;
     ErrorLog
     CustomLog
    <Directory "">
    </Directory>

实验过程:

1.基于来源地址的访问控制(源地址可以伪装适用性有限)
  允许的地址访问
  编辑/etc/httpd/conf/httpd.conf配置文件

    vim /etc/httpd/conf/httpd.conf

  找到当前主目录下的 Order allow,deny字段
  修改allow from字段(这里的ip是你想允许访问的ip)

  之后保存退出
  重启httpd服务

service httpd restart(reload也行)

  除了192.168.242.1其他机器均无法访问目标页面

  不允许地址访问
  编辑/etc/httpd/conf/httpd.conf配置文件

    vim /etc/httpd/conf/httpd.conf

  找到当前主目录下的 Order allow,deny字段
  进行如下的修改,重启服务后可以实现禁止目标ip的访问

service httpd restart(reload也行)

2.基于用户的访问控制
  一般情况下有以下两种,digest方式有些浏览器不支持,适用性有限,basic明文相对比较危险,不过可以尝试通过https来实现加密有一定适用性。目前大多数的用户控制使用的是表单提交。
    (1)basic:明文
    (2)digest:消息摘要

  环境:
    在/var/www/html目录下创建一个新的admin目录,在目录下新建一个内容是admin的index.html文件

  编辑配置文件/etc/httpd/conf/httpd.conf

vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/admin">
    Options None
    AllowOverride None
    AuthType Basic
    AuthName "Administator private"
    AuthUserFile "/etc/httpd/conf.d/.htpasswd"
    Require valid-user
</Directory>


  保存退出后开始创建用户和密钥文件(第一次要-c之后添加用户不需要)

htpasswd -c -m /etc/httpd/conf.d/.htpasswd admin
htpasswd -m /etc/httpd/conf.d/.htpasswd user

  重启httpd服务

    service httpd restart

  访问对应目录下的页面会提醒输入账号和密码

  正确输入后显示页面内容

  同时这里还可以实现基于用户组的限制访问
  整体方法类似用户控制,只是多了一个组文件
  编辑/etc/httpd/conf/httpd.conf文件

<Directory "/var/www/html/admin">
    Options None
    AllowOverride None
    AuthType Basic
    AuthName "Administator private"
    AuthUserFile "/etc/httpd/conf.d/.htpasswd"
    AuthGroupFile "/etc/httpd/conf.d/.htgroup"
    Require group admin
</Directory>


  用户添加仍然使用之前的命令
  这里就不在添加直接做分组就好
  创建分组配置文件

    vim /etc/httpd/conf.d/.htgroup


  保存退出后,重启httpd服务

    service httpd restart

  之后访问对应页面,只有在admin组下的用户可以访问,其他用户无法访问

  一直在该页面循环


  可以正常访问

3.虚拟主机的3种实现

  在httpd2.2下启用虚拟主机的话,最好将主目录禁用
  编辑httpd的配置文件

    vim /etc/httpd/conf/httpd.conf

  找到DocumentRoot "/var/www/html"字段,将其注释掉

基于ip
  添加一块网卡
  创建好对应目录和页面

mkdir -pv /data/web{1,2}
echo web1 > /data/web1/index.html
echo web2 > /data/web2/index.html

  在配置文件的最后写入一下字段,

    <VirtualHost 192.168.242.150:80>
                                ServerName web1.douma.com
                                DocumentRoot "/data/web1"
    </VirtualHost>

    <VirtualHost 192.168.242.151:80>
                                ServerName web2.douma.com
                                DocumentRoot "/data/web2"
</VirtualHost>


  保存后重启服务,之后进行检验

基于port
  修改配置文件

&emsp;&emsp;找到listen字段添加8080

    <VirtualHost 192.168.242.150:80>
    ServerName web1.douma.com
    DocumentRoot "/data/web1"
</VirtualHost>

<VirtualHost 192.168.242.150:8080>
    ServerName web2.douma.com
    DocumentRoot "/data/web2"
</VirtualHost>


  保存后,重启httpd服务并且进行检验

基于hostname
  2.2 要开启NameVirtualHost:80 项
  修改配置文件

NameVirtualHost 192.168.242.150:80

<VirtualHost 192.168.242.150:80>
    ServerName web1.douma.com
    DocumentRoot "/data/web1"
</VirtualHost>

<VirtualHost 192.168.242.150:80>
    ServerName web2.douma.com
    DocumentRoot "/data/web2"
</VirtualHost>

  保存后重启httpd服务,这里要修改hosts文件,使其可以进行解析

原文地址:http://blog.51cto.com/11010461/2109162

时间: 2024-10-31 11:44:46

httpd2.2访问控制与虚拟主机配置的相关文章

Httpd访问控制、虚拟主机、网页压缩优化

目录 HTTPD访问控制.虚拟主机.网页压缩优化 HTTPD访问控制 HTTPD访问控制的实现 虚拟主机 网页优化之页面压缩 扩展 本实验为前次博客的扩展,有兴趣可以参考HTTP服务安装与配置 HTTPD访问控制.虚拟主机.网页压缩优化 HTTPD访问控制 访问控制:限制客户端可以访问的资源,或限制其不能访问某些资源 分类 基于来源地址(常用) 基于账号 basic基于虚拟账号认证(明文传输需要进行加密) digest信息摘要认证 实现方式 <Directory ""> 内

【I am a coder】Linux虚拟主机配置终极篇

Linux虚拟主机配置 一.概述 虚拟主机(Virtual Host),又称虚拟服务器.主机空间或是网页空间,是一种网络技术,可以让多个主机名称,在一个单一的服务器上运作,而且可以分开支持每个单一的主机名称.虚拟主机可以运行多个网站或服务.虚拟并非指不存在,而是指空间是由实体的服务器延伸而来,其硬件系统可以是基于服务器群,或者单个服务器.其技术是互联网服务器采用的节省服务器硬件成本的技术,虚拟主机技术主要应用于HTTP.FTP.EMAIL等多项服务,将一台服务器的某项或者全部服务内容逻辑划分为多

apache-详细配置文件介绍+多种方式虚拟主机配置

grep -v "#" /etc/httpd/conf/httpd.conf ServerTokens OS    返回Server :Apache/2.0.41(unix) servertokens 指令 说明:配置HTTP服务器回应头,此指令控制了server回送给客户端的回应头域是否包含关于服务器OS类型和编译的模块描述信息 语法: servertokens  major|minor|minimal|productonly|os|full apache 启动后有9个进程,一个主进

Apache虚拟主机配置详解

1.配置环境说明 系统环境:CentOS7 Apache环境:编译安装的httpd-2.4.7 系统限制:关闭了防火墙和selinux hosts文件中配置以下域名解析 192.168.115.150    www.web1.com 192.168.115.150    www.web2.com 2.Apache虚拟主机简介 虚拟主机是指在一个机器上运行多个网站(例如:www.web1.com和www.web2.com).每个站点希望用不同的域名和站点目录,或者是不同端口.不同的IP就需要虚拟主

IP、Apache虚拟主机配置部分学习笔记

IP地址 IP地址就是计算机的一个"编号",该编号是唯一的.相当于我们的身份证号码一样. IP地址格式:a.b.c.d  ,每一段的取值范围0-255. 本机的IP地址:127.0.0.1      只能是自己访问自己,别人无法通过这个IP访问你的电脑. 本机的域名:localhost         只能是自己访问自己,别人无法通过这个域名来访问你的电脑. 别人要想访问你的电脑,必须通过网卡的IP地址来访问. nslookup  www.baidu.com  命令窗口查看域名对应得I

Apache虚拟主机配置

在一个Apache服务器上可以配置多个虚拟主机,实现一个服务器提供多站点服务,其实就是访问同一个服务器上的不同目录.Apache虚拟主机配置有3中方法:基于IP配置.基于域名配置和基于端口配置,这里介绍基于域名配置和基于端口配置,基于IP配置方法类似. 1. Apache基于域名配置虚拟主机: 打开Apache安装目录下的配置文件conf/extra/httpd-vhosts.conf,添加如下配置信息: <VirtualHost _default_:80> DocumentRoot &quo

lamp centos虚拟主机配置

1.基于不同端口的虚拟主机配置 [[email protected]~]# vi /etc/httpd/conf/httpd.conf Listen 80      #设置监听不同的虚拟主机需要使用的端口 Listen 8080 Listen 8088 <Virtualhost*:80>                      #三个不同端口的主机 ServerName www.80.com DocumentRoot /var/www/html/80 </Virtualhost>

Ngnix 安装、信号量、虚拟主机配置

一.Ngnix安装 ngnix的安装很简单 1.先从ngnix官网下载ngnix压缩包 wget http://nginx.org/download/nginx-1.6.2.tar.gz 2.解压并进入其目录 tar -zxf nginx-1.6.2.tar.gz cd nginx-1.6.2 3.编译安装 ./configure --prefix=/usr/local/ngnix #此处有可能报错,Ngnix依赖于pcre库,所以要先安装pcre库 yum install pcre pcre-

apache2.2 虚拟主机配置

一.改动httpd.conf 打开appserv的安装文件夹,找到httpd.conf文件,分别去掉以下两行文字前面的#号. #LoadModule vhost_alias_module modules/mod_vhost_alias.so 去掉#意思是启用apache的虚拟主机功能. #Include conf/extra/httpd-vhosts.conf 去掉这一行的#意思是从conf/extra/httpd-vhosts.conf这个文件导入虚拟主机配置 二.改动httpd-vhosts