คุณเคยประสบปัญหาเหล่านี้ไหมครับ …อยากจะ Ban IP ของคนที่พยายาม SSH เข้ามาที่เครื่อง Server ของคุณ
หลายคนใช้ Linux Server ที่อยู่บน Internet แล้วต้องการจะ SSH เข้าไปเพื่อแก้ไขระบบ โดยทั่วไปเรามักจะใช้ VPN สำหรับการเชื่อมต่อเข้าไป แต่ในบางกรณีที่ไม่สามารถทำได้ การป้องกัน Linux Server ให้ปลอดภัยโดยการเปลี่ยน Listen Port ของ SSH Service (SSHD) ก็เป็นวิธีการป้องกันวิธีหนึ่ง
แต่จะดีกว่ามั้ยถ้าคุณสามารถ Ban IP ของผู้ไม่หวังดีที่พยายาม Login ผ่าน SSH เมื่อไรก็ตามที่ Login ผิดตามจำนวนครั้งภายในระยะเวลาที่กำหนด IP เหล่านั้นก็จะถูก Ban ทันที
มาดูวิธีทำกันเลยครับ
1. ติดตั้ง EPEL repository
2. ติดตั้ง Fail2ban ด้วยคำสั่งด้านล่าง
3. Start fail2ban service
4. ตั้งค่าคอนฟิกของ Fail2ban
4.1 ทำการสร้าง configuration file ชื่อ /etc/fail2ban/jail.local โดยใช้คำสั่งด้านล่าง
4.2 ทำการแก้ไข configuration file โดยจะมีส่วนที่ต้องแก้ด้วยกัน 4 ส่วน คือ ignoreip, bantime, findtime, และ maxretry
4.2.1 ignoreip หรือ (Whitelist IP Addresses) เราสามารถเพิ่ม IP หรือ Subnet ของเราที่ไม่ต้องการให้โดน Ban ไม่ว่าจะ Login ผิดกี่ครั้ง ถ้ามีหลาย IP ก็ให้เว้นวรรคระหว่าง IP ด้วย
4.2.2 bantime คือระยะเวลาเป็นวินาทีที่ IP นั้นจะถูก Ban เราสามารถใส่หน่วยเพื่อระบุระยะเวลาได้ง่ายขึ้น เช่น อยากให้ Ban เป็นเวลา 15 นาที = 15m หรือ 1วัน = 1d เป็นต้น
และถ้าอยากให้ Ban แบบไม่มีกำหนดให้กำหนดค่า bantime เป็นจำนวนติดลบ
4.2.3 findtime คือระยะเวลาที่การ Login ผิดจะถูก Ban เช่น ถ้าต้องการให้ Ban IP เมื่อมีการ Login ผิดตามจำนวนที่ต้องการเกิดขึ้นภายใน 2 ชั่วโมง ให้ตั้งค่า findtime = 2h เป็นต้น
4.2.4 maxretry คือจำนวนการ Login ผิดก่อนที่จะถูก Ban เช่น ถ้าต้องการให้ Ban IP เมื่อมีการ Login ผิดจำนวน 3 ครั้งภายในระยะเวลาที่กำหนด ให้ตั้งค่า maxretry = 3 เป็นต้น
ทุกครั้งที่มีการแก้ไข configuration file ให้ทำการ restart service ของ fail2ban ด้วยคำสั่งด้านล่าง
เราสามารถ Ban และ Unban IP แบบ Manual โดยใช้คำสั่งด้านล่างนี้
ตัวอย่าง การ Ban IP 192.168.0.10
ตัวอย่าง การ Unban IP 192.168.0.10
การใช้งาน Fail2ban จะมีผลเฉพาะการ Login ผ่าน SSH เท่านั้น ถ้า Login ผิดผ่านจอ Console จะไม่ถูก Ban
คำเตือน สำหรับท่านที่ทดลอง Fail2ban ผ่าน SSH หลังจากติดตั้ง Fail2ban เสร็จ อย่าลืมไปเพิ่ม IP ของเครื่อง Client ที่ท่านใช้ SSH เข้าไปลงใน ignoreip ด้วยนะครับ เพื่อป้องกันเวลาทดสอบ Login ผิดแล้ว IP ของท่านจะโดน Ban ไปด้วย
ลองเอา Fail2ban ไปปรับใช้กันดูนะครับ ขอให้สนุกกับการใช้งานครับ