FreeBSD連載(86):對IP地址和域名的控制

2000年1月27日 14:59 王波

伺服器的安全控制

  Apache提供的各種特性非常豐富,主要是由於其採用的是模塊化的結構,這樣就很容易進行分布式開發。 Internet上的眾多開發者為Apache提供了各種各樣的能力,使其能具備其他的Web伺服器不能與之相比的能力。 在伺服器所具備的眾多特性中,安全控制的特性最為有用。

  • 對IP地址和域名的控制

  Apache伺服器可以基於IP地址和基於用戶對訪問伺服器進行控制。在設置檔案httpd.conf(或 access.conf)中,這些訪問控制的設置是放置在Directory、File和Location語句中的,分 別針對主機上的目錄、檔案以及URI進行存取控制。然而,由於不是每個使用者都可以隨便更改系統Web伺服器的設置文 件,並能重新啟動伺服器的,因此在設置檔案中的控制語句只是提供了基本的訪問控制策略,而更靈活的方式是通過各個文檔 目錄中的訪問控制檔案來實現的。

  為了在需要訪問控制的每個目錄下都設置訪問控制檔案,首先要在系統配置檔案中設置這個訪問控制檔案及其訪問作 用。需要使用AccessFileName定義訪問控制檔案的名字,預設它被設置為.htaccess。預設設置檔案 將在針對根目錄及/usr/local/www/data這個文檔根目錄的訪問控制語句中設置AllowOverride None ,這就意味著不允許這個目錄及其子目錄中的訪問控制檔案起作用,為了使得訪問控制檔案發揮作用,必須針 對需要設置訪問控制的目錄設置AllowOverride All或其他有部分訪問控制功能的選項,此時該目錄及其子 目錄下的訪問控制檔案也會發揮作用。

  AllowOverride All將允許.htaccess檔案能改變所有的訪問控制功能,如果僅僅希望目 錄的所有者只控制部分訪問控制功能,可以使用AllowOverride的其他設置選項,那樣.htaccess只能 使用允許的設置選項。

  要在.htaccess檔案中針對IP地址和域名進行控制,就需要使用訪問控制語句的Limit語句。因此就 要求httpd.conf中必須允許控制檔案使用Limit功能,對應的設置為AllowOverride Limit選項(或All選項)。

  Limit語句可以使用不同的參數,這些參數為HTTP協議的請求方法,如使用<limit GET> 限制HTTP協議中的GET方法,<limit POST>限制http協議中的POST方法,使 用</limit>標識這個控制段的結束。對於一般的情況,可以對大部分客戶打開GET、POST和HEAD 請求,而關閉PUT、DELETE等其他更複雜且不常用的請求。

  如果在.htaccess中沒有使用Limit語句指定具體的訪問方法,那麼就表示訪問控制命令將對所有的請 求方法都進行控制。

  Order定義伺服器查詢訪問控制的順序,當設置為Order Allow, Deny的時候將先處理Allow 語句,再處理Deny語句。Order Deny, Allow的處理順序相反。由於這兩種不同的方式代表不同的 訪問控制策略,Order deny, allow和deny from all合作,是用於只允許設置過的客戶機訪 問伺服器,而Order allow, deny和allow from all合作,是允許所有的客戶機訪問,而僅 僅屏蔽部分具有惡意的網路地址。

  在每個Allow或Deny命令中,可以使用域名(從後向前匹配)、IP(從前向後匹配),all(代表所有 主機)來標識Internet上的電腦。這裡是一個例子:

order deny, allow
deny from all
allow from 192.168.1.
allow from example.org.cn
allow from 127.

  這個例子是一個專有網路的例子,它採用的封閉式策略,以保証伺服器的安全性。對於對整個 Internet開放的公共Web伺服器,那麼採取的策略應該與之相反。