Netfilter Tables คืออะไร ทำไมผู้ดูแล Linux Server ต้องรู้
Netfilter เป็นเฟรมเวิร์กสำหรับจัดการ Packet บน Linux Kernel ที่อยู่เบื้องหลังเครื่องมือยอดนิยมอย่าง iptables และ nftables ทุกครั้งที่ Packet เข้าหรือออกจากเซิร์ฟเวอร์ Netfilter จะเป็นตัวตัดสินว่าจะ Allow, Drop หรือ Modify Packet นั้นตามกฎที่กำหนดไว้
สำหรับผู้ดูแล VPS หรือ Dedicated Server การเข้าใจ Netfilter Tables คือพื้นฐานสำคัญในการตั้งค่า Firewall และ NAT อย่างมีประสิทธิภาพ
ตารางหลักของ Netfilter
Filter Table
Filter Table เป็นตารางที่ใช้บ่อยที่สุด ทำหน้าที่ควบคุมว่า Packet ไหนจะถูก Accept หรือ Drop เป็นหัวใจสำคัญของ Firewall บน Linux ใช้สำหรับบล็อก IP ที่ไม่ต้องการ จำกัดการเข้าถึง Port เฉพาะ และป้องกันการโจมตีจากภายนอก
NAT Table
NAT Table ใช้แปลง IP Address และ Port ของ Packet เชื่อมต่อเครือข่ายภายในกับภายนอก รองรับทั้ง SNAT (Source NAT) สำหรับแชร์ IP ออกอินเทอร์เน็ต และ DNAT (Destination NAT) สำหรับ Forward Traffic เข้าสู่เซิร์ฟเวอร์ภายใน
Mangle Table
Mangle Table ใช้แก้ไขค่าพิเศษใน Packet Header เช่น TTL, TOS และ DSCP Marking สำหรับ QoS เหมาะกับงาน Traffic Shaping และ Policy Routing ที่ต้องการควบคุมเส้นทางของ Packet
Raw Table
Raw Table ทำงานก่อนตารางอื่นทั้งหมด ใช้สำหรับตั้งค่า NOTRACK เพื่อข้าม Connection Tracking ช่วยเพิ่มประสิทธิภาพเมื่อ Packet บางประเภทไม่ต้องการการ Track
Chain หลักที่ต้องรู้
INPUT Chain
ประมวลผล Packet ที่เข้ามายังเครื่อง ใช้ควบคุมว่าใครเข้าถึง Service บนเซิร์ฟเวอร์ได้บ้าง เช่น อนุญาตเฉพาะ IP ที่กำหนดเข้าถึง SSH
OUTPUT Chain
ประมวลผล Packet ที่เครื่องสร้างขึ้นเพื่อส่งออก ใช้จำกัดการเชื่อมต่อขาออกของเซิร์ฟเวอร์
FORWARD Chain
ประมวลผล Packet ที่ถูกส่งต่อจากเครือข่ายหนึ่งไปอีกเครือข่ายหนึ่ง ใช้เมื่อเซิร์ฟเวอร์ทำหน้าที่เป็น Router หรือ Gateway
จาก iptables สู่ nftables
iptables เป็นเครื่องมือดั้งเดิมที่ใช้จัดการ Netfilter แต่มีข้อจำกัดเรื่องประสิทธิภาพเมื่อมี Rule จำนวนมาก nftables เป็นตัวแทนที่ใหม่กว่า มี Syntax ที่เข้าใจง่ายกว่า รองรับ IPv4 และ IPv6 ในเครื่องมือเดียว และมีประสิทธิภาพสูงกว่าเมื่อมี Rule เยอะ
ตัวอย่าง nftables
สร้างตารางและ Chain ใหม่
nft add table inet filter
nft add chain inet filter input { type filter hook input priority 0 ; policy drop ; }
nft add rule inet filter input ct state established,related accept
nft add rule inet filter input tcp dport 22 accept
nft add rule inet filter input tcp dport {80, 443} accept
ดู Rule ทั้งหมด
nft list ruleset
Target และ Action ที่ใช้บ่อย
ACCEPT อนุญาตให้ Packet ผ่าน, DROP ทิ้ง Packet โดยไม่แจ้งผู้ส่ง, REJECT ปฏิเสธพร้อมส่งข้อความกลับ, LOG บันทึก Packet ก่อนส่งต่อไปยัง Rule ถัดไป และ MASQUERADE ใช้กับ NAT สำหรับ IP ที่เปลี่ยนแปลงได้
ตั้งค่า Netfilter สำหรับ Web Server
สำหรับเซิร์ฟเวอร์ที่ให้บริการเว็บ ควรตั้งค่า Firewall ให้ Default Policy เป็น DROP แล้วเปิดเฉพาะ Port ที่จำเป็น ได้แก่ Port 22 สำหรับ SSH (จำกัด IP), Port 80 และ 443 สำหรับ HTTP/HTTPS และอนุญาต Established Connections
คำถามที่พบบ่อย (FAQ)
iptables กับ nftables ควรใช้ตัวไหน
สำหรับระบบใหม่แนะนำ nftables เพราะเป็นทิศทางที่ Linux กำลังมุ่งไป มี Syntax ดีกว่าและประสิทธิภาพสูงกว่า แต่ iptables ยังใช้ได้บน Linux ทุกรุ่นและมี Documentation มากกว่า
Netfilter กับ Firewall อื่นเช่น UFW ต่างกันอย่างไร
UFW เป็น Frontend ที่ทำให้ใช้ Netfilter ได้ง่ายขึ้น ภายในยังใช้ iptables/nftables อยู่ ถ้าต้องการควบคุมละเอียดใช้ iptables/nftables โดยตรง ถ้าต้องการความง่ายใช้ UFW
Policy DROP กับ REJECT ต่างกันอย่างไร
DROP ทิ้ง Packet เงียบๆ ผู้ส่งจะ Timeout ส่วน REJECT ส่งข้อความปฏิเสธกลับทันที สำหรับ Firewall ภายนอกแนะนำ DROP เพราะไม่เปิดเผยข้อมูลว่ามี Service อยู่
ตั้ง Netfilter แล้ว Rule หายหลัง Reboot ทำอย่างไร
สำหรับ iptables ใช้ iptables-persistent หรือ iptables-save/restore สำหรับ nftables ใส่ Rule ในไฟล์ /etc/nftables.conf แล้วเปิด Service nftables ให้ Load ตอน Boot
สรุป
Netfilter Tables เป็นรากฐานของระบบรักษาความปลอดภัยเครือข่ายบน Linux ทุกรุ่น การเข้าใจ Tables, Chains และ Targets ช่วยให้ตั้งค่า Firewall ได้อย่างมีประสิทธิภาพ ไม่ว่าจะใช้ iptables หรือ nftables
หากต้องการ VPS หรือ Dedicated Server ที่พร้อมใช้งานพร้อมระบบ Firewall ที่ได้มาตรฐาน DriteStudio พร้อมให้บริการ