วิธีการตั้งค่าไฟร์วอลล์บนเซิร์ฟเวอร์ Ubuntu
ที่ตีพิมพ์: 15 กุมภาพันธ์ 2025 เวลา 21 นาฬิกา 35 นาที 22 วินาที UTC
ปรับปรุงล่าสุด : 12 มกราคม 2026 เวลา 8 นาฬิกา 37 นาที 38 วินาที UTC
บทความนี้อธิบายและยกตัวอย่างวิธีการตั้งค่าไฟร์วอลล์บน GNU/Linux โดยใช้ ufw ซึ่งย่อมาจาก Uncomplicated FireWall และชื่อนี้ก็เหมาะสมอย่างยิ่ง เพราะมันเป็นวิธีที่ง่ายมากที่จะช่วยให้คุณมั่นใจได้ว่าคุณไม่ได้เปิดพอร์ตมากเกินความจำเป็น
How to Set Up a Firewall on Ubuntu Server
ข้อมูลในโพสต์นี้อ้างอิงจาก Ubuntu Server 14.04 x64 อาจใช้ได้หรือไม่ก็ได้กับเวอร์ชันอื่นๆ (อัปเดต: ผมยืนยันได้ว่าข้อมูลในโพสต์นี้ยังคงใช้ได้และทำงานได้ตามปกติใน Ubuntu Server 24.04 อย่างไรก็ตาม ในช่วง 10 ปีที่ผ่านมา ufw ได้พัฒนาให้ "ฉลาดขึ้น" โดยมีโปรไฟล์สำหรับแอปพลิเคชันเซิร์ฟเวอร์ทั่วไป (ตัวอย่างเช่น คุณสามารถเปิดใช้งาน "Nginx แบบเต็ม" แทนที่จะเปิดใช้งานพอร์ต 80 และ 443 แยกกัน) และการปิด/เปิดใช้งานไฟร์วอลล์ทั้งหมดเพื่อให้กฎใหม่มีผลบังคับใช้ก็ไม่จำเป็นอีกต่อไป)
เมื่อผมเริ่มใช้งานเซิร์ฟเวอร์ GNU/Linux (Ubuntu) ครั้งแรก การตั้งค่าไฟร์วอลล์นั้นต้องสร้างและดูแลไฟล์การกำหนดค่า iptables ด้วยตนเอง ซึ่งอาจมีความซับซ้อน แต่เมื่อไม่นานมานี้ ผมได้ค้นพบ ufw ซึ่งย่อมาจาก Uncomplicated Firewall – และมันก็เป็นเช่นนั้นจริงๆ :-)
Ubuntu Server 14.04 ที่ผมติดตั้งนั้นมี ufw ติดตั้งอยู่แล้ว แต่ถ้าเครื่องของคุณไม่มี ก็สามารถติดตั้งได้จากคลังซอฟต์แวร์:
UFW จริงๆ แล้วเป็นเพียงเครื่องมือที่ช่วยลดความซับซ้อนของการตั้งค่า iptables เท่านั้น เบื้องหลังแล้ว การกรองข้อมูลยังคงดำเนินการโดย iptables และไฟร์วอลล์ของเคอร์เนล Linux ดังนั้น ufw จึงไม่ได้มีความปลอดภัยน้อยกว่าหรือมากกว่าระบบเหล่านั้น อย่างไรก็ตาม เนื่องจาก ufw ช่วยให้การตั้งค่าไฟร์วอลล์ทำได้ง่ายขึ้นมาก จึงอาจลดความเสี่ยงจากความผิดพลาดของมนุษย์ และอาจมีความปลอดภัยมากกว่าสำหรับผู้ดูแลระบบที่ไม่มีประสบการณ์
หากเซิร์ฟเวอร์ของคุณตั้งค่าให้ใช้ทั้ง IPv6 และ IPv4 โปรดตรวจสอบให้แน่ใจว่าได้เปิดใช้งานสำหรับ UFW แล้ว แก้ไขไฟล์ /etc/default/ufw และมองหาบรรทัดที่เขียนว่า IPV6=yes ในการติดตั้งของฉัน บรรทัดนี้มีอยู่แล้ว แต่ถ้าไม่มี หรือถ้าเขียนว่า no คุณควรแก้ไข
จากนั้นก็ใช้ Command Prompt เพื่อเปิดใช้งานพอร์ตที่คุณต้องการ หากคุณเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน SSH โปรดตรวจสอบให้แน่ใจว่าได้อนุญาตการเชื่อมต่อดังกล่าวด้วย มิเช่นนั้นอาจทำให้การเชื่อมต่อของคุณมีปัญหาและอาจทำให้คุณไม่สามารถเข้าถึงเซิร์ฟเวอร์ได้เมื่อคุณเปิดใช้งาน – ซึ่งขึ้นอยู่กับว่าคุณสามารถเข้าถึงเซิร์ฟเวอร์ได้โดยตรงหรือไม่ นี่อาจสร้างความไม่สะดวกเล็กน้อย ;-)
ตัวอย่างเช่น หากคุณใช้ ssh บนพอร์ตมาตรฐาน 22 และกำลังกำหนดค่าเว็บเซิร์ฟเวอร์ที่รองรับทั้งการเชื่อมต่อแบบไม่เข้ารหัส (HTTP บนพอร์ต 80) และแบบเข้ารหัส (HTTPS บนพอร์ต 443) คุณจะต้องใช้คำสั่งต่อไปนี้ในการกำหนดค่า ufw:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
หากต้องการเพิ่มกฎเกณฑ์เพิ่มเติม ก็สามารถเพิ่มได้ตามตัวอย่างข้างต้น
หากคุณมีที่อยู่ IP แบบคงที่และต้องการเชื่อมต่อผ่าน SSH จากที่เดียวเท่านั้น คุณสามารถจำกัดการเชื่อมต่อ SSH ไปยังที่อยู่ต้นทางเดียวได้ดังนี้:
แน่นอน คุณสามารถป้อนที่อยู่ IP ของคุณเองได้
เมื่อเสร็จแล้ว ให้เปิดใช้งาน ufw โดยป้อนคำสั่ง:
เสร็จเรียบร้อยแล้ว! ไฟร์วอลล์ทำงานอยู่และจะเริ่มต้นทำงานโดยอัตโนมัติเมื่อคุณรีบูตเซิร์ฟเวอร์ :-)
หากคุณทำการเปลี่ยนแปลงการตั้งค่า ufw คุณอาจต้องปิดใช้งานและเปิดใช้งานอีกครั้งเพื่อให้การเปลี่ยนแปลงมีผล ดังนี้:
sudo ufw enable
หากต้องการดูการตั้งค่าปัจจุบัน เพียงป้อน:
หากไม่ได้เปิดใช้งาน ufw ระบบจะแสดงข้อความ "ไม่ทำงาน" แต่หากเปิดใช้งานแล้ว ระบบจะแสดงรายการกฎที่กำหนดไว้ในปัจจุบัน
