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. ActiveMQ安装优化

    ActiveMQ性能測试 http://m.blog.csdn.net/blog/brushli/41750615 1.下载ActiveMQ 官网:http://activemq.apache.org ...

  2. java web 运动前端

    [写在前面的话:]前不久刚看到过一句话:说好的技术文章应该让读者感觉增加信心,而不是失去信心.有感于这句话是因为以前觉得发一些貌似高深的,看起来nb的东西才算一篇好博文,可是多少有点炫技的成分.可是后 ...

  3. java网络编程3-Socket

    // 有参构造函数创建的socket会访问网络,无参的则不会 //Socket socket=new Socket("www.baidu.com",80); // 当本地端口为0则 ...

  4. jQuery ajax 动态append创建表格出现不兼容ie8

    非常多情况下.通过js(jQuery1.10)动态来创建一些样式,对页面的动态交互来说是非常方便的 可是不同的浏览器针对动态生成的不是非常兼容,在此遇见的不兼容ie8.跟各位分享下 代码: json数 ...

  5. 62、常规控件(5)Navigation View –美观的侧滑视图

    1.main_layout.xml <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.andr ...

  6. 《从零开始学Swift》学习笔记(Day 55)——使用try?和try!区别

    原创文章,欢迎转载.转载请注明:关东升的博客 在使用try进行错误处理的时候,经常会看到try后面跟有问号(?)或感叹号(!),他们有什么区别呢? 1.使用try? try?会将错误转换为可选值,当调 ...

  7. 动态代理:JDK原生动态代理(Java Proxy)和CGLIB动态代理原理+附静态态代理

    本文只是对原文的梳理总结,以及自行理解.自己总结的比较简单,而且不深入,不如直接看原文.不过自己梳理一遍更有助于理解. 详细可参考原文:http://www.cnblogs.com/Carpenter ...

  8. Backtracking is a form of recursion.

    w https://www.cis.upenn.edu/~matuszek/cit594-2012/Pages/backtracking.html Starting at Root, your opt ...

  9. js function,prototype,sub.

    Ojbect 和Function 与普通函数和实例对象 1.实例对象的proto 指向构造函数的原型对象 2.实例对象的proto 指向Ojbect的原型 3.所有函数的proto 都指向Functi ...

  10. 如何理解Nginx, WSGI, Flask之间的关系

    概览 之前对 Nginx,WSGI(或者 uWSGI,uwsgi),Flask(或者 Django),这几者的关系一存存在疑惑.通过查阅了些资料,总算把它们的关系理清了. 总括来说,客户端从发送一个 ...