apache認證、授權、訪問控制


認證對象:某一個網站目錄。

啟用認證

1.即用AllowOverride指令指定哪些指令在針對單個目錄的配置文件中有效:AllowOverride AuthConfig

2.設置密碼登錄訪問某個站點或者文件等

先介紹用密碼來保護服務器上的目錄。

首先需要建立一個密碼文件。這個文件應該放在不能被網絡訪問的位置,以避免被下載。例如,如果/usr/local/apache/htdocs以外的空間不能被網絡訪問,那么可以考慮把密碼文件放在/usr/local/apache/passwd目錄中。

Apache在其安裝目錄的bin子目錄中提供了htpasswd工具,用於建立密碼文件,可以這樣使用:

htpasswd -c /usr/local/apache/passwd/passwords rbowen 

htpasswd會要你輸入密碼,並要求重新輸入以進行確認:

# htpasswd -c /usr/local/apache/passwd/passwords rbowen
New password: mypassword
Re-type new password: mypassword
Adding password for user rbowen 

如果htpasswd不在搜索路徑中,則必須使用完整路徑,如:/usr/local/apache/bin/htpasswd

然后修改httpd.conf或.htaccess文件,指示服務器允許哪些用戶訪問並向用戶索取密碼。若要保護/usr/local/apache/htdocs/secret目錄,則可以將下列指令寫入/usr/local/apache/htdocs/secret/.htaccess或者httpd.conf的<Directory /usr/local/apache/apache/htdocs/secret>段。

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /usr/local/apache/passwd/passwords
Require user rbowen 

對應的實際測試效果:

</VirtualHost>
<VirtualHost *:80>
    ServerName  127.0.0.1
    DocumentRoot "E:/wamp/www/"
    ErrorLog "E:/wamp/logs/www-error.log"
    CustomLog "E:/wamp/logs/www-access.log" common
  <Directory "E:/wamp/www/">
    Options Indexes FollowSymLinks
    #AllowOverride all
   
    AllowOverride AuthConfig
AuthType Basic
AuthName "test authconfig"
AuthUserFile E:/wamp/bin/apache/Apache2.2.21/htpasswd/passwords
Require user rbowen


   
    Order allow,deny
    Allow from all
    </Directory>  

</VirtualHost>

3允許多個人訪問:

如果想允許多人訪問,那么就必須建立一個組文件以確定組中的用戶。其格式很簡單,可以用你喜歡的編輯器建立,例如:

GroupName: rbowen dpitts sungo rshersey

它只是每組一行的一個用空格分隔的組成員列表。

向已有的密碼文件中增加一個用戶,可以輸入:

htpasswd /usr/local/apache/passwd/passwords dpitts

程序的提示和上面的一樣,但是它會追加到已有的文件中,而不是建一個新文件(參數 -c 可以強制建立新的密碼文件)。

現在,需要將.htaccess文件修改成這樣:

AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /usr/local/apache/passwd/passwords
AuthGroupFile /usr/local/apache/passwd/groups
Require group GroupName

現在,GroupName組中的成員都在password文件中有一個相應的記錄,從而允許他們輸入正確的密碼進行訪問。

除了建立組文件,還有另一種途徑允許多人訪問,就是使用如下指令:

Require valid-user

使用上述指令,而不是 Require user rbowen ,可以允許密碼文件中的所有用戶使用正確的密碼進行訪問。通過為每個組建立一個密碼文件,這里甚至允許列舉各個組,其優點是Apache只需要檢查一個文件(而不是兩個),其缺點是,必須維護眾多密碼文件,而且要確保AuthUserFile指定了一個正確的密碼文件

ps:上述如果人多的話,認證需要耗費時間。

4其他:

AllowDeny指令可以允許或拒絕來自特定主機名或主機地址的訪問,同時,Order指令告訴Apache處理這兩個指令的順序,以改變過濾器。

這些指令的用法:

Allow from address

address可以是一個IP地址(或者IP地址的一部分),也可以是一個完整的域名(或者域名的一部分),還可以同時指定多個IP地址和域名。

比如,要拒絕不受歡迎的兜售垃圾的站點:

Deny from 205.252.46.165

這樣,這個指令所管轄的區域將拒絕所有來自該地址的訪問。除了指定IP地址,也可以指定域名,如:

Deny from host.example.com

另外,還可以指定地址或域名的一部分來阻止一個群體:

Deny from 192.101.205
Deny from cyberthugs.com moreidiots.com
Deny from ke

Order可以組合DenyAllow指令,以保證在允許一個群體訪問的同時,對其中的一些又加以限制:

Order deny,allow
Deny from all
Allow from dev.example.com

只列出Allow指令不會得到你想要的結果,因為它在允許指定對象訪問的同時並不禁止其他未列出的對象的訪問。所以上例使用的方法是:首先拒絕任何人,然后允許來自特定主機的訪問。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM