為了使Apache服務器能夠利用用戶文件中的用戶名和口令信息,需要設置保護域(Realm)。一個域?qū)嶋H上是站點的一部分(如一個目錄、文檔等)或整個站點只供部分用戶訪問。在相關目錄下的.htaccess文件或httpd.conf(acces.conf)中的
AuthName “restricted stuff”
Authtype Basic
AuthUserFile /usr/local/etc/httpd/users
Require valid-user
其中,AuthName指出了保護域的域名(Realm Name)。valid-user參數(shù)意味著user文件中的所有用戶都是可用的。一旦用戶輸入了一個有效的用戶/口令時,同一個域內(nèi)的其他資源都可以利用同樣的用戶/口令來進行訪問,同樣可以使兩個不同的區(qū)域共用同樣的用戶/口令。
(3)告訴服務器哪些用戶擁有資源的訪問權限
如果想將一資源的訪問權限授予一組客戶,可以將他們的名字都列在Require之后。最好的辦法是利用組(group)文件。組的操作和標準的UNIX的組的概念類似,任一個用戶可以屬于一個和數(shù)個組。這樣就可以在配置文件中利用Require對組賦予某些權限。如:
Require group staff
Require group staff admin
Require user adminuser
指定了一個組、幾個組或一個用戶的訪問權限。
需要指出的是,當需要建立大批用戶帳號時,那么Apache服務器利用用戶文件數(shù)據(jù)庫將會極大地降低效率。這種情況下,最好采用數(shù)據(jù)庫格式的帳號文件,譬如 DBM數(shù)據(jù)庫格式的文件。還可以根據(jù)需要利用db格式(mod_auth_db)的數(shù)據(jù)文件,或者直接利用數(shù)據(jù)庫,如:mSQL(mod_auth_msql)或DBI兼容的數(shù)據(jù)庫(mod_auth_dbi)。
六、在Apache中使用DBM用戶認證
DBM 文件是一種簡單而標準的用于加快讀取效率的保存信息的方法。文件中存放的每一個記錄由兩個部分組成部分:鍵和值。由于DBM的格式,使得與鍵相關的信息非常有效。在Web用戶認證中,這里的鍵將是用戶名,而與該鍵相關的值將是該用戶經(jīng)過加密的口令信息。從DBM文件中查找用戶名和口令,要比從一個純文本文件中查找有效得多。對于有很多用戶的站點,這種方法將大大提高用戶認證的效率。
?。?) 在Apache服務器中增加DBM模塊
在默認的條件下,Apache不使用DBM文件來完成用戶認證,因此編譯時一定要加入可選的DBM認證模塊。重新配置Apache服務器文件,去掉其中的注釋行
#Module dbm_auth_module mod_auth_dbm.o
前的“#”,并重新編譯。但是,在編譯之前,需要指出Apache DBM函數(shù)的位置。
?。?) 創(chuàng)建DBM用戶文件(假設文件名為users)
Apache提供了一個“dbmmanage”的程序,用于創(chuàng)建和管理DBM文件。其中:
Dbmmanage /usr/local/etc/httpd/usersdbm 創(chuàng)建DBM文件
Dbmmanage /usr/local/etc/httpd/users adduser martin hamster 新增用戶
Dbmmanage /usr/local/etc/httpd/usersdbm delete martin 刪除用戶
Dbmmanage /usr/local/etc/httpd/usersdbm view 顯示DBM中所有用戶
有了DBM數(shù)據(jù)庫文件,還要替換目錄訪問控制,即將Apache配置文件(access.conf)中的AuthUserFile部分替換成:AuthUserFile /usr/local/etc/usersdbm 告訴Apache現(xiàn)在的用戶文件是DBM的格式。
以上內(nèi)容,是作者在長期的網(wǎng)站管理工作中的一點積累。由于篇幅的關系,只能作粗略的描述,遠不能表達清楚Apache服務器的安全使用。安全是相對的,嚴防是絕對的。只有及時了解最新的安全信息,掌握最新的安全技術、工具,根據(jù)實際情況,制定安全策略,才能及時有效地抵御各種各樣的網(wǎng)上“侵略者”。