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>