Site icon Cung cấp dịch vụ Cloud VPS, Server, Hosting Việt Nam & Thế giới

12+ cách kiểm tra VPS có đang bị DDoS hay không | Check DDoS

Cách kiểm tra VPS có đang bị DDoS hay không, Bạn có thể Check DDoS nhanh bằng các cách dưới đây. Nếu hệ thống của Bạn có Firewall cứng, thì việc check trên firewall sẽ hiệu quả hơn rất nhiều so với check trên OS, ngoài ra có thể xử lý dứt điểm tấn công từ trên firewall. Đừng quên, nhà cung cấp dịch vụ có thể hỗ trợ được Bạn rất nhiều trong trường hợp này. Nếu máy chủ của Bạn đang gặp vấn đề, đừng ngần ngại liên hệ DataOnline, với đội ngũ kỹ thuật giàu kinh nghiệm, chúng tôi có thể hỗ trợ Bạn nhanh chóng.

DataOnline cung cấp dịch vụ

VPS giá rẻ

, chống DDoS L3, L4 và cả L7 bảo vệ cho Website.

 

Khi VPS đột nhiên chậm, website không truy cập được, ping tăng cao, SSH lag hoặc CPU tăng 100%, một trong những nguyên nhân thường được nghĩ đến là DDoS.

Tuy nhiên, không phải mọi trường hợp server chậm đều là DDoS.

Website có thể chậm do:

Vì vậy, thay vì chỉ nhìn CPU hoặc ping rồi kết luận “bị DDoS”, cần kiểm tra từ nhiều lớp:

Internet
   |
   v
Network / Upstream
   |
   v
NIC / Interface
   |
   v
Kernel
   |
   v
TCP / UDP Connections
   |
   v
Firewall
   |
   v
Webserver / Application
   |
   v
CPU / RAM / Disk

Trong bài viết này, DataOnline hướng dẫn cách kiểm tra DDoS trên VPS Linux và Windows, đồng thời hướng dẫn cách xác định:

Mục lục nội dung

Toggle

1. DDoS là gì?

DDoS – Distributed Denial of Service là hình thức sử dụng nhiều nguồn khác nhau tạo ra lượng traffic hoặc request lớn nhằm làm dịch vụ không thể phục vụ người dùng bình thường.

Mục tiêu có thể là:

IP VPS
IP Server
Website
API
Game Server
DNS Server
Mail Server
TCP/UDP Service

Có thể chia DDoS thành một số nhóm chính.

Volumetric DDoS

Tập trung tạo lưu lượng rất lớn:

Gbps
Mbps
Packets/sec

Ví dụ:

500 Mbps
2 Gbps
10 Gbps

Loại này thường làm nghẽn đường truyền trước khi traffic tới VPS.

Protocol / Network DDoS

Tấn công vào tầng network/protocol.

Ví dụ:

SYN Flood
ACK Flood
UDP Flood
ICMP Flood

Application Layer DDoS

Tấn công vào ứng dụng.

Ví dụ:

HTTP Flood
HTTPS Flood
API Request Flood
WordPress Login Flood
Search Request Flood

Điểm quan trọng:

Một server có thể bị DDoS nhưng traffic nhìn thấy bên trong VPS lại không quá lớn nếu nhà cung cấp đã lọc một phần traffic ở upstream.

Ngược lại, server có thể nhận traffic không quá lớn nhưng packet rate hoặc connection rate cực cao, khiến CPU/kernel/webserver quá tải.


2. Dấu hiệu VPS có thể đang bị DDoS

Một hoặc nhiều dấu hiệu sau có thể xuất hiện:

Dấu hiệu network

Traffic tăng bất thường
Packet/s tăng mạnh
RX tăng cao
TX tăng cao
Packet dropped tăng
Network interface gần 100%

Dấu hiệu TCP

SYN_RECV tăng cao
Connection tăng đột biến
TIME_WAIT tăng mạnh
Connection reset tăng

Dấu hiệu ứng dụng

Apache/Nginx CPU cao
PHP-FPM process tăng
MySQL connection tăng
Load Average tăng
HTTP request tăng bất thường

Dấu hiệu người dùng

Website timeout
SSH lag
RDP lag
Ping cao
Packet loss
Không truy cập được DirectAdmin

Nhưng cần nhớ:

Một dấu hiệu đơn lẻ không đủ để kết luận DDoS.


3. Cách 1 – Kiểm tra băng thông VPS

Trên Linux, có thể sử dụng:

ip -s link

Hoặc:

ip -s -s link

Ví dụ:

RX: bytes  packets  errors  dropped
    123456  12345    0       0

TX: bytes  packets  errors  dropped
    456789  67890    0       0

Linux kernel cung cấp interface statistics bao gồm bytes, packets, errors và dropped packets; ip -s link là một trong những cách tiêu chuẩn để xem các số liệu này.

Tìm interface:

ip addr

Ví dụ:

eth0
ens3
ens18
bond0

Sau đó:

ip -s link show dev eth0

4. Cách 2 – Theo dõi traffic realtime bằng sar

Cài sysstat:

apt update
apt install sysstat -y

Chạy:

sar -n DEV 1

Ví dụ:

IFACE   rxpck/s   txpck/s   rxkB/s   txkB/s
eth0    125000    3500      85000    1200

Các thông số quan trọng:

rxpck/s = packet nhận mỗi giây
txpck/s = packet gửi mỗi giây
rxkB/s  = KB nhận mỗi giây
txkB/s  = KB gửi mỗi giây

Đừng chỉ nhìn Mbps

Ví dụ:

Server A:

500 Mbps
50,000 packet/s

Server B:

500 Mbps
500,000 packet/s

Hai server có cùng bandwidth nhưng Server B có thể gây áp lực CPU/kernel/NIC lớn hơn đáng kể.

Do đó khi kiểm tra DDoS nên theo dõi cả bandwidth và packets/sec.

5. Cách 3 – Kiểm tra connection bằng ss

Đây là một trong những lệnh quan trọng nhất trên Linux.

ss -s

Ví dụ:

TCP:
    1500 established
    4500 closed
    12000 orphaned
    18000 timewait
    5000 synrecv

Nếu bình thường chỉ có vài chục hoặc vài trăm connection nhưng đột nhiên:

SYN-RECV = 50,000

thì cần điều tra ngay.

6. Cách 4 – Kiểm tra SYN_RECV

Chạy:

ss -ant state syn-recv

Đếm:

ss -ant state syn-recv | wc -l

Ví dụ:

52341

Đây là dấu hiệu rất đáng chú ý.

Có thể kiểm tra theo IP:

ss -ant state syn-recv | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head

Nếu thấy:

10000 203.0.113.10
9000  198.51.100.20
8000  192.0.2.50

có thể đang có lượng SYN bất thường.

Tuy nhiên:

SYN_RECV cao không tự động có nghĩa là DDoS.

Có thể là traffic thật, application/backend chậm hoặc một vấn đề TCP khác.

7. Cách 5 – Tìm IP tạo nhiều connection nhất

Một cách nhanh:

ss -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -20

Ví dụ:

15000 203.0.113.10
12000 198.51.100.20
8000  192.0.2.100

Có thể sử dụng:

ss -nt | awk '{print $5}' \
| sed 's/:[0-9]*$//' \
| sort | uniq -c | sort -nr | head -20

Mục đích là tìm:

Top source IP
Top connection
Top offender

8. Cách 6 – Kiểm tra port nào đang bị đánh

Không chỉ cần biết “có DDoS”.

Cần biết:

DDoS đang đánh vào port nào?

Ví dụ:

ss -ant | awk '{print $4}' | sed 's/.*://' | sort | uniq -c | sort -nr

Có thể thấy:

50000 80
35000 443
12000 22
500   2222

