เมื่อเราเปิดใช้งานฟีเจอร์ 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)