Kinh nghiệm hạn chế ddos với apache server

Thảo luận trong 'Dos/DDOS' bắt đầu bởi adamdj, 02/10/16, 08:10 AM.

  1. adamdj

    adamdj VIP Members

    Tham gia: 24/08/16, 06:08 AM
    Bài viết: 128
    Đã được thích: 88
    Điểm thành tích:
    28
    A/ Hiểu thế nào về DOS và DDOS
    1.Với DDOS chắc các bạn đã biết là rất tệ nạn hiện nay và về cơ bản nó rất độc hại và khó chống đỡ, chúng ta gọi là hạn chế thiệt hại.

    - Một cách hiểu nôm na thế này, DOS (Deny of service) thì là tấn công đơn lẻ từ một IP, nó tạo ra nhiều kết nối cùng lúc tới server, hoặc gửi các yêu cầu xử lý syn tới máy chủ apache, khiến cho máy chủ server không thể xử lý được, và treo và die,....

    - Với tấn công này thì rõ ràng xác định nó rất đơn giản, block IP đơn lẻ đó là xong. Hoặc viết 1 hàm bằng mã nguồn nào đó như PHP,... check số kết nối của nó tới server giới hạn là bao nhiêu vào deny tự động nếu quá mức là xong.

    2. Với DDOS (Distributed Denial Of Service) nó là kiểu tấn công phân tán, có nghĩa là để làm cho máy chủ treo, nó sẽ tạo ra nhiều kết nối, nhiều yêu cầu gửi gói dữ liệu (SYN) tới server không chỉ một IP mà nhiều IP, Nhiều ip như thế cộng lại = 1 IP với số kết nối lớn như DDOS = Server nghẻo. Các thức DDOS như thế thường bắt nguồn từ một chương trình tự động và cấu hình sẵn, và thiết lập cơ bản là giống nhau. Đây sẽ là tiền đề để ta ngăn chặn DDOS.

    B/ Cách thức ngăn chặn giảm thiệt hại
    - Chúng ta sẽ phân ra 2 lĩnh vực bảo vệ đó là với một máy chủ riêng hoặc một hosting.
    - Để chặn được DDOS bạn cần một kiến thức khá nhiều thứ để có thể ngăn chặn hiệu quả, như đọc file log của apache, biết sử dụng các rule hỗ trợ
    1. Với một máy chủ riêng (máy chủ ảo và máy chủ thật) . Trong kinh nghiệm của mình thì dựa trên máy chủ server linux là chính, máy chủ windows thì chưa dùng cũng chưa biết hạn chế nó ra sao, nhưng chắc chắn rằng bạn sẽ cần cài chương trình kiểu như KASpersky cho nó

    - Với máy chủ linux bạn có lợi thế firewall với nền tảng iptable.

    - Với máy chủ này, bạn nên cài ngay cho mình thêm một mod hỗ trợ đó là
    mod_sercurity cho apache server. mod này tạo firewall thì thật sự mạnh mẽ.

    - Bạn có thể tải nó và cách cài đặt bạn xem tại trang chủ: ModSecurity: Open Source Web Application Firewall

    Và việc viết rule của nó là cần thiết cho mỗi bạn, bạn có thể xem hướng dẫn tại:
    ModSecurity

    - Cũng nên hiểu về cấu trúc regular_expressions: Learning to Use Regular Expressions
    - Tôi nhấn mạnh rằng các bạn nên đọc tài liệu hướng dẫn tạo rule của Mod_sercurity thì các bạn hiểu và tạo Rule riêng của mình mới có thể ngăn chặn được. DDOS, được.

    - Khi bạn đã hiểu chút chút về nó, hãy phân tích log file apache của bạn nó liệt kê những gì? (Ip nào tấn công, Tấn công hình thức nào (GET, POST,...) vào đâu, từ nguồn nào (user-agent)....

    - Để hiểu rõ hơn về thông tin log apache bạn nên tìm hiểu tại đây:
    Log Files - Apache HTTP Server

    - Với mục đích bảo mật của forum này, mình sẽ không tiết lộ code rule bảo mật của nó, bạn có thể tự khai thác thông tin và viết rule giải quyết vấn đề.
    ---> Để an toàn cho server của mình, các bạn cũng nên cài thêm firewall quan trọng đó là CSF, nó cho phép chống gần như rất nhiều hình thức DDOS, cách cài đặt và cấu hình nó tham khảo tại:

    CSF Install Guide - How To

    Hi vọng các bạn sẽ có một kiến thức đủ lớn để giải quyết vấn đề DDOS

    2. Chặn DDOS với mod_rewrite (htaccess)

    - Với công cụ này cũng khá đơn giản để ngăn chặn. chúng ta sẽ quan tâm tới một số cách thức sử dụng sau:

    + Nếu xảy ra DDOS, các bạn hãy nhanh chóng đặt ngay pass website bằng cấu hình htaccess và htpaword để tiện xử lý.

    + Vô xem log file và tìm nguồn tấn công từ IP nào, - tính xem mỗi một phút IP đó tấn công liên tục vào đâu bao nhiêu lần, (liên tục vào cùng một địa chỉ - Có khác biệt so với member chỗ này, vì liên tục chỉ vào một vị trí - điểm yếu của auto)

    + Nếu là nguồn 1 IP thì ta thực hiện cấu hình chặn IP như sau: VD:
    order allow,deny
    + Nếu từ nhiều IP, và các IP tấn công không quá nhiều, nhưng có chung một vị trí nện tại môt vị trí nào đó, chẳng hạn ( index.php), các IP đó có thể cùng một user-agent: VD log file:
    Bạn sẽ thấy nó tấn công liên tiếp vào cùng một vị trí index.php nhưng nhiều IP khác nhau, nếu bạn chỉ sử dụng hàm chặn số lần kết nối trong 1 phút từ 1 IP này, chắc không tính ra được, và nhầm với IP thành viên thực.

    - Bạn sẽ chú ý tới các user-agent:

    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)
    OK, rất giống nhau, ta block nó đi thôi.

    - Nếu bạn block cả cụm đó, bạn sẽ thấy các máy sử dụng windows 5.1 (XP sp2) và sử dụng IE 6 (MSIE 6.0) sẽ cũng không vô được, vậy bạn không nên block tất nó, bạn hãy quan tâm tới phần riêng của nó, ở đây phần riêng là CLR 1.0.3705
    OK, block nó thôi, sử dụng code htaccess:

    RewriteEngine on
    RewriteCond %{HTTP_USER_AGENT} ^1.0.3705
    RewriteRule ^(.*)$ http://tên-miền-muốn-gửi-sang

    -Cách làm này dựa theo user-agent, chẳng hạn ở trên thì user-agent có chứa từ “1.0.3705”. Thật đơn giản đúng không? Khi máy chủ web kiểm tra có bot mà user-agent có chứa chuỗi bắt đầu với “1.0.3705”. Khi đó nó sẽ redirects sang cái trang mà bạn định link đến. VD
    Thông tin thêm tại: mod_rewrite - Apache HTTP Server
    Để block một User-agent mà không chuyển sử dụng:

    RewriteCond %{HTTP_USER_AGENT} ^1.0.3705
    RewriteRule ^.* - [F,L]

    Một code khác sử dụng khá hiệu quả, nó block luôn và không chuyển đi đâu

    SetEnvIfNoCase User-Agent "1.0.3705" bad_bot
    Order Allow,Deny
    Allow from all
    Deny from env=bad_bot

    Làm sao biết nó có hoạt động hay không? hãy thử với chỉnh user-agent của chính mình xem sau khi chặn, mình có vào được ko?

    Cách xác định user-agent của mình:

    - tại trình duyệt web, vào địa chỉ sau:
    HTTP User Agent - Browser User Agent ID

    Nó sẽ hiển thị user-agent của bạn tại Your Current Browser User Agent ID
    - Nếu không sử dụng trang web trên, bạn copy và paste vào trình duyệt đoạn code sau:

    javascript:alert(navigator.userAgent)

    và user-agent của bạn sẽ hiển thị
    Thông tin nhiều hơn tìm hiểu tại: Understanding User-Agent Strings
    - Nếu một site nào đó lấy thông tin get nhiều file của bạn từ một trang web, hãy block kết nối trang web đó tới website của bạn:

    RewriteEngine On
    RewriteCond %{HTTP_REFERER} ^http://.*1-vài-ký-tự-trong-domain.com [NC]
    RewriteRule .* - [F]

    Hi vọng với việc làm này sẽ hạn chế được DDOS của bạn
    Nguồn : Sưu tầm
     
    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