กลับไปหน้าบล็อก
มกราคม 19, 2026คู่มือ

วิธีปกป้อง VPS ของคุณจากการโจมตี DDoS: คู่มือปฏิบัติ

คู่มือฉบับสมบูรณ์เกี่ยวกับการปกป้อง 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

bash
# ติดตั้ง 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 ที่แสดงกิจกรรมที่น่าสงสัยโดยอัตโนมัติ (การพยายามเข้าสู่ระบบที่ล้มเหลวหลายครั้ง การสแกนพอร์ต)

bash
# ติดตั้ง
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

bash
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: การตรวจสอบ

การตรวจสอบเป็นประจำช่วยตรวจจับการโจมตีได้ตั้งแต่เนิ่นๆ

bash
# ตรวจสอบการเชื่อมต่อที่ใช้งานอยู่
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 แยกสำหรับบริการที่สำคัญ
  • เปิดใช้งานการบันทึกและตรวจสอบบันทึกเป็นประจำเพื่อหากิจกรรมที่น่าสงสัย
  • พิจารณาใช้การบล็อกตามภูมิศาสตร์หากบริการของคุณไม่ใช่ระดับโลก