Mô hình hoạt động của hệ thống

Một phần của tài liệu Xây dựng giải pháp chống tấn công từ chối dịch vụ trên tầng ứng dụng cho websites (Trang 28 - 32)

Như đã trình bày ở phần trên về cách triển khai và các module cần thiết của hệ thống tác giả xây dựng hệ thống với các hoạt động như sơ đồ logic sau đây:

Hình 6. Sơ đồ logic của hệ thống.

Quá trình xử lý một request từ người dùng gửi lên thông quan hệ thống chống tấn công từ chối dịch vụ như sau:

Khi một request gửi lên hệ thống sẽ kiểm tra request đó có phải đến từ bot của trình duyệt không bằng cách kiểm tra useragent trong headers của request xem có trình với các useragent mà bot của trình duyệt dùng không. Nếu request đó là đến từ bot tìm kiếm thì sẽ chuyển qua module xác thực bot tìm kiếm phù hợp. Nếu không thì sẽ chuyển qua module xác thực người dùng để xác thực tính hợp lệ của người dùng đó.

Xác thực bot từ các công cụ tìm kiếm: dùng phương pháp như đã nói ở phần 1.2.2.2 để xác thực xem bot có hợp lệ hay không. Ở phần này hệ thống sẽ dự vào giá trị useragent để xác thực bot theo module phù hợp nhất. Nếu bot được xác thị thì sẽ cho phép request đến website của người dùng. Còn nếu bot không được xác thực ( request giả đạng là bot của các công cụ tìm kiếm để qua mặt tường lửa) thì sẽ cấm không cho truy cập tiếp vào web.

Xác thực người dùng: bước đầu tiên để xác thực người dùng là hệ thống sẽ lấy thông tin về việc xác thực người dùng thông qua các đặc điểm riêng của từng người dùng một như địa chỉ ip và useragent …. Nếu đã có thông tin xác thực rằng người dùng cần được xác thực bằng phương thức nào cụ thể thì sẽ đưa thẳng người dùng đến phần xác thực đó. Nếu không có thông tin về việc cần xác thực thì sẽ đi đến phần tiếp. Module xác thực người dùng bao gồm hai module được xây dựng chính: xác thực thông qua javascript và xác thực thông qua captcha. Mức xác thực thông quan captcha chỉ được áp dụng khi người dùng vượt quá giới hạn request ở mức cao hơn hoặc đã không vượt qua được mức xác thực bằng javascript rất nhiều lần. Để xác thực người dùng hệ thống dùng một cookie được sinh ra theo các thông tin riêng của từng người dùng một. Cách thức xác nhận request là khi mỗi request lên hệ thống sẽ sinh ra cookie tương ứng với mỗi người dùng request nếu request của người dùng chưa có cookie xác thực thì sẽ dùng hai module xác thực ở trên để tạo cookie cho người dùng. Nếu người dùng đã có cookie xác thực thì kiểm tra xem cookie đó có giống với cookie mà hệ thống đã tạo ra không, nếu không trùng thì dùng hai module xác thực để tạo cookie cho người dùng, nếu cookie này trùng khớp

thì cho phép request đi qua hệ thống chống tấn công từ chối dịch vụ để đi vào website.

Về phần xác thực người dùng được chia thành hai module như đã nêu trên và được thiết kế để nhằm mục đích xác thực request hợp lệ và bất hợp lệ một cách hiệu quả nhất.

Xác thực người dùng thông qua javascript: như đã nói ở phần 1.2.2.1 thì thường các công cụ tấn công cũng như kể cả botnet thì do cách thiết kế sao cho có thể tấn công vào website một cách nhanh chóng và hiện quả nhất thường chỉ dùng các là tạo ra request sao cho giống với trình duyệt nhất có thể. Phần lớn các công cụ hầu như không có cơ chế xử lý javascript như trình duyệt thật do việc này đòi hỏi tài nguyên rất lớn. Thêm vào đó với việc các thư viện mô phỏng trình duyệt cũng không hoạt động đúng một 100% và phải chỉnh sửa rất nhiều khi một số website dùng cách thức giảm thiểu tốc độc request bằng javascript như để hàm sleep trong mã javascript. Do đó việc dùng javascript để phân biệt người dùng hợp lệ với các request từ người tấn công là khá hiệu quả. Ngoài ra các trình duyệt hiện tại tất cả đều hỗ trợ javascript và ta có thể thiết kế được cách xác thực sao cho người dùng khi vào website không hề hay biết mình bị xác thực. Điều này đảm bảo cho tính trong suốt cũng như tính tương thích của hệ thống chống tấn công từ chối dịch vụ như ta đã nêu ở phần 1.2.1. Phần này đơn giản nhất là dùng mã javascript để tạo cookie xác thực cho người dùng sau đó reload lại trang web, quá trình này sẽ gần như không thể nhận ra được bởi người dùng và thời gian cho quá trình xác thực sẽ rất ngắn.

Xác thực thông qua captcha: như đã nói ở trên việc xác thực bằng javascript tuy rất hiệu quả nhưng một số trường hợp các công cụ tấn công đặc biệt được đầu tư thời gian phát triển có thể dùng nhiều biệt pháp khác nhau để vượt qua được cách xác thực này. Trong thời điểm những năm 2013 mã độc được thiết kế để tấn công một loạt website của Việt Nam đã dùng cách tài trang web thông qua trình duyệt mặc định của windows là internet explorer sau đó lấy cookie từ request này để dùng cho các request tấn công sau. Với cách thức này người tấn công đã qua mặt

được cơ chế bảo vệ bằng javascript của một số website đang dùng hồi đó kể cả vnexpress khi họ dùng một module là roboo để chặn tấn công ddos. Captcha đã được dùng trong rất nhiều năm qua, mục đích đầu tiên của captcha thường là dùng cho các trang có thông tin người dùng. Các website có thông tin người dùng cần loại bỏ những thông tin được tạo ra không phải con người như các thông tin đăng ký, bảo vệ các trang đăng nhập vào hệ thống. Captcha được thiết kế thông thường mà một nội dung nào đó được thể hiện dưới dạng hình ảnh hoặc âm thanh mà chỉ có con người có thể nhận biết được, máy rất khó hoặc không thể nhận biết được. Với cách này việc phân biệt người và máy rất đơn giản và đạt được hiệu quả rất cao, kể cả với các công nghệ mới nhất bây giờ như deep learning cũng khó có thể qua mặt được cách nhận dạng này. Với module xác thực người dùng thông qua captcha này để có được cookie xác thực người dùng phải gửi lại được captcha hợp lệ lên hệ thống. Nếu captcha không hợp lệ thì phải gửi lại đến khi đúng thì thôi. Tuy hiệu quả rất cao nhưng do khi xác thực người dùng bằng captcha thì phương thức xác thực này không thực sự trong suốt với người dùng, do đó phương thức này chỉ dùng khi người dùng có quá nhiều đặc điểm giống với request tấn công từ chối dịch vụ.

Một phần của tài liệu Xây dựng giải pháp chống tấn công từ chối dịch vụ trên tầng ứng dụng cho websites (Trang 28 - 32)

Tải bản đầy đủ (PDF)

(60 trang)