Apache 訪問控制

Apache訪問控制php

  • 版本:Apche 2.3 前

經過設置訪問控制,可對網站進行權限管理,提升安全性。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.後面的參數會覆蓋掉前面的參數。
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 舉例說明

 

訪問控制配置express

以下配置均可在主配置文件、虛擬主機配置文件配置apache

  • 配置目錄1:vim httpd-vhosts.conf
  • 配置目錄2:vim httpd.conf

指定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>
配置

指定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 "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訪問控制

  • 版本: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.100
    </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屏蔽垃圾網絡爬蟲)

 

相關文章
相關標籤/搜索