Chuyển tới nội dung

Kiểm tra kết nối khi server bị DDOS

1️. Kiểm tra số lượng kết nối TCP
Tấn công DDoS thường sử dụng nhiều kết nối đến server. Bạn có thể kiểm tra bằng lệnh:
netstat -an | grep :80 | wc -l
🔹 Giải thích:
Thống kê số lượng kết nối đến port 80 (hoặc thay bằng cổng khác như 443).
Nếu số lượng kết nối tăng đột biến (vài nghìn kết nối), có thể bạn đang bị tấn công.
👉 Kiểm tra IP nào đang kết nối nhiều nhất:
netstat -an | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -20
📌 Nếu một IP có hàng ngàn kết nối, có thể nó là bot DDoS.

2️⃣ Kiểm tra lưu lượng mạng bất thường
DDoS có thể làm tăng đột biến lưu lượng mạng. Dùng lệnh sau để kiểm tra:
ifstat -t 1
📌 Nếu thấy băng thông sử dụng quá cao mà không có lý do hợp lý, có thể server bị tấn công.
👉 Hoặc dùng nload:
nload eth0
Thay eth0 bằng tên card mạng của bạn (ip a để kiểm tra).

3️⃣ Kiểm tra lượng request đến web server
Nếu bạn chạy Nginx hoặc Apache, kiểm tra log để phát hiện tấn công:
👉 Với Nginx:
tail -n 1000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -20
👉 Với Apache:
tail -n 1000 /var/log/apache2/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -20
📌 Nếu có IP spam hàng ngàn request trong vài giây, bạn có thể đang bị tấn công.
👉 Với haproxy:
tail -n 1000 /var/log/haproxy.log | grep -E 'http' | wc -l
Đếm số request từ từng IP:
awk '{print $6}' /var/log/haproxy.log | cut -d: -f1 | sort | uniq -c | sort -nr | head -20
Nếu muốn xem số request theo thời gian thực:
watch -n 1 "grep -E 'http' /var/log/haproxy.log | wc -l"
sudo tcpdump -i eth0 port 80 or port 443 -nn
📌 Nếu một IP có số request quá cao, có thể nó đang spam hoặc tấn công DDoS.

4️⃣ Kiểm tra mức độ tải CPU & RAM
DDoS có thể làm tăng CPU hoặc RAM đột biến.
👉 Kiểm tra nhanh bằng lệnh:
top -o %CPU
Hoặc:
htop
📌 Nếu có nhiều process nginx, apache, hoặc php-fpm chiếm CPU cao, server có thể đang bị tấn công.

5️⃣ Kiểm tra SYN Flood (TCP Attack)
netstat -an | grep SYN_RECV | wc -l
📌 Nếu có hàng nghìn kết nối ở trạng thái SYN_RECV, có thể bạn đang bị tấn công SYN Flood.

6️⃣ Kiểm tra với fail2ban hoặc iptables
Nếu bạn đang dùng fail2ban, kiểm tra danh sách IP bị chặn:
sudo fail2ban-client status
Hoặc xem log tấn công:
sudo cat /var/log/fail2ban.log | grep Ban
👉 Nếu có nhiều IP bị chặn trong thời gian ngắn, có thể bạn đang bị tấn công.
📌 Nếu phát hiện tấn công, làm gì tiếp theo?
Chặn IP tấn công:
sudo iptables -A INPUT -s -j DROP
Giới hạn số lượng kết nối từ một IP:
sudo iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
Dùng Cloudflare hoặc WAF để bảo vệ web
Giảm TTL của session để giảm tải tài nguyên

Tag: