Apache访问控制php
经过设置访问控制,可对网站进行权限管理,提升安全性。html
参数介绍正则表达式
<Directory />: 行为对根目录的限制 Options:容许使用控制目录特征的指令.他们包括Options 和XBitHack 参数: 一、All:准许如下除MultiViews之外全部功能 二、MultiViews:容许多重内容被浏览,若是你的目录下有一个叫作foo.txt的文件,那么你能够经过/foo来访问到它,这对于一个多语言内容的站点比较有用 三、Indexes:当用户访问该目录时,若是用户找不到DirectoryIndex指定的主页文件(例如index.html),则返回该目录下的文件列表给用户。 四、IncludesNOEXEC:准许SSI,但不可以使用#exec和#include功能 五、Includes:准许SSI 六、FollowSymLinks:在该目录中,服务器将跟踪符号连接。注意,即便服务器跟踪符号连接,它也不会改变用来匹配不一样区域的路径名,若是在<Local>;标记内设置,该选项会被忽略 七、SymLinksIfOwnerMatch:在该目录中仅仅跟踪本站点内的连接 八、ExecCGI:在该目录下准许使用CGI 九、FollowSymLinks:在该目录下容许文件系统使用符号链接,默认为禁用。 十、SymLinksIfOwnerMatch:当使用符号链接时,只有当符号链接的文件拥有者与实际文件的拥有者相同时才能够访问。 AllowOverride:AllowOverride参数就是指明Apache服务器是否去找.htacess文件做为配置文件,若是设置为none,那么服务器将忽略.htacess文件,若是设置为All,那么全部在.htaccess文件里有的指令都将被重写。对于AllowOverride,还能够对它指定以下一些能被重写的指令类型. 参数: 一、None:当AllowOverride被设置为None时。不搜索该目录下的.htaccess文件(能够减少服务器开销)。 二、All:在.htaccess文件中可使用全部的指令。 三、AuthConfig:容许使用全部的权限指令,他们包括AuthDBMGroupFile AuthDBMUserFile AuthGroupFile AuthName AuthTypeAuthUserFile和Require FileInfo:容许使用文件控制类型的指令。 参数: 一、AddEncoding 二、AddLanguage 三、AddType 四、DEfaultType 五、ErrorDocument 六、LanguagePriority Indexes:容许使用目录控制类型的指令。 参数: 一、AddDescription 二、AddIcon 三、AddIconByEncoding 四、AddIconByType 五、DefaultIcon 六、DirectoryIndex 七、FancyIndexing 八、HeaderName 九、IndexIgnore 十、IndexOptions 十一、ReadmeName Limit:容许使用权限控制指令。 参数: 一、Allow Deny 二、Order Order:控制在访问时Allow和Deny两个访问规则哪一个优先: 参数: 一、Allow:容许访问的主机列表(可用域名或子网,例如:Allow from 192.168.0.0/16)。 二、Deny:拒绝访问的主机列表。 AuthName:在出现输入账号与密码的对话框中,出现的提示字符 Authtype:认证类型 AuthUserFile:保护目录所使用的账号密码的设置文件,能够随意设置此文件,注意,此文件不要放置在apache可浏览的目录内,以避免被窃取; require: 网页访问限制 参数: 一、valid-user:后面接可使用的账号,若只想设置一个账号认证用,则在require user 后面直接接用户名,此处的例子是适用于多个用户名; 二、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.后面的参数会覆盖掉前面的参数。
举例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 注:所有不能通行(默认)
访问控制配置express
以下配置均可在主配置文件、虚拟主机配置文件配置apache
指定IP或IP段不能够访问网页、其余人能够访问vim
<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 "123" AuthType "Basic" AuthUserFile /usr/local/.htpasswd require valid-user </Directory>
2.建立验证用户ide
# 建立用户 第二次添加用户不须要用-c参数 apache/bin/htpasswd -c /usr/local/.htpasswd xsk 参数: -c 建立create -m md5加密方法
3.从新加载配置文件
/usr/local/apache2/bin/apachectl graceful
Apache访问控制
使用格式:
<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>
<Directory xxx> <RequireAll> Require all granted Require not ip 192.168.1.1 Require not ip 192.120 192.168.100 </RequireAll> </Directory>
说明:使用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>