bảo mật web server apache với mod security

79 538 5
bảo mật web server apache với mod security

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bảo mật web server Apache với mod Security PHẦN 1: CƠ BẢN VỀ GIAO THỨC HTTP Phần này chỉ giới thiệu sơ lược các kiến thức cơ bản về giao thức HTTP, tạo tiền đề để phần 2 trình bày về MODSECURITY. Vì vậy, nếu bạn nào cần tìm hiểu sâu hơn, hãy tham khảo RFC hoặc cuốn HTTP Essentials 11. Giới thiệu chung 1.1.1. Lớp của giao thức HTTP HTTP (Hypertext Transfer Protocol) là giao thức thuộc lớp ứng dụng trong mô hình tham chiếu OSI. Hoạt động thông thường ở port 80 và là giao thức hướng kết nối. Nói cách khác, trước khi thực hiện phiên làm việc, giao thức HTTP sẽ thực hiện bắt tay ba bước. Hình 1.1 Lớp của giao thức HTTP 1.1.2. URI – Uniform Resource Identifiers Thông thường, chúng ta thường quen thuộc với định nghĩa URL (Uniform Resource Locators) Địa chỉ http://www.example.com.vn là một ví dụ về URL. Trên thực tế, không có nhiều khác biệt giữa hai khái niệm URL và URI, URL một chỉ là một loại của URI. URI là một đặc điểm kỹ thuật của giao thức HTTP. Như hình dưới cho thấy một URI chứa rất nhiều các thành phần, không đơn giản như URL. Hình 1.2 Cấu trúc đầy đủ của URI - Protocol: Xác định các giao thức và các ứng dụng cần thiết để truy cập tài nguyên, trong trường hợp này là giao thức HTTP - Username: Nếu giao thức hỗ trợ khái niệm về tên người dùng thì username cung cấp tên người dùng để chứng thực truy cập tài nguyên - Password: Mật khẩu truy cập tài nguyên - Host: Tên miền truyền thông cho webserver, - Port: Là port cho các giao thức lớp ứng dụng, ví dụ như HTTP là cổng 80 (có thể bỏ qua tham số này). - Path: đường dẫn phân cấp đến tài nguyên được đặt trên Server - File: Tên các tập tin tài nguyên trên Server - Query: Các tuy vấn thêm thông tin về tài nguyên của Client - Fragment: Một vị trí nào đó trong tài nguyên 1.2. Hoạt động HTTP 1.2.1. Kết nối HTTP thuộc giao thức TCP, vì vậy trước khi tiến hành truyền thông phải thực hiện phiên kết nối TCP. Trước đây, mỗi kết nối TCP sẽ thực hiện chỉ 1 request HTTP và 1 response, nghĩa là nếu client request 2 lần thì sẽ cần 2 phiên kết nối TCP. Điều này gây ra nhiều bất cập, ảnh hưởng rất nhiều đến hiệu năng hoạt động của server. Hình 1.3 Hoạt động của HTTP Hiện nay, giao thức HTTP đã hỗ trợ một phiên kết nối TCP cho phép nhiều HTTP request Hình 1.4 Hoạt động kết nối của HTTP 1.2.2. Pipelining Pipelining cũng nhằm mục đích cải thiện hiệu năng của HTTP. Client không cần phải chờ Server response mới có thể request và ngược lại. Hình 1.5 Hoạt động Pipelining của HTTP 1.2.3. Web Page Retrieval – GET Hoạt động HTTP đơn giản nhất là GET. Đó là cách để Client lấy một đối tượng hoặc tài nguyên nào đó trên Server. Các trình duyệt sẽ yêu cầu một website từ Server với GET. Hình 1.6 Hoạt động GET của HTTP Với ví dụ trên, Client khởi tạo và gởi thông điệp GET đến Server, thông điệp này định danh đối tượng mà Client yêu cầu Server đáp ứng bằng một URI (Uniform Resource Identifier). Server có thể trả về tài nguyên mà Client yêu cầu với một mã trạng thái 200 OK. Nếu Server không đáp ứng được yêu cầu Client thì nó sẽ gởi về một số mã trạng thái khác được mô tả ở bảng bên dưới. Bảng 1.1 Mã trạng thái được trả về của HTTP 1.2.4. Web Forms – POST Trong khi GET cho phép một Server gửi thông tin đến Client, thì hoạt động POST cung cấp một cách để Client gửi thông tin đến các Server. Trình duyệt sử dụng POST để gởi nội dung các Form đến Web Server. Hình dưới cho thấy một ví dụ như vậy. Hình 1.7 Ví dụ về Web Forms POST Hình 1.8 Hoạt động POST của HTTP Như hình trên cho thấy, hoạt động POST đơn giản như GET. Client gửi một thông điệp POST và bao gồm thông tin mà nó muốn gửi đến server. Cũng giống như GET, một phần của thông điệp POST là URI. Nhưng trong trường hợp này, URI xác định các đối tượng trên Server có thể xử lý thông tin. Cũng như GET, Server có thể trả về thông tin cho client. Đối với trình duyệt web, thông tin thường là một trang web mới để hiển thị. 1.2.5. File Upload – PUT Các hoạt động PUT cũng cung cấp một cách để client gửi thông tin đến các Server. Hay nói cách khác, PUT dùng để upload dữ liệu lên server. Như hình dưới cho thấy, hai hoạt động nhìn rất giống nhau. Với POST, Client gửi bao gồm một URI và dữ liệu. Web Server về mã trạng thái, tuỳ chọn kèm theo và dữ liệu. Sự khác biệt giữa POST và PUT ở chỗ URI : Với POST, các URI xác định một đối tượng trên Server mà có thể xử lý dữ liệu. Với một PUT, các URI xác định đối tượng trong đó các Server nên đặt dữ liệu (ví dụ đường dẫn cho Server đặt dữ liệu). Trong khi một POST URI thường chỉ ra một chương trình, script thì PUT uri thường là đường dẫn và tên cho tập tin. Hình 1.9 Hoạt động PUT của HTTP Hình 1.10 Ví dụ về File Upload - PUT 1.2.6. File Deletion – DELETE Với GET và PUT, giao thức HTTP trở thành một giao thức chuyển file đơn giản. Hoạt động DELETE sẽ hoàn thành chức năng này bằng cách giúp client xoá các đối tượng, tài nguyên từ các server. Như hình dưới cho thấy, client gửi một thông điệp DELETE cùng với các URI của đối tượng mà server nên xoá. Các server đáp ứng với một mã trạng thái và dữ liệu kèm theo. Hình 1.11 Hoạt động File Delection - DELETE 1.2.7. Trạng thái - HEAD Các hoạt động của HEAD giống như GET, ngoại trừ Server không trả lại đối tượng thực tế yêu cầu. Cụ thể, server sẽ trả về một mã trạng thái nhưng không có dữ liệu. (HEAD có nghĩa là "tiêu đề," nghĩa là server chỉ trả về thông điệp chứa tiêu đề chứ không chứa dữ liệu) . Client có thể sử dụng thông điệp HEAD khi muốn xác minh rằng một đối tượng có tồn tại hay không,. Ví dụ: Có thể sử dụng thông điệp HEAD để đảm bảo liên kết đến một đối tượng hợp lệ mà không tiêu tốn băng thông. Cache trong trình duyệt cũng có thể sử dụng thông điệp HEAD để xem một đối tượng đã thay đổi hay không, nếu không thay đổi thì hiển thị thông tin đã được lưu trước đây, nếu thay đổi thì sẽ thực hiện GET để lấy dữ liệu về từ Server 1.3. Thông điệp HTTP Các phần trước đã trình bày hoạt động của HTTP, và chúng ta đã xem xét từng thông điệp cụ thể. Không giống như các giao thức truyền thông khác, các thông điệp HTTP chủ yếu là các văn bản tiếng Anh. Thay vì lo lắng về các bit và byte, trong phần này chúng ta xem xét những từ mà HTTP định dạng. Phần này sẽ trình bày cấu trúc tổng thể của thông điệp HTTP. Chúng ta sẽ thấy, một thông điệp HTTP bắt đầu với một “line” hay một mã trạng thái, có thể được theo sau bởi các tiêu đề (header) khác nhau và phần thân (body) của thông điệp. 1.3.1. Cấu trúc của thông điệp HTTP HTTP có hai tác nhân là client và server. Các client gởi yêu cầu (request) và server trả lời (response). Vì vậy, chúng ta sẽ phân tích hai thông điệp chính là HTTP Requests và HTTP Responses. a. HTTP Request [...]... mục chứa modules của apache, đối với distro CentOS là /etc/httpd/modules Code: cp /libs /mod_ security2 .so /etc/httpd/modules/ Sửa lại file httpd.conf để thực hiện load module ModSecurity: Code: vi /etc/httpd/conf/httpd.conf Thêm dòng Code: LoadModule security2 _module modules /mod_ security2 .so - Quy định file cấu hình ModSecurity Chúng ta có thể cấu hình trực tiếp các thông số và rule của ModSecurity... application firewall được Ivan Ristic phát triển dành cho Web Server Apache Ivan Ristic cũng là tác giả quyển sách Mod Security Handbook” Ông là một người có rất nhiều kinh nghiệm trong bảo vệ Web Server Apache Ông đã có nhiều thời gian nghiên cứu Web Application Security, Web Intrusion Detection, và Security Patterns Trước khi chuyển sang lĩnh vực security, Ivan đã có nhiều năm làm việc như một Developer,... t/regression /server_ root/conf/httpd.conf config.status: creating /tools/rules-updater.pl config.status: creating mlogc-src/Makefile config.status: creating mod_ security2 _config.h + Tiến hành biên dịch Code: make Sau khi biên dịch thành công file mod_ security2 .so sẽ được tạo ra trong thư mục libs - Tích hợp ModSecurity vào Apache Để Apache nhận ra sự tồn tại của ModSecurity chúng ta cần copy mod_ security2 .so... dịch vụ liên quan đến web application security Hiện tại ModSecurity sử dụng giấy phép GPL, hoàn toàn miễn phí 2.2 CÁC KHẢ NĂNG CỦA MODSECURITY Hình 2.1 Mô hình tổng quan của ModSecurity - Request filtering: Tất cả các request gửi đến web server đều được phân tích và cản lọc (filter) trước khi chúng được đưa đến các modules khác để xử lý - Understanding of the HTTP protocol: ModSecurity là một tường... cần download chữ ký : Code: wget http://www.modsecurity.org/download/modsecurity -apache_ 2.5.11.tar.gz.asc 02:04:38 (14.8 MB/s) - `modsecurity -apache_ 2.5.11.tar.gz.asc' saved [189/189] + Download Publick Key: Code: gpg keyserver pgp.mit.edu recv-key E77B534D gpg: Total number processed: 1 gpg: imported: 1 + Kiểm tra chữ ký: Code: gpg verify modsecurity -apache_ 2.5.11.tar.gz.asc gpg: Good signature... phiên bản ModSecurity sử dụng là 2.5 Có thể thực hiện trên các Distro khác như Ubuntu, Fedora - Thực hiện tải mã nguồn về Code: wget http://www.modsecurity.org/download/modsecurity -apache_ 2.5.11.tar.gz 01:52:06 (161 KB/s) - `modsecurity -apache_ 2.5.11.tar.gz' saved [1338425/1338425] - Thực hiện tra tính toàn vẹn của mã nguồn (việc này không bắt buộc nhưng chúng ta nên có thói quen kiểm tra để đảm bảo rằng... filtering: ModSecurity có thể phân tích HTTPS - Compressed content filtering: ModSecurity sẽ phân tích sau khi đã giải nén các các dữ liệu được yêu cầu Hình 2.2 Quá trình xử lý các request của Apache và ModSecurity Modsecurity cho phép chúng ta đặt rule tại một trong năm thời điểm trong chu kỳ xử lý của Apache như sau: 1 Phase Request Header: Rule được đặt tại đây sẽ được thực hiện ngay say khi Apache. .. thường đã được biên dịch cùng Apache Có thể kiểm tra lại bằng cách tìm trong httpd.conf dòng: Code: LoadModule unique_id_module modules /mod_ unique_id.so Nếu chưa có, chúng ta phải thêm vào với nội dung như trên - Chuyển vào thư mục chứa mã nguồn và tiến hành biên dịch : Code: cd modsecurity -apache_ 2.5.11 /apache2 / + Tạo Make file : Code: /configure configure: creating /config.status config.status: creating... Nhưng để cho rõ ràng và đảm bảo không sai sót trong quá trình thực hiện - gây ảnh hưởng Apache, Chúng ta nên tạo một file cấu hình riêng và sau đó include vào Trong CentOS các file cấu hình riêng mặc định chứa trong /etc/httpd/conf.d/ Code: vi /etc/httpd/conf.d/modsecurity.conf Thêm vào các thông số cấu hình cơ bản Code: # Bat che do loc cua Modsecurity SecRuleEngine On #... bắt đầu với một tên trường và dấu hai chấm ( Như ví dụ trên, các Message header là Accept: , Accept-Language… Trong HTTP header có rất nhiều trường đảm nhận các tính năng, mục đích khác nhau Bài viết này chỉ mang tính giới thiệu nên sẽ không trình bày Các bạn có thể tham khảo ở http://tools.ietf.org/html/rfc2068 PHẦN 2: MODSECURITY 2.1 GIỚI THIỆU MODSECURITY ModSecurity là một Opensource web application . Bảo mật web server Apache với mod Security PHẦN 1: CƠ BẢN VỀ GIAO THỨC HTTP Phần này chỉ giới thiệu sơ lược các kiến thức cơ bản về giao thức HTTP, tạo tiền đề để phần 2 trình bày về MODSECURITY http://tools.ietf.org/html/rfc2068 PHẦN 2: MODSECURITY 2.1. GIỚI THIỆU MODSECURITY ModSecurity là một Opensource web application firewall được Ivan Ristic phát triển dành cho Web Server Apache. Ivan Ristic cũng. giả quyển sách Mod Security Handbook”. Ông là một người có rất nhiều kinh nghiệm trong bảo vệ Web Server Apache. Ông đã có nhiều thời gian nghiên cứu Web Application Security, Web Intrusion

Ngày đăng: 24/10/2014, 10:49

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan