CHIA SẺ:

Tấn công từ chối dịch vụ phân tán (DDoS – Distributed Denial Of Service) là kiểu tấn công làm cho hệ thống máy tính hay hệ thống mạng quá tải, không thể cung cấp dịch vụ hoặc phải dừng hoạt động. Trong các cuộc tấn công DDoS, máy chủ dịch vụ sẽ bị “ngập” bởi hàng loạt các lệnh truy cập từ lượng kết nối khổng lồ.

Khi số lệnh truy cập quá lớn, máy chủ sẽ quá tải và không còn khả năng xử lý các yêu cầu. Hậu quả là người dùng không thể truy cập vào các dịch vụ trên các trang web bị tấn công DDoS.

Mình xin chia sẻ lại bài của BKNS, giới thiệu một số lệnh cơ bản để kiểm tra server trong trường hợp này.

– Đếm lượng connection vào Port 80:

netstat -n | grep :80 |wc -l

– Kiểm tra số lượng connection đang ở trạng thái SYN_RECV:

netstat -n | grep :80 | grep SYN_RECV|wc -l

– Hiển thị tất cả các IP đang kết nối và số lượng kết nối từ mỗi IP:

netstat -an|grep :80 |awk '{print $5}'|cut -d":" -f1|sort|uniq -c|sort -rn

– Nếu muốn kiểm tra IP nào mở nhiều SYN thì thêm vào:

netstat -an|grep :80|grep SYN |awk '{print $5}'|cut -d":" -f1|sort|uniq -c|sort -rn

– Đối với server có nhiều IP, để kiểm tra IP nào đang bị tấn công:

netstat -plan | grep :80 | awk '{print $4}'| cut -d: -f1 |sort |uniq -c

– Hiển thị tất cả các IP đang kết nối và số lượng kết nối từ mỗi IP:

netstat -an | grep ':80' | awk '{print $5}' | sed s/'::ffff:'// | cut -d":" -f1 | sort | uniq -c

– Hiển thị số lượng kết nối mỗi loại

netstat -an | grep :80 | awk '{print $6}' | sort | uniq -c
61 ESTABLISHED
 13 FIN_WAIT1
 17 FIN_WAIT2
 1 LISTEN
 25 SYN_RECV
 298 TIME_WAIT

– Hiển thị tất cả các IP đang kết nối và số lượng kết nối từ mỗi IP

watch "netstat -an | grep ':80' | awk '{print \$5}' | sed s/'::ffff:'// | cut -d\":\" -f1 | sort | uniq -c"
watch "netstat -an | grep :80 | awk '{print \$6}' | sort | uniq -c"

Khi đã phát hiện IP có dấu hiệu bất thường, bạn có thể sử dụng CSF để block IP đó lại.

40 Comments

  1. Du 22

    Dấu hiệu nào để mình biết là bị ddos bác ơi. Em đang cần quá. Em đang bị DDos hay sao ấy. Gói 10$ mà có 80 On là max cpu. Reset lên đc 180 là lại nằm. Bác chỉ em các nhận biết với

    1. Du 22

      Em thấy có ip kết nối nhiều nhất là 15 có nên ban ip này ko ạ. Hoặc bao nhiêu kết nối thì nên ban ạ

    2. Luân Trần Admin

      Để phát hiện khá là khó, mình không thể hướng dẫn cụ thể được. Hôm vừa rồi update cái plugin Google Authenticator bị 1 loạt request vào file admin-ajax.php, cứ tưởng bị DDoS cơ mà mày mò cả ngày xong mới phát hiện ra được vấn đề @@

      1. Minh Cuong 6

        Hình như mình cũng bị như cậu, cậu có cách giải quyết gì hướng dẫn mình vs, mình cài plugin seo của yoast.

  2. Nguyễn Đức Anh 10

    mình cũng bị đánh dos liên tục, dùng cả tường lửa vps và tường lửa của code website mà vẫn không ăn thua. Ai có mưu kế gì bày mình đỡ dos với

    1. Luân Trần Admin

      Bạn phân tích như thế nào để biết được đang bị DDoS, nhiều khi do plugin WP làm cho hệ thống quá tải đó.

  3. Nguyễn Đức Anh 10

    thông thường cpu trên vps và ram lên cực điểm, làm treo hệ thống cho đến khi mình reset lại vps. kêt cả mình sử dụng code tự reset lại mysql khi cpu hoạt động trên 80% mà vẫn bị. Code mình dùng vbb 4.2.

    1. Luân Trần Admin

      Việc CPU và RAM cao cực điểm như bạn nói ko thể nào chứng minh được VPS đang bị DDoS, có thể do code của bạn nặng, online hoặc visit nhiều dẫn đến quá tải.

      Mình nghiêng về giải pháp tối ưu server, code và nâng cấp RAM/CPU đi.

  4. Lão Còi 6

    Bác Luân cho em hỏi, em kiểm tra thì nó trả về IP của VPS có số lượng kết nối lớn nhất, gần 500 lận. Vậy là sao hả bác? Còn 1 số IP khác khoảng 20 như vậy có phải là cao không?

    1. Luân Trần Admin

      Bác check lại access log file xem những ip đó đang request đến file nào, có thường xuyên không?

      1. Khải 1

        Bác Luân có thể chỉ cho mình làm sao ghi lại được log IP request đến file, vì mình xem log file php-fpm.log không thấy ip mà chỉ thấy request đến file như sau:

        [21-Oct-2016 21:17:27] WARNING: [pool www] child 26868 said into stderr: “ERROR: Unable to open primary script: /home/domain/public_html/admin.php (No such file or directory)”

        Vì có nhiều số request kiểu như mò trang admin của mình, vì trang admin của mình đã chuyển nơi khác

  5. nguyễn văn chiến 1

    của em bị những 5000 lượt truy cập dơ web luôn bị tấn công vào cổng 80 nhờ các bác tư vấn giúp em với, và em đang muốn vào kiểm tra ip tấn công và cách thức ddos trên direct admin thì vào theo từng bước hướng dẫn giúp em với. thank các bác

  6. nguyễn tiến thành 1

    của em khi kiểm tra netstat -n | grep :80 |wc -l lên đến 628

    vào kiểm tra bruce monitor trong directadmin thì thấy nhiều địa chỉ ip tấn công cao nhất là 100000 lần login failue

    vào wp-admin thì toàn báo lỗi quá tải error etablishing database connection

    1. Luân Trần Admin

      Bạn check xem các request tấn công có gì đặc biệt không? Check trong access.log

  7. Nguyen Thu 1

    Anh Luân ơi, em hỏi chút, server em đặt cổng là 8121 thì khi em check netstat -n | grep :80 |wc -l với port 80 thì nó ra số 320 nhưng GA thống kê online thì chỉ có 60 thì có gọi là bất thường ko à?

    1. Luân Trần Admin

      Mỗi con số được tính toán khác nhau, nên bạn không thể nào so sánh 2 cái được đâu.

  8. Tiến Thịnh 21

    Bác luân cho em hỏi tự nhiên dạo này site em ăn cpu rất kinh, vẫn là mã nguồn đó trước có lúc online 500 vẫn chỉ hết 50% cpu thôi mà giờ online 200 nhiều lúc đã hết cpu rồi .
    Cpu(s): 12.8%us, 28.4%sy, 0.0%ni, 28.8%id, 0.0%wa, 0.0%hi, 0.2%si, 29.8%st

    Cái chỉ số %st và %sy này lên rất cao, dạo gần đây site em thường xuyên bị lỗi 502 🙁

    em chạy gói 4cpu của ramnode đây mà, gõ lệnh top -c thì ra
    25497 nginx 20 0 555m 33m 19m S 24.5 3.3 0:24.24 php-fpm: pool www
    25491 nginx 20 0 557m 38m 24m S 20.8 3.8 0:21.38 php-fpm: pool www
    25488 nginx 20 0 555m 35m 22m S 20.2 3.5 0:23.44 php-fpm: pool www
    25512 nginx 20 0 557m 36m 22m S 17.5 3.7 0:19.02 php-fpm: pool www
    1991 mysql 20 0 799m 127m 4028 S 17.2 12.8 2845:56 /usr/sbin/mysqld –basedir=/usr
    25482 nginx 20 0 553m 35m 23m S 16.9 3.6 0:26.52 php-fpm: pool www
    25513 nginx 20 0 558m 37m 23m R 16.9 3.8 0:18.95 php-fpm: pool www
    25496 nginx 20 0 555m 36m 22m S 16.5 3.7 0:23.51 php-fpm: pool www
    25503 nginx 20 0 555m 34m 22m S 16.2 3.5 0:18.16 php-fpm: pool www
    15124 nginx 20 0 664m 64m 21m S 15.5 6.5 43:52.76 nginx: worker process
    25489 nginx 20 0 554m 37m 25m S 15.2 3.8 0:22.81 php-fpm: pool www
    25490 nginx 20 0 554m 37m 25m S 13.9 3.8 0:23.66 php-fpm: pool www
    25495 nginx 20 0 555m 36m 22m S 13.9 3.7 0:22.84 php-fpm: pool www
    25493 nginx 20 0 556m 35m 21m R 10.9 3.6 0:25.27 php-fpm: pool www
    25494 nginx 20 0 554m 33m 20m S 10.9 3.4 0:23.52 php-fpm: pool www
    25492 nginx 20 0 557m 36m 22m S 10.6 3.7 0:21.14 php-fpm: pool www
    25484 nginx 20 0 557m 43m 30m D 9.6 4.4 0:21.42 php-fpm: pool www
    15122 nginx 20 0 664m 62m 21m S 8.6 6.3 43:40.28 nginx: worker process
    25487 nginx 20 0 554m 32m 20m R 6.0 3.2 0:24.16 php-fpm: pool www
    15125 nginx 20 0 650m 51m 21m S 3.6 5.2 44:28.94 nginx: worker process
    25516 nginx 20 0 554m 32m 20m R 3.3 3.3 0:16.74 php-fpm: pool www
    25478 root 20 0 548m 8192 1116 S 2.3 0.8 0:01.35 php-fpm: master process (/etc/ph
    25483 nginx 20 0 558m 40m 25m S 2.3 4.1 0:21.85 php-fpm: pool www
    15123 nginx 20 0 652m 53m 21m S 1.7 5.3 44:29.89 nginx: worker process

    Chủ yếu là thằng php-fpm: pool www ăn hết cpu anh ạ, có cách nào giải quyết không 🙁

  9. Mak Job 1

    Mình dùng lệnh “netstat -n | grep :80 | grep SYN_RECV|wc -l” thấy có một IP có 50 kết nối, như thế có phải là đang bị ddos không Luân nhỉ? nhưng server kiểm tra thì vẫn ok

    1. Luân Trần Admin

      Chưa chắc nó là DDoS nhé bạn, cần xem request cụ thể của IP đó như thế nào trong access.log thì mới chắc được.

  10. Phong 1

    Đơn vị cho thuê server vừa gửi thông báo : Server của mình đi tấn công server khác qua UDP port 53 . Vậy làm sao để kiểm tra được tình trạng này ? Nhờ các bạn giúp đỡ

    1. Luân Trần Admin

      Bạn edit lại nội dung file cấu hình: /etc/nginx/conf.d/domain.com.conf rồi restart lại nginx là ok

        1. Luân Trần Admin

          Bạn dùng luôn lệnh này để block ip:
          iptables -A INPUT -s 1.2.3.4 -j DROP

  11. khachsancatba.vn 1

    Dạo gần đây mình cũng hay thấy trang của mình không truy cập được, nay đọc được bài này thì phải về kiểm tra xem thế nào. Thanks admin nhiều !!!

  12. PNDD 2

    Mình bị ddos flood port 80, mình dùng csf để redirect từ linux qua server chính, mình đã cấu hình firewall chặn block 100 connect trong 10s, cho hỏi như vậy có chặn được ddos hay không ?

    1. Luân Trần Admin

      Bạn phân tích IP tấn công có header như thế nào, có điểm chung để chặn ko?

      1. PNDD 2

        Tấn công kiểu botnet flood port 80 tầm trên 600mb/s, line 100mb thì chỉ thấy tràn rồi bên data nó chặn ip mình ra ngoài thôi chứ không kịp làm gì, mình cho đi qua 1 dedicated linux (600mb) mà không biết có chặn được không, hay linux nó redirect về luôn mà không chặn. Bên máy windows server thì mình firewall chặn hết chỉ nhận mỗi ip của linux.

  13. Mimikkyu 6

    DDoS khó chặn lắm 🙁 Nguyên lý của nó hoạt động của nó như thế này:

    Thay UA của browser thành nhiều UA khác nhau cho mỗi request, mình đếm trong file có khoảng 3k cái UA khác nhau. Hầu hết là các UA của bot crawler như Google, Yahoo, Yandex,… nên hầu hết các server/anti không chặn những request này vì nếu chặn sẽ không tốt cho SEO.
    http://www.fastsnaps.net/f/527ee72e8f0c64.png
    http://www.fastsnaps.net/f/527ee72e8f0c65.png

    Thay string vào sau dấu ?= ví dụ http://hocvps.com/?id=vultr
    Điều này không ảnh hưởng đến quá trình load trang, vẫn sẽ gây tốn CPU gây quá tải. Nhưng lại có thể bypass Anti DDoS cực tốt, vì các URL dạng http://hocvps.com/?id=vultr sẽ không được cache. Nên các dịch vụ anti thường cho các URL này “bypass to origin”.
    http://www.fastsnaps.net/f/527ee72e8f036d.png

    Cuối cùng là tạo vài nghìn request qua các Proxy hoặc Socks, hàng nghìn IP request liên tục thì Anti nào đỡ nổi?
    http://www.fastsnaps.net/f/527ee72e8f036c.png

    1. Mimikkyu 6

      Mình viết cmt bằng hiểu biết của mình :v nếu có gì sai mong mọi người lượng thứ 😀

Comment của bạn

Your email address will not be published. Required fields are marked *