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. web.config配置文件中的configSource属性

    每个网站里都会有一个web.config文件.修改Web.config文件会导致IIS重启,就是随意的回车一下也会导致重启.微软建议,不要将需要修改的配置内容保存在web.config中.而是单独放在 ...

  2. ubuntu 下 Nginx相关设置

    ubuntu安装Nginx之后的文件结构大致为: 所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下 启动程序文件在/usr/ ...

  3. 转载别人的DLL DEll研究

    昨日,编了个DLL和EXE来进行了下测试,exe通过lib静态联编dll,来调用它的导出类,当改变DLL中导出类的结构(eg.成员变量的顺序等),从新发布DLL而不从新联结编译EXE,就会造成错误的执 ...

  4. 联想打字必须按FN+数字-fn打字

    对于联想G40.14英寸系列的本本,好多时候无意间可能把数字键锁定了. 这时候要做的是:打开运行--输入OSK--打开虚拟屏幕键盘.这时候可以找到 选项---打开数字键盘. 有时候某些电脑上没有NUM ...

  5. Less-minxin传参

    //mixin传参 --简单传参,example: .border-radius(@radius) { -webkit-border-radius: @radius; -moz-border-radi ...

  6. ssh访问跳过RSA key"yes/no"验证

    通常我们再批量配置多台机器的时候经常出现通过ssh批量登录机器提示 RSA key fingerprint is ::a6:b1:c9:d7:b8::c1:::8e:f5::2b:8b. Are yo ...

  7. Go语言性能优化

    原文:http://bravenewgeek.com/so-you-wanna-go-fast/ 我曾经和很多聪明的人一起工作.我们很多人都对性能问题很痴迷,我们之前所做的是尝试逼近能够预期的(性能) ...

  8. ubuntu 安装低版本firefox

    firefox 57以后很多插件不支持了,ubuntu16自带火狐版本59,想换回56. 1.下载想换回的版本 https://ftp.mozilla.org/pub/mozilla.org/fire ...

  9. 如何看懂ORACLE执行计划

    如何看懂Oracle执行计划 一.什么是执行计划 An explain plan is a representation of the access path that is taken when a ...

  10. php 使用imagettftext()函数出问题的原因

    <?php header('Content-type: image/png'); $im = imagecreatetruecolor(400, 300); //创建画布 $white = im ...