Thuật toán cân bằng tải và những áp dụng cho chống tấn công DDOS #2

Thảo luận trong 'Dos/DDOS' bắt đầu bởi kaitoukid, 23/05/16, 02:05 PM.

  1. kaitoukid

    kaitoukid Wh------

    Tham gia: 18/07/14, 02:07 PM
    Bài viết: 33
    Đã được thích: 27
    Điểm thành tích:
    28
    Thuật toán cân bằng tải và những áp dụng cho chống tấn công DDOS #2



    Như phần 1, mình đã giới thiệu về các thuật toán cân bằng tải, phần 2 mình sẽ giới thiệu về các lĩnh vực và những công cụ đã áp dụng thuật toán cân bằng tải để giải quyết các vấn đề trong thực tế.

    III. Lĩnh vực và Công cụ áp dụng.

    1. Lĩnh vực áp dụng công nghệ “cân bằng tải” .


    Xử lý trong CPU:
    Các tiến trình trong CPU được áp dụng công nghệ trên nhằm sử dụng tài nguyên một các tối ưu, giảm thiểu thời gian hoạt động, tránh tình trạng quá tải.

    Công nghệ DNS:
    Áp dụng cân bằng tải cho hệ thống phân giải tên miền DNS, với mục đích nhằm nhận và trả lời các truy vấn tên miền nhanh chóng, chuyển hướng tới các server đích một cách nhanh nhất.

    Cân bằng tải web:
    Công nghệ cân bằng tải giúp hệ thống web có thể chặn được lưu lượng mạng vào hệ thống, tách và phân chia các yêu cầu thành các phần riêng và quyết định các máy chủ nào sẽ nhận các yêu cầu đó. Từ đó cung cấp khả năng dự phòng lưu lượng mạng, giảm thiểu tối đa khả năng hệ thống web bị tấn công DDOS.

    2. Mô hình áp dụng công nghệ “cân bằng tải”.

    Mô hình cân bằng tải LVS- Direct Routing.
    [​IMG]







    Hoạt động :

    Active Router: Được cấu hình để điều phối các yêu cầu từ bên ngoài tới các máy chủ thực bên trong, hoạt động ở trạng thái Active.

    Backup Router: Được cấu hình tương tự như Active Router nhưng ở trạng thái chờ (Stand-by), khi Active Router gặp sự cố thì thỉ
    Backup Router sẽ thay đế vai trò của nó khi sửa xong lỗi thì Backup Router sẽ nhượng lại vai trò cho Ative Router.

    Máy chủ thực (Real servers ): chứa nội dung dịch vụ website.

    Thuật toán được sử dụng ở mô hình này là Weighted Roud Robin.(tức là điều phối hoạt động của các máy chủ dựa trên khả năng xử lý của từng máy).

    Kỹ thuật sử dụng: LVS-Direct Routing. Mục đích để giám sát các máy chủ. Nếu một trong các máy chủ thực gặp sự cố thì hệ thống sẽ chia yêu cầu cho các máy chủ thực khác trong hệ thống.

    Linux Virtual Server (LVS)- Network Address Translation(NAT).
    [​IMG]







    Hoạt động của LVS-NAT như sau : khi một người dùng truy cập vào một server ảo (do cluster server cung cấp), một gói yêu cầu (request packet) được gửi đến địa chỉ IP ảo (virtual IP address, IP chấp nhận yêu cầu cho Vitual service ) và cân bằng tải. Cân bằng tải xác định địa chỉ đích và số hiệu cổng của gói tin.Nếu nó hợp lệ thì máy chủ ảo sẽ dựa vào bảng quy tắc để chọn một máy chủ thật phục vụ. Các thông tin về kết nối này được lưu vào trong bảng băm(hash) để ghi nhận kết nối. Lần lượt như vậy các yêu cầu của hệ thống sẽ được chuyển tiếp đến các máy chủ thực theo đúng thuật toán của công nghệ cân bằng tải.

    3. Công cụ cân bằng tải.

    Công cụ cân bằng tải phổ biến hiện nay là : HAProxy và KeepAlive, Nginx

    3.1. HAProxy

    Chúng ta cần cài đặt các dịch vụ để sử dụng HAProxy như sau:
    [​IMG]







    Nội dung cơ bản của cấu hỉnh HAProxy nằm ở file cấu hình /etc/haproxy/haproxy.cfg

    Áp dụng thuật toán Load balancing (roundrobin) ta cấu hình HAProxy như sau:
    [​IMG]






    Khởi động HAProxy : service haproxy start

    Ngoài việc hỗ trợ thuật toán Roundrobin thì HAProxy còn hỗ trợ một số các thuật toán cân bằng tải khác như: Least connections, source,…

    Lưu ý: phải có ít nhất 2 server (đóng vai trò là Master và Backup). Khi Master chết thì đã có Backup thay thế vào đó để đảm báo hệ thống luôn hoạt động liên tục.

    3.2. KeepAlive

    Mọi truy vấn của người dùng được gọi qua một Vitual IP.
    [​IMG]







    Sau khi cả 2 server HAProxy1 ,HAProxy2 đã được cài đặt dịch vụ HAProxy thì chúng ta bắt đầu bật chức năngnet.ipv4.ipnonlocalbind.

    Echo “net.ipv4.ip_nonlocal_bind =1”>> /etc/sysctl.conf

    Với mô hình trên ta có thể thấy số lượng server Nginx đằng sau sẽ nhiều hơn trước, nhưng đường từ internet vào (người dùng) truy cập vào vẫn chỉ có một nên rất dễ xảy ra trường hợp bị tắc nghẽn “cổ chai” (bottleneck).

    Mục đích cấu hình KeepAlive là để giải quyết vấn đề tắc nghẽn “cổ chai” (bottleneck) của HAProxy.

    /etc/keepalived/keepalived.conf

    Khởi động dịch vụ

    Service keepalived start

    Kiểm tra máy ảo trên Keepalived Master

    Ip a
    [​IMG]







    Tại đây, Ip ảo đang được gán ở card eth1 trên Mater(HAProxy1),khi HAPoxy1 chết IP này sẽ được dịch vụ KeepAlived Backup trên HAProxy2 gán lại và như thế mọi hoạt động vẫn diễn ra bình thường.

    Cuối cùng chúng ta kiểm tra lại hệ thống.
    [​IMG]







    3.3. Nginx

    Nginx là một máy chủ proxy ngược mã nguồn mở sử dụng phổ biến các giao thức như HTTP, HTTPS, SMTP, POP3 và IMAP. Nginx còn được dùng để cân bằng tải, HTTP cache và máy chủ web. Mục đích chính của Nginx tập trung vào việc phục vụ số lượng kết nối đồng thời lớn, hiệu suất cao, sử dụng ít bộ nhớ. Nginx được biết đến với sự ổn định cao, nhiều tính năng, cấu hình đơn giản và tiết kiệm tài nguyên.

    Cấu hình mặc định của Nginx cho thuật toán Roundrobin có dạng như sau:
    [​IMG]






    Cũng giống như HAProxy thì ngoài việc mặc định cấu hình lấy tShuật toán là Roundrobin thì Nginx còn hỗ trợ các thuật toán cân bằng tải khác như: Least connection, Weighted load balancing, ip hash, least time, …

    Tham khảo cấu hình Nginx cho các thuật toán tại link sau:
    https://www.nginx.com/resources/admi...load-balancer/

    IV. Kết luận

    Việc áp dụng hệ thống cân bằng tải giúp tối ưu lượng băng thông của hệ thống, đảm bảo hệ thống được vận hàng tốt giảm thiểu các nguy cơ bị tấn công DDOS vào hệ thống
     
    Last edited by a moderator: 26/05/16, 12:05 PM
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan