วิธีปกป้อง VPS ของคุณจากการโจมตี DDoS: คู่มือปฏิบัติ
คู่มือฉบับสมบูรณ์เกี่ยวกับการปกป้อง VPS ของคุณจากการโจมตี DDoS โดยใช้ไฟร์วอลล์ การจำกัดอัตรา และวิธีอื่นๆ ที่ได้รับการพิสูจน์แล้ว

การโจมตี DDoS (Distributed Denial of Service) สามารถทำให้เซิร์ฟเวอร์ของคุณออฟไลน์ได้ในไม่กี่นาที ส่งผลให้สูญเสียรายได้ ความไม่พอใจของลูกค้า และความเสียหายต่อชื่อเสียง ในปี 2026 การโจมตีดังกล่าวมีความซับซ้อนและเข้าถึงได้มากขึ้น โชคดีที่วิธีการป้องกันสมัยใหม่ก็พัฒนาเช่นกัน คู่มือนี้จะแสดงวิธีปกป้อง VPS Hiddence ของคุณจากการโจมตี DDoS ประเภทที่พบบ่อยที่สุด
การโจมตี DDoS คืออะไร?
การโจมตี DDoS เกิดขึ้นเมื่อคอมพิวเตอร์หลายเครื่อง (botnet) ส่งคำขอไปยังเซิร์ฟเวอร์ของคุณพร้อมกัน ทำให้ทรัพยากรของมันล้นและไม่สามารถใช้งานได้สำหรับผู้ใช้ที่ถูกต้องตามกฎหมาย
ประเภทหลักของการโจมตี DDoS
- การโจมตีแบบ Volumetric (L3/L4): UDP flood, ICMP, SYN flood — ทำให้แบนด์วิดท์เครือข่ายล้น
- การโจมตีระดับ Application Layer (L7): HTTP flood, Slowloris — กำหนดเป้าหมายที่ application layer
- การโจมตีแบบ Protocol: ใช้ประโยชน์จากช่องโหว่ในโปรโตคอลเครือข่าย
การป้องกัน Hiddence ในตัว
VPS Hiddence ทั้งหมดรวมการป้องกัน DDoS ชั้น 3-4 พื้นฐาน (ระดับเครือข่าย) นี่จะกรองการโจมตีแบบ volumetric ส่วนใหญ่อัตโนมัติ อย่างไรก็ตาม การโจมตีชั้น 7 (application) ต้องการการกำหนดค่าเพิ่มเติม
ขั้นตอนที่ 1: การตั้งค่าไฟร์วอลล์
แนวป้องกันแรกคือการกำหนดค่าไฟร์วอลล์ที่เหมาะสม UFW (Uncomplicated Firewall) เป็นเครื่องมือที่เรียบง่ายและมีประสิทธิภาพสำหรับ Ubuntu/Debian
# ติดตั้ง UFW
sudo apt update && sudo apt install ufw -y
# อนุญาต SSH (สำคัญ! ทำสิ่งนี้ก่อนเปิดใช้งาน UFW)
sudo ufw allow 22/tcp
# อนุญาต HTTP และ HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# เปิดใช้งาน UFW
sudo ufw enable
# ตรวจสอบสถานะ
sudo ufw status verbose
# กฎการป้องกันขั้นสูง:
# จำกัดการเชื่อมต่อ SSH (การป้องกัน brute force)
sudo ufw limit 22/tcp
# บล็อก ICMP ping floods
sudo nano /etc/ufw/before.rules
# เพิ่มหลังจาก *filter:
-A ufw-before-input -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
# การป้องกันต่อ SYN flood
sudo nano /etc/sysctl.conf
# เพิ่ม:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5
# ใช้การเปลี่ยนแปลง
sudo sysctl -pขั้นตอนที่ 2: ติดตั้ง Fail2Ban
Fail2Ban บล็อกที่อยู่ IP ที่แสดงกิจกรรมที่น่าสงสัยโดยอัตโนมัติ (การพยายามเข้าสู่ระบบที่ล้มเหลวหลายครั้ง การสแกนพอร์ต)
# ติดตั้ง
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# การกำหนดค่าสำหรับการป้องกัน SSH และ HTTP
# สร้างการกำหนดค่าท้องถิ่น
sudo nano /etc/fail2ban/jail.local
# เพิ่ม:
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
banaction = ufw
[sshd]
enabled = true
port = 22
logpath = /var/log/auth.log
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log
[nginx-limit-req]
enabled = true
filter = nginx-limit-req
port = http,https
logpath = /var/log/nginx/error.log
# รีสตาร์ท Fail2Ban
sudo systemctl restart fail2ban
# ตรวจสอบสถานะ
sudo fail2ban-client statusขั้นตอนที่ 3: การป้องกัน Nginx
หากคุณใช้ Nginx ให้กำหนดค่าการจำกัดอัตราเพื่อป้องกันการโจมตี HTTP flood
sudo nano /etc/nginx/nginx.conf
# เพิ่มในบล็อก http:
http {
# ขีดจำกัดคำขอ: 10 คำขอต่อวินาทีต่อ IP
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
# ขีดจำกัดการเชื่อมต่อ
limit_conn_zone $binary_remote_addr zone=addr:10m;
# การป้องกัน Slowloris
client_body_timeout 10s;
client_header_timeout 10s;
keepalive_timeout 5s 5s;
send_timeout 10s;
# ส่วนที่เหลือของการกำหนดค่า...
}
# ในบล็อก server เพิ่ม:
server {
location / {
# ใช้ขีดจำกัดคำขอ
limit_req zone=one burst=20 nodelay;
# ขีดจำกัดการเชื่อมต่อ: สูงสุด 10 ต่อ IP
limit_conn addr 10;
# การกำหนดค่าของคุณ...
}
}
# ทดสอบการกำหนดค่าและโหลดซ้ำ
sudo nginx -t
sudo systemctl reload nginxขั้นตอนที่ 4: ใช้ CDN
สำหรับการป้องกันสูงสุด ใช้บริการ CDN เช่น Cloudflare CDN ทำหน้าที่เป็นพร็อกซี ซ่อน IP จริงของเซิร์ฟเวอร์ของคุณและดูดซับการโจมตี DDoS ส่วนใหญ่ ประโยชน์: ซ่อน IP จริง กรองทราฟฟิกที่เป็นอันตรายโดยอัตโนมัติ การกระจายโหลด SSL/TLS ฟรี WAF สำหรับการป้องกัน L7
- ลงทะเบียนบน cloudflare.com (มีแผนฟรี)
- เพิ่มโดเมนของคุณและเปลี่ยน NS records ที่ผู้จดทะเบียนของคุณ
- เปิดใช้งานโหมด 'Proxy' (เมฆสีส้ม) สำหรับ DNS records
- ตั้งค่าโหมด SSL เป็น 'Full (strict)' ในส่วน SSL/TLS
- เปิดใช้งาน 'DDoS Protection' และ 'Bot Fight Mode' ในการตั้งค่าความปลอดภัย
ขั้นตอนที่ 5: การตรวจสอบ
การตรวจสอบเป็นประจำช่วยตรวจจับการโจมตีได้ตั้งแต่เนิ่นๆ
# ตรวจสอบการเชื่อมต่อที่ใช้งานอยู่
watch -n 1 'ss -s'
# ดู IP ด้านบนตามจำนวนการเชื่อมต่อ
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
# ดูบันทึกแบบเรียลไทม์
sudo tail -f /var/log/nginx/access.log
sudo journalctl -u nginx -f
# ตรวจสอบ IP ที่ถูกบล็อกใน Fail2Ban
sudo fail2ban-client status sshdมาตรการฉุกเฉิน
หากการโจมตีกำลังดำเนินอยู่ ให้ใช้มาตรการต่อไปนี้:
- ระบุแหล่งที่มา: ใช้ 'netstat' หรือบันทึกเพื่อระบุ IP ที่โจมตี
- บล็อกชั่วคราว: sudo ufw insert 1 deny from ATTACKING_IP
- บล็อกทั้ง subnet: sudo ufw deny from 123.45.0.0/16
- จำกัดขีดจำกัดอัตรา: ลดขีดจำกัด Nginx ชั่วคราวเป็น 1-5 req/s
- ติดต่อฝ่ายสนับสนุน: ติดต่อฝ่ายสนับสนุน Hiddence เพื่อเปิดใช้งานการป้องกันขั้นสูง
- เปิดใช้งาน 'Under Attack Mode' ใน Cloudflare (หากใช้)
แนวทางปฏิบัติที่ดีที่สุด
- อย่าเผยแพร่ IP จริงของเซิร์ฟเวอร์ของคุณหากใช้ CDN
- อัปเดตระบบเป็นประจำ: sudo apt update && sudo apt upgrade
- ใช้คีย์ SSH แทนรหัสผ่านสำหรับการเข้าถึงเซิร์ฟเวอร์
- เปลี่ยนพอร์ต SSH เริ่มต้น (22) เป็นแบบไม่มาตรฐาน
- ตั้งค่าการสำรองข้อมูลอัตโนมัติเพื่อการกู้คืนที่รวดเร็ว
- ใช้ IP แยกสำหรับบริการที่สำคัญ
- เปิดใช้งานการบันทึกและตรวจสอบบันทึกเป็นประจำเพื่อหากิจกรรมที่น่าสงสัย
- พิจารณาใช้การบล็อกตามภูมิศาสตร์หากบริการของคุณไม่ใช่ระดับโลก