Skip to content

Firewall

Wed 26 Jun 2024  
🎉 Hi: ... 🎉

เซิร์ฟเวอร์จำเป็นที่จะต้องตั้งค่า firewall เพื่อความปลอดภัยและเปิดใช้ง่านการเข้าถึงผ่านพอร์ตที่กำหนดเท่านั้น โดยตั้งค่าด้วยคำสั่ง iptables เพื่อกำหนด rule ของ Chain INPUT โดยการทำงานของ iptables จะเริ่มจาก rule บน ไปยัง rule ล่าง

Iptables

iptables เป็นคำสั่งบน Ubuntu server เพื่อใช้สำหรับจัดการ firewall

iptables-persistent

  • ใช้สำหรับการเรียกใช้งาน rules หลังจาก reboot

WARNING

ถ้าไม่ได้ติดตั้ง iptables-persistent เมื่อมีการ reboot ค่าที่ตั้งไว้ (Rules) จะไม่ทำงาน

bash
apt install iptables-persistent

List rule

  • แสดงรายการ rule ทั้งหมด ของ Chain INPUT
bash
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]

    bash
    iptables -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]

    bash
    iptables -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]

    bash
    iptables -D INPUT 10

Save rule

  • คำสั่ง บันทึก rule ถ้าไม่ใช้คำสั่งนี้ เมื่อ reboot server ค่า rules firewall จะคืนกลับค่าก่อนการกำหนด rule

    bash
    iptables-save > /etc/iptables/rules.v4

Expport rule

  • คำสั่ง ส่งออก rule ออกมาเป็นไฟล์

    iptables-save > /[PATH]/[FILE_NAME]

    bash
    iptables-save > /tmp/iptables-export-name

Import rule

  • คำสั่ง นำเข้า rule จากไฟล์

    iptables-restore < /[PATH]/[FILE_NAME]

    bash
    iptables-restore < /tmp/iptables-export-name

Drop all

เมื่อกำหนด rule ครบถ้วนแล้ว จำเป็นต้องกำหนดให้มีการ Drop ทุก request เพื่อป้องกันและทำให้เซิร์ฟเวอร์มีความปลอดภัยมากยิ่งขึ้น

:::note

ถ้าเป็นตั้งการกำหนดค่า rule ครั้งแรก ของเซิร์ฟเวอร์ที่พึ่งเริ่มใช้งานครั้งแรก

ให้ใช้ตำสั่งนี้หลังจากกำหนดค่า rule ครบถ้วนแล้ว :::

bash
# DROP ALL Traffic TCP
iptables -A INPUT -p tcp -j DROP

# DROP ALL Traffic UDP
iptables -A INPUT -p udp -j DROP

Built with: VitePress.