บทความนี้อาจมีลิงก์ affiliate — ทีมเราเลือกบริการที่ผ่านการทดสอบจริงเท่านั้น นโยบายรีวิว

คู่มือ VPS Security

UFW Firewall คืออะไร: ตั้งค่า Firewall บน Ubuntu VPS ฉบับสมบูรณ์ 2026

โดย ทีมรีวิว CloudPicked · อัปเดตล่าสุด ตุลาคม 2026 · อ่าน 12 นาที

UFW Firewall บน Ubuntu VPS Server Security

เมื่อคุณเช่า VPS ใหม่มาจาก Bangmod Cloud, DigitalOcean หรือ provider อื่นๆ — เซิร์ฟเวอร์ของคุณเปิดรับ traffic ทุก port โดย default และมีบอต malicious scanner กำลัง probe port ของคุณตลอดเวลา ภายใน 24 ชั่วโมงแรก

UFW (Uncomplicated Firewall) คือเครื่องมือ firewall มาตรฐานบน Ubuntu ที่พัฒนาเพื่อให้ตั้งค่า iptables ได้ง่ายขึ้น บทความนี้จะพาคุณตั้งค่า UFW ตั้งแต่ศูนย์ถึง production-ready ในเวลาไม่กี่นาที

คำเตือนก่อนเริ่ม: ต้อง sudo ufw allow ssh ก่อน sudo ufw enable เสมอ มิฉะนั้นคุณจะถูก lock out จากเซิร์ฟเวอร์ทันที

สารบัญ

  1. UFW คืออะไรและทำงานอย่างไร
  2. ติดตั้งและเปิดใช้งาน UFW
  3. คำสั่งพื้นฐาน UFW ที่ต้องรู้
  4. กฎ Firewall สำหรับ Web Server
  5. ป้องกัน SSH ด้วย UFW
  6. UFW Rate Limiting
  7. UFW Application Profiles
  8. การตั้งค่า Logging
  9. กฎขั้นสูงและการจัดการ Rule
  10. Best Practices สำหรับ Production
  11. FAQ — คำถามที่พบบ่อย

UFW คืออะไรและทำงานอย่างไร

UFW ย่อมาจาก Uncomplicated Firewall พัฒนาโดย Ubuntu team เพื่อแก้ปัญหา syntax ของ iptables ที่ซับซ้อน เป้าหมายคือให้ผู้ใช้ทั่วไปสามารถตั้ง firewall ได้โดยไม่ต้องจำ chain/table/rule ของ iptables

ตาม Ubuntu Wiki อย่างเป็นทางการ: UFW เป็น "user-friendly way to create an IPv4 or IPv6 host-based firewall" และ disabled by default บน Ubuntu ทุก version

UFW กับ iptables

UFW ไม่ได้แทนที่ iptables — มันคือ frontend ที่เขียน rule ให้ iptables ทำงานแทนเรา เมื่อคุณรัน sudo ufw allow 80 UFW จะแปลงเป็น iptables rule ที่ถูกต้องให้เองโดยอัตโนมัติ

คุณสมบัติUFWiptables โดยตรง
ความยากง่าย — syntax อ่านออกยาก — ต้องรู้ chain/table
IPv6รองรับในตัวต้องตั้งแยก (ip6tables)
Application Profilesมี (nginx, apache, openssh)ไม่มี ต้องกำหนด port เอง
Persistenceauto ทุก rebootต้อง save/restore manual
เหมาะกับVPS ทั่วไป, Dev/ProdAdvanced network admin

ติดตั้งและเปิดใช้งาน UFW

บน Ubuntu 20.04 / 22.04 / 24.04 — UFW มาพร้อมในระบบแล้ว แต่ถ้าต้องการติดตั้งใหม่:

sudo apt update
sudo apt install ufw -y

ก่อน enable UFW บังคับต้อง allow SSH ก่อน:

# วิธีที่ 1: allow SSH โดยใช้ service name (แนะนำ)
sudo ufw allow ssh

# วิธีที่ 2: allow port 22 โดยตรง
sudo ufw allow 22/tcp

