本站一定要打開 javascript 才可以正常瀏覽呦
3WA問題解決專家工作室
首頁
首頁
自我介紹
網站服務項目
BLOG
開放源始碼
db_dumper 資料結構匯出機
mybox 哥的光箱
myVideo 哥的播放機
肥米輸入法(Python)
肥米輸入法(C#)
畫面選擇器1
畫面選擇器2(改寫)
虎大FZR相簿
轉檔服務
我的圖片加工
我的影像清晰機
Youtube 影片下載機
Facebook 影片下載機
QRCODE 產生器
Google 文字轉語音
PDF線上轉檔機
PDF To HTML 線上轉檔機
ODT線上轉檔機
CSV轉SQLite
檔案時限器
Draco GLB
圖片或影片轉 3D 模型 Draco GLB
資安相關
防火牆設置清單
AI 相關
Yolo
sam3語意分割
我的點樹精靈
OCR
郵局包裏查詢
7-11 包裏查詢
火車訂票
火車訂票-V1.0
火車訂票-V1.1
火車訂票-V1.2
人臉偵測系統
名片機
聊天室
3WA網路狀況
CANVAS畫板
地圖工具
我的地圖
我的向量地圖
坐標轉換工具
批次坐標轉換工具
批次地址轉坐標
奇幻的地圖截切機
全臺地形高 20M DEM 查詢
3D相關
step stp 線上瀏覽機
小遊戲
1010
亂數75
OX
踩地雷
日文50音練習
按顏色
大數據練習
文字分詞
翻譯功能
轉檔碎碎念
翻譯機
神奇的語音輸入
留言板
車輛查詢
排氣檢測
車輛里程
縮址
網頁相關
測試 javascript
JSON 縮排、反縮排工具
相簿與影片
相簿
影片
紀錄資料
筆記
快寫筆記
新版快寫筆記
網站語言
正體中文
简体中文
English
日本語
한국어
Spanish
Việt
ภาษาไทย
Italiano
登入
防火牆 Ban IP 使用說明
用同一份 Ban IP 清單,同步套到 Windows 防火牆或 Linux `ipset/iptables`,流程盡量簡化成看一頁就能照做。
這份黑名單 IP 列表,是根據 3WA 主機偵測攻擊,當某個 IP 的攻擊次數、風險達到設定門檻時,會自動加入封鎖列表,同時再結合 ipsum 官方的黑名單列表
如果你也有自己的攻擊偵測機制,或是想把這份清單套用在其他平台的防火牆,也可以直接下載 CSV 版本的黑名單 IP,裡面只有 IP 欄位,沒有其他資訊,方便你做後續處理。
目前提供 Windows PowerShell 版本和 Linux Shell Script 版本,分別適用於 Windows Firewall 和 ipset/iptables 的環境,腳本內容完全開放,你可以自行修改成適合你環境的版本。
目前封鎖 IP
16,871
Ban 清單下載
https://3wa.tw/myapache_banip/data/banip_csv.txt
來源補充
本機偵測收集 + ipsum >= 3 分
快速上手
如果你只想先用起來,照下面 4 步走就好。
先下載對應平台的腳本:Windows 用 `my_ban_ips.ps1`,Linux 用 `my_ban_ips.sh`。
確認這台機器可以抓到 `https://3wa.tw/myapache_banip/data/banip_csv.txt`,腳本會依這份清單更新封鎖 IP。
先手動執行一次,確認規則有正確建立,再放進排程。
若之後想全部移除,頁面下方有 Windows / Linux 各自的清除指令。
Windows 部署
適合用 PowerShell + Windows Firewall
PowerShell
下載:
my_ban_ips.ps1
建議先用系統管理員身分開 PowerShell。
手動執行一次後,確認防火牆規則有建立,再放進工作排程器。
如果你只是要同步最新封鎖名單,定時跑這支就可以。
PowerShell -ExecutionPolicy Bypass -File .\my_ban_ips.ps1
# my_ban_ips.ps1 # 作者: 羽山秋人 (https://3wa.tw) # 版本: V0.01 # 以下內容請儲成 👉 C:\tools\my_ban_ips.ps1(⚠ 副檔名一定要 .ps1) # 1. 用 系統管理員,打開 cmd 下載 my_ban_ips.ps1 # mkdir C:\tools # curl "https://3wa.tw/myapache_banip/my_ban_ips.ps1" -o C:\tools\my_ban_ips.ps1 # 2. 初次執行,允許下載 banip_csv.txt 權限 # Set-ExecutionPolicy RemoteSigned (選 Y) # 3. 後續執行,使用系統管理員執行 cmd 然後 # powershell -ExecutionPolicy Bypass -File C:\tools\my_ban_ips.ps1 # 或者 # 4. 使用 系統管理員啟動 powershell # powershell -ExecutionPolicy Bypass -File C:\tools\my_ban_ips.ps1 # 或者 # 5. 使用 系統管理員啟動 powershell # Unblock-File C:\tools\my_ban_ips.ps1 # C:\tools\my_ban_ips.ps1 # 2、3、4 擇一使用即可 # 如果要移除此規則 # 使用 系統管理員執行 Powershell # Remove-NetFirewallRule -DisplayName "Block Bad IPs_*" # 說明: # 因為 Windows Firewall 單一規則若塞入過多 IP,容易出現: # Set-NetFirewallRule : 陣列界限不正確 / Windows System Error 1734 # 所以此版本改為: # 1. 下載 banip_csv.txt # 2. 讀入 IP 清單 # 3. 每 500 筆 IP 切成一條規則 # 4. 規則名稱會變成: # Block Bad IPs_001 # Block Bad IPs_002 # Block Bad IPs_003 # ... $ErrorActionPreference = "Stop" $rulePrefix = "Block Bad IPs" $url = "https://3wa.tw/myapache_banip/data/banip_csv.txt" $tmpFile = "C:\temp\banip_csv.txt" $chunkSize = 500 # 每條防火牆規則放幾個 IP,建議 300~800,500 較穩 try { # 建 temp 目錄 if (!(Test-Path "C:\temp")) { New-Item -ItemType Directory -Path "C:\temp" | Out-Null } # 下載 IP 清單 Write-Host "Downloading IP list..." Invoke-WebRequest -Uri $url -OutFile $tmpFile # 讀取並整理 IP(去空白、去空行、去重複) $ips = Get-Content $tmpFile | ForEach-Object { $_.Trim() } | Where-Object { $_ -ne "" } | Sort-Object -Unique if ($ips.Count -eq 0) { throw "IP list is empty." } Write-Host ("Total unique IPs: " + $ips.Count) # 先移除舊規則 # 例如: # Block Bad IPs_001 # Block Bad IPs_002 # ... Write-Host "Removing old firewall rules..." $oldRules = Get-NetFirewallRule -DisplayName "$rulePrefix*" -ErrorAction SilentlyContinue if ($oldRules) { $oldRules | Remove-NetFirewallRule } # 依 chunkSize 分批建立規則 $ruleCount = 0 for ($i = 0; $i -lt $ips.Count; $i += $chunkSize) { $end = $i + $chunkSize - 1 if ($end -ge $ips.Count) { $end = $ips.Count - 1 } $chunk = $ips[$i..$end] $ruleCount++ $ruleName = "{0}_{1:D3}" -f $rulePrefix, $ruleCount Write-Host ("Creating firewall rule: " + $ruleName + " (" + $chunk.Count + " IPs)") New-NetFirewallRule ` -DisplayName $ruleName ` -Direction Inbound ` -Action Block ` -Enabled True ` -Profile Any ` -RemoteAddress $chunk | Out-Null } Write-Host "" Write-Host "Done." Write-Host ("Total IPs: " + $ips.Count) Write-Host ("Total rules created: " + $ruleCount) } catch { Write-Host "" Write-Host "Firewall update failed:" Write-Host $_.Exception.Message exit 1 }
Linux 部署
適合用 `ipset` + `iptables` 的環境
Shell Script
下載:
my_ban_ips.sh
先確認系統已有 `ipset`、`iptables`,並以 root 權限執行。
建議先手動跑一次,確認黑名單集合與 DROP 規則建立成功。
之後可放進 `crontab`,或開機時自動執行。
chmod +x ./my_ban_ips.sh sudo ./my_ban_ips.sh
#!/usr/bin/bash # my_ban_ips.sh # 作者: 羽山秋人 (https://3wa.tw) # 版本: V0.01 # 1. 安裝所需套件 # sudo apt install -y ipset iptables curl # 2. 本檔案內容存成:/root/my_ban_ips.sh # curl "https://3wa.tw/myapache_banip/my_ban_ips.sh" -o /root/my_ban_ips.sh # 3. 給執行權限 # chmod +x /root/my_ban_ips.sh # 4. 手動執行一次 # sudo /root/my_ban_ips.sh # 5. 檢查結果 # 看 ipset 內容: # ipset list blacklist # 看 iptables 規則: # iptables -L INPUT -n --line-numbers # 你應該會看到類似: # match-set blacklist src DROP # 6. 設定自動更新 # 最簡單先用 crontab。 # 編輯 root 的排程: # crontab -e # 每 30 分鐘跑一次: # my_ban_ips # */30 * * * * /root/my_ban_ips.sh >> /var/log/my_ban_ips.log 2>&1 # 7. 如果要移除這套規則 # 先刪 iptables 規則: # iptables -D INPUT -m set --match-set blacklist src -j DROP # 再刪 ipset: # ipset destroy blacklist # 如果還有排程,也一起刪: # crontab -e # 把那行移掉。 set -euo pipefail SET_NAME="blacklist" RULE_COMMENT="Block bad IPs from remote list" URL="https://3wa.tw/myapache_banip/data/banip_csv.txt" TMP_FILE="/tmp/banip_csv.txt" TMP_RESTORE="/tmp/ipset_restore.txt" # 下載清單 curl -fsSL "$URL" -o "$TMP_FILE" if [ ! -s "$TMP_FILE" ]; then echo "Download failed or file is empty" exit 1 fi # 建立暫時 restore 檔 { echo "create ${SET_NAME}_new hash:ip family inet hashsize 4096 maxelem 65536 -exist" while IFS= read -r line; do ip="$(echo "$line" | tr -d '\r' | xargs)" [ -z "$ip" ] && continue # 如果你的檔案其實是 csv: 1.2.3.4,reason # 可改成: # ip="$(echo "$line" | cut -d',' -f1 | tr -d '\r' | xargs)" if [[ "$ip" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then echo "add ${SET_NAME}_new $ip" else echo "SKIP: [$ip]" >&2 fi done < "$TMP_FILE" } > "$TMP_RESTORE" # 載入新 set ipset restore < "$TMP_RESTORE" # 若正式 set 不存在,先建立 ipset create "$SET_NAME" hash:ip family inet hashsize 4096 maxelem 65536 -exist # 原子替換 ipset swap "${SET_NAME}_new" "$SET_NAME" # 清理暫存 set ipset destroy "${SET_NAME}_new" 2>/dev/null || true # 確保 iptables 規則存在 if ! iptables -C INPUT -m set --match-set "$SET_NAME" src -j DROP 2>/dev/null; then iptables -I INPUT -m set --match-set "$SET_NAME" src -j DROP fi COUNT=$(ipset list "$SET_NAME" | awk '/Number of entries:/ {print $4}') echo "Done. Total blocked IPs: ${COUNT:-0}"
清除與回復
如果你要把這套封鎖全部拿掉,可以直接照下面指令執行。
Windows
Remove-NetFirewallRule -DisplayName "Block Bad IPs_*" # 確認有沒有刪掉,沒東西輸出就代表刪掉了 ✔ Get-NetFirewallRule -DisplayName "Block Bad IPs_*"
Linux
sudo su - iptables -D INPUT -m set --match-set blacklist src -j DROP ipset destroy blacklist # 如果還有排程,也一起刪: crontab -e
執行結果參考
點圖片可以放大,方便確認實際執行後應該長什麼樣子。
Windows 執行結果
Linux 執行結果