篩選器敘述包含服務資訊和用戶端資訊。服務資訊可包括服務名稱、主機名稱和主機位址。用戶端資訊可包括主機名稱、主機位址和使用者名稱。伺服器和用戶端資訊均可包括萬用字元名稱或式樣。
最簡單的篩選器形式為:
service: hostSpec
其中,service 是服務的名稱 (例如 smtp、pop、imap 或 http),而 hostSpec 是主機名稱、IP 位址或萬用字元名稱或表示用戶端請求存取的式樣。處理篩選器時,如果搜尋存取的用戶端符合 client,則允許或拒絕 (取決於此篩選器的類型) 存取 service 指定的服務。以下是一些範例:
imap: roberts.newyork.siroe.com pop: ALL http: ALL
如果這些是允許篩選器,則第一個篩選器將授予主機 roberts.newyork.siroe.com 對 IMAP 服務的存取,第二個篩選器和第三個篩選器將分別授予所有用戶端對 POP 和 HTTP 服務的存取。如果它們是拒絕篩選器,則將拒絕那些用戶端存取這些服務。(如需有關如 ALL 之類萬用字元名稱的說明,請參閱23.7.2.1 萬用字元名稱。)
篩選器中的伺服器或用戶端資訊可能比這裡要複雜一些,在那種情況下較一般的篩選器形式為:
serviceSpec: clientSpec
其中,serviceSpec 可以是 service 或 service@hostSpec,而 clientSpec 可以是 hostSpec 或 user@hostSpec。user 是與搜尋存取的用戶端主機關聯的使用者名稱 (或萬用字元名稱)。以下是兩個範例:
pop@mailServer1.siroe.com: ALL imap: srashad@xyz.europe.siroe.com
如果這些是拒絕篩選器,則第一個篩選器將拒絕所有用戶端存取主機 mailServer1.siroe.com 上的 SMTP 服務。第二個篩選器將拒絕主機 xyz.europe.siroe.com 上的使用者 srashad 存取 IMAP 服務。(如需有關何時使用這些延伸的伺服器和用戶端規格之更多資訊,請參閱23.7.2.4 伺服器主機規格和23.7.2.5 用戶端使用者名稱規格
最後,最一般的篩選器形式如下:
serviceList: clientList
其中,serviceList 由一個或多個 serviceSpec 項目組成,而 clientList 由一個或多個 clientSpec 項目組成。serviceList 和 clientList 中的單個項目由空格和/或逗號分隔。
在這種情況下,處理篩選器時,如果搜尋存取的用戶端符合 clientList 中任一 clientSpec 項目,則允許或拒絕 (取決於此篩選器的類型) 存取 serviceList 中指定的所有服務。以下是一個範例:
pop, imap, http: .europe.siroe.com .newyork.siroe.com
如果這是允許篩選器,它將授予網域 europe.siroe.com 和 newyork.siroe.com 中的所有用戶端對 POP、IMAP 和 HTTP 服務的存取。如需有關使用前導小數點號或其他式樣指定網域或子網路的資訊,請參閱23.7.2.2 萬用字元式樣。
您還可以使用以下語法:
「+」或「-」serviceList: *$next_rule
+ (允許篩選器) 表示要將常駐程式清單服務授予用戶端清單。
- (拒絕篩選器) 表示要拒絕用戶端清單存取這些服務。
* (萬用字元篩選器) 允許所有用戶端使用這些服務。
$ 分隔這些規則。
以下範例可在所有用戶端上啟用多種服務。
+imap,pop,http:*
以下範例顯示多個規則,但每個規則被簡化為只具有一個服務名稱並且用戶端清單使用萬用字元。(這是在 LDIF 檔案中指定存取控制時最常用的方法。)
+imap:ALL$+pop:ALL$+http:ALL
如何對某使用者禁止所有服務的範例如下:
-imap:*$-pop:*$-http:*
您可以使用以下萬用字元名稱來表示服務名稱、主機名稱或位址或使用者名稱:
表 23–3 服務篩選器的萬用字元名稱
萬用字元名稱 |
詳細說明 |
---|---|
ALL、* |
通用萬用字元。符合所有名稱。 |
LOCAL |
符合任何本地主機 (名稱中不包含點字元的主機)。但是,如果您的安裝僅使用標準名稱,則即使本地主機名稱中也會包含點,因此不符合此萬用字元。 |
UNKNOWN |
符合名稱未知的所有使用者,或是名稱或位址未知的所有主機。 請謹慎使用此萬用字元名稱: 主機名稱可能會由於暫時的 DNS 伺服器問題而不可用,在這種情況下,使用 UNKNOWN 的所有篩選器會比對所有用戶端主機。 當軟體無法識別與其通訊的網路類型時,網路位址不可用,在這種情況下,使用 UNKNOWN 的所有篩選器會比對該網路上的所有用戶端主機。 |
KNOWN |
比對名稱已知的所有使用者,或是名稱和位址已知的所有主機。 請謹慎使用此萬用字元名稱: 主機名稱可能會由於暫時的 DNS 伺服器問題而不可用,在這種情況下,使用 KNOWN 的所有篩選器與所有用戶端主機均不相符。 當軟體無法識別與其通訊的網路類型時,網路位址不可用,在這種情況下,使用 KNOWN 的所有篩選器與該網路上的所有用戶端主機均不相符。 |
DNSSPOOFER |
符合 DNS 名稱與 IP 位址不相符的所有主機。 |
您可以在服務或用戶端位址中使用以下式樣:
以小數點號字元 (.) 開頭的字串。如果主機名稱中最後一部分符合指定式樣,則該主機名稱符合。例如,萬用字元式樣 .siroe.com 比對網域 siroe.com 中的所有主機。
以小數點號字元 (.) 結束的字串。如果主機位址中第一個數字欄位符合指定式樣,則該主機位址符合。例如,萬用字元式樣 123.45. 符合子網路 123.45.0.0 中的所有主機的位址。
形式為 n.n.n.n/m.m.m.m 的字串。此萬用字元式樣會被解譯為 net/mask 對。如果 net 等於位址和 mask 的位元 AND,則比對主機位址。例如,式樣 123.45.67.0/255.255.255.128 比對從 123.45.67.0 到 123.45.67.127 範圍內的所有位址。
存取控制系統支援單一運算子。當 serviceList 或 clientList 中具有多個項目時,您可以使用 EXCEPT 運算子建立比對名稱或式樣的異常。例如,表示式:
list1 EXCEPT list2
表示比對與 list1 相符的所有項目,除非它還與 list2 相符。
以下是一個範例:
ALL: ALL EXCEPT isserver.siroe.com
如果這是拒絕篩選器,它會拒絕所有主機電腦上的所有用戶端存取所有服務,但主機電腦 isserver.siroe.com 上的用戶端除外。
EXCEPT 陳述式可以嵌套。表示式:
list1 EXCEPT list2 EXCEPT list3
相當於:
list1 EXCEPT (list2 EXCEPT list3)
您可以透過在 serviceSpec 項目中包含伺服器主機名稱或位址資訊,來進一步識別篩選器中被請求的特定服務。在這種情況下,項目形式為:
service@hostSpec
當您的 Messaging Server 主機機器針對多個網際網路位址以不同的網際網路主機名稱進行設定時,您可能要使用此功能。如果您是服務供應者,則可使用此功能在單一伺服器實例上以不同的存取控制規則託管多個網域。
對於支援 RFC 1413 中所述之 identd 服務的用戶端主機電腦而言,您可以透過在篩選器的 clientSpec 項目中包含用戶端的使用者名稱來進一步識別請求服務的特定用戶端。在這種情況下,項目形式為:
user@hostSpec
其中,user 是由用戶端的 identd 服務 (或萬用字元名稱) 傳回的使用者名稱。
在篩選器中指定用戶端使用者名稱非常有用,但請記住以下警告:
identd 服務並非認證服務;如果用戶端系統已受到危害,則不能信任該服務傳回的用戶端使用者名稱。一般來說,請勿使用特定的使用者名稱;應僅使用萬用字元名稱 ALL、KNOWN 或 UNKNOWN。
大多數現代用戶端機器都不支援 identd,因此其在現代部署中沒有多少附加值。我們正考量從未來版本中移除 identd 支援,因此,如果此功能對於您的站點有價值,請通知 Sun Java System。
使用者名稱查詢需要時間;針對所有使用者執行查詢可能會使不支援 identd 的用戶端存取變慢。有選擇性的使用者名稱查詢可緩解這一問題。例如,如下規則:
serviceList: @xyzcorp.com ALL@ALL
比對網域 xyzcorp.com 中的使用者,而無需執行使用者名稱查詢,但會對所有其他系統執行使用者名稱查詢。
使用者名稱查詢功能在某些情況下可協助您防範來自用戶端主機上未經授權的使用者的侵入。例如,在某些 TCP/IP 實作中,侵入者可能會使用 rsh (遠端 shell 服務) 冒充信任的用戶端主機。如果用戶端主機支援 ident 服務,可以使用使用者名稱查詢來偵測此類攻擊。