# วิธีที่ 3: ถ้าคุณเปลี่ยน SSH port แล้ว (เช่น 2222)
sudo ufw allow 2222/tcp

จากนั้นจึง enable UFW:

sudo ufw enable
# กด y เพื่อยืนยัน

ตรวจสอบสถานะ:

sudo ufw status verbose

ผลลัพธ์ที่ถูกต้อง:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
Default Policy: UFW ตั้ง policy เริ่มต้นเป็น deny all incoming, allow all outgoing ซึ่งเป็นแนวทางที่ปลอดภัยที่สุด — คุณต้อง allow เฉพาะ port ที่ต้องการเท่านั้น

คำสั่งพื้นฐาน UFW ที่ต้องรู้

ดูสถานะ

# ดูสถานะทั่วไป
sudo ufw status

# ดูละเอียดพร้อม default policy
sudo ufw status verbose

# ดูพร้อมหมายเลข rule (ใช้สำหรับลบ)
sudo ufw status numbered

Allow และ Deny

# Allow port
sudo ufw allow <port>
sudo ufw allow <port>/tcp
sudo ufw allow <port>/udp

# Allow port range
sudo ufw allow 8000:8080/tcp

# Deny port
sudo ufw deny <port>
sudo ufw deny <port>/tcp

ลบ Rule

# วิธีที่ 1: ลบโดยระบุ rule เดิม
sudo ufw delete allow 80/tcp

# วิธีที่ 2: ลบโดยหมายเลข (จาก ufw status numbered)
sudo ufw delete 3

Reset และ Disable

# ปิด UFW ชั่วคราว
sudo ufw disable

# Reset ลบ rule ทั้งหมดกลับ default
sudo ufw reset
ระวัง! sudo ufw reset จะลบ rule ทั้งหมดรวมถึง SSH rule — หากรันบน remote server โดยไม่ระวังจะถูก lock out

กฎ Firewall สำหรับ Web Server

สำหรับ VPS ที่ทำหน้าที่เป็น web server รัน Nginx หรือ Apache — ต้องเปิด port เหล่านี้:

# HTTP
sudo ufw allow 80/tcp

# HTTPS
sudo ufw allow 443/tcp

# หรือใช้ Application Profile (ถ้ามี Nginx/Apache ติดตั้งแล้ว)
sudo ufw allow 'Nginx Full'
sudo ufw allow 'Apache Full'

กฎสำหรับ Database Server

# MySQL/MariaDB — เปิดเฉพาะ IP ที่เชื่อถือได้
sudo ufw allow from 192.168.1.100 to any port 3306

# PostgreSQL — เปิดเฉพาะ subnet
sudo ufw allow from 10.0.0.0/8 to any port 5432

# Redis — ห้ามเปิดสู่ public เด็ดขาด
sudo ufw deny 6379
ห้ามเปิด MySQL/Redis/MongoDB Port สู่ Internet! Database port ควรเปิดเฉพาะ localhost หรือ IP ของ application server เท่านั้น — การเปิด port 3306/6379/27017 สู่ public คือความเสี่ยงร้ายแรง

ตัวอย่าง Ruleset สำหรับ LAMP/LEMP Stack

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

ป้องกัน SSH ด้วย UFW

SSH port 22 คือเป้าหมายหลักของ brute force attack — มีบอตสแกน port 22 ตลอด 24 ชั่วโมง มีหลายวิธีป้องกันด้วย UFW:

1. Allow SSH เฉพาะ IP ที่เชื่อถือได้

# อนุญาตเฉพาะ IP ของคุณ
sudo ufw allow from 203.0.113.5 to any port 22 proto tcp

# อนุญาต subnet ทั้งออฟฟิศ
sudo ufw allow from 203.0.113.0/24 to any port 22 proto tcp

2. เปลี่ยน SSH Port

วิธีที่นิยมคือเปลี่ยน SSH จาก port 22 เป็น port อื่น (เช่น 2222) แล้ว allow port ใหม่เท่านั้น:

