เชื่อมต่อ Issabel แบบไหนถึงควรใช้ fail2ban
แบบใดแบบหนึ่งใน 2 แบบนี้ครับ สมควรอย่างยิ่งที่จะต้องเปิด fail2ban (และ Firewall ด้วยก็ดี)
1. ขาแลนของ Issabel เป็น Public IP ภายนอกสามารถเข้าถึง Issabel ได้โดยตรง ไม่ว่าจะมี External Firewall และ/หรือมี SBC คั่นอยู่หรือไม่ก็ตาม
2. ขาแลนของ Issabel เป็น Private IP แต่มีการฟอร์เวอร์ดพอร์ต เช่น SIP Listen Port (ดีฟอลท์ 5060) หรือ SSH Port หรือ Web Port หรือ.... มายัง Issabel ไม่ว่าจะมี External Firewall และ/หรือมี SBC คั่นอยู่หรือไม่ก็ตาม
จำเป็นมั๊ยที่จะต้องซื้อ External Firewall และ/หรือ SBC (Session Border Controller) มาใช้อีก
ซื้อมาติดตั้งเพิ่มเติมได้ก็ดีครับ แต่ถ้าไม่มีงบประมาณผมว่าใช้ Firewall และ fail2ban บน Issabel ก็เพียงพอแล้ว
เมนูคอนฟิก fail2ban
เมนูคอนฟิก fail2ban ซ่อนอยู่ในเมนูหลัก Security ครับ ดังรูป
เมนู Admin - เอาไว้คอนฟิกเวลา fail2ban จะบล๊อคไอพีที่พยายามเข้ามาในโปรแกรมที่กำหนดไว้ เช่น Asterisk Server, SSH Server, Web Server, Postfix SMTP Mail Server, Cyrus POP3/IMAP Mail Server เป็นต้น คอนฟิกก็ได้แก่ ล๊อคอินผิดกี่ครั้งถึงจะบล๊อค บล๊อคนานแค่ไหน และ IP ชุดไหนไม่ต้องบล๊อค
เมนู Banned IPs ถ้าไอพีไหนถูก block จะแสดงในหน้านี้ครับ
รายละเอียดของแต่ละเมนู
1. เมนู Admin
** อย่าเพิ่งกด Enable fail2ban จนกว่าจะแก้ไขข้อมูลเสร็จ **
คลิ๊ก View จะมีให้แก้ไขค่าคอนฟิกครับ ดังตัวอย่าง
Name - ชื่อ Jail ของ bail2ban
Count Failed Attempts - ผิดกี่ครั้งจึงจะ Banned
Banned Time (hours) - Banned (Blocked) นานกี่ชั่วโมง
Whitelist - ไอพีที่จะไม่ถูก Banned (Blocked)
Enabled - ใช้งาน/ไม่ใช้งาน
ลองแก้ไขคอนฟิกกันดูครับ
ถ้าต้องการให้ล๊อคอินผิดครั้งเดียวก็บล๊อคเลย ให้เซ็ตค่า Count Failed Attempts เป็น 1 หน่วยเป็นครั้ง
ฺถ้าต้องการให้บล๊อคนานหน่อยเช่น 10 ปี ให้เซ็ตค่า Banned Time (hour) เป็น 87600 หน่วยเป็นชั่วโมง คิดจาก 10 ปี x 365 วัน x 24 ชั่วโมง
ถ้าไม่ต้องการให้บล๊อคไอพีวง 192.168.100.0/24 ให้เพิ่มบรรทัด 192.168.100.0/24 ในช่อง Whitelist ใส่เพิ่มได้เรื่อยๆครับทีละบรรทัด ถ้าเป็นไอพีเดียวก็ใส่แบบนี้ 192.168.100.101
ดังตัวอย่างในรูปนี้ครับ
เมื่อแก้ไขข้อมูลเสร็จแล้ว โดยเฉพาะอย่างยิ่งบรรทัด whitelist ให้เราเปิดใช้งาน fail2ban ครับ โดยคลิ๊กที่ Enable fail2ban
2. เมนู Banned IP
ดู IP ที่ถูก Banned และวิธีการลบ
ถ้าต้องการลบ IP ไหนออก ให้คลิ๊กที่ช่องสี่เหลี่ยมด้านหน้า IP แล้วคลิ๊ก Unban ครับ
เวลาเราคอนฟิกหน้า fail2ban มันเก็บคอนฟิกไว้ที่ไหน
เท่าที่ผมตรวจสอบดูนะครับ เมื่อเราคอนฟิก fail2ban มันจะเก็บคอนฟิกไว้ใน sqlite3 ดาต้าเบสครับ ชื่อไฟล์ /var/www/db/firewall.db ลองดูข้อมูล fail2ban ในดาต้าเบสนี้
- โค้ด: เลือกทั้งหมด
[root@mya ~]# sqlite3 /var/www/db/iptables.db
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
filter portknock_user_auth
jails portknock_user_current_rule
port tmp_execute
portknock_eth
sqlite> select * from jails;
1|asterisk|1|87600|127.0.0.1 192.168.100.0/24|1
2|sshd|5|12|127.0.0.1|1
3|postfix|5|12|127.0.0.1|1
4|apache|5|12|127.0.0.1|1
5|cyrus|5|12|127.0.0.1|1
sqlite> .quit
สำหรับบทความนี้ผมขอพูดถึงดาต้าเบส iptables.db เพียงเท่านี้นะครับ รายละเอียดที่มากกว่านี้ เช่น เพิ่ม jail ลบ jail ทำยังไง ผมจะยกไปเขียนเป็นอีกบทความหนึ่งหล่ะกันครับ
เปิดบริการ อบรม Issabel/FreePBX/Elastix ด้วยคอร์สพิเศษ ให้ติดตั้ง คอนฟิกคล่อง ใช้งานคล่อง ได้ใน 3 วัน
เทคนิคการคอนฟิก Firewall เมื่อเปลี่ยนพอร์ต Web (http/https)
เทคนิคการใช้งาน Firewall + GeoIP บน Issabel
เทคนิคการใช้งาน Issabel
เทคนิคการใช้งาน Elastix
เทคนิคการใช้งาน Asterisk
เทคนิคการใช้งาน FreePBX
ติดตั้งธีม Elastixwave บน Issabel
ตัวอย่างการใช้งาน Action URL บน Grandstream IP Phone