ตั้งค่า UFW Firewall บน VPS Ubuntu ป้องกันการโจมตี

สารบัญ

  1. UFW คืออะไร และทำไมต้องใช้ Firewall
  2. ข้อกำหนดเบื้องต้น
  3. ตรวจสอบและเปิดใช้งาน UFW
  4. ตั้งค่า Default Policy
  5. เปิด Port ที่จำเป็น
  6. จัดการ Rules ของ UFW
  7. บล็อก IP ที่น่าสงสัย
  8. ตั้งค่า Rate Limiting
  9. การ Log และ Monitor
  10. คำสั่ง UFW ที่ใช้บ่อย
  11. คำถามที่พบบ่อย (FAQ)
  12. สรุป

UFW คืออะไร และทำไมต้องใช้ Firewall บน VPS

UFW (Uncomplicated Firewall) คือ frontend ของ iptables ที่มาพร้อมกับ Ubuntu ช่วยให้ผู้ดูแลระบบสามารถตั้งค่า firewall ได้ง่ายขึ้น โดยไม่ต้องเขียน syntax iptables ที่ซับซ้อน

VPS ที่เชื่อมต่ออินเทอร์เน็ตโดยตรงนั้นเสี่ยงต่อการถูกโจมตีในรูปแบบต่างๆ ทุกนาที ไม่ว่าจะเป็น SSH brute force, port scanning, หรือการพยายามเข้าถึง service ที่ไม่ควรเปิดให้สาธารณะ Firewall ทำหน้าที่เป็น "ประตูกรอง" ตรวจสอบทุก packet ที่เข้า-ออก VPS ของคุณ

💡 ข้อเท็จจริง: VPS ที่ไม่มี Firewall มักถูก scan port ภายในไม่กี่นาทีหลังจาก deploy หากมี service ที่ vulnerable เปิดอยู่ อาจถูกโจมตีได้ทันที

UFW เหมาะสำหรับ:

ข้อกำหนดเบื้องต้นก่อนตั้งค่า UFW

ก่อนเริ่ม ตรวจสอบให้แน่ใจว่าคุณมีสิ่งต่อไปนี้ครบ:

⚠️ สำคัญมาก: ก่อนเปิด UFW ต้อง allow port SSH ก่อนเสมอ มิเช่นนั้นหลังเปิด UFW คุณจะเชื่อมต่อ SSH ใหม่ไม่ได้ และต้องใช้ Console ของ provider เข้าแก้ไข

ตรวจสอบสถานะและเปิดใช้งาน UFW

ตรวจสอบว่า UFW ถูกติดตั้งและสถานะปัจจุบัน:

sudo apt update
sudo apt install ufw -y

# ตรวจสอบสถานะ
sudo ufw status verbose

ถ้า UFW ยังไม่ได้ enable จะแสดง Status: inactive ให้ตั้งค่าพื้นฐานก่อนเปิดใช้งาน

ℹ️ Ubuntu 20.04+ มี UFW ติดตั้งมาให้แล้วโดยค่าเริ่มต้น ไม่ต้องติดตั้งเพิ่ม

ตั้งค่า Default Policy ของ UFW

Default policy กำหนดพฤติกรรมเริ่มต้นของ firewall ก่อนที่จะมี rule เฉพาะ แนวทางที่ดีที่สุดคือ "deny all incoming, allow all outgoing":

# บล็อก incoming ทั้งหมดโดยค่าเริ่มต้น
sudo ufw default deny incoming

# อนุญาต outgoing ทั้งหมด (VPS ส่งออกได้อิสระ)
sudo ufw default allow outgoing

นี่คือหลักการ "whitelist" ซึ่งมีความปลอดภัยสูงกว่าการ allow ทุกอย่างแล้วค่อยบล็อกทีหลัง

เปิด Port ที่จำเป็น (SSH, HTTP, HTTPS)

หลังตั้ง default deny แล้ว ต้องเปิด port ที่จำเป็นก่อน เปิด UFW เสมอ:

# SSH (สำคัญมาก — ต้องทำก่อน ufw enable)
sudo ufw allow ssh
# หรือระบุ port ตรงๆ
sudo ufw allow 22/tcp

# Web server
sudo ufw allow http
sudo ufw allow https
# เท่ากับ
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# ถ้า SSH ใช้ port อื่น เช่น 2222
sudo ufw allow 2222/tcp

# เปิดใช้งาน UFW (หลัง allow SSH แล้วเท่านั้น)
sudo ufw enable

หลังรัน ufw enable ระบบจะถามยืนยัน ตอบ y เพื่อเปิดใช้งาน

ตรวจสอบและจัดการ Rules ของ UFW

ดู rules ที่มีอยู่ทั้งหมดพร้อมหมายเลข (มีประโยชน์เมื่อต้องการลบ rule เฉพาะ):

# ดู rules แบบง่าย
sudo ufw status

# ดูแบบละเอียดพร้อม numbered
sudo ufw status numbered

# ลบ rule ตามหมายเลข (เช่น ลบ rule #3)
sudo ufw delete 3

# ลบ rule ตามชื่อ
sudo ufw delete allow 8080/tcp

ℹ️ การลบ rule ด้วย ufw delete allow จะลบทั้ง IPv4 และ IPv6 พร้อมกัน

บล็อก IP ที่น่าสงสัยด้วย UFW

ถ้าพบ IP ที่พยายาม scan หรือโจมตีซ้ำๆ สามารถบล็อกได้ทันที:

# บล็อก IP เดี่ยว
sudo ufw deny from 192.168.1.100

# บล็อกทั้ง subnet
sudo ufw deny from 10.20.0.0/16

# บล็อก IP ไม่ให้เข้า port เฉพาะ
sudo ufw deny from 203.0.113.1 to any port 22

# ดู IP ที่ถูกบล็อก
sudo ufw status | grep DENY

Rules แบบ deny จะถูก evaluate ก่อน rules แบบ allow ที่เพิ่มทีหลัง ดังนั้นเมื่อบล็อก IP ไว้แล้ว มีผลทันที

ตั้งค่า Rate Limiting ด้วย UFW

UFW มี built-in rate limiting ที่ช่วยป้องกัน brute force โดยไม่ต้องติดตั้ง Fail2Ban เพิ่ม:

# จำกัด connection rate บน SSH
sudo ufw limit ssh
# หรือ
sudo ufw limit 22/tcp

การ limit จะบล็อก IP ที่พยายาม connect เกิน 6 ครั้งใน 30 วินาที เมื่อโดนบล็อกแล้วจะ unblock อัตโนมัติหลัง 60 วินาที

💡 สำหรับ server ที่เปิดให้ login เยอะๆ แนะนำใช้ ufw limit ssh ร่วมกับ Fail2Ban เพื่อป้องกันหลายชั้น

การ Log และ Monitor กิจกรรม UFW

เปิด logging เพื่อตรวจสอบว่า firewall บล็อกอะไรบ้าง:

# เปิด log (3 ระดับ: low, medium, high)
sudo ufw logging low

# ดู log แบบ realtime
sudo tail -f /var/log/ufw.log

# ดู log ผ่าน journalctl
sudo journalctl -f | grep UFW

# นับ blocked connection ใน 24 ชั่วโมงที่ผ่านมา
sudo grep -c "UFW BLOCK" /var/log/ufw.log 2>/dev/null || \
  sudo journalctl --since "24 hours ago" | grep -c "UFW BLOCK"

Log ระดับ low เหมาะสำหรับ production เพราะบันทึก blocked packet โดยไม่สร้าง I/O มากเกิน

คำสั่ง UFW ที่ใช้บ่อย (ตารางอ้างอิง)

