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

การ Filter ข้อมูลของ Firewall บน Issabel (และ Elastix)

โพสต์โพสต์แล้ว: 03 มิ.ย. 2019 09:13
โดย nuiz
หมายเหตุ... ฟีเจอร์ Firewall แยกออกต่างจากฟีเจอร์ fail2ban นะครับ โดย 2 ฟีเจอร์นี้ Enable/Disable แยกกันได้

เมื่อเราเปิดใช้งานฟีเจอร์ Firewall บน Issabel แล้ว เราสามารถรันคำสั่ง iptables -L -n ตรวจสอบดูได้ว่า Firewall เปิดใช้งานจริงๆหรือยัง โดยถ้า Firewall ทำงานแล้วเราจะเห็นข้อความเยอะๆอย่างในตัวอย่างนี้ครับ
โค้ด: เลือกทั้งหมด
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ISSABEL_INPUT  all  --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ISSABEL_FORWARD  all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ISSABEL_OUTPUT  all  --  0.0.0.0/0            0.0.0.0/0           

Chain ISSABEL_FORWARD (1 references)
target     prot opt source               destination         
ISSABEL_FORWARD_GEOIP  all  --  0.0.0.0/0            0.0.0.0/0           
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain ISSABEL_FORWARD_GEOIP (1 references)
target     prot opt source               destination         

Chain ISSABEL_INPUT (1 references)
target     prot opt source               destination         
ISSABEL_INPUT_GEOIP  all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpts:67:68
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:4445
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpts:5004:5082
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:4569
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:5036
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpts:10000:20000
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:2727
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp spt:53
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:69
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:25
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:110
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:143
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:993
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:995
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:5222
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:9090
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain ISSABEL_INPUT_GEOIP (1 references)
target     prot opt source               destination         

Chain ISSABEL_OUTPUT (1 references)
target     prot opt source               destination         
ISSABEL_OUTPUT_GEOIP  all  --  0.0.0.0/0            0.0.0.0/0           

Chain ISSABEL_OUTPUT_GEOIP (1 references)
target     prot opt source               destination


แต่ถ้ารันคำสั่ง iptables -L -n แล้วเห็นอยู่แค่นี้ แสดงว่า Firewall ยังไม่สตาร์ทครับ
โค้ด: เลือกทั้งหมด
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

เมื่อ CentOS รับ IP Packet เข้ามาทางพอร์ตแลน มันจะส่งไปเข้ากระบวนการที่เกี่ยวข้องซึ่งในนั้นก็มี Firewall นี่แหล่ะครับ การตรวจสอบของ Firewall นั้นจะตรวจสอบกับ Rules ที่เราสร้างไว้บน Firewall (รวมทั้งที่ Issabel สร้างไว้ให้แล้วด้วย) การตรวจสอบจะทำทีละ Rule ครับ ตั้งแต่ Rule แรกเลย ถ้า Matched แบบ Accept ก็จะส่งเข้าโปรแกรมที่เกี่ยวข้อง (ส่งไปเข้า TCP/UDP Port ของโปรแกรมนั้นๆ) แต่ถ้า Matched แบบ Drop ก็จะทิ้งไปเลย แต่ถ้า Matched แบบ Reject ก็จะทิ้งไปเลยแล้วส่ง ICMP Port Unreachable กลับไปบอก IP ต้นทาง ในกรณีที่ไม่ Matched ก็จะตรวจสอบกับ Rules ต่อๆไปครับ

Rules สุดท้ายที่ควรจะมีใน Firewall คือ Drop (หรือ Reject) ทุกอย่างที่ไม่ Matched ครับ

Firewall ใน Issabel ตรวจสอบอะไรได้บ้าง
- IP Address ต้นทาง
- IP Address ปลายทาง
- TCP/UDP Port ต้นทาง
- TCP/UDP Port ปลายทาง

Firewall ใน Issabel ตรวจสอบอะไรไม่ได้บ้าง
ที่ Firewall ตรวจสอบไม่ได้ก็คือ "ข้อมูล" หรือ "Content" ที่บรรจุอยู่ใน Packet ที่รับเข้ามาครับ ข้อมูลนี้ต้องให้โปรแกรมอื่นทำหน้าที่ตรวจสอบครับ เช่นโปรแกรมที่รอรับข้อมูลต่อจาก Firewall หรือโปรแกรมอื่นๆเช่น Fail2Ban ครับ ยกตัวอย่างเช่น จะให้ Firewall บล๊อคไม่ให้เบอร์ 0851619439 โทรเข้ามาใน Issabel ได้ อย่างนี้ Firewall ทำไม่ได้ครับ ต้องบล๊อคในโปรแกรมที่รับข้อมูลต่อซึ่งก็คือ Asterisk ครับ

วิธีการติดตั้ง Issabel บน CentOS 7
เปิดบริการ อบรม Issabel/FreePBX/Elastix ด้วยคอร์สพิเศษ ให้ติดตั้ง คอนฟิกคล่อง ใช้งานคล่อง ได้ใน 3 วัน
เทคนิคการคอนฟิก Firewall เมื่อเปลี่ยนพอร์ต Web (http/https)