EQVPS

วิธีตั้งค่า fail2ban เพื่อบล็อกการโจมตีแบบ brute-force

หยุดการเดารหัสผ่านที่เกิดขึ้นตลอดเวลาบนเซิร์ฟเวอร์ของคุณ: fail2ban คอยเฝ้าดู log แล้วแบน IP ที่ล็อกอินผิดพลาดซ้ำๆ โดยอัตโนมัติ ติดตั้ง เปิดใช้งาน SSH jail และปรับแต่งกฎการแบน — ด้วยคำสั่งเพียงไม่กี่บรรทัด

แม้จะล็อกทุกอย่างแน่นหนาแล้ว บอทก็ไม่เคยหยุดลองเดารหัสผ่านที่พอร์ต 22 — มันคือสัญญาณรบกวนและภาระที่เกิดขึ้นตลอดเวลาในพื้นหลัง fail2ban คอยเฝ้าดู log ของคุณและแบน IP ใดๆ ที่ล็อกอินผิดพลาดซ้ำๆ โดยอัตโนมัติ ทำให้ผู้โจมตีถูกปิดกั้นหลังจากลองไม่กี่ครั้ง แทนที่จะเดาไปเรื่อยๆ ไม่มีที่สิ้นสุด เป็นการติดตั้งเล็กๆ ที่ลด log spam ได้มาก

1. ติดตั้ง fail2ban

sudo apt update && sudo apt install -y fail2ban

2. สร้างไฟล์คอนฟิกท้องถิ่น

อย่าแก้ไฟล์ jail.conf ที่มาพร้อมระบบโดยตรง — ให้ override ผ่าน jail.local แทน:

sudo tee /etc/fail2ban/jail.local > /dev/null <<'EOF'
[DEFAULT]
# don't ban yourself — add your home/office IP
ignoreip = 127.0.0.1/8 ::1
bantime  = 1h
findtime = 10m
maxretry = 5

[sshd]
enabled = true
EOF

การตั้งค่านี้จะแบน IP เป็นเวลา 1 ชั่วโมงหลังจากล็อกอินผิดพลาด 5 ครั้งภายใน 10 นาที ให้เพิ่ม IP ของคุณเองลงใน ignoreip เพื่อไม่ให้การพิมพ์รหัสผ่านผิดพลาดโดยไม่ตั้งใจทำให้คุณถูกล็อกออก

3. เริ่มการทำงานและตั้งให้เปิดเองตอนบูต

sudo systemctl enable --now fail2ban

4. ตรวจสอบ SSH jail

sudo fail2ban-client status sshd

คุณจะเห็นจำนวน IP ที่ถูกแบนอยู่ในขณะนี้ — บ่อยครั้งเป็นตัวเลขที่น่าประหลาดใจภายในไม่กี่นาที

จัดการการแบน

sudo fail2ban-client set sshd unbanip 1.2.3.4   # lift a ban
sudo fail2ban-client status                     # list all jails
sudo systemctl reload fail2ban                  # apply config changes

ข้อควรระวังที่ต้องพูดตรงๆ

ขั้นตอนถัดไป

fail2ban เป็นเพียงหนึ่งชั้นของการเสริมความแข็งแกร่งให้เซิร์ฟเวอร์ ควรใช้ร่วมกับ การยืนยันตัวตนด้วย SSH key และ ไฟร์วอลล์ UFW แล้วทำตาม เช็กลิสต์ความปลอดภัยสำหรับ VPS ใหม่ ให้ครบก่อนที่จะเปิดใช้งานสิ่งใดสู่อินเทอร์เน็ต

คำถามที่พบบ่อย

fail2ban ทำอะไรกันแน่?

มันคอยเฝ้าดูไฟล์ log (เช่น SSH auth log) เพื่อหาความล้มเหลวซ้ำๆ จาก IP เดียวกัน และเมื่อ IP นั้นเกินเกณฑ์ที่กำหนด ก็จะเพิ่มการแบนชั่วคราวในไฟร์วอลล์ให้ทันที บอทที่ถล่มพอร์ต 22 ทั้งวันจะถูกบล็อกหลังจากลองไม่กี่ครั้ง แทนที่จะเดาไปเรื่อยๆ ไม่มีที่สิ้นสุด นี่คือการป้องกันแบบอัตโนมัติที่ทำงานต่อเนื่อง

ถ้าใช้ SSH key อยู่แล้ว ยังต้องใช้ fail2ban ไหม?

ทั้งสองแก้ปัญหาคนละอย่างกัน SSH key ทำให้การเดาแทบเป็นไปไม่ได้เลย ส่วน fail2ban หยุดเสียงรบกวนและภาระจากความพยายามที่ไม่มีวันจบ และยังปกป้องบริการอื่นๆ ที่คุณเปิดใช้งานด้วย (เมล, ล็อกอินเว็บ) เมื่อใช้ SSH แบบกุญแจอย่างเดียว ความเสี่ยงก็ต่ำอยู่แล้ว แต่ fail2ban เป็นการป้องกันเพิ่มเติมที่ราคาถูกและช่วยลด log spam

fail2ban จะแบนฉันโดยไม่ตั้งใจไหม?

เป็นไปได้ ถ้าคุณพิมพ์รหัสผ่านของตัวเองผิดหลายครั้ง — คุณจะถูกแบนตาม bantime แล้วปลดแบนให้อัตโนมัติเอง เพื่อไม่ให้ตัวเองถูกล็อกออกเด็ดขาด ให้เพิ่ม IP ของคุณเองลงใน 'ignoreip' ในไฟล์คอนฟิก และจำไว้ว่าคอนโซลของผู้ให้บริการ (EQVPS มีให้) จะพาคุณกลับเข้ามาได้เสมอ

ดูรายชื่อ IP ที่ถูกแบน หรือปลดแบน IP ได้อย่างไร?

ใช้ 'sudo fail2ban-client status sshd' เพื่อดู jail และ IP ที่ถูกแบน หากต้องการปลดแบน: 'sudo fail2ban-client set sshd unbanip 1.2.3.4' หากต้องการเพิ่ม IP ที่เชื่อถือได้แบบถาวร ให้ใส่ไว้ใน ignoreip แล้ว reload

bantime, findtime และ maxretry คืออะไร?

maxretry คือจำนวนครั้งที่ล้มเหลวที่ยอมให้เกิดขึ้นได้ findtime คือช่วงเวลาที่นับความล้มเหลวเหล่านั้น และ bantime คือระยะเวลาที่การแบนจะคงอยู่ ตัวอย่างเช่น ล้มเหลว 5 ครั้งภายใน 10 นาทีจะกระตุ้นการแบน 1 ชั่วโมง เพิ่มค่า bantime (หรือตั้งให้นานขึ้น) สำหรับผู้โจมตีที่พยายามซ้ำๆ ไม่หยุด

ความคิดเห็น

ยังไม่มีความคิดเห็น เป็นคนแรกสิ

แสดงความคิดเห็น

ความคิดเห็นจะถูกตรวจสอบก่อนแสดง