Firewall
เซิร์ฟเวอร์จำเป็นที่จะต้องตั้งค่า firewall เพื่อความปลอดภัยและเปิดใช้ง่านการเข้าถึงผ่านพอร์ตที่กำหนดเท่านั้น โดยตั้งค่าด้วยคำสั่ง iptables
เพื่อกำหนด rule ของ Chain INPUT
โดยการทำงานของ iptables จะเริ่มจาก rule บน ไปยัง rule ล่าง
Iptables
iptables
เป็นคำสั่งบน Ubuntu server
เพื่อใช้สำหรับจัดการ firewall
iptables-persistent
- ใช้สำหรับการเรียกใช้งาน rules หลังจาก reboot
WARNING
ถ้าไม่ได้ติดตั้ง iptables-persistent
เมื่อมีการ reboot ค่าที่ตั้งไว้ (Rules) จะไม่ทำงาน
apt install iptables-persistent
List rule
- แสดงรายการ rule ทั้งหมด ของ
Chain INPUT
iptables -L -n --line-numbers
// Output //
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 PSAD_BLOCK_INPUT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
3 DROP all -- 0.0.0.0/0 224.0.0.1
4 DROP all -- 0.0.0.0/0 192.168.27.255
5 DROP all -- 0.0.0.0/0 192.168.102.255
6 DROP all -- 0.0.0.0/0 192.168.105.255
7 DROP all -- 0.0.0.0/0 255.255.255.255
8 DROP all -- 0.0.0.0/0 192.168.100.255
9 ACCEPT tcp -- 192.168.xx.xx 0.0.0.0/0 tcp dpt:xxxx
10 ACCEPT tcp -- 192.168.xx.xx 0.0.0.0/0 tcp dpt:xxxx
Add rule
คำสั่ง เพิ่ม rule ใน
Chain INPUT
iptables -A INPUT -p tcp --dport [Des. Port] -s [Source IP Address] -j [ACCEPT|DROP|REJECT]
bashiptables -A INPUT -p tcp --dport 3306 -s 192.168.1.0/24 -j ACCEPT
Insert rule
คำสั่ง แทรก rule ที่ลำดับเท่าไร ? ใน
Chain INPUT
iptables -I INPUT [Line Number] -p tcp --dport [Des. Port] -s [Source IP Address] -j [ACCEPT|DROP|REJECT]
bashiptables -I INPUT 8 -p tcp --dport 8080 -s 192.168.1.0/24 -j DROP
Delete rule
คำสั่ง ลบ rule ที่ลำดับเท่าไร ? ใน
Chain INPUT
iptables -D INPUT [Line Number]
bashiptables -D INPUT 10
Save rule
คำสั่ง บันทึก rule
ถ้าไม่ใช้คำสั่งนี้ เมื่อ reboot server ค่า rules firewall จะคืนกลับค่าก่อนการกำหนด rule
bashiptables-save > /etc/iptables/rules.v4
Expport rule
คำสั่ง ส่งออก rule ออกมาเป็นไฟล์
iptables-save > /[PATH]/[FILE_NAME]
bashiptables-save > /tmp/iptables-export-name
Import rule
คำสั่ง นำเข้า rule จากไฟล์
iptables-restore < /[PATH]/[FILE_NAME]
bashiptables-restore < /tmp/iptables-export-name
Drop all
เมื่อกำหนด rule
ครบถ้วนแล้ว จำเป็นต้องกำหนดให้มีการ Drop ทุก request เพื่อป้องกันและทำให้เซิร์ฟเวอร์มีความปลอดภัยมากยิ่งขึ้น
:::note
ถ้าเป็นตั้งการกำหนดค่า rule ครั้งแรก ของเซิร์ฟเวอร์ที่พึ่งเริ่มใช้งานครั้งแรก
ให้ใช้ตำสั่งนี้หลังจากกำหนดค่า rule ครบถ้วนแล้ว :::
# DROP ALL Traffic TCP
iptables -A INPUT -p tcp -j DROP
# DROP ALL Traffic UDP
iptables -A INPUT -p udp -j DROP