Sun Java System Messaging Server 6 2005Q4 管理指南

限制指定 IP 位址至 MTA 的連線

透過使用 Port Access 控制表中的共用程式庫 conn_throttle.so,可限制特定 IP 位址連線 MTA 的頻率。根據特定 IP 位址限制連線對於防止拒絕服務攻擊中使用的過度連線非常有用。

conn_throttle.soPORT_ACCESS 對映表中使用的共用程式庫,可限制特定 IP 位址過於頻繁連線 MTA。所有配置選項均被指定為連線 throttle 共用程式庫的參數,如下所示:

$[msg_svr_base/lib/conn_throttle.so, throttle,IP-address ,max-rate]

IP-address 是遠端系統的小數點十進制位址。max-rate 是為此 IP 位址強制實作的每分鐘連線的最大頻率。

常式名稱 throttle_p 可能會取代 throttle,用於判定常式的版本。如果進行過多次數的連線,則 throttle_p 將拒絕連線。如果最大頻率是 100,並且在上一分鐘內已有 250 次連線嘗試,則系統不但會在該分鐘內的前 100 次連線後封鎖遠端站點,而且還會在下一分鐘內繼續封鎖這些站點。換言之,每分鐘過後,系統將從嘗試連線的總數中減去最大頻率數,之後只要連線總數大於最大頻率,便會再次封鎖遠端系統。

如果指定的 IP 位址未超出每分鐘的最大連線頻率,則共用程式庫呼叫將失敗。

如果超出頻率,則呼叫將成功,但不會傳回任何內容。這可以通過 $C/$E 組合完成,如以下範例所示:

PORT_ACCESS 
  TCP|*|25|*|* \
$C$[msg_svr_base/lib/conn_throttle.so,throttle,$1,10] \
$N421$ Connection$ not$ accepted$ at$ this$ time$E

其中

$C 將使對映程序繼續啟動下一個表格項目;將此項目的輸出字串用做對映程序的新輸入字串。

$[msg_svr_base/lib/conn_throttle.so,throttle,$1,10] 是程式庫呼叫,其中,throttle 是程式庫常式,$1 是伺服器 IP 位址,10 是每分鐘連線的臨界值。

$N421$ Connection$ not$ accepted$ at$ this$ time 將拒絕存取並傳回 421 SMTP 代碼 (完成瞬間拒絕) 和訊息「此次連線未被接受」。

$E 立即結束對映程序。它將使用此項目的輸出字串作為對映程序的最終結果。