วิธีการตั้งค่าไฟร์วอลล์บนเซิร์ฟเวอร์ Ubuntu
ที่ตีพิมพ์: 15 กุมภาพันธ์ 2025 เวลา 21 นาฬิกา 35 นาที 22 วินาที 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 ในการติดตั้งของฉัน บรรทัดดังกล่าวมีอยู่แล้ว แต่ถ้าไม่มีหรือระบุว่าไม่ คุณควรแก้ไข
จากนั้นใช้พรอมต์คำสั่งเพื่อเปิดใช้งานพอร์ตที่คุณต้องการเปิด หากคุณเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน 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 ระบบจะแสดงข้อความ “ไม่ทำงาน” เท่านั้น หากไม่ได้เปิดใช้งาน ระบบจะแสดงรายการกฎเกณฑ์ที่กำหนดไว้ในปัจจุบัน