หนึ่งในสิ่งแรกที่ควรทำหลังจากได้ VPS Linux มาคือการตั้งค่า Firewall เพื่อควบคุมการเข้า-ออกของ network traffic และป้องกัน port scan, brute force หรือการเจาะระบบ UFW (Uncomplicated Firewall) คือเครื่องมือที่เป็น default บน Ubuntu/Debian ใช้งานง่าย ทรงพลัง และเหมาะสำหรับทั้งมือใหม่และมืออาชีพ
UFW ย่อมาจาก Uncomplicated Firewall เป็น frontend สำหรับ iptables ที่ทำให้การจัดการกฎ firewall ง่ายขึ้นมาก มาพร้อมกับ Ubuntu ตั้งแต่เวอร์ชัน 8.04 และ Debian รองรับเต็มรูปแบบ
ทำไมต้องตั้งค่า Firewall บน VPS:
💡 เคล็ดลับ: ก่อนตั้งค่า UFW ให้เปิดพอร์ต SSH ก่อนเสมอ เพราะถ้าลืมจะถูกล็อกออกจาก server ทันที
Ubuntu 20.04+ มี UFW ติดตั้งมาพร้อมแล้ว แต่ยังไม่ได้เปิดใช้ สำหรับ Debian อาจต้องติดตั้งเพิ่ม:
# อัพเดต package list
sudo apt update
# ติดตั้ง UFW (Ubuntu มักมีอยู่แล้ว)
sudo apt install ufw -y
# ตรวจสอบเวอร์ชัน
ufw version
ตรวจสอบว่า UFW ถูกติดตั้งแต่ยังไม่เปิดใช้:
sudo ufw status
# Output: Status: inactive
หลักการสำคัญของ Firewall ที่ดีคือ Deny All, Allow Specific — ปิดทุกอย่างก่อน แล้วค่อยเปิดเฉพาะที่จำเป็น:
# ปฏิเสธ incoming ทั้งหมด (ยกเว้นที่ allow ไว้)
sudo ufw default deny incoming
# อนุญาต outgoing ทั้งหมด (server ส่งออกได้ปกติ)
sudo ufw default allow outgoing
⚠️ คำเตือน: อย่าเปิดใช้ UFW ก่อนที่จะ allow SSH เพราะจะถูกล็อกออกจาก server ทันที
# เปิดพอร์ต 22 (SSH มาตรฐาน)
sudo ufw allow 22/tcp
# หรือใช้ชื่อ service
sudo ufw allow ssh
# ถ้าใช้พอร์ต SSH custom เช่น 2222
sudo ufw allow 2222/tcp
# HTTP
sudo ufw allow 80/tcp
# HTTPS
sudo ufw allow 443/tcp
# หรือ allow ทั้ง HTTP และ HTTPS ด้วย profile
sudo ufw allow 'Nginx Full'
sudo ufw allow 'Apache Full'
# เปิดพอร์ต 8000-8100 สำหรับ TCP
sudo ufw allow 8000:8100/tcp
# FTP Passive Mode ports
sudo ufw allow 20000:21000/tcp
# ปฏิเสธพอร์ต 3306 (MySQL — ไม่ควรเปิดสู่โลก)
sudo ufw deny 3306/tcp
# ลบกฎที่ตั้งไว้
sudo ufw delete allow 80/tcp
# Allow IP เดียวเข้าทุก port
sudo ufw allow from 203.0.113.10
# Allow IP เฉพาะพอร์ต 22
sudo ufw allow from 203.0.113.10 to any port 22
# Allow subnet ทั้ง /24
sudo ufw allow from 203.0.113.0/24 to any port 22
# บล็อก IP เดียว
sudo ufw deny from 198.51.100.45
# บล็อก subnet ทั้งหมด
sudo ufw deny from 198.51.100.0/24
💡 เคล็ดลับ: สำหรับ production server ที่มี IP office คงที่ ควร whitelist เฉพาะ IP ของทีมสำหรับพอร์ต SSH และ DirectAdmin panel เพื่อความปลอดภัยสูงสุด
UFW มีคำสั่ง limit ที่จะบล็อก IP โดยอัตโนมัติเมื่อ connect มากกว่า 6 ครั้งในเวลา 30 วินาที:
# เปิด Rate Limiting สำหรับ SSH
sudo ufw limit ssh
# หรือระบุพอร์ตชัดเจน
sudo ufw limit 22/tcp
เมื่อรันคำสั่งนี้ UFW จะ:
หลังตั้งค่ากฎครบแล้ว ให้เปิดใช้งาน UFW:
# เปิด UFW (จะถามยืนยัน)
sudo ufw enable
# Output จะแสดง:
# Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
# Firewall is active and enabled on system startup
⚠️ ตรวจสอบก่อนกด Y: ให้แน่ใจว่า allow SSH แล้วก่อนกด yes ไม่เช่นนั้นจะถูกล็อกออก session ทันที
sudo ufw disable
sudo ufw reload
# ดูสถานะเบื้องต้น
sudo ufw status
# ดูกฎพร้อมหมายเลข (ใช้ delete ด้วย number)
sudo ufw status numbered
# ดูรายละเอียดครบ
sudo ufw status verbose
ตัวอย่าง output ของ ufw status numbered:
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
[ 4] 22/tcp (v6) ALLOW IN Anywhere (v6)
[ 5] 80/tcp (v6) ALLOW IN Anywhere (v6)
[ 6] 443/tcp (v6) ALLOW IN Anywhere (v6)
# ลบกฎหมายเลข 3
sudo ufw delete 3
Logging ช่วยตรวจสอบว่ามีการพยายาม connect ที่ถูกบล็อกไหม:
# เปิด logging ระดับ low (บล็อก packet เท่านั้น)
sudo ufw logging low
# ระดับ medium (บล็อก + invalid packet)
sudo ufw logging medium
# ดู log แบบ realtime
sudo tail -f /var/log/ufw.log
# ดูเฉพาะที่ถูกบล็อก
sudo grep "BLOCK" /var/log/ufw.log | tail -20
ตัวอย่าง config ที่เหมาะสำหรับ VPS ที่รัน Nginx + DirectAdmin:
# Reset เริ่มใหม่สะอาด
sudo ufw --force reset
# Default: ปฏิเสธทุกอย่าง, อนุญาต outgoing
sudo ufw default deny incoming
sudo ufw default allow outgoing
# SSH พร้อม rate limiting (สำคัญ)
sudo ufw limit 22/tcp
# DirectAdmin panel
sudo ufw allow 2222/tcp
# HTTP / HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# FTP (ถ้าจำเป็น)
sudo ufw allow 21/tcp
sudo ufw allow 20000:21000/tcp
# เปิด logging
sudo ufw logging low
# เปิดใช้งาน
sudo ufw enable
# ตรวจสอบผล
sudo ufw status numbered
💡 สำหรับ AsiaGB VPS: ทุกแผน VPS ไทย และ VPS สิงคโปร์ ของ AsiaGB รันบน Linux Ubuntu/Debian สามารถตั้งค่า UFW ได้ทันทีหลังรับ VPS
| คำสั่ง | หน้าที่ |
|---|---|
ufw enable | เปิดใช้งาน UFW |
ufw disable | ปิดใช้งาน UFW ชั่วคราว |
ufw status numbered | ดูกฎทั้งหมดพร้อมหมายเลข |
ufw allow PORT/tcp | เปิดพอร์ต TCP |
ufw deny PORT/tcp | บล็อกพอร์ต TCP |
ufw limit ssh | Rate limit พอร์ต SSH |
ufw allow from IP | Whitelist IP เข้าทุกพอร์ต |
ufw deny from IP | Blacklist IP ทันที |
ufw delete NUM | ลบกฎหมายเลขที่ NUM |
ufw reload | รีโหลดกฎทั้งหมด |
ufw reset | รีเซ็ตกฎทั้งหมดเป็น default |
ufw logging low/medium/high | ตั้งระดับ logging |
sudo apt install ufwsudo ufw default deny incoming + allow outgoingsudo ufw allow 22/tcpsudo ufw limit sshsudo ufw enablesudo ufw status verboseการตั้งค่า UFW อย่างถูกต้องตั้งแต่วันแรกที่ได้ VPS จะช่วยป้องกัน port scan, brute force และ unauthorized access ได้อย่างมีประสิทธิภาพ เป็นพื้นฐาน security ที่ทุก VPS ควรมี