Firewall iptables เบื้องต้น Security

Firewall iptables เบื้องต้น

📅 2026-02-09 | โดย อ.บอม กิตติทัศน์ เจริญพนาสิทธิ์ — SiamCafe.net Since 1997

Firewall iptables เบื้องต้น: เกราะป้องกันร้านเน็ตยุคบุกเบิก

สวัสดีน้องๆ! สมัยผมทำร้านเน็ต SiamCafe ยุค 90s เนี่ย เรื่อง Security นี่สำคัญสุดๆ เพราะเครื่องลูกข่ายแต่ละเครื่องคือขุมทรัพย์ข้อมูลลูกค้า แถมยังเป็นช่องทางให้พวก Hacker เข้ามาป่วนระบบได้ง่ายๆ หนึ่งในเครื่องมือสำคัญที่เราใช้กันคือ iptables นี่แหละ

iptables เนี่ย มันคือ Firewall ที่มาพร้อมกับ Linux Kernel ซึ่งทำหน้าที่เป็นเหมือน "ยาม" คอยตรวจตรา Packet ข้อมูลที่วิ่งเข้า-ออกจากเครื่องเรา ถ้า Packet ไหนไม่ได้รับอนุญาต ก็จะถูกสกัดกั้นทันที

ทำไมต้องใช้ iptables?

ทำไมต้อง iptables น่ะเหรอ? ลองนึกภาพร้านเน็ตเราไม่มี Firewall สิครับ พวก Hacker ก็จะสามารถสแกนหาช่องโหว่ของเครื่องเราได้ง่ายๆ แล้วก็อาจจะเข้ามาขโมยข้อมูล, ติดตั้ง Malware, หรือแม้กระทั่งใช้เครื่องเราเป็นฐานโจมตี Server อื่นๆ ได้เลยนะ

iptables ช่วยป้องกันเราจากภัยคุกคามเหล่านี้ได้ โดยการกำหนดกฎ (rules) ที่ระบุว่า Packet แบบไหนที่เราอนุญาตให้ผ่าน และ Packet แบบไหนที่เราจะปฏิเสธ

iptables ทำงานยังไง?

iptables ทำงานโดยการตรวจสอบ Packet ข้อมูลที่วิ่งผ่าน Network Interface ของเรา โดยจะเปรียบเทียบ Packet นั้นๆ กับกฎที่เราได้กำหนดไว้ ถ้า Packet ตรงตามเงื่อนไขของกฎใดกฎหนึ่ง iptables ก็จะทำตาม Action ที่กำหนดไว้ในกฎนั้นๆ

Action ที่พบบ่อยๆ ก็คือ ACCEPT (อนุญาตให้ Packet ผ่าน), DROP (ทิ้ง Packet ไปเลย), และ REJECT (ปฏิเสธ Packet พร้อมส่งข้อความแจ้งเตือนกลับไปยังต้นทาง)

โครงสร้าง iptables: Chain และ Table

iptables มีโครงสร้างที่ค่อนข้างซับซ้อน แต่หลักๆ แล้วจะประกอบไปด้วย 2 ส่วนสำคัญคือ Chain และ Table

Table หลักๆ ที่ควรรู้จัก

Table ที่เราจะใช้บ่อยที่สุดก็คือ filter Table ซึ่งมี Chains หลักๆ ดังนี้:

แต่ละ Chain จะมีกฎ (rules) เรียงกันเป็นลำดับ iptables จะตรวจสอบ Packet กับกฎแต่ละข้อตามลำดับ ถ้า Packet ตรงกับเงื่อนไขของกฎใด iptables ก็จะทำตาม Action ที่กำหนดไว้ในกฎนั้นๆ และหยุดการตรวจสอบกฎข้ออื่นๆ ทันที (ยกเว้นเราจะสั่งให้มันตรวจสอบต่อไป)

คำสั่ง iptables เบื้องต้น: เพิ่ม, ลบ, แก้ไข กฎ

การใช้งาน iptables จะต้องใช้ผ่าน Command Line Interface (CLI) หรือ Terminal ซึ่งต้องใช้สิทธิ์ Root ในการ execute คำสั่งต่างๆ

คำสั่งพื้นฐานที่ควรรู้จักมีดังนี้:

ตัวอย่างการใช้งาน: อนุญาต HTTP Traffic

สมมติว่าเราต้องการอนุญาตให้เครื่อง Server ของเรารับ HTTP Traffic (Port 80) ได้ เราสามารถทำได้ดังนี้:


iptables -A INPUT -p tcp --dport 80 -j ACCEPT

คำสั่งนี้หมายความว่า "เพิ่มกฎเข้าไปใน INPUT Chain โดยอนุญาต (ACCEPT) Packet ที่ใช้ Protocol TCP และมี Destination Port เป็น 80"

