Apache 访问控制
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>
配置
<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>
配置
# 指定admin文件类型
<filesmatch "(.*)admin(.*)">
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from 192.168.1.0/24
</filesmatch>
配置
<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 访问控制的更多相关文章
- apache访问控制设置
apache访问控制设置 (2009-03-17 11:24:36) 转载▼ 标签: it 杂谈 Order allow,deny 默认情况下禁止所有客户机访问 Order deny,all ...
- Linux:Apache改静态网页、个人用户主页、虚拟网站主机、Apache访问控制
Apache改静态网页 1.概述: Apache是web服务器(静态解析,如HTML),tomcat是java应用服务器(动态解析,如JSP.PHP) Tomcat只是一个servlet(jsp也翻 ...
- Apache访问控制
简单概述 httpd服务的访问控制 作用: 控制对网站资源的访问 为特定的网站目录添加访问授权 常用访问控制方式: 客户机地址限制 用户授权限制 1.基于客户端地址的访问控制 Order配置项,定义控 ...
- Apache——访问控制
Order 指定执行允许访问规则和拒绝访问规则 Deny 定义拒绝访问列表 Allow 定义允许访问列表 Order allow,deny 先执行允许,再执行拒绝 Order deny,allow ...
- LAMP 2.4 Apache访问控制
通过查看日志发现有个IP 恶意攻击你的网址,可以控制这个IP的访问. 打开主配置文件复制模板. vim /usr/local/apache2/conf/httpd.conf 搜索 /Order 复制 ...
- Apache 配置多站点访问「为项目分配二级域名」
一级域名(baidu.com)也叫作顶级域名,注册一级域名是需要付费的. 而二级域名(image.baidu.com)是一级域名的延伸,所以只要购买了一级域名,二级域名是可以任意配置的. 其实(www ...
- Apache常用配置项
301是永久重定向 302是临时重定向 编辑虚拟主机的配置文件需要用到apache的rewrite模块 所以要用要先检查apache是否安装了rewrite模块 # ./bin/apachectl - ...
- apache用户认证、默认主机、301跳转
我更正论坛一个同学帖子(今天坑我一下午):原文http://www.apelearn.com/bbs/foru ... 3%BB%A7%C8%CF%D6%A4 apache用户认证.默认主机.301跳 ...
- 分类: LINUX apache 访问设置配置
分类: LINUX 在一次面试的时候被问到apache访问控制的问题.由于以前对apache的访问控制都是通过iptalbes来实现的,没有实际在apache上操作过访问控制.所以只知道个大概: 在主 ...
随机推荐
- hdu 4706:Children's Day(模拟题,模拟输出大写字母 N)
Children's Day Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- 【ARDUINO】蓝牙(HC-05)透传
1.蓝牙连接ARDUINO 工作模式:VCC-5.5V GND-GND TXD-RX RXD-TX 工作模式下默认波特率38400 AT模式,在工作模式的基础上KEY-VCC/5.5V 设置从模式: ...
- java中Comparator的用法 -- 实现集合和数组排序
在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标. 接下来我们模拟下在集合对象中对日期属性进行排序 一.实体类Step package com.l ...
- UML学习目录
用例图:http://www.cnblogs.com/yjjm/archive/2012/01/28/2385861.html http://kb.cnblogs.com/page/129491/
- pandas基础: Series和DataFrame的简单介绍
一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...
- 第十五篇:流迭代器 + 算法灵活控制IO流
前言 标准算法配合迭代器使用太美妙了,使我们对容器(数据)的处理更加得心应手.那么,能不能对IO流也使用标准算法呢?有人认为不能,他们说因为IO流不是容器,没有迭代器,故无法使用标准算法.他们错了,错 ...
- mysql "ON DUPLICATE KEY UPDATE" 的使用
ON DUPLICATE KEY UPDATE 语法并不是SQL的标准语法,如果在句尾指定该语法,它会根据指定的主键或者唯一标示索引来更新数据库的内容 具体的操作是想根据唯一标示查看数据库是否存在该记 ...
- [Navicat] 常用快捷键及注意事项
近来需要同时管理多种类型.多台server的数据库,在经历了各种查询客户端(SSMS, SQLyog, PL/SQL等)的不断切换,ip/user/pwd的反复输入的这种自虐式体验后,实在无法忍受,就 ...
- 【工具】SwitchHost的使用
一.问题: 更改Host后,再次启用或者关闭启动Host,Host被恢复原状.原因是修改Host的顺序顺序有问题. 二.解决步骤: 修改Host之前,先点击右下角,关闭所有Host(白色的部分在下面表 ...
- selenium3.x的使用例子
1.需要下载selenium的相关包以备工程调用. 2.工程中配置引用selenium的lib. selenium3.x中主要是根据webdriver进行浏览器的各种操作,可以完全模仿人工操作浏览器, ...