Linux Apache Web 服務器(續三)
2024-08-27 18:23:28
供稿:網友
八、建立Apache站點的基本安全機制 對于WWW服務來說,在WWW服務器和WWW瀏覽器之間并不始終維持對話過程。辦要WWW服務器完成對一個URL請求的服務,連接就斷開了 。
在這種情況下,在WWW上保證可以使用的唯一認證機制是由HTTP本身提供 的。在標準的Apache服務器實現了這樣的認證,它能控制哪些主機可能訪問特定的站點或特點的站點的一部分。
這種認證可以分為兩種,一種是基于主機的的認證,另一種是基于用戶名/口令的認證。由于互聯網上的決大多數用戶的IP地址是動態獲得的,所以基于主機的認證方式并不總適用。所以在大多數情況下,傳統的基于用戶名/口令的認證方式更為現實。下面我們就對這兩種認證的實現做一簡要的介紹。
8.1 基于主機的認證方式
在種認證模式顧名思義,訪問是用主機名或主機IP地址來控制的。支持這種認證方式的是Apache的mod_access模塊,這個模塊缺省狀態下是被安裝了的。該模塊用以下幾種Apache命令來提供訪問控制功能。
allow命令
語法:allow from host1 host2 host3 ...
這個命令定義了允許訪問站點或目錄的主機清單。主機清單可以用以下幾
種形式表示:
ALL:代表所有主機;
主機的全域名,如:www.mot.com;
主機的部分域名,如:.mot.com;
完整的IP地址,如:202.98.2.32;
部分IP地址,如:202.98
網絡地址/網絡掩碼對,如:202.98.0.0/255.255.0.0
網絡地址/nn(CIDR定義),如:202.98.0.1/16
deny命令
語法:deny from host1 host2 host3 ...
這個命令定義了禁止訪問站點或目錄的主機清單,其他與allow命令相似。
order命令
語法:order deny,allow | allow,deny
這個命令定義評價allow和deny命令的先后順序。
例如:
<Directory /home/httpd/html>
order deny,allow
deny from www.mot.com
allow all
</Directory>
這組命令設置了禁止www.mot.com訪問/home/httpd/html目錄下的文件。
請大家注意,順序是先deny后allow,如果是:order allow,deny 那么,先允許所有的主機訪問,然后再禁止,這樣是無效的,所有主機仍然能夠訪問。
8.2 基于用戶名/口令的認證方式
這種認證方式其實相當簡單,當WWW瀏覽器請求經此認證模式保護的URL
時,將會出現一個對話框,要求用戶鍵入用戶名和口令。用戶輸入后,傳給WWW服務器,WWW服務器驗證它的正確性,如果正確,返回頁面,否則返回401錯誤。要說明的一點是,這種認證模式是基本的,并不能用于安全性要求極高的場合。
Apache中有許多模塊可以支持這種認證方式,下面我們就介紹一下最基本、最標準的mod_auth模塊。正如前面提到的一樣,mod_auth模塊使用存儲在文本文件中的用戶名、組名和口令來實現認證。這種方法非常適合處理少量用戶,它能工作得很好。如果你需要對大量的用戶,如數以千計的用戶做認證時,這種方法的性能將急劇下降到不可忍受,所以當這種情況下,就需要考慮使用mod_dbm模塊或mod_mysql模塊來獲得更好的性能。
實例一:需要用戶名和口令的訪問控制
下面我們就一起來看一下如何建立需要用戶名/口令才能進行訪問的目錄。
基本情況: www.xxx.com
的站點有設置為:
DocumentRoot /home/httpd/html
AccessFileName .htaccess
AllowOverride All
需求:限制/home/httpd/html/backup/目錄的訪問,只允許用戶“super”以口令“fill-06”訪問此目錄。
實現步驟:
使用htpasswd建立用戶文件