คำสั่ง ผลลัพธ์
sudo ufw status verboseดูสถานะและ rules ทั้งหมด
sudo ufw enableเปิดใช้งาน UFW
sudo ufw disableปิด UFW (ไม่ลบ rules)
sudo ufw resetรีเซ็ตกลับค่าเริ่มต้น (ลบ rules ทั้งหมด)
sudo ufw allow 80/tcpเปิด port 80 TCP
sudo ufw deny 3306บล็อก port 3306 (MySQL)
sudo ufw limit sshRate limit บน SSH
sudo ufw delete allow 80/tcpลบ rule เปิด port 80
sudo ufw allow from 203.0.113.0/24อนุญาต IP ใน subnet
sudo ufw deny from 198.51.100.0/24บล็อก IP ใน subnet
sudo ufw logging mediumตั้งระดับ log เป็น medium
sudo ufw app listแสดง app profiles ที่มี

คำถามที่พบบ่อย (FAQ)

UFW คืออะไร และต่างจาก iptables อย่างไร?
UFW (Uncomplicated Firewall) เป็น frontend ของ iptables ที่ทำให้ syntax ง่ายขึ้น iptables มีความสามารถครบแต่ syntax ซับซ้อน UFW แปลงคำสั่งง่ายๆ เป็น iptables rules อัตโนมัติ เหมาะสำหรับ admin ที่ต้องการความง่ายใน daily use
หลังเปิด UFW แล้ว SSH จะหลุดไหม?
ถ้าคุณรัน ufw allow ssh ก่อน ufw enable เซสชันปัจจุบันจะไม่หลุด แต่ถ้าไม่ได้ allow SSH ก่อน การ connect SSH ใหม่จะถูกบล็อก (session เดิมยังอยู่ชั่วคราว) ต้องใช้ VNC Console ของ provider เข้ามาแก้ไข
UFW rate limiting ทำงานอย่างไร?
ufw limit จะบล็อก IP ที่พยายาม connect เกิน 6 ครั้งใน 30 วินาที และ unblock อัตโนมัติหลัง 60 วินาที เป็น quick win ป้องกัน brute force โดยไม่ต้องติดตั้ง tool เพิ่ม
UFW รองรับ IPv6 ไหม?
รองรับ แต่ต้องตั้งค่า IPV6=yes ใน /etc/default/ufw ก่อน rules ที่เพิ่มหลังจากนั้นจะมีผลกับทั้ง IPv4 และ IPv6 พร้อมกัน
จะดูว่า UFW บล็อก IP อะไรอยู่ได้อย่างไร?
รัน sudo ufw status | grep DENY เพื่อดู rules แบบ deny ที่ตั้งไว้ และ sudo tail -f /var/log/ufw.log เพื่อดู realtime log ของ packet ที่ถูกบล็อก
UFW กับ Fail2Ban ใช้ร่วมกันได้ไหม?
ได้ดีมาก Fail2Ban ทำงานโดยตรวจจับ login failure จาก log แล้วเพิ่ม UFW/iptables rules บล็อก IP อัตโนมัติ ใช้ร่วมกันสร้างการป้องกันหลายชั้น

สรุป

UFW เป็น firewall ที่ตั้งค่าง่าย มีประสิทธิภาพสูง และมาพร้อมกับ Ubuntu โดยไม่ต้องติดตั้งเพิ่ม ด้วยคำสั่งไม่กี่บรรทัด คุณสามารถ:

สำหรับ VPS ที่ต้องการความปลอดภัยระดับสูงขึ้น แนะนำใช้ UFW ร่วมกับ Fail2Ban และ Redis สำหรับ session management ที่ปลอดภัย

พร้อม Deploy VPS Ubuntu ของคุณแล้วหรือยัง?

AsiaGB มี VPS ไทย สิงคโปร์ และ OVHcloud Oregon (US-WEST-OR) SSD Uptime 99% พร้อม Support ภาษาไทย

ดูแพ็กเกจ VPS ทั้งหมด