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. Python 实现购物商城,含有用户入口和商家入口

    这是模拟淘宝的一个简易的购物商城程序. 用户入口具有以下功能: 登录认证 可以锁定用户 密码输入次数大于3次,锁定用户名 连续三次输错用户名退出程序 可以选择直接购买,也可以选择加入购物车 用户使用支 ...

  2. Microsoft Visual C++ 2005 Redistributable---win下安装软件“嘭”的一声报错!

    今天下了个MindManager,正准备安装结果出现了如题的错误提示!!! 于是百度/google一下,在权威的微软官网下找到了答案,他妈的,看了之后表示很无奈 If the non unicode ...

  3. IOS控件:长度单位换算(UITextField,IBAction,委托事件touchesBegan)

    #import <UIKit/UIKit.h> @interface demo7_dayViewController : UIViewController { IBOutlet UITex ...

  4. 两个表join 连接,去掉重复的数据

    -------distinct 去重复查询 select * from  accounts acc join (select distinct accid from roles) r on r.acc ...

  5. centos7 docker镜像加速器配置

    CentOS的配置方式略微复杂,需要先将默认的配置文件复制出来 /lib/systemd/system/docker.service -> /etc/systemd/system/docker. ...

  6. 转!! 关于jsp编码设置 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

    我们在写jsp页面的时候经常会在页面头部使用如下代码: <%@ page language="java" contentType="text/html; chars ...

  7. python单线程解决并发

    1.单线程解决并发 方式一 import socket import select # 百度创建连接:非阻塞 client1 = socket.socket() client1.setblocking ...

  8. (4.6)sql2008中的group by grouping sets

    最近遇到一个情况,需要在内网系统中出一个统计报表.需要根据不同条件使用多个group by语句.需要将所有聚合的数据进行UNION操作来完成不同维度的统计查看. 直到发现在SQL SERVER 200 ...

  9. 使用Free命令查看Linux服务器内存使用状况(-/+ buffers/cache详解)

    free命令可选参数 -b,-k,-m,-g show output in bytes, KB, MB, or GB -h human readable output (automatic unit ...

  10. 关于java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log

    配置JFinal环境时,jar包已导入,web.xml已配置,Config也已经配置好,测试服务器时不停地出现 Exception in thread "main" java.la ...