Miklix

วิธีการตั้งค่าไฟร์วอลล์บนเซิร์ฟเวอร์ 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 ติดตั้งอยู่แล้ว แต่ถ้ายังไม่มี ให้ติดตั้งจากที่เก็บข้อมูล:

sudo apt-get install 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 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

หากคุณต้องการกฎเพิ่มเติม เพียงเพิ่มดังข้างต้น

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

sudo ufw allow from 192.168.0.1 to any port 22

แน่นอน ให้ใส่ที่อยู่ IP ของคุณเองแทน

เมื่อเสร็จแล้วให้เปิดใช้งาน ufw โดยป้อน:

sudo ufw enable

และเสร็จเรียบร้อยแล้ว! ไฟร์วอลล์กำลังทำงานและจะเริ่มทำงานโดยอัตโนมัติเมื่อคุณรีบูตเซิร์ฟเวอร์ :-)

หากคุณทำการเปลี่ยนแปลงการกำหนดค่า ufw คุณอาจต้องปิดใช้งานและเปิดใช้งานอีกครั้งเพื่อให้มีผลใช้งาน ดังนี้:

sudo ufw disable
sudo ufw enable

หากต้องการดูการกำหนดค่าปัจจุบัน เพียงป้อน:

sudo ufw status

หากไม่ได้เปิดใช้งาน ufw ระบบจะแสดงข้อความ “ไม่ทำงาน” เท่านั้น หากไม่ได้เปิดใช้งาน ระบบจะแสดงรายการกฎเกณฑ์ที่กำหนดไว้ในปัจจุบัน

แชร์บนบลูสกายแชร์บนเฟสบุ๊คแชร์บน LinkedInแชร์บน Tumblrแชร์บน Xแชร์บน LinkedInปักหมุดบน Pinterest

มิคเคล บัง คริสเตนเซ่น

เกี่ยวกับผู้เขียน

มิคเคล บัง คริสเตนเซ่น
ไมเคิล คือผู้สร้างและเจ้าของเว็บไซต์ miklix.com เขามีประสบการณ์เป็นโปรแกรมเมอร์/นักพัฒนาซอฟต์แวร์คอมพิวเตอร์มืออาชีพมากว่า 20 ปี และปัจจุบันทำงานเต็มเวลาให้กับบริษัทไอทีขนาดใหญ่แห่งหนึ่งในยุโรป เมื่อไม่ได้เขียนบล็อก เขาจะใช้เวลาว่างไปกับความสนใจ งานอดิเรก และกิจกรรมต่างๆ มากมาย ซึ่งในระดับหนึ่งอาจสะท้อนให้เห็นได้จากหัวข้อต่างๆ มากมายที่กล่าวถึงในเว็บไซต์นี้