# ใน /etc/ssh/sshd_config — เปลี่ยน Port 22 → Port 2222
# จากนั้น:
sudo ufw allow 2222/tcp
sudo ufw deny 22/tcp   # หลังจาก reconnect ผ่าน port ใหม่แล้วเท่านั้น
sudo systemctl restart sshd

UFW Rate Limiting

UFW มีฟีเจอร์ rate limiting ในตัว — block IP ที่พยายาม connect เกิน 6 ครั้งใน 30 วินาที เหมาะมากสำหรับป้องกัน brute force SSH:

sudo ufw limit ssh
# หรือระบุ port
sudo ufw limit 22/tcp

เมื่อ limit active — UFW จะ drop connection จาก IP ที่ attempt เกินกำหนด แต่ยังคง allow connection ปกติจาก IP อื่นๆ

แนะนำ: ใช้ ufw limit ssh บน Production ทุกเซิร์ฟเวอร์

ฟีเจอร์นี้ช่วยลด SSH brute force ได้อย่างมีประสิทธิภาพโดยไม่ต้องติดตั้ง Fail2ban (แม้ว่า Fail2ban จะมีความสามารถมากกว่า) — เหมาะสำหรับ VPS เล็กๆ ที่ต้องการ simplicity

UFW Application Profiles

Application บางตัวที่ติดตั้งแล้วจะ register profile กับ UFW โดยอัตโนมัติ — ทำให้ allow ง่ายกว่าการระบุ port

# ดู profile ที่มี
sudo ufw app list

# ตัวอย่าง output:
# Available applications:
#   Apache
#   Apache Full
#   Apache Secure
#   Nginx Full
#   Nginx HTTP
#   Nginx HTTPS
#   OpenSSH

# Allow โดยใช้ profile name
sudo ufw allow 'Nginx Full'     # เปิดทั้ง HTTP และ HTTPS
sudo ufw allow 'Nginx HTTPS'    # เปิดเฉพาะ HTTPS
sudo ufw allow 'OpenSSH'        # เปิด SSH

# ดูรายละเอียด profile
sudo ufw app info 'Nginx Full'

การตั้งค่า Logging

UFW Logging ช่วยให้ติดตามว่า traffic ไหนถูก block — ตาม Ubuntu docs ระดับ logging มีดังนี้:

Levelความหมาย
offปิด logging ทั้งหมด
lowlog เฉพาะ packet ที่ถูก block (default)
mediumlog blocked + packet ที่ไม่ตรง rule
highlog ทุก packet พร้อม rate limiting
fulllog ทุก packet ไม่มี rate limiting
# เปิด logging (default = low)
sudo ufw logging on

# ตั้ง level
sudo ufw logging medium

# ปิด logging
sudo ufw logging off

Log จะถูกบันทึกที่ /var/log/ufw.log — ดูด้วย:

sudo tail -f /var/log/ufw.log

กฎขั้นสูงและการจัดการ Rule

Allow/Deny โดยใช้ IP Address

# Allow IP เดี่ยว (ทุก port)
sudo ufw allow from 203.0.113.5

# Allow IP เดี่ยว เฉพาะ port
sudo ufw allow from 203.0.113.5 to any port 3306

# Deny IP (block ทุก traffic)
sudo ufw deny from 198.51.100.0/24

Allow โดยใช้ Interface

# Allow traffic เข้าผ่าน eth0 เฉพาะ port 80
sudo ufw allow in on eth0 to any port 80

Insert Rule ที่ Position ต้องการ

# ดู rule ปัจจุบันพร้อมหมายเลข
sudo ufw status numbered

# แทรก rule ที่ position 1 (priority สูงสุด)
sudo ufw insert 1 allow from 203.0.113.5 to any port 22

IPv6 Support

ตรวจสอบว่า IPv6 enabled ใน UFW config:

sudo nano /etc/default/ufw
# ตรวจว่ามีบรรทัด:
# IPV6=yes

Best Practices สำหรับ Production Server

1. Principle of Least Privilege

เปิด port เฉพาะที่จำเป็นเท่านั้น — ทุก port ที่เปิดเพิ่มเติมคือ attack surface เพิ่มขึ้น

2. ใช้ Cloud Firewall ร่วมกับ UFW

Provider เช่น Bangmod Cloud และ DigitalOcean มี cloud-level firewall ที่ block traffic ก่อนถึงเซิร์ฟเวอร์ — ควรใช้ทั้ง cloud firewall + UFW เป็น defense-in-depth

3. Backup Rules ก่อน Reset

# Export rules ไว้
sudo cp /etc/ufw/user.rules /etc/ufw/user.rules.backup
sudo cp /etc/ufw/user6.rules /etc/ufw/user6.rules.backup

4. Test Rules บน Staging ก่อน Production

หากต้องเปลี่ยน rule บน production ควรทำ dry run บน staging server ก่อน และเปิด console หรือ KVM access ไว้ก่อนเสมอ เพื่อ recovery กรณีถูก lock out

5. Ruleset แนะนำสำหรับ WordPress/VPS ทั่วไป

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw limit ssh           # SSH + rate limiting
sudo ufw allow 80/tcp        # HTTP
sudo ufw allow 443/tcp       # HTTPS
sudo ufw deny 3306/tcp       # Block MySQL จาก public
sudo ufw deny 6379/tcp       # Block Redis จาก public
sudo ufw enable

ต้องการ VPS ที่ตั้งค่า Security ง่าย?
AsiaGB.com มี VPS พร้อม DirectAdmin และ support ภาษาไทยตลอด 24 ชั่วโมง

ดู VPS AsiaGB

สรุป: UFW Firewall คือก้าวแรกของ VPS Security

UFW เป็นเครื่องมือที่ตั้งค่าได้ง่าย ใช้เวลาไม่ถึง 5 นาที แต่ช่วยป้องกัน brute force และ unauthorized access ได้อย่างมีประสิทธิภาพ ขั้นตอนที่ต้องทำทันทีหลังเปิด VPS ใหม่:

  1. Allow SSH ก่อน
  2. Enable UFW
  3. Allow port ที่จำเป็น (80, 443)
  4. เปิด ufw limit ssh เพื่อป้องกัน brute force
  5. ตรวจสอบด้วย sudo ufw status verbose

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

UFW คืออะไร?

UFW (Uncomplicated Firewall) คือเครื่องมือจัดการ firewall มาตรฐานบน Ubuntu พัฒนาเพื่อให้ใช้งาน iptables ง่ายขึ้น มี syntax อ่านออกและเข้าใจได้ง่าย

UFW เปิดใช้งานอยู่โดย default ไหม?

ไม่ — ตาม Ubuntu Wiki อย่างเป็นทางการ UFW ถูก disabled ไว้ by default คุณต้องรัน sudo ufw enable ก่อนจึงจะมีผล

ต้องตั้ง rule ก่อน enable ไหม?

ใช่อย่างยิ่ง — ต้อง sudo ufw allow ssh ก่อน sudo ufw enable เสมอ มิฉะนั้นจะถูก lock out ออกจากเซิร์ฟเวอร์ทันที เพราะ default policy คือ deny incoming ทั้งหมด

UFW กับ iptables ต่างกันอย่างไร?

UFW เป็น frontend ที่เขียนบน iptables — ใช้คำสั่งเดียวกันได้ง่ายกว่า แต่ under the hood ยังคงใช้ iptables kernel module เหมือนเดิม

ดู rule ทั้งหมดที่ตั้งไว้ได้อย่างไร?

รัน sudo ufw status verbose เพื่อดู rule ทั้งหมด หรือ sudo ufw status numbered เพื่อดูพร้อมหมายเลขสำหรับลบ

UFW รองรับ IPv6 ไหม?

รองรับ — UFW จัดการ IPv4 และ IPv6 ได้ในคำสั่งเดียว ต้องตรวจสอบว่ามี IPV6=yes ใน /etc/default/ufw

VPS บน Bangmod Cloud หรือ DigitalOcean ควรตั้ง UFW ไหม?

แนะนำอย่างยิ่ง — provider มี cloud firewall แต่ UFW เป็น host-based firewall ที่ป้องกันอีกชั้น ควรใช้ทั้งคู่เพื่อ defense-in-depth