Hiển thị kết quả từ 1 đến 1 / 1
  1. #1
    Tham gia
    16-12-2014
    Bài viết
    159
    Like
    1
    Thanked 47 Times in 39 Posts

    Cần chú ý ! Chống DDOS cho WEBSITE với vDDoS Proxy Protection và vDDoS Layer4 Mapping

    Chống DDOS cho WEBSITE: Hướng dẫn cài đặt vDDoS Proxy Protection và vDDoS Layer4 Mapping chống DDOS, ANTIDOS, Flood, SYN... cho WEB SERVER

    Tiếp theo bài lần trước: Cài đặt vDDoS Proxy Protection

    Xin chào các bạn, trong bài hướng dẫn này mình sẽ sử dụng 2 máy chủ: một máy giả lập thành kẻ tấn công từ chối dịch vụ (attacker) và một máy làm mục tiêu bị tấn công (victim).

    Trên máy làm mục tiêu tấn công, mình có 4 trường hợp về việc chạy website như sau: (4 domain cùng trỏ vào 1 hosting LAMP chạy source web Joomla CMS)

    Code:
    1. http://cloudflare-vddos-web.i-com.cf:80 (Traffic proxy đi thông qua Cloudflare's CDN & vDDoS Proxy)
    2. http://cloudflare-web.i-com.cf:8080 (Traffic proxy đi thông qua Cloudflare's CDN)
    3. http://vddos-web.i-com.cf:8081 (Traffic proxy đi thông qua vDDoS Proxy)
    4. http://direct-web.i-com.cf:8082 (Kết nối trực tiếp vào Web Server Apache)
    Code:
    [root@www ]# netstat -lntup
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      864/httpd
    tcp        0      0 0.0.0.0:8082            0.0.0.0:*               LISTEN      864/httpd
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      5747/nginx: master
    tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN      5747/nginx: master


    OK, Ở bước 1: tại máy của kẻ tấn công attacker sẽ dò tìm xem mục tiêu cần tấn công có những thông tin gì bằng công cụ curl:

    4. http://direct-web.i-com.cf:8082 (Kết nối trực tiếp vào Web Server Apache)
    Code:
    [root@attacker ~ ]# curl -L http://direct-web.i-com.cf:8082
    
    <!DOCTYPE html>
    <html lang="en-gb" dir="ltr">
    <head>
            <meta name="viewport" content="width=device-width, initial-scale=1.0" />
                    <meta charset="utf-8" />
            <base href="http://direct-web.i-com.cf:8082/" />
            <meta name="generator" content="Joomla! - Open Source Content Management" />
            <title>Home</title>
            <link href="/index.php?format=feed&amp;type=rss" rel="alternate" type="application/rss+xml" title="RSS 2.0" />
            <link href="/index.php?format=feed&amp;type=atom" rel="alternate" type="application/atom+xml" title="Atom 1.0" />
            <link href="/templates/protostar/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon" />
            <link href="http://direct-web.i-com.cf:8082/index.php/component/search/?Itemid=435&amp;format=opensearch" rel="search" title="Search joomla" type="application/opensearchdescription+xml" />
            <link href="/templates/protostar/css/template.css?b07c885111c1b29246c60f35646efe84" rel="stylesheet" />
            <link href="//fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet" />
            <style>
    </head>
    => Bạn có thể thấy rõ mã HTML của website bằng công cụ curl get về bởi vì nó không hề bị một sự thách thức hoặc kiểm tra nào bởi vDDoS Proxy

    2. http://cloudflare-web.i-com.cf:8080 (Traffic proxy đi thông qua Cloudflare's CDN)
    Code:
    [root@attacker ~ ]# curl -L http://cloudflare-web.i-com.cf:8080
    <!DOCTYPE html>
    <html lang="en-gb" dir="ltr">
    <head>
            <meta name="viewport" content="width=device-width, initial-scale=1.0" />
                    <meta charset="utf-8" />
            <base href="http://cloudflare-web.i-com.cf:8080/" />
            <meta name="generator" content="Joomla! - Open Source Content Management" />
            <title>Home</title>
            <link href="/index.php?format=feed&amp;type=rss" rel="alternate" type="application/rss+xml" title="RSS 2.0" />
            <link href="/index.php?format=feed&amp;type=atom" rel="alternate" type="application/atom+xml" title="Atom 1.0" />
            <link href="/templates/protostar/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon" />
            <link href="http://cloudflare-web.i-com.cf:8080/index.php/component/search/?Itemid=435&amp;format=opensearch" rel="search" title="Search joomla" type="application/opensearchdescription+xml" />
            <link href="/templates/protostar/css/template.css?b07c885111c1b29246c60f35646efe84" rel="stylesheet" />
            <link href="//fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet" />
            <style>
    </head>
    => Cloudflare mặc định thì không thử thách công cụ của bạn khi công cụ ấy tiếp xúc với website cộng với việc vDDoS Proxy cũng không có mặt để đưa ra thách thức kiểm tra thế nên bạn cũng vẫn có thể thấy source HTML của trang web bằng công cụ curl mặc dầu nó đi xuyên qua CDN của CloudFlare.

    1. http://cloudflare-vddos-web.i-com.cf:80 (Traffic proxy đi thông qua Cloudflare's CDN & vDDoS Proxy)

    Code:
    [root@attacker ~ ]# curl -L http://cloudflare-vddos-web.i-com.cf:80
    
    <html><body><script type="text/javascript" src="/aes.min.js" ></script><script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f9c5842006d8c3552b5dba4d25c2c8b2"),b=toNumbers("ad396baa8934584ef179ae25af75b6b2"),c=toNumbers("4d5571fddc3d46ce22abf0636806b0aa");document.cookie="vDDoS="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/";location.href="http://cloudflare-vddos-web.i-com.cf/?d=1";</script></body></html>
    => Có thể thấy trong trường hợp này bạn đã không thể vượt qua sự kiểm tra của vDDoS Proxy bởi vì curl không phải là một trình duyệt đầy đủ để mà có thể xử lý được mã javascript mà vDDoS Proxy đưa ra trong bài test: "browser hay tool?"


    3. http://vddos-web.i-com.cf:8081 (Traffic proxy đi thông qua vDDoS Proxy)
    Code:
    [root@attacker ~ ]# curl -L http://vddos-web.i-com.cf:8081
    
    <html><body><script type="text/javascript" src="/aes.min.js" ></script><script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("7187a67c06c01ec70fa705e69c985366"),b=toNumbers("d5ae1b31d36068285e139d0823c8f490"),c=toNumbers("2849732479830475c796dd532ebee31e");document.cookie="vDDoS="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/";location.href="http://vddos-web.i-com.cf:8081/?d=1";</script></body></html>
    => Cũng tương tự kết quả ở trên bạn đã không thể vượt qua sự kiểm tra của vDDoS Proxy bởi vì curl không phải là một trình duyệt đầy đủ như đã đề cập.

    Kết thúc bước 1.

    Bước 2: chúng ta sẽ cố gắn dùng một công cụ để truy vấn liên hồi giả lập một ý định tấn công từ chối dịch vụ vào 4 website mục tiêu trên (dùng một số tools nào đó có khả năng làm việc này như HTTP benchmark hoặc DOS, SYN, HTTP flood... mà bạn vẫn thường hay sử dụng để DOS site người khác ấy ^^).
    Mình sẽ tiến hành tấn công ở mỗi trường hợp như sau và đưa ra kết quả tương ứng có tấn công được và được gì hay không:

    4. http://direct-web.i-com.cf:8082 (Kết nối trực tiếp vào Web Server Apache)
    Code:
    [root@attacker ~ ]# Attack ->->->-> http://direct-web.i-com.cf:8082
    => Bạn sẽ thấy ngay tình trạng High load trên các tài nguyên cpu + ram + bw ... bởi vì không có một sự giảm thiểu kiểm tra hay thách thức nào từ Web Server Apache:



    2. http://cloudflare-web.i-com.cf:8080 (Traffic proxy đi thông qua Cloudflare's CDN)
    Code:
    [root@attacker ~ ]# Attack ->->->-> http://cloudflare-web.i-com.cf:8080
    => Đối với các công cụ tấn công SYN vào Layer 3-4 cũng không có gì xảy ra, vì bạn chỉ đang tấn công vào IP của Cloudflare, tuy nhiên khi dùng công cụ tấn công Layer 7 thì tình trạng tương tự bên trên sẽ diễn ra trên trang web mục tiêu: high load trên các tài nguyên cpu + ram + bw ...



    3. http://vddos-web.i-com.cf:8081 (Traffic proxy đi thông qua vDDoS Proxy)
    Code:
    [root@attacker ~ ]# Attack ->->->-> http://vddos-web.i-com.cf:8081
    => Công cụ tấn công không vượt qua được sự kiểm tra của vDDoS Proxy -> Apache httpd daemon không bị high load:



    1. http://cloudflare-vddos-web.i-com.cf:80 (Traffic proxy đi thông qua Cloudflare's CDN & vDDoS Proxy)
    Code:
    [root@attacker ~ ]# Attack ->->->-> http://cloudflare-vddos-web.i-com.cf:80
    => Tương tự bên trên công cụ tấn công không vượt qua được sự kiểm tra của vDDoS Proxy -> Apache httpd daemon không bị high load:



    Nếu bạn không có công cụ nào để tấn công mình đề nghị có thể dùng ab rất đơn giản (là một tools HTTP benchmark) để test thử:
    Code:
    ab -n100000 -c500 http://direct-web.i-com.cf:8082/ # High load
    ab -n100000 -c500 http://cloudflare-web.i-com.cf:8080/ # High load
    
    ab -n100000 -c500 http://vddos-web.i-com.cf:8081/ # Bình thường
    ab -n100000 -c500 http://cloudflare-vddos-web.i-com.cf:80/ # Bình thường

    Bước 3: Tất nhiên là những gì diễn ra bên trên nãy giờ chỉ là một bài test với trường hợp 1 Attacker Server đấu với 1 Target Server. Chuyện gì sẽ xảy ra nếu hơn >1000 Attacker Server đấu với 1 Target Server?
    Theo như nguyên lý hoạt động mình đã mô tả về vDDoS Proxy tất nhiên nó cũng sẽ không cho hơn >1000 Bots đó vượt qua bài test chỉ vì chúng quá đông, không bao giờ (trừ phi số bots đó xử lý được javascript), nhưng nếu quá nhiều bots tấn công đồng loạt vào server của bạn -> máy chủ của bạn vẫn sẽ bị high load lý do là vì dành tốn thời gian để đưa ra bài test cho cái bọn hơn >1000 con bots đó. Bởi do đó, bạn nên gửi danh sách hơn >1000 Bots (IP Address/Dãy IP Range của tụi nó) tới các công cụ ở Layer 3-4 để cho nó BLOCK/DROP nó luôn (đó có thể là Hardware Firewall, Iptables, CloudFlare Firewall... vâng vâng) tùy theo mô hình mà bạn đang muốn xây dựng.



    Làm sao có thể làm được điều trên?



    Câu trả lời là sau khi cài xong vDDoS Proxy Protection có thể cài thêm vDDoS Layer4 Mapping: https://github.com/duy13/vDDoS-Layer4-Mapping
    Công cụ này sẽ giúp cho Layer 3-4 của bạn có một danh sách IP cụ thể để DROP/CAPTCHA nó từ xa ở Layer 3-4 trước khi gói tin đó được chuyển lên các tầng trên trong mô hình OSI nữa để xử lý.

    Install vDDoS Layer4 Mapping:
    Code:
    curl -L https://github.com/duy13/vDDoS-Layer4-Mapping/raw/master/vddos-layer4-mapping -o /usr/bin/vddos-layer4
    chmod 700 /usr/bin/vddos-layer4
    /usr/bin/vddos-layer4

    Nếu bạn đang ý định dùng CloudFlare:
    Code:
    Đăng nhập vào CloudFlare.com > Add Your Website > Overview > Zone ID (Lấy Zone ID của bạn)
    Email > My Setting > API Key > Global API Key > View API Key (Lấy API Key của bạn)

    Nếu bạn dùng kết nối trực tiếp, chặn IP bằng CSF & Iptables:
    Homepage: https://configserver.com/cp/csf.html
    Cài CSF như sau:
    Code:
    cd /usr/src/
    wget 'https://download.configserver.com/csf.tgz'
    tar -xvf csf.tgz
    cd csf
    sh install.sh
    chkconfig --levels 235 csf on
    chkconfig --levels 235 lfd on

    Cấu hình CSF (tùy theo cách cấu hình mà bạn vẫn hay dùng với CSF):
    Code:
    cd /etc/csf/
    sed -i 's/TESTING = "1"/TESTING = "0"/g' /etc/csf/csf.conf

    Restart CSF:
    Code:
    csf -r && csf -q && service lfd restart

    Để sử dụng vDDoS-Layer4-Mapping bạn gõ:
    Code:
    /usr/bin/vddos-layer4
    (Chọn tùy chọn 2 hoặc 5 tùy vào ý định của bạn)

    OK bây giờ, Ở bước 4: chúng ta sẽ lặp lại bước 2 một lần nữa, đó là cố gắn dùng công cụ tấn công tẩn vào các mục tiêu website xem chuyện gì sẽ xảy ra khi mà có mặt vDDoS-Layer4-Mapping đang chạy và scan:

    3. http://vddos-web.i-com.cf:8081 (Traffic proxy đi thông qua vDDoS Proxy)
    Code:
    [root@attacker ~ ]# Attack ->->->-> http://vddos-web.i-com.cf:8081
    => Cũng vẫn như cũ: không thể vượt qua bài kiểm tra của vDDoS Proxy -> Apache httpd daemon vẫn không high load. Tuy nhiên khi kiểm tra file /etc/csf/csf.deny bạn sẽ thấy Ip của Attacker đã bị CSF khóa mất:
    Code:
    [root@www ] cat /etc/csf/csf.deny
    54.164.194.1
    1. http://cloudflare-vddos-web.i-com.cf:80 (Traffic proxy đi thông qua Cloudflare's CDN & vDDoS Proxy)
    Code:
    [root@attacker ~ ]# Attack ->->->-> http://cloudflare-vddos-web.i-com.cf:80
    => Cũng vẫn như cũ: không thể vượt qua bài kiểm tra của vDDoS Proxy -> Apache httpd daemon vẫn không high load. Tuy nhiên khi kiểm tra qua trang Cloudflare Firewall bạn sẽ thấy IP Address của Attacker Server đã bị vDDoS-Layer4-Mapping gửi cho CloudFlare khóa lại buộc nhập CAPTCHA mới cho qua:



    Cuối cùng bước 5: Nếu như không may, bạn đang phải nằm dưới một trận tấn công không thể tin nổi với số lượng IP tham gia tấn công lên tới vài trăm ngàn và chúng đều có thể vượt qua bài test Javascript của vDDoS Proxy => bạn có thể thử bật chức năng Captcha-All-Country Mode của vDDoS Layer4 Mapping. Nó sẽ khiến CloudFlare bật CAPTCHA cho 251 quốc gia trên toàn thế giới => việc này tuy sẽ gây một chút bất tiện cho người dùng khi vào web phải qua CAPTCHA tuy nhiên nó sẽ giúp giữ sự sống còn cho trang bạn. (Nhớ thêm Whitelist cho các botsearch).

    Chúc bạn may mắn!
    Được sửa bởi duy13 lúc 08:40 ngày 23-01-2017
    Nhận chống DDoS cho WEBSITE! - Skype: voduy13
    Quote Quote

  2. 4 thành viên Like bài viết này:


Tags for this Thread

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •