Repository navigation
Home
Witawat edited this page Aug 30, 2026
·
2 revisions
RDP brute-force protection สำหรับ Windows Server / Windows Desktop — เขียนด้วย Python ภาษาไทย
ทำงานคล้าย RDPGuard / fail2ban: เฝ้าดู Security event log ตรวจจับการลองล็อกอิน RDP ซ้ำ ๆ จาก IP เดียวกัน แล้ว บล็อก IP ผู้โจมตีอัตโนมัติด้วย Windows Firewall (ในตัว ไม่ต้องติดตั้งอะไรเพิ่ม) และปลดบล็อกให้เองเมื่อครบกำหนดเวลา
| รายการ | ค่า |
|---|---|
| เวอร์ชันล่าสุด | 1.9.5 |
| ภาษา | Python 3.8+ |
| Windows | source: 7 SP1 / 8.1 / 10 / 11 + Server 2008 R2 SP1 ขึ้นไป · exe (build ด้วย Python 3.11): 8.1 / 10 / 11 + Server 2012 ขึ้นไป |
| Dependency | pywin32 อย่างเดียว (web UI ใช้ stdlib ล้วน) |
| Web UI | http://127.0.0.1:8123 (ภาษาไทย/อังกฤษ, เปลี่ยนพอร์ตได้) |
| License | MIT License |
:: 1. ติดตั้ง dependency (ครั้งเดียว)
python -m pip install -r requirements.txt
:: 2. ติดตั้ง + เริ่ม service (ต้อง admin — ใช้ install.bat ดีที่สุด รันแล้วมันขอสิทธิ์ให้เอง)
install.bat
:: 3. ดูรหัสผ่าน Web UI แล้วเปิดเบราว์เซอร์
python run.py passwordWeb UI: http://127.0.0.1:8123
ใช้โหมด exe แทนก็ได้ — เอา
dist\rdpguard.exe(build ด้วยbuild.bat build) ไปรันบนเครื่องอื่นโดยไม่ต้องลง Python
| หน้า | เนื้อหา |
|---|---|
| Installation | คู่มือติดตั้ง: Python, Windows Service, build exe, ถอนการติดตั้ง |
| Usage | คู่มือการใช้งาน: Web UI, CLI, Telegram Command, ไฟล์ข้อมูล |
| Troubleshooting | การแก้ปัญหาทั่วไป: service ไม่รัน, ถูกล็อกตัวเอง, Telegram error, IP ถูกบล็อกเยอะ |
| ไฟล์ | เนื้อหา |
|---|---|
| INSTALL.md | ติดตั้งทีละขั้น (Python, service, exe build, รองรับ Windows เวอร์ชันไหนบ้าง) |
| USAGE.md | วิธีใช้ Web UI + CLI ทั้งหมด |
| CONFIG.md | อธิบาย config ทุกค่าพร้อมค่าเริ่มต้น |
| GENERIC.md | ตั้งค่า Generic log engine และเขียน regex |
| API.md | REST API สำหรับนักพัฒนา |
| CHANGELOG.md | ประวัติเวอร์ชัน |
- ตรวจจับ brute-force หลายโปรโตคอล (multi-engine): RDP (Event 4625), OpenSSH (Event 4), MSSQL (18456), IIS (W3C log 401), MySQL (error log), Generic (regex เอง)
-
บล็อก IP อัตโนมัติ ด้วย Windows Firewall — rule เดียวชื่อ
RDPGuard Blockเก็บ IP ใน RemoteAddresses (ตั้งจำกัดพอร์ตได้ เช่น 3389,1433,22) - หมดอายุแล้วปลดเอง — ค่าเริ่มต้น 24 ชม. + ต่ออายุอัตโนมัติถ้ายังโจมตีต่อ
- ตัวนับสะสม (ยิงสั้น ๆ แล้วหนี) — IP ที่สะสมความล้มเหลวครบเกณฑ์โดนบล็อกแม้ยิงทีละ 1-2 ครั้ง
- ขยายบล็อก IP ขาประจำ — โดนบล็อกซ้ำครบเกณฑ์ (ค่าเริ่มต้น 3 ครั้ง/30 วัน) → ขยายเป็น 7 วัน หรือถาวร
- Whitelist / Blacklist (รองรับ CIDR) + บล็อกด้วยมือผ่าน Web UI/CLI
- รันเป็น Windows Service — เริ่มอัตโนมัติตอน boot ทำงานแม้ไม่มีใครล็อกอิน
- กันบล็อกตัวเอง — ข้าม loopback / IP เครื่องตัวเอง / วง LAN ส่วนตัว / IP ที่มี session ล็อกอินสำเร็จล่าสุด
-
แจ้งเตือน Telegram / Email — เลือกช่องทางได้, cooldown รวมข้อความ, ระบุ
[ชื่อเครื่อง]ทุกข้อความ -
ควบคุมผ่าน Telegram —
/status,/block,/unblock,/listฯลฯ ผ่าน Bot API (long-polling ไม่ต้องเปิดพอร์ต) รองรับหลายเครื่อง/bot เดียวด้วย@ชื่อเครื่อง - Web UI ภาษาไทย — dashboard เรียลไทม์, จัดการ blocked/whitelist/blacklist, ปุ่มควบคุม service, ตั้งค่า, Setup Wizard ครั้งแรก, self-test
- การบล็อก IP ต้องใช้สิทธิ์ admin — service รันเป็น LocalSystem มีสิทธิ์อยู่แล้ว แต่ตอนรันแบบ
python run.py runต้องเปิด terminal ด้วย Run as administrator - Web UI ค่าเริ่มต้นเปิดเฉพาะ
127.0.0.1— อย่าเปลี่ยนเป็น0.0.0.0โดยไม่ตั้งรหัสผ่านที่แข็งแรง - exe ที่ build ด้วย PyInstaller + UPX อาจถูกโปรแกรมกันไวรัสฟลาก — เพิ่ม exclusion ให้โฟลเดอร์ที่เก็บ exe หากตรวจสอบแล้วว่าเป็นไฟล์จากโปรเจกต์นี้
- หาก Telegram ขึ้น
CERTIFICATE_VERIFY_FAILEDจาก proxy/โปรแกรมกันไวรัสที่ intercept HTTPS ให้ปิด ตรวจสอบ SSL ของ Telegram ในหน้า ตั้งค่า → แจ้งเตือน แล้วบันทึกค่า - ระบบนี้บล็อก IP ระดับ firewall — ถ้าต้องการกันการเดารหัสขั้นอีกชั้น แนะนำใช้ NLA (Network Level Authentication) ร่วมด้วย