Apache访问控制

  • 版本:Apche 2.3 前

通过设置访问控制,可对网站进行权限管理,提高安全性。

参数介绍

<Directory />: 行为对根目录的限制

Options:允许使用控制目录特征的指令.他们包括Options 和XBitHack
参数:
1、All:准许以下除MultiViews以外所有功能
2、MultiViews:允许多重内容被浏览,如果你的目录下有一个叫做foo.txt的文件,那么你可以通过/foo来访问到它,这对于一个多语言内容的站点比较有用
3、Indexes:当用户访问该目录时,如果用户找不到DirectoryIndex指定的主页文件(例如index.html),则返回该目录下的文件列表给用户。
4、IncludesNOEXEC:准许SSI,但不可使用#exec和#include功能
5、Includes:准许SSI
6、FollowSymLinks:在该目录中,服务器将跟踪符号链接。注意,即使服务器跟踪符号链接,它也不会改变用来匹配不同区域的路径名,如果在<Local>;标记内设置,该选项会被忽略
7、SymLinksIfOwnerMatch:在该目录中仅仅跟踪本站点内的链接
8、ExecCGI:在该目录下准许使用CGI
9、FollowSymLinks:在该目录下允许文件系统使用符号连接,默认为禁用。
10、SymLinksIfOwnerMatch:当使用符号连接时,只有当符号连接的文件拥有者与实际文件的拥有者相同时才可以访问。 AllowOverride:AllowOverride参数就是指明Apache服务器是否去找.htacess文件作为配置文件,如果设置为none,那么服务器将忽略.htacess文件,如果设置为All,那么所有在.htaccess文件里有的指令都将被重写。对于AllowOverride,还可以对它指定如下一些能被重写的指令类型.
参数:
1、None:当AllowOverride被设置为None时。不搜索该目录下的.htaccess文件(可以减小服务器开销)。
2、All:在.htaccess文件中可以使用所有的指令。
3、AuthConfig:允许使用所有的权限指令,他们包括AuthDBMGroupFile AuthDBMUserFile AuthGroupFile AuthName AuthTypeAuthUserFile和Require FileInfo:允许使用文件控制类型的指令。
参数:
1、AddEncoding
2、AddLanguage
3、AddType
4、DEfaultType
5、ErrorDocument
6、LanguagePriority Indexes:允许使用目录控制类型的指令。
参数:
1、AddDescription
2、AddIcon
3、AddIconByEncoding
4、AddIconByType
5、DefaultIcon
6、DirectoryIndex
7、FancyIndexing
8、HeaderName
9、IndexIgnore
10、IndexOptions
11、ReadmeName Limit:允许使用权限控制指令。
参数:
1、Allow Deny
2、Order Order:控制在访问时Allow和Deny两个访问规则哪个优先:
参数:
1、Allow:允许访问的主机列表(可用域名或子网,例如:Allow from 192.168.0.0/16)。
2、Deny:拒绝访问的主机列表。 AuthName:在出现输入帐号与密码的对话框中,出现的提示字符 Authtype:认证类型 AuthUserFile:保护目录所使用的帐号密码的设置文件,可以随意设置此文件,注意,此文件不要放置在apache可浏览的目录内,以免被窃取; require: 网页访问限制
参数:
1、valid-user:后面接可以使用的帐号,若只想设置一个帐号认证用,则在require user 后面直接接用户名,此处的例子是适用于多个用户名;
2、all granted:允许所有授权 <Directory />:结尾
Order 定义顺序
<Directory /usr/local/apache/install>:指定控制目录
Order deny,allow:先执行deny,后执行allow
deny from all:全不匹配
allow from 127.0.0.1:指定127匹配
</Directory> 1.deny与allow有先后顺序的。
2.后面的参数会覆盖掉前面的参数。

Order 解释

举例1:
Order allow,deny
deny from all
allow from 127.0.0.1
注:先allow,后deny 127不会被匹配,因为deny会覆盖allow。 举例2:
Order deny,alow
deny from all
注:全部不能通行。 举例3:
Order alow,deny
deny from all
注:全部不能通行。 举例4:
Order deny,all
注:全部都可以通行(默认) 举例5:
Order allow,deny
注:全部不能通行(默认)

Order 举例说明

访问控制配置

如下配置都可在主配置文件、虚拟主机配置文件配置

  • 配置目录1:vim httpd-vhosts.conf
  • 配置目录2:vim httpd.conf

指定IP或IP段不可以访问网页、其他人可以访问

<Directory /usr/local/apache/install>
Order allow,deny
Allow from all
Deny from 127.0.0.1
Deny from 192.168.1.0/24
</Directory>

配置


