Repository navigation
Troubleshooting
รวบรวมปัญหาที่พบบ่อย + วิธีแก้ — ถ้าหาไม่เจอ ให้ดู log ที่ rdpguard.log (ตำแหน่งตามโหมด: ข้าง exe หรือ %ProgramData%\RDPGuard\) และพาเนล สถานะระบบ ใน Web UI ซึ่งบอกได้ว่าส่วนประกอบไหนทำงานไม่ได้
- เปิด
services.msc→ หา RDPGuard Service → อ่านข้อความ error - ดู log: ตรวจตำแหน่งจาก Web UI พาเนล Log การทำงาน หรือ
%ProgramData%\RDPGuard\rdpguard.logในโหมด source - สาเหตุพบบ่อย: ติดตั้ง Python แบบ "just for me" (service มองไม่เห็น user profile) → ติดตั้ง Python แบบ All Users ใหม่ หรือใช้ exe build แทน
เปิด Web UI → พาเนล สถานะระบบ แล้วดู:
| อาการ | สาเหตุที่เป็นไปได้ | วิธีแก้ |
|---|---|---|
| Security event log ✘ อ่านไม่ได้ | รันแบบ user ธรรมดา ไม่ใช่ admin | รันด้วย admin หรือติดตั้งเป็น service (รันเป็น LocalSystem) |
| Firewall ✘ เข้า COM ไม่ได้ / ○ ไม่มีสิทธิ์ | สิทธิ์ไม่พอ | รันด้วย admin / service |
| สิทธิ์โปรแกรม ✘ | รันแบบ user ธรรมดา | ใช้ service หรือ python run.py run ใน admin terminal |
| header ขึ้น "เฝ้าระวังปิดอยู่" | สวิตช์เฝ้าระวังถูกปิด | กดสวิตช์ "การตรวจจับ" ให้เปิด |
| engine เป็น ⊘ (ปิด) | chip engine ถูกปิด | กด chip ให้เปิด |
| engine เป็น ✘ / ○ | แหล่งข้อมูลยังไม่พร้อม | ดูว่าบริการ/ไฟล์ log ของโปรโตคอลนั้นมีจริงไหม (เช่น IIS ยังไม่ได้ติดตั้ง) |
ปุ่ม "ทดสอบบล็อกจริง (firewall)" และ "ทดสอบระบบทั้งหมด (self-test)" ช่วยพิสูจน์ได้ทันทีว่าระบบบล็อกได้จริงทั้งสาย (ต้อง admin/service)
RDPGuard มีกัน 3 ชั้นอัตโนมัติ: ไม่บล็อก IP ที่มี session ล็อกอินสำเร็จล่าสุด (active_session_grace_minutes), ปลดบล็อกอัตโนมัติเมื่อ IP นั้นล็อกอินสำเร็จ, และปลดบล็อก IP ที่อยู่ใน whitelist/never_block_ips ทุก 60 วินาที
ถ้ายังโดนล็อกจริง ให้ใช้วิธีนี้ (เรียงตามความสะดวก):
| วิธี | ขั้นตอน |
|---|---|
| Web UI | เข้า http://127.0.0.1:8123 (ถ้าเข้าได้) → หน้า "IP ที่ถูกบล็อก" → ปลดบล็อกทั้งหมด (ฉุกเฉิน) หรือปลดเฉพาะ IP |
| CLI จาก console จริง | ไปที่เครื่อง (จอ/คีย์บอร์ดจริง, iDRAC, VM console — ไม่ต้องพึ่ง RDP) → รัน rdpguard.exe unblock-all หรือ rdpguard.exe unblock <IP> หรือ rdpguard.exe allow <IP> (เพิ่ม whitelist + ปลดบล็อก) |
| แก้ config | แก้ config.ini เพิ่ม IP ตัวเองใน never_block_ips = 1.2.3.4 → รอ ≤60 วิ ระบบปลดให้เอง (service รีโหลด config อัตโนมัติ) |
แนะนำ: เตรียม
allowไว้ล่วงหน้า — จด IP ที่ใช้เข้าประจำไว้ในnever_block_ipsหรือ whitelist ตั้งแต่แรก
RDPGuard บล็อกได้ไม่จำกัด (1 rule ต่อ IP — Windows Firewall รองรับเป็นร้อยได้สบาย) แต่เมื่อจำนวนเยอะ หน้าจอ/rules จะรก ถ้าเกินหลักพันอาจเริ่มหน่วง แนวทางจัดการ:
| วิธี | ทำยังไง |
|---|---|
| บล็อกแบบ CIDR | ถ้า IP โจมตีมาจาก subnet เดียวกัน (เช่น 203.0.113.5, 203.0.113.9) → บล็อก 203.0.113.0/24 rule เดียวครอบหมด (ช่อง "บล็อกด้วยมือ" รับ CIDR ได้) |
| Blacklist ด้วย CIDR | ใส่ subnet ที่โจมตีประจำใน blacklist → บล็อกทันทีทั้งวง |
| ลด block_hours | ตั้ง block_hours = 6 (หน้า ตั้งค่า) — IP หมดอายุเร็ว ไม่สะสมเยอะ (IP ขาประจำยังถูก escalation ขยายให้) |
| ปลดล้าง | ปลดรายตัวในตาราง / "ปลดบล็อกทั้งหมด (ฉุกเฉิน)" / CLI rdpguard.exe unblock-all
|
Web UI จะแสดงคำเตือนอัตโนมัติเมื่อมี IP ถูกบล็อกเกิน 50 (และเตือนแรงขึ้นเมื่อเกิน 200) พร้อมคำแนะนำข้างต้น
เกิดจาก proxy/โปรแกรมกันไวรัสที่ intercept HTTPS (เช่น self-signed certificate):
- เปิด Web UI → หน้า ตั้งค่า → แจ้งเตือน
- ปิด "ตรวจสอบ SSL ของ Telegram" (
telegram_verify_ssl = false) - กดบันทึก
ควรใช้เฉพาะบนเครือข่ายที่เชื่อถือได้ — การปิดตรวจสอบ SSL = ไม่ตรวจใบรับรอง
ระบบมี firewall reconcile (self-heal) อยู่แล้ว — cleanup ตรวจทุก 60 วิ ถ้า DB บอก blocked แต่ rule ใน firewall หาย (ถูกลบ/รีเซ็ตจากภายนอก) จะสร้าง rule กลับให้อัตโนมัติ รอ ≤60 วิ แล้วตรวจใหม่
ถ้าไม่หายจริง ให้ดูใน Web UI ว่า rule ถูกสร้างใน wf.msc (ชื่อ RDPGuard Block หรือ RDPGuard Block <IP> ตามโหมด) หรือไม่ และสถานะระบบ Firewall เป็นอย่างไร
exe ที่ build ด้วย PyInstaller + UPX อาจถูก AV ฟลาก:
- ตรวจสอบว่าไฟล์มาจากแหล่งที่เชื่อถือได้ (เทียบ SHA256 กับ release บน GitHub)
- เพิ่มโฟลเดอร์ที่เก็บ exe ใน exclusion ของโปรแกรมกันไวรัส
- ถ้าต้องการเลี่ยง UPX: แก้
rdpguard.specตั้งupx=Falseแล้ว build ใหม่
- ค่าเริ่มต้นผูก
127.0.0.1— เข้าได้เฉพาะเครื่องนั้น (ปลอดภัยสุด) - ถ้าต้องการเข้าจากเครื่องอื่น: ตั้ง
webui.host = 0.0.0.0+ ตั้งรหัสผ่านที่แข็งแรง + เปิดพอร์ต firewall เอง:netsh advfirewall firewall add rule name="RDPGuard WebUI" dir=in action=allow protocol=TCP localport=8123 - เปลี่ยน host/พอร์ตแล้วต้อง restart โปรแกรม/service จึงจะมีผล
- ค่า
[general](log_level, log_max_mb, log_backups) และ retention ต้อง restart โปรแกรม/service -
webui.host/webui.portต้อง restart เช่นกัน
เป็นไฟล์ชั่วคราวของ SQLite (WAL mode) — ถ้าโปรแกรมถูกปิดแบบกระทันหัน (เช่น kill ตรง ๆ) ไฟล์อาจยังค้างอยู่ ลบได้ ไม่กระทบข้อมูล — ระบบทำ checkpoint ให้เองตอนปิดปกติ และเวอร์ชันใหม่จับ Ctrl+Close handler เพื่อทำความสะอาดให้แล้ว
UI แสดงแค่ 80 รายการล่าสุด (ข้อมูลไม่ถูกลบ) — ใช้ตัวกรอง/CSV export เพื่อดูข้อมูลย้อนหลัง; ข้อมูลเก่าอาจถูกลบตาม retention (event_retention_days ค่าเริ่มต้น 90 วัน)
ดู API.md และ DESIGN.md ใน repo — วิธีทดสอบ API: login ผ่าน http://127.0.0.1:8123 (ได้ cookie rdpguard_session) แล้วเรียก /api/*
| สถานการณ์ | คำแนะนำ |
|---|---|
| Server ถูกโจมตีหนักมาก (log เต็ม 4625) |
max_attempts = 3, window_minutes = 5 (บล็อกไว แต่เสี่ยง false positive) |
| RDP มีคนใช้จริงหลายคน |
max_attempts = 8–10, window_minutes = 15 (ลดการบล็อกผู้ใช้ที่พิมพ์รหัสผิดเป็นครั้งคราว) |
| ต้องการกันระยะยาว |
block_hours = 72 หรือ 0 (ถาวร) + auto_extend = true
|
| Office ใช้ IP ปลายทางคงที่ | เพิ่ม IP นั้นใน Whitelist ผ่าน Web UI |
| เจอ "ยิงสั้น ๆ แล้วหนี" (IP แทบไม่ซ้ำ ทีละ 1-2 ครั้ง) |
accumulate_threshold = 5, accumulate_window_hours = 24 — ถ้า network มี NAT/ISP shared เยอะ เก็บค่าเริ่มต้นไว้ |
- เปิด Web UI → พาเนล Log การทำงาน (หรือ
rdpguard.log) แล้วอ่านข้อความ error ล่าสุด - ลองกด "ทดสอบระบบทั้งหมด (self-test)" เพื่อดูว่าขั้นไหนพัง
- เปิด issue ที่ https://github.com/Witawat/rdpGuard/issues พร้อมแนบ log (ลบข้อมูลอ่อนไหวออก) และเวอร์ชัน RDPGuard/Windows