Nếu server web bình thường chỉ có vài trăm connection nhưng:

80  = 50,000
443 = 35,000

thì cần điều tra HTTP/HTTPS traffic.

Nếu:

22 = 30,000

thì cần kiểm tra SSH brute-force hoặc TCP flood.

Nếu:

UDP port = rất lớn

có thể liên quan đến UDP flood.

9. Cách 7 – Dùng tcpdump để xem packet thực tế

tcpdump cho phép quan sát packet đang đi qua interface.

Cài:

apt install tcpdump -y

Xem traffic:

tcpdump -ni eth0

Chỉ xem TCP SYN:

tcpdump -ni eth0 'tcp[tcpflags] & tcp-syn != 0'

Chỉ xem HTTP:

tcpdump -ni eth0 port 80

HTTPS:

tcpdump -ni eth0 port 443

UDP:

tcpdump -ni eth0 udp

ICMP:

tcpdump -ni eth0 icmp

10. Cách 8 – Đếm SYN packet

Có thể sử dụng:

tcpdump -ni eth0 'tcp[tcpflags] & tcp-syn != 0' -c 1000

Nếu muốn quan sát trong vài giây:

timeout 10 tcpdump -ni eth0 \
'tcp[tcpflags] & tcp-syn != 0'

Mục tiêu là xác định:

SYN packet/s
Source IP
Destination port
Packet size

Nếu hàng trăm nghìn SYN packet xuất hiện trong thời gian rất ngắn, đây là dấu hiệu cần điều tra sâu.

11. Cách 9 – Kiểm tra packet drop trên NIC

Đây là bước rất quan trọng nhưng thường bị bỏ qua.

Chạy:

ip -s link show eth0

Theo dõi:

RX errors
RX dropped
TX errors
TX dropped

Hoặc:

ethtool -S eth0

Có thể xuất hiện:

rx_dropped
rx_missed_errors
rx_no_buffer
rx_errors

Linux phân biệt statistics ở interface, protocol và driver; ethtool có thể cung cấp các driver-defined statistics chi tiết hơn.

Nếu packet drop tăng nhanh:

RX packets       tăng
RX dropped       tăng mạnh
RX errors        tăng

cần xác định nguyên nhân ở:

NIC
Driver
Kernel
CPU
Virtualization layer
Upstream network

chứ không nên lập tức kết luận là DDoS.

12. Cách 10 – Kiểm tra CPU và Load Average

Chạy:

uptime

hoặc:

top

hoặc:

htop

Quan sát:

load average
CPU usage
system CPU
softirq
iowait

Một dấu hiệu đáng chú ý khi server bị packet flood là CPU si/softirq tăng cao.

Dùng:

top

Nếu thấy:

%Cpu:
us  10
sy  20
ni   0
id  30
wa   0
hi   0
si  40
st   0

thì si cao có thể cho thấy CPU đang dành nhiều thời gian xử lý software interrupt.

Có thể kiểm tra thêm:

cat /proc/softirqs

13. Cách 11 – Kiểm tra network interrupt

Dùng:

cat /proc/interrupts

Hoặc:

grep -i eth /proc/interrupts

Nếu có lượng packet rất lớn, CPU có thể phải xử lý một lượng lớn interrupt từ NIC.

Với server vật lý hoặc VM có workload network cao, nên kiểm tra thêm:

ethtool -l eth0
ethtool -k eth0

và:

ethtool -S eth0

Điều này đặc biệt hữu ích khi nghi ngờ packet-per-second flood thay vì chỉ bandwidth flood.

14. Cách 12 – Kiểm tra bandwidth bằng vnStat

Cài:

apt install vnstat -y

Khởi động:

systemctl enable --now vnstat

Xem:

vnstat

Theo dõi realtime:

vnstat -l

Xem theo ngày:

vnstat -d

Theo tháng:

vnstat -m

vnStat đặc biệt hữu ích để trả lời câu hỏi:

“Traffic hôm nay có bất thường so với những ngày trước không?”

Ví dụ:

Ngày bình thường:
50 GB/day

Ngày hôm nay:
800 GB/day

thì cần điều tra.

15. Cách 13 – Kiểm tra HTTP request

Nếu nghi ngờ HTTP/HTTPS DDoS, cần kiểm tra webserver.

Nginx

Ví dụ:

tail -f /var/log/nginx/access.log

Tìm IP request nhiều:

awk '{print $1}' /var/log/nginx/access.log \
| sort | uniq -c | sort -nr | head -20

Ví dụ:

50000 203.0.113.10
42000 198.51.100.20
35000 192.0.2.50

Đây là dấu hiệu cần điều tra.

16. Kiểm tra URL bị request nhiều nhất

Với Nginx:

awk '{print $7}' /var/log/nginx/access.log \
| sort | uniq -c | sort -nr | head -20

Ví dụ:

100000 /login
85000  /wp-login.php
70000  /api/search
50000  /

Nếu một URL bị request cực lớn:

/api/search

thì có thể là application-layer attack.

17. Kiểm tra HTTP status code

Có thể thống kê:

awk '{print $9}' /var/log/nginx/access.log \
| sort | uniq -c | sort -nr

Ví dụ:

500000 200
200000 404
150000 403
100000 499

Nếu lượng request tăng mạnh và server liên tục trả:

500
502
503
504

thì có thể application/backend đang quá tải.

Nhưng điều này cũng không đồng nghĩa với DDoS.

18. Kiểm tra Apache

Nếu sử dụng Apache:

tail -f /var/log/apache2/access.log

Top IP:

awk '{print $1}' /var/log/apache2/access.log \
| sort | uniq -c | sort -nr | head -20

Top URL:

awk '{print $7}' /var/log/apache2/access.log \
| sort | uniq -c | sort -nr | head -20

19. Kiểm tra DirectAdmin

Nếu VPS chạy DirectAdmin, cần kiểm tra đồng thời:

CSF/LFD
Nginx/Apache
PHP-FPM
MySQL/MariaDB
DirectAdmin
Network

Có thể kiểm tra process:

ps aux --sort=-%cpu | head

và:

ps aux --sort=-%mem | head

Kiểm tra connection:

ss -s

Kiểm tra log:

tail -f /var/log/lfd.log

Nếu CSF/LFD đang block hàng loạt IP, đó là thông tin hữu ích để xác định server đang nhận nhiều hành vi bất thường.

20. Cách 14 – Kiểm tra bằng iftop

Cài:

apt install iftop -y

Chạy:

iftop -i eth0

iftop cho phép quan sát:

Source IP
Destination IP
Bandwidth
Traffic direction

Ví dụ:

203.0.113.10  => SERVER   500Mb
198.51.100.20 => SERVER   300Mb
192.0.2.50    => SERVER   200Mb

Nếu có hàng trăm IP cùng tạo traffic, khả năng phân tán nguồn traffic cao hơn.

21. Cách 15 – Kiểm tra bằng nload

Cài:

apt install nload -y

Chạy:

nload eth0

Công cụ này đơn giản nhưng rất hữu ích để quan sát:

Incoming
Outgoing
Current bandwidth
Average bandwidth

22. Cách 16 – Kiểm tra bằng nethogs

Nếu nghi ngờ server đang gửi traffic bất thường thay vì chỉ nhận traffic, dùng:

apt install nethogs -y

Sau đó:

nethogs eth0

Có thể xác định process nào đang sử dụng network.

Ví dụ:

nginx
php-fpm
mysqld
docker
python

Nếu TX bất thường, đây là bước rất hữu ích để xác định process gây traffic.

23. Cách 17 – Kiểm tra UDP traffic

Dùng:

ss -u -a

Hoặc:

tcpdump -ni eth0 udp

Thống kê port:

