หน้า 1 จากทั้งหมด 1

เทคนิคการคอนฟิกใช้งาน fail2ban บน Issabel

โพสต์โพสต์แล้ว: 02 มิ.ย. 2019 00:33
โดย nuiz
บน Issabel 4 นอกจากจะติดตั้ง Firewall มาให้เราแล้ว เทคนิคการคอนฟิกใช้งาน Firewall บน Issabel 4 เขายังติดตั้ง fail2ban มาให้ด้วยนะครับ ทำเป็นหน้าเว็บคอนฟิกให้เราเลย มีหน้าเว็บแสดง IP ที่ถูก Banned และสามารถลบ Banned IP ได้จากหน้านี้เลย สะดวกดีครับ ใช้งานได้จริง บล๊อคไอพีได้จริง ผมทดสอบแล้ว

เชื่อมต่อ 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