<aside> 💡 該流程於 2022.09.17 Windows10 系統上測試。
</aside>
<aside> 💡 該流程於 2023.09.17 Windows10 系統上測試。其實防毒軟體本身就會阻擋了。
</aside>
到 Github release 下載 IPBan-Windows-x64
。
解壓縮到 C:/
目錄下。
目錄中的 DigitalRuby.IPBan.exe
可以直接執行,會開啟一個 command line 顯示日誌。但我們需要讓他在背景執行。可使用指令設定系統服務,有以下兩種方法。
使用 Command Prompt
sc.exe create IPBAN type=own start=delayed-auto binPath=c:\\IPBan\\DigitalRuby.IPBan.exe DisplayName=IPBAN
sc.exe description IPBAN "Automatically builds firewall rules for abusive login attempts: <https://github.com/DigitalRuby/IPBan>"
sc.exe start IPBAN
使用 Powershell
New-Service -Name "IPBAN" -BinaryPathName "c:\\IPBan\\DigitalRuby.IPBan.exe" -StartupType automatic -DisplayName "IPBAN" -Description "Automatically builds firewall rules for abusive login attempts: <https://github.com/DigitalRuby/IPBan>"
Get-WmiObject win32_service -Filter "name='IPBAN'"
Start-Service IPBAN
sc.exe config IPBAN start= delayed-auto
接著可在 windows 搜尋 service
,查看 IPBAN 服務是否已開啟,此時即開始於背景執行程式。
程式的相關設定可以在 ./ipban.config
修改,常見設定如下。
<!-- 登入失敗幾次進行封鎖 -->
<add key="FailedLoginAttemptsBeforeBan" value="5"/>
<!-- 封鎖時間,格式 日:時:分:秒 -->
<add key="BanTime" value="01:00:00:00"/>
<!-- 最後一次登入失敗後要記住的時間,格式 日:時:分:秒 -->
<add key="ExpireTime" value="01:00:00:00"/>
<!-- 手動封鎖或解除封鎖的生效時間,格式 日:時:分:秒 -->
<add key="CycleTime" value="00:00:00:15"/>
<!-- 設定使用者名稱的白名單,正常情況下應該要保持空白 -->
<!-- 除非白名單中的使用者密碼強度足夠 -->
<add key="UserNameWhitelist" value=""/>
當系統檢測到多次登入失敗的事件,會在日誌上看到訊息,或是可以直接查看 ./logfile.txt
的內容。如來源 IP、嘗試登入的帳號名稱以及次數。
Get-Content .\\logfile.txt -Tail 10 -wait
如要設定白名單,需要建立一個文字檔,放在 ./unban.txt
,裡面放上要解鎖的 IP。會在 15 秒內完成設定,這個白名單也可以用來解除封鎖。輪詢的時間從設定檔中的 CycleTime
設定。
192.168.0.100
192.168.0.101
如要手動封鎖,需要建立一個文字檔,放在 ./ban.txt
,裡面放上要封鎖的 IP。
192.168.0.102
192.168.0.103
如果要阻擋內部 IP,設為 true。
<configuration>
<appSettings>
<!-- Whether to process internal ip addresses -->
<add key="ProcessInternalIPAddresses" value="true"/>
</appSettings>
</configuration>