Skip to content
Witawat edited this page Aug 30, 2026 · 2 revisions

RDPGuard

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

เริ่มต้นเร็ว (Quick Start)

:: 1. ติดตั้ง dependency (ครั้งเดียว)
python -m pip install -r requirements.txt

:: 2. ติดตั้ง + เริ่ม service (ต้อง admin — ใช้ install.bat ดีที่สุด รันแล้วมันขอสิทธิ์ให้เอง)
install.bat

:: 3. ดูรหัสผ่าน Web UI แล้วเปิดเบราว์เซอร์
python run.py password

Web UI: http://127.0.0.1:8123

ใช้โหมด exe แทนก็ได้ — เอา dist\rdpguard.exe (build ด้วย build.bat build) ไปรันบนเครื่องอื่นโดยไม่ต้องลง Python

หน้าใน Wiki นี้

หน้า เนื้อหา
Installation คู่มือติดตั้ง: Python, Windows Service, build exe, ถอนการติดตั้ง
Usage คู่มือการใช้งาน: Web UI, CLI, Telegram Command, ไฟล์ข้อมูล
Troubleshooting การแก้ปัญหาทั่วไป: service ไม่รัน, ถูกล็อกตัวเอง, Telegram error, IP ถูกบล็อกเยอะ

เอกสารใน repo (อ่านเพิ่ม)

ไฟล์ เนื้อหา
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) ร่วมด้วย