指定IP或IP段可以访问网页、其他人不可访问
<Directory /usr/local/apache/install>
Order deny,allow
Allow from 127.0.0.1
Allow from 192.168.1.0/24
Deny from all
</Directory>

配置


指定IP或IP段可以访问指定网页URL包含存在字段文件,其他人都不可访问
# 指定admin文件类型
<filesmatch "(.*)admin(.*)">
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from 192.168.1.0/24
</filesmatch>

配置


限制某个目录下的php类型文件没有执行权限
<Directory /usr/local/apache/>
# 定义php不能解析
php_admin_flag engine off
<filesmatch "(.*)php">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</filesmatch>
</Directory>

配置


其他禁止访问了解
1.禁止访问某些文件/目录
增加Files选项来控制,比如要不允许访问.inc扩展名的文件,保护php类库:
<Files ~ "\.insc$"> 2.禁止访问某些指定目录:(可以用<DirectoryMatch>来进行正则匹配)
<Directory ~ "/var/www/(.+)*[0-9]{3}">
当然可以写目录全局路径
<Directory /var/www/111> 3.通过文件匹配来进行禁止,比如禁止所有针对图片的访问
<Filesmatch (.*)php> 4.针对URL相对路径的禁止访问
<Location /dir/>

说明案例


用户验证配置

注:用户登陆验证,指定某一个网站需要用户登陆才可以访问。

1.修改虚拟主机配置文件

# 配置用户验证
<Directory /usr/local/html>
Allowoverride AuthConfig
AuthName ""
AuthType "Basic"
AuthUserFile /usr/local/.htpasswd
require valid-user
</Directory>

配置文件

2.创建验证用户

# 创建用户 第二次添加用户不需要用-c参数
apache/bin/htpasswd -c /usr/local/.htpasswd xsk 参数: -c 创建create -m md5加密方法

3.重新加载配置文件

/usr/local/apache2/bin/apachectl graceful

Apache访问控制

  • 版本:apache 2.4+ 新增
  • Apache2.4中开始使用mod_authz_host这个新的模块来进行访问控制和其他的授权检查。
  • 原来在Apache2.2版本下用以实现网站访问控制的Order,Allow,Deny指令需要替换为新的Require访问控制指令。

使用格式:

<Directory ...>

    <RequireAll>
xxx
</RequireAll> </Directory>

常用参数:

# 允许所有
Require all granted # 拒绝所有
Require all denied # 允许匹配环境变量中任意一个
Require env env-var [env-var] ... # 允许特定的HTTP方法(GET/POST/HEAD/OPTIONS)
Require method http-method [http-method] ... # 允许,表达式为true
Require expr expression # 允许特定用户
Require user userid [ userid ] ... # 允许特定用户组
Require group group-name [group-name] ... # 允许,有效用户
Require valid-user # # 允许特定IP或IP段,多个IP或IP段间使用空格分隔
Require ip 192.100 192.168.100 192.168.100.5
<Directory xxx>

    <RequireAll>
Require all denied
</RequireAll> </Directory>

拒绝所有访问请求

<Directory xxx>

    <RequireAll>
Require all granted
</RequireAll> </Directory>

允许所有访问请求

<Directory xxx>

    <RequireAll>
Require host xxx.com
</RequireAll> </Directory>

只允许指定域名主机访问请求,其他请求拒绝

<Directory xxx>

    <RequireAll>
Require ip 172.18 192.168.1.1 192.168.1.2
</RequireAll> </Directory>

只允许指定IP网段或指定IP访问请求

<Directory xxx>

    <RequireAll>
Require all granted
Require not ip 192.168.1.1
Require not ip 192.120 192.168.
</RequireAll> </Directory>

允许所有访问请求,但拒绝指定IP或IP段的请求(组织恶意IP或爬虫网段访问)

说明:使用mod_setenvif通过正则表达式匹配来访请求的User-Agent,并设置内部环境变量BADBOT,最后拒绝BADBOT的访问请求。

<Directory xxx>

    SetEnvIfNoCase User-Agent ".*(FeedDemon|JikeSpider|AskTbFXTV|CrawlDaddy|Feedly|Swiftbot|ZmEu|oBot).*" BADBOT
SetEnvIfNoCase User-Agent "brandwatch" BADBOT
SetEnvIfNoCase User-Agent "rogerbot" BADBOT
<RequireAll>
Require all granted
Require not env BADBOT
Require not ip 192.168.100.1
</RequireAll> </Directory>

允许所有访问请求,但拒绝某些User-Agent的访问请求(通过User-Agent屏蔽垃圾网络爬虫)

Apache 访问控制的更多相关文章

  1. apache访问控制设置

    apache访问控制设置 (2009-03-17 11:24:36) 转载▼ 标签: it 杂谈   Order allow,deny    默认情况下禁止所有客户机访问 Order deny,all ...

  2. Linux:Apache改静态网页、个人用户主页、虚拟网站主机、Apache访问控制

    Apache改静态网页  1.概述: Apache是web服务器(静态解析,如HTML),tomcat是java应用服务器(动态解析,如JSP.PHP) Tomcat只是一个servlet(jsp也翻 ...

  3. Apache访问控制

    简单概述 httpd服务的访问控制 作用: 控制对网站资源的访问 为特定的网站目录添加访问授权 常用访问控制方式: 客户机地址限制 用户授权限制 1.基于客户端地址的访问控制 Order配置项,定义控 ...

  4. Apache——访问控制

    Order 指定执行允许访问规则和拒绝访问规则 Deny 定义拒绝访问列表 Allow 定义允许访问列表 Order allow,deny  先执行允许,再执行拒绝 Order deny,allow ...

  5. LAMP 2.4 Apache访问控制

    通过查看日志发现有个IP 恶意攻击你的网址,可以控制这个IP的访问. 打开主配置文件复制模板. vim /usr/local/apache2/conf/httpd.conf 搜索 /Order 复制 ...

  6. Apache 配置多站点访问「为项目分配二级域名」

    一级域名(baidu.com)也叫作顶级域名,注册一级域名是需要付费的. 而二级域名(image.baidu.com)是一级域名的延伸,所以只要购买了一级域名,二级域名是可以任意配置的. 其实(www ...

  7. Apache常用配置项

    301是永久重定向 302是临时重定向 编辑虚拟主机的配置文件需要用到apache的rewrite模块 所以要用要先检查apache是否安装了rewrite模块 # ./bin/apachectl - ...

  8. apache用户认证、默认主机、301跳转

    我更正论坛一个同学帖子(今天坑我一下午):原文http://www.apelearn.com/bbs/foru ... 3%BB%A7%C8%CF%D6%A4 apache用户认证.默认主机.301跳 ...

  9. 分类: LINUX apache 访问设置配置

    分类: LINUX 在一次面试的时候被问到apache访问控制的问题.由于以前对apache的访问控制都是通过iptalbes来实现的,没有实际在apache上操作过访问控制.所以只知道个大概: 在主 ...

随机推荐

  1. 项目文件不完整。缺少预期导入,DotnetCore如何切换SDK版本

    1. 项目文件不完整.缺少预期导入 如图: 2. 出现原因: SDK版本与项目所需的SDK版本不一致. 3. 解决问题: 3.1 项目所需的SDK版本如何确定? a. 检查.sln文件所在目录是否有: ...

  2. javascript汇总(转)

    字符串操作:http://www.cnblogs.com/magetu/archive/2012/12/18/javascript-string-methods-reference.html 几种对象 ...

  3. 【转】msxml 操作xml

    转自http://blog.csdn.net/dai_jing/article/details/8393392,原始出处不详. 1.简介 在.NET平台,微软为C#或托管C++程序员提供了丰富的类库, ...

  4. db2 sequence

    我的上两个专栏中已经介绍到了与版本 8 功能相关的主题.我们可能需要在今天设计的数据库和应用程序中考虑这些功能.我们已经谈论了新的数据分区的辅助索引和附加的索引修改.在上一期中,我们了解了 DSSIZ ...

  5. C#实现动态编译代码

    /*------------------------------------------------------------------------------ * Copyright (C) 201 ...

  6. Software Defined Networking For Dummies, Cisco Special Edition

    从接触SDN开始,不论是硬件还是软件,一直都是从具体的点开始,慢慢的勾勒出自己认为的SDN的样子,相信读完这本思科出的关于SDN的书会对其有新的认识 这本书的名字就是Software Defined ...

  7. “绝对”妹纸~position

    CSS:布局之fixed,relative,absolute 记住abs是跟随 relative的,没有看到position:relative;之前他会一直向上查找. 直到执着的找到relative! ...

  8. Android异步处理之AsyncTaskLoader简单使用

    简介 不管是在Android应用开发还是Android平台开发中,异步处理通常是最基本的coding要求.如果你还在主线程中写一些数据库,网络请求,读写本地文件等操作的话那说明你还不是一个合格的And ...

  9. delphi------项目类型

    Console Application:控制台应用程序 writeln('HelloWorld'); //接收用户输入字符 readln: //直到用户输入回车结束 VCL Forms Applica ...

  10. Create a Group Policy Central Store

    一.How to create a Group Policy Central Store You have downloaded or created your own Group Policy Ad ...