น้องๆ สามารถลองนำไปปรับใช้กับ Port อื่นๆ ได้ตามต้องการ เช่น Port 22 (SSH), Port 443 (HTTPS), หรือ Port อื่นๆ ที่จำเป็นสำหรับ Service ที่เราต้องการเปิดใช้งาน

ตัวอย่างการใช้งาน: ป้องกัน Brute-Force Attack

สมัยก่อน Brute-Force Attack นี่เจอบ่อยมาก พวก Hacker จะพยายามสุ่มรหัสผ่านเพื่อเข้าถึงเครื่อง Server ของเรา iptables สามารถช่วยป้องกันได้ โดยการจำกัดจำนวนครั้งที่อนุญาตให้มีการ Login ผิดพลาด


iptables -A INPUT -p tcp --dport 22 -m recent --set --name SSH --rsource
iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 4 --name SSH --rsource -j DROP

Code นี้จะทำการบันทึก IP Address ที่พยายามเชื่อมต่อ SSH (Port 22) เข้ามา ถ้า IP Address ใดพยายาม Login ผิดพลาดเกิน 4 ครั้งภายใน 60 วินาที ก็จะถูก Block ทันที

น้องๆ สามารถปรับค่า `--seconds` และ `--hitcount` ให้เหมาะสมกับสภาพแวดล้อมของตัวเองได้เลย

อย่าลืมแวะไปอ่านบทความอื่นๆ ที่ SiamCafe Blog นะครับ มีเรื่องราว IT สนุกๆ อีกเยอะเลย!

ตารางเปรียบเทียบ: iptables vs. UFW

iptables มีความยืดหยุ่นสูง แต่ก็ค่อนข้างซับซ้อนสำหรับมือใหม่ ดังนั้นจึงมีเครื่องมือ Firewall ที่ใช้งานง่ายกว่าอย่าง UFW (Uncomplicated Firewall) ออกมาให้ใช้งานกัน

คุณสมบัติ iptables UFW
ความซับซ้อน สูง ต่ำ
ความยืดหยุ่น สูงมาก ปานกลาง
ใช้งานง่าย ยาก ง่าย
เหมาะสำหรับ ผู้ที่มีความรู้ Linux และ Network เป็นอย่างดี ผู้เริ่มต้น และผู้ที่ต้องการ Firewall ที่ใช้งานง่าย

ถ้าเป็นมือใหม่ ผมแนะนำให้ลองใช้ UFW ดูก่อนครับ เพราะใช้งานง่ายกว่าเยอะ แต่ถ้าต้องการความยืดหยุ่นที่สูงกว่า iptables ก็ยังเป็นตัวเลือกที่ดีอยู่

สำหรับคนที่สนใจเรื่อง Security เพิ่มเติม ลองเข้าไปดูที่ SiamCafe Blog นะครับ มี Tips & Tricks อีกเพียบ!

🎬 วิดีโอแนะนำ

ดูวิดีโอเพิ่มเติมเกี่ยวกับFirewall iptables เบื้องต้น:

FAQ: คำถามที่พบบ่อยเกี่ยวกับ iptables

iptables กับ firewalld ต่างกันยังไง?

ทั้ง iptables และ firewalld เป็น Firewall บน Linux แต่ firewalld จะมี Dynamic Zone Management ที่ทำให้การจัดการ Firewall ง่ายขึ้นกว่า iptables ในขณะที่ iptables จะเน้นการ Config ผ่าน Command Line โดยตรง

iptables rules หายไปหลังจาก Reboot ต้องทำยังไง?

โดยปกติ iptables rules จะไม่ถูกบันทึกโดยอัตโนมัติหลังจาก Reboot ดังนั้นเราต้องทำการ Save rules เหล่านั้นลงในไฟล์ แล้ว Load กลับมาตอน Startup วิธีการ Save และ Load rules จะแตกต่างกันไปตาม Distribution ของ Linux ที่เราใช้


# ตัวอย่างบน Debian/Ubuntu
iptables-save > /etc/iptables/rules.v4
# และเพิ่มคำสั่ง iptables-restore < /etc/iptables/rules.v4 ใน /etc/network/interfaces

iptables สามารถ Block ประเทศได้ไหม?

iptables สามารถ Block ประเทศได้ โดยใช้ GeoIP Module ซึ่งจะทำการตรวจสอบ IP Address ต้นทางของ Packet แล้วเปรียบเทียบกับฐานข้อมูล GeoIP เพื่อระบุประเทศที่ Packet นั้นมาจากนั้นจึงทำการ Block Packet ที่มาจากประเทศที่เราต้องการ

Best Practices iptables ร้านเน็ตยุค 90s

สมัยผมทำร้านเน็ต SiamCafe เนี่ย เรื่อง Firewall สำคัญมากๆ เพราะสมัยนั้น Hacker เยอะแยะ ยิ่งร้านเรามีเกมออนไลน์ดังๆ ยิ่งต้องระวังเป็นพิเศษ ผมเลยสรุป Best Practices ที่ใช้จริงมาให้:

1. Default Deny Policy: ปิดทุกอย่างก่อน

ข้อนี้สำคัญสุดๆ คือ เริ่มต้นด้วยการปิดทุก Traffic ก่อน แล้วค่อยเปิดเฉพาะที่จำเป็นเท่านั้น สมัยก่อน default ที่ router มักจะเป็น Accept All ซึ่งอันตรายมาก


iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

โค้ดด้านบนคือการตั้งค่า default policy ให้ DROP ทุก incoming และ forward traffic ส่วน outgoing traffic อนุญาตทั้งหมด (ACCEPT) เพราะเครื่องลูกต้องออกเน็ตได้

2. Log ทุกอย่างที่ DROP

การ Log ทุก traffic ที่ถูก DROP จะช่วยให้เราวิเคราะห์ปัญหาและหาต้นตอของการโจมตีได้ง่ายขึ้น สมัยก่อนผมใช้ Logrotate ช่วยจัดการ Log file ไม่ให้มันใหญ่เกินไป


iptables -A INPUT -j LOG --log-prefix "iptables INPUT DROP: "
iptables -A FORWARD -j LOG --log-prefix "iptables FORWARD DROP: "

3. จำกัด Rate การเชื่อมต่อ

DDoS Attack เป็นปัญหาใหญ่สมัยนั้น การจำกัด Rate การเชื่อมต่อจาก IP เดียวกันจะช่วยลดผลกระทบได้เยอะ สมัยก่อนผมใช้ Module `limit` ของ iptables


iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP

โค้ดนี้อนุญาตให้ IP address เดียวกันเชื่อมต่อ Port 80 ได้ 25 ครั้งต่อนาที ถ้าเกินกว่านั้นจะถูก DROP

4. อัพเดท Kernel และ iptables เสมอ

ข้อนี้สำคัญมาก Kernel และ iptables เวอร์ชั่นใหม่ๆ มักจะมี Patch แก้ไขช่องโหว่ด้านความปลอดภัยอยู่เสมอ การอัพเดทเป็นประจำจะช่วยลดความเสี่ยงจากการถูกโจมตีได้

iCafeForex

FAQ คำถามที่พบบ่อย เกี่ยวกับ iptables

มีน้องๆ หลายคนถามคำถามเกี่ยวกับ iptables เข้ามาเยอะ ผมเลยรวบรวมคำถามที่พบบ่อยมาตอบให้:

iptables กับ firewalld ต่างกันยังไง?

iptables เป็น Command-line tool ที่ใช้จัดการ Netfilter framework ใน Kernel ส่วน firewalld เป็น Firewall management tool ที่ทำงานบน iptables (หรือ nftables) อีกทีนึง firewalld ใช้งานง่ายกว่า แต่ iptables ยืดหยุ่นกว่า

iptables rule หายไปหลัง Reboot ทำยังไง?

iptables rule จะหายไปหลัง Reboot เพราะมันอยู่ใน RAM วิธีแก้คือต้อง Save rule ไว้ในไฟล์ แล้ว Load rule ตอน Boot ระบบ สมัยก่อนผมใช้ `iptables-save` และ `iptables-restore`

จะ Block เว็บไซต์ที่ไม่เหมาะสมด้วย iptables ได้ไหม?

ทำได้ แต่ไม่ง่าย เพราะ HTTPS เว็บไซต์เข้ารหัส traffic ทำให้ iptables มองไม่เห็น URL ต้องใช้ Proxy server หรือ Deep Packet Inspection (DPI) เข้ามาช่วย

iptables ทำงานยังไง?

iptables ทำงานโดยการสร้าง Table (filter, nat, mangle) แต่ละ Table มี Chain (INPUT, OUTPUT, FORWARD) แต่ละ Chain มี Rule เมื่อ Packet วิ่งผ่าน Rule ไหนตรงตามเงื่อนไข ก็จะทำ Action ตามที่กำหนด (ACCEPT, DROP, REJECT)

สรุป

iptables เป็นเครื่องมือ Firewall ที่ทรงพลัง แต่ก็ต้องใช้ความเข้าใจพอสมควรในการใช้งาน หวังว่าบทความนี้จะเป็นประโยชน์กับน้องๆ ที่กำลังศึกษาเรื่อง Firewall นะครับ อย่าลืม Best Practices ที่ผมแนะนำไป รับรองร้านเน็ตปลอดภัยขึ้นเยอะ

ถ้าอยากอ่านเรื่องราวเกี่ยวกับร้านเน็ตสมัยก่อน หรือเรื่อง IT อื่นๆ เพิ่มเติม เข้าไปอ่านได้ที่ SiamCafe Blog นะครับ