在防止“暴力猜測帳密”上,由於XG只是進行routing,將連線需求轉給後端的server,
所以XG本身並不知道每次連線所輸入的帳號/密碼是否正確?
自然也就無法辦到“輸入錯誤帳密幾次後,封鎖惡意IP”這樣的工作...
但假設後端主機可以主動擷取“輸入錯誤次數過多的IP資訊”,
那XG能否主動去封鎖這樣的惡意IP連線?
答案是可以的!
XG提供API功能,讓後端主機可以透過XML格式,將要阻擋的IP物件直接在XG中建立。
我們只要在防火牆規則中,預先建好阻擋規則,
再由後端主機去維謢這個block IP清單或群組,就可以實現這樣的需求。
使用API功能時,請先確認執行的管理員帳號是否具有物件的寫入權限。
然後再於API Configuration中放行後端主機的使用權限,
這樣就後端主機就可以使用管理員權限帳號來執行API功能了∼
首先,我們可以透過以下指令來查看IP物件清單與格式。
https://XG_IP/webconsole/APIController?reqxml=<Request><Login><Username>admin_account</Username><Password>P@ssw0rd</Password></Login><Get><IPHost><Name></Name><IPFamily></IPFamily><HostType></HostType><IPAddress></IPAddress></IPHost></Get></Request>
若我們要取得Block_IP這個IP List物件的內容,可透過以下指令。
https://XG_IP/webconsole/APIController?reqxml=<Request><Login><Username>admin_account</Username><Password>P@ssw0rd</Password></Login><Get><IPHost><Filter><key name="Name" criteria="like">Block_IP</key></Filter></IPHost></Get></Request>
若Block_IP這個IP List物件不存在,我們可以透過以下指令來建立。
https://XG_IP/webconsole/APIController?reqxml=<Request><Login><Username>admin_account</Username><Password>P@ssw0rd</Password></Login><Set operation="add"><IPHost><Name>Block_IP</Name><IPFamily>IPv4</IPFamily><HostType>IPList</HostType><ListOfIPAddresses>199.199.199.199</ListOfIPAddresses></IPHost></Set></Request>
若Block_IP這個IP List物件已存在,我們可以透過以下指令去更新它的IP內容。
https://XG_IP/webconsole/APIController?reqxml=<Request><Login><Username>admin_account</Username><Password>P@ssw0rd</Password></Login><Set operation="update"><IPHost><Name>Block_IP</Name><IPFamily>IPv4</IPFamily><HostType>IPList</HostType><ListOfIPAddresses>199.199.199.199</ListOfIPAddresses></IPHost></Set></Request>
要刪除Block_IP這個特定IP List物件,則可透過以下指令。
https://XG_IP/webconsole/APIController?reqxml=<Request><Login><Username>admin_account</Username><Password>P@ssw0rd</Password></Login><Remove><IPHost><Name>Block_IP</Name><IPFamily>IPv4</IPFamily><HostType>IPList</HostType></IPHost></Remove></Request>
若我們不想用IP List物件來管理,想要透過IP群組的方式來管理,
將要被封鎖的IP物件直接加到Block_IP_Group群組中,可以透過以下指令來建立隸屬於群組的IP物件。
https://XG_IP/webconsole/APIController?reqxml=<Request><Login><Username>admin_account</Username><Password>P@ssw0rd</Password></Login><Set operation="add"><IPHost><Name>Test_IP</Name><IPFamily>IPv4</IPFamily><HostType>IP</HostType><HostGroupList><HostGroup>Block_IP_Group</HostGroup></HostGroupList><IPAddress>199.199.199.199</IPAddress></IPHost></Set></Request>
有了以上幾個sample指令後,
在後端主機上,我們就可以透過curl(linux主機)或powershell(Windows主機)於XG上直接建立封鎖物件了∼
參考資料
How to use the API
♥順子老婆的網拍,請多關照∼
If you don't like something, change it.
If you can't change it, change your attitude.
Don't complain!
|