ss -uan | awk '{print $5}' | sort | uniq -c | sort -nr | head

Nếu server không chạy UDP service nhưng lại nhận lượng UDP traffic lớn, cần điều tra.

24. Cách 18 – Kiểm tra ICMP flood

Theo dõi:

tcpdump -ni eth0 icmp

Hoặc:

sar -n ICMP 1

Nếu ICMP traffic tăng đột biến:

ICMP packets/s

có thể là ICMP flood.

Tuy nhiên:

Không nên block toàn bộ ICMP chỉ vì thấy ICMP traffic.

ICMP vẫn cần thiết cho nhiều hoạt động network như troubleshooting, Path MTU Discovery và các chức năng khác.

25. Kiểm tra DDoS trên Windows Server

Nếu VPS chạy Windows Server, có thể sử dụng các công cụ có sẵn.

Kiểm tra connection bằng netstat

Chạy CMD với quyền Administrator:

netstat -ano

Microsoft cho biết netstat có thể hiển thị TCP connections, port đang listen, Ethernet statistics, routing table và IPv4/IPv6 statistics.

Kiểm tra SYN:

netstat -ano | findstr SYN_RECEIVED

Đếm connection:

netstat -ano | findstr ESTABLISHED

26. Tìm IP tạo nhiều connection trên Windows

PowerShell:

Get-NetTCPConnection |
Group-Object RemoteAddress |
Sort-Object Count -Descending |
Select-Object -First 20

Có thể phát hiện:

IP
Number of connections

Sau đó xác định process:

Get-NetTCPConnection |
Select-Object LocalAddress,LocalPort,RemoteAddress,RemotePort,State,OwningProcess

27. Kiểm tra network bằng Performance Monitor

Windows Server có Performance Monitor.

Mở:

Win + R

Nhập:

perfmon

Các counter đáng quan tâm:

Network Interface
    Bytes Received/sec
    Bytes Sent/sec
    Packets Received/sec
    Packets Sent/sec

TCPv4
    Segments Received/sec
    Segments Sent/sec
    Segments Retransmitted/sec

Processor
    % Processor Time
    Interrupts/sec
    DPCs Queued/sec

Microsoft cũng liệt kê các counter như Bytes Received/sec, Packets Received/sec, Packets Received Discarded, Packets Received Errors, TCP connection failures và resets để theo dõi vấn đề network.

28. Kiểm tra packet drop trên Windows bằng pktmon

Windows Server có sẵn:

pktmon

Microsoft mô tả Pktmon là công cụ network diagnostics có thể:

Packet capture
Packet drop detection
Packet filtering
Packet counting

và đặc biệt hữu ích trong môi trường virtualization.

Kiểm tra:

pktmon list

Có thể dùng:

pktmon filter add -p 80

Sau đó:

pktmon start --etw -m real-time

Khi kiểm tra xong:

pktmon stop

29. Dùng Wireshark để phân tích DDoS

Nếu cần phân tích sâu packet, có thể capture traffic bằng:

tcpdump
Wireshark
pktmon

Một số filter hữu ích trong Wireshark:

tcp.flags.syn == 1

SYN traffic.

udp

UDP traffic.

icmp

ICMP traffic.

tcp.flags.reset == 1

TCP RST.

http.request

HTTP request.

Mục tiêu không phải capture càng nhiều càng tốt mà là tìm:

Source
Destination
Protocol
Port
Packet rate
Packet size
TCP flags
Request pattern

30. Phân biệt DDoS với VPS bị quá tải

Đây là phần quan trọng nhất.

Trường hợp 1: CPU cao nhưng network bình thường

Ví dụ:

CPU = 100%
RX = 20 Mbps
Packets = bình thường

Có thể là:

PHP
MySQL
WordPress
Application
Cron
Backup

Không nên kết luận DDoS.

Trường hợp 2: Network cao + packet cao + connection cao

Ví dụ:

RX = 950 Mbps
Packets = 800k/s
SYN_RECV = 50,000
CPU softirq = cao

Đây là dấu hiệu mạnh của network attack/flood.

Trường hợp 3: HTTP request cực cao

Ví dụ:

RX = 200 Mbps

HTTP:
1,000,000 request/min

URL:
POST /login
GET /search
GET /api

Có thể là:

HTTP Flood
Application Layer DDoS
Bot attack

Trường hợp 4: Network gần như bình thường nhưng website chậm

Ví dụ:

RX = 20 Mbps
CPU = 100%
PHP-FPM = cao
MySQL = cao

Khả năng cao là application overload hơn là volumetric DDoS.

31. Cách xác định DDoS có thực sự đến VPS hay không

Đây là điểm rất quan trọng đối với VPS.

Giả sử:

Internet
    |
    v
Provider
    |
    v
VPS

Nếu DDoS:

10 Gbps

đánh vào IP nhưng provider đã lọc:

9.9 Gbps

thì VPS có thể chỉ nhìn thấy:

100 Mbps

Do đó bạn không thể chỉ dùng iftop, sar hoặc ip -s link trên VPS để biết tổng lượng DDoS trước upstream.

Cần yêu cầu nhà cung cấp kiểm tra:

Port traffic
Traffic graph
Interface utilization
Packet rate
Upstream traffic
DDoS mitigation
NetFlow/sFlow
Flow logs

Đây là lý do một số trường hợp:

VPS chỉ thấy 100 Mbps nhưng provider thông báo IP đang bị tấn công nhiều Gbps.

Hai thông tin này hoàn toàn có thể cùng đúng.

32. Kiểm tra traffic từ phía nhà cung cấp

Nếu bạn quản trị hệ thống VPS/Cloud, nên kiểm tra thêm ở:

Switch
Router
Firewall
Hypervisor
Cloud Network
Upstream

Ví dụ trên Linux host:

ip -s link

Trên switch có thể kiểm tra:

Interface utilization
RX/TX packets
RX/TX errors
Broadcast
Multicast
Drops

Nếu sử dụng hệ thống monitoring:

Zabbix
Prometheus
Grafana
LibreNMS
Cacti
Netdata

nên lưu:

Bandwidth
Packets/sec
Connection
CPU
Drops
Errors

để so sánh baseline.

33. DDoS có thể không làm bandwidth đầy

Một quan niệm sai phổ biến:

“Chỉ khi bandwidth 1 Gbps đầy thì mới là DDoS.”

Không chính xác.

Ví dụ:

Packet size = rất nhỏ
Packets/sec = cực cao
Bandwidth = chỉ 100 Mbps

Server vẫn có thể bị ảnh hưởng nghiêm trọng bởi:

CPU interrupt
Kernel processing
Connection tracking
Firewall rules
Socket allocation
Application processing

Vì vậy nên kiểm tra đồng thời:

Mbps
PPS
Connections
CPU
SoftIRQ
NIC drops
Application requests

34. Checklist kiểm tra DDoS nhanh trên Ubuntu

Khi VPS có dấu hiệu bất thường, có thể chạy lần lượt:

uptime
top
ss -s
ip -s link
sar -n DEV 1 10
ss -ant state syn-recv | wc -l
ss -ant | awk '{print $4}' | sed 's/.*://' | sort | uniq -c | sort -nr | head
ss -nt | awk '{print $5}' | sort | uniq -c | sort -nr | head
ethtool -S eth0
tail -f /var/log/nginx/access.log
tail -f /var/log/lfd.log

Nếu cần phân tích packet:

tcpdump -ni eth0

35. Checklist kiểm tra DDoS trên Windows

Mở CMD/PowerShell Administrator:

netstat -ano
netstat -ano | findstr SYN_RECEIVED

PowerShell:

Get-NetTCPConnection |
Group-Object RemoteAddress |
Sort-Object Count -Descending |
Select-Object -First 20

Kiểm tra:

perfmon

Theo dõi:

Network Interface
TCPv4
TCPv6
Processor

Nếu cần kiểm tra packet:

pktmon

Các công cụ này giúp phân biệt connection overload, packet drops và network utilization.

36. Không nên vội block toàn bộ IP

Khi thấy một IP tạo nhiều connection, không nên lập tức:

csf -d IP

hoặc:

iptables -A INPUT -s IP -j DROP

Cần kiểm tra:

IP có phải CDN không?
IP có phải Load Balancer không?
IP có phải Proxy không?
IP có phải Googlebot/Bingbot không?
IP có phải customer không?
IP có phải API client không?

Đặc biệt nếu website sử dụng:

Cloudflare
Reverse Proxy
Load Balancer
CDN

thì IP mà server nhìn thấy có thể là IP proxy chứ không phải IP client thực tế.

37. Khi nào nên sử dụng CSF để block?

Nếu traffic trực tiếp tới VPS và xác định một IP có hành vi bất thường, CSF có thể được sử dụng để block.

Ví dụ:

csf -d 203.0.113.10

Kiểm tra:

csf -g 203.0.113.10

Tuy nhiên, block từng IP chỉ hiệu quả trong một số trường hợp.

Nếu:

100,000 IP

cùng tạo traffic thì block thủ công từng IP không phải giải pháp.

38. Khi nào CSF không thể giải quyết DDoS?

Ví dụ VPS có:

Port 1 Gbps

nhưng DDoS:

5 Gbps

Traffic đã làm đầy đường truyền trước khi tới VPS.

Lúc này:

CSF
iptables
nftables
fail2ban

không thể giúp VPS lấy lại bandwidth đã bị upstream tiêu thụ.

Cần xử lý tại:

Provider
Upstream
DDoS Protection
Scrubbing Center
Cloud DDoS Protection
CDN

Đây là điểm rất quan trọng khi vận hành VPS/Dedicated Server.

39. Quy trình xử lý khi phát hiện DDoS

Có thể áp dụng quy trình:

        Phát hiện bất thường
                |
                v
       Kiểm tra bandwidth
                |
                v
       Kiểm tra PPS / packet
                |
                v
       Kiểm tra connections
                |
                v
       Kiểm tra source IP
                |
                v
        Xác định port
                |
       +--------+--------+
       |                 |
       v                 v
    Network            HTTP/API
      flood              flood
       |                 |
       v                 v
   Provider/          WAF/CDN/
   upstream           rate limit

40. Khi VPS đang bị DDoS, nên thu thập thông tin gì?

Khi liên hệ nhà cung cấp, nên gửi:

IP bị tấn công
Thời gian bắt đầu
Thời gian kết thúc
Bandwidth
Packets/sec
Protocol
Destination port
Source IP sample
CPU
Packet drops
Connection count

Ví dụ:

Target IP: 103.x.x.x
Start: 10:20
Protocol: TCP
Destination: 443
Traffic: ~850 Mbps
PPS: ~450k
SYN_RECV: ~30k
CPU: 90%

Thông tin này giúp NOC/network team xử lý nhanh hơn rất nhiều so với chỉ báo:

“Server đang bị DDoS, kiểm tra giúp.”

41. Cách xây dựng hệ thống monitoring để phát hiện DDoS sớm

Nếu quản trị nhiều VPS, không nên đợi khách hàng báo:

“VPS bị chậm.”

Nên monitoring:

Bandwidth
PPS
TCP connections
SYN_RECV
CPU
SoftIRQ
NIC drops
NIC errors
HTTP requests
HTTP 5xx
Load average

Có thể sử dụng:

Zabbix
Prometheus
Grafana
Netdata
LibreNMS

Đặc biệt nên đặt cảnh báo theo baseline.

Ví dụ bình thường:

RX = 20-50 Mbps

Nếu đột nhiên:

RX = 500 Mbps

thì cảnh báo.

Nhưng với server backup:

RX = 800 Mbps

lại có thể hoàn toàn bình thường.

Vì vậy:

Không nên đặt một ngưỡng DDoS giống nhau cho tất cả server.

42. Bảng phân biệt nhanh DDoS và các lỗi khác

Hiện tượng Network CPU Connection Khả năng
Website code lỗi Bình thường Bình thường Bình thường Application
MySQL quá tải Bình thường Cao Có thể cao Database
PHP-FPM quá tải Bình thường/cao Cao Cao HTTP/Application
SYN flood Cao Có thể cao SYN_RECV cao DDoS
UDP flood Rất cao Có thể cao Không nhất thiết cao DDoS
HTTP flood Cao Cao Cao Layer 7 DDoS
Bandwidth flood Rất cao Có thể bình thường Không nhất thiết cao DDoS
NIC lỗi Bất thường Có thể cao Không nhất thiết Hardware/network
Provider lỗi Bất thường Bình thường Có thể bình thường Upstream

43. 5 chỉ số quan trọng nhất khi kiểm tra DDoS

Nếu chỉ có vài phút để kiểm tra, hãy tập trung vào:

1. Bandwidth

Mbps/Gbps

2. PPS

Packets/sec

3. Connections

ESTABLISHED
SYN_RECV
TIME_WAIT

4. CPU / SoftIRQ

CPU
system
softirq
interrupt

5. NIC drops/errors

RX dropped
RX errors
TX dropped
TX errors

Kết hợp 5 nhóm dữ liệu này sẽ cho kết quả đáng tin cậy hơn nhiều so với chỉ kiểm tra ping.

44. Kết luận

Khi VPS chậm hoặc mất kết nối, không nên ngay lập tức kết luận VPS đang bị DDoS.

Một quy trình kiểm tra chính xác nên đi từ:

Bandwidth
    ↓
Packets/sec
    ↓
TCP/UDP connections
    ↓
Source IP
    ↓
Destination port
    ↓
NIC drops/errors
    ↓
CPU/SoftIRQ
    ↓
Webserver/Application
    ↓
Upstream/Provider

Trên Ubuntu/Linux, các công cụ quan trọng nhất gồm:

ip
ss
sar
tcpdump
ethtool
iftop
nload
nethogs
vnstat
top

Trên Windows Server:

netstat
pktmon

kết hợp:

PowerShell
Performance Monitor

Microsoft cũng khuyến nghị sử dụng các network performance counters như bytes/packets received/sent, packet discarded/errors và TCP connection failures/resets để điều tra các vấn đề network.

Điểm quan trọng nhất cần nhớ là:

DDoS không chỉ được xác định bằng bandwidth.

Cần xem đồng thời:

Bandwidth
PPS
Connections
CPU
SoftIRQ
NIC drops
Application requests

Và nếu traffic đã làm nghẽn đường truyền ở upstream, việc kiểm tra ngay trên VPS có thể không phản ánh được tổng quy mô của cuộc tấn công. Khi đó cần phối hợp với nhà cung cấp VPS/Datacenter để kiểm tra traffic tại router, firewall, switch hoặc hệ thống DDoS mitigation.

Đối với hệ thống cung cấp Cloud VPS/Dedicated Server, cách tốt nhất là triển khai monitoring từ cả hai phía:

             INTERNET
                 |
          +------+------+
          | DDoS / Edge |
          | Monitoring  |
          +------+------+
                 |
              Network
                 |
          +------+------+
          |   Hypervisor|
          +------+------+
                 |
             VPS Server
                 |
       +---------+---------+
       |                   |
    Network             Application
       |                   |
    Bandwidth           HTTP/API
    PPS                  PHP
    Drops                MySQL
    Errors               Logs

Như vậy có thể xác định chính xác hơn DDoS đang xảy ra ở đâu, mức độ bao nhiêu và cần xử lý tại VPS hay tại upstream.

Exit mobile version