Quay lại blog
Tháng Một 19, 2026Hướng dẫn

Cách Bảo vệ VPS của bạn khỏi Tấn công DDoS: Hướng dẫn Thực tế

Hướng dẫn toàn diện về việc bảo vệ VPS của bạn khỏi tấn công DDoS bằng tường lửa, giới hạn tốc độ và các phương pháp đã được chứng minh khác.

Cách Bảo vệ VPS của bạn khỏi Tấn công DDoS: Hướng dẫn Thực tế

Tấn công DDoS (Distributed Denial of Service) có thể đưa máy chủ của bạn ngoại tuyến trong vài phút, dẫn đến mất doanh thu, khách hàng không hài lòng và thiệt hại danh tiếng. Vào năm 2026, các cuộc tấn công như vậy đã trở nên tinh vi và dễ tiếp cận hơn. May mắn thay, các phương pháp bảo vệ hiện đại cũng đã phát triển. Hướng dẫn này sẽ chỉ cho bạn cách bảo vệ VPS Hiddence của bạn khỏi các loại tấn công DDoS phổ biến nhất.

Tấn công DDoS là gì?

Tấn công DDoS xảy ra khi nhiều máy tính (botnet) đồng thời gửi yêu cầu đến máy chủ của bạn, làm quá tải tài nguyên của nó và làm cho nó không khả dụng cho người dùng hợp pháp.

Các Loại Tấn công DDoS Chính

  • Tấn công Thể tích (L3/L4): UDP flood, ICMP, SYN flood — làm quá tải băng thông mạng
  • Tấn công Lớp Ứng dụng (L7): HTTP flood, Slowloris — nhắm mục tiêu lớp ứng dụng
  • Tấn công Giao thức: Khai thác lỗ hổng trong các giao thức mạng

Bảo vệ Hiddence Tích hợp sẵn

Tất cả VPS Hiddence bao gồm bảo vệ DDoS Lớp 3-4 cơ bản (mức mạng). Điều này tự động lọc hầu hết các cuộc tấn công thể tích. Tuy nhiên, các cuộc tấn công Lớp 7 (ứng dụng) yêu cầu cấu hình bổ sung.

Bước 1: Thiết lập Tường lửa

Tuyến phòng thủ đầu tiên là cấu hình tường lửa đúng cách. UFW (Uncomplicated Firewall) là một công cụ đơn giản và hiệu quả cho Ubuntu/Debian.

bash
# Cài đặt UFW
sudo apt update && sudo apt install ufw -y

# Cho phép SSH (QUAN TRỌNG! Làm điều này trước khi bật UFW)
sudo ufw allow 22/tcp

# Cho phép HTTP và HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Bật UFW
sudo ufw enable

# Kiểm tra trạng thái
sudo ufw status verbose

# Quy tắc bảo vệ nâng cao:
# Giới hạn kết nối SSH (bảo vệ brute force)
sudo ufw limit 22/tcp

# Chặn ICMP ping flood
sudo nano /etc/ufw/before.rules
# Thêm sau *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

# Bảo vệ chống SYN flood
sudo nano /etc/sysctl.conf
# Thêm:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5

# Áp dụng thay đổi
sudo sysctl -p

Bước 2: Cài đặt Fail2Ban

Fail2Ban tự động chặn các địa chỉ IP hiển thị hoạt động đáng ngờ (nhiều lần đăng nhập thất bại, quét cổng).

bash
# Cài đặt
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# Cấu hình cho bảo vệ SSH và HTTP
# Tạo cấu hình cục bộ
sudo nano /etc/fail2ban/jail.local

# Thêm:
[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

# Khởi động lại Fail2Ban
sudo systemctl restart fail2ban

# Kiểm tra trạng thái
sudo fail2ban-client status

Bước 3: Bảo vệ Nginx

Nếu bạn đang sử dụng Nginx, cấu hình giới hạn tốc độ để bảo vệ chống tấn công HTTP flood.

bash
sudo nano /etc/nginx/nginx.conf

# Thêm vào khối http:
http {
    # Giới hạn yêu cầu: 10 yêu cầu mỗi giây mỗi IP
    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
    
    # Giới hạn kết nối
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    
    # Bảo vệ Slowloris
    client_body_timeout 10s;
    client_header_timeout 10s;
    keepalive_timeout 5s 5s;
    send_timeout 10s;
    
    # Phần còn lại của cấu hình...
}

# Trong khối server thêm:
server {
    location / {
        # Áp dụng giới hạn yêu cầu
        limit_req zone=one burst=20 nodelay;
        
        # Giới hạn kết nối: tối đa 10 mỗi IP
        limit_conn addr 10;
        
        # Cấu hình của bạn...
    }
}

# Kiểm tra cấu hình và tải lại
sudo nginx -t
sudo systemctl reload nginx

Bước 4: Sử dụng CDN

Để bảo vệ tối đa, sử dụng dịch vụ CDN như Cloudflare. CDN hoạt động như một proxy, ẩn IP thực của máy chủ của bạn và hấp thụ hầu hết các cuộc tấn công DDoS. Lợi ích: ẩn IP thực, lọc lưu lượng truy cập độc hại tự động, phân phối tải, SSL/TLS miễn phí, WAF cho bảo vệ L7.

  • Đăng ký trên cloudflare.com (có gói miễn phí)
  • Thêm tên miền của bạn và thay đổi bản ghi NS tại nhà đăng ký của bạn
  • Bật chế độ 'Proxy' (đám mây cam) cho bản ghi DNS
  • Đặt chế độ SSL thành 'Full (strict)' trong phần SSL/TLS
  • Bật 'Bảo vệ DDoS' và 'Chế độ Bot Fight' trong cài đặt bảo mật

Bước 5: Giám sát

Giám sát thường xuyên giúp phát hiện tấn công sớm.

bash
# Giám sát kết nối đang hoạt động
watch -n 1 'ss -s'

# Xem các IP hàng đầu theo số lượng kết nối
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

# Xem nhật ký theo thời gian thực
sudo tail -f /var/log/nginx/access.log
sudo journalctl -u nginx -f

# Kiểm tra IP bị chặn trong Fail2Ban
sudo fail2ban-client status sshd

Biện pháp Khẩn cấp

Nếu một cuộc tấn công đang diễn ra, thực hiện các biện pháp sau:

  • Xác định nguồn: Sử dụng 'netstat' hoặc nhật ký để xác định IP tấn công
  • Chặn tạm thời: sudo ufw insert 1 deny from IP_TẤN_CÔNG
  • Chặn toàn bộ mạng con: sudo ufw deny from 123.45.0.0/16
  • Giới hạn giới hạn tốc độ: Tạm thời giảm giới hạn Nginx xuống 1-5 req/s
  • Liên hệ hỗ trợ: Liên hệ với hỗ trợ Hiddence để kích hoạt bảo vệ nâng cao
  • Bật 'Chế độ Bị Tấn công' trong Cloudflare (nếu sử dụng)

Thực hành Tốt nhất

  • Không bao giờ công bố IP thực của máy chủ của bạn nếu sử dụng CDN
  • Cập nhật hệ thống thường xuyên: sudo apt update && sudo apt upgrade
  • Sử dụng khóa SSH thay vì mật khẩu để truy cập máy chủ
  • Thay đổi cổng SSH mặc định (22) thành cổng không chuẩn
  • Thiết lập sao lưu tự động để phục hồi nhanh chóng
  • Sử dụng IP riêng biệt cho các dịch vụ quan trọng
  • Bật ghi nhật ký và thường xuyên kiểm tra nhật ký để tìm hoạt động đáng ngờ
  • Cân nhắc sử dụng chặn địa lý nếu dịch vụ của bạn không phải toàn cầu