ModSecurity là một sản phẩm tường lửa mã nguồn mở dành cho ứng dụng web,
được phát triển bởi Ivan Ristic cho ứng dụng sử dụng Apache Web Server, sau đó thì nó cũng hỗ trợ thêm cho cả NGINX. Phiên bản đầu tiên được phát hành vào tháng 11
năm 2002, tiếp đó trải qua nhiều phiên bản nâng cấp khác nhau và vào năm 2010 thì ModSecurity được cấp phép dưới giấy phép của Apache Software Lincense giúp cho ModSercurity có thể được tích hợp dễ dàng vào các sản phẩm khác. Vào cuối năm 2015 thì ModSecurity đã được viết lại thay đổi kiến trúc hạ tầng để tạo thành một engine và giao tiếp với web server thông qua API, do đó nó có thể dùng với các Web Server khác như Nginx, IIS,...
ModSecurity là một sản phẩm tường lửa hỗn hợp cho ứng dụng Web, và phải dựa vào Web Server của ứng dụng đó để làm một số việc. Apache giúp ModSecurity thực hiện các tác vụ liên quan đến cơ sở hạ tầng như:
- Giải mã SSL.
- Tách các luồng kết nối đến thành các HTTP request. - Bóc tách gói tin HTTP request ra thành từng phần.
- Gọi đến ModSecurity, chọn các ngữ cảnh cấu hình chính xác. - Tách phần các body của HTTP request nếu cần thiết.
Nếu như ModSecurity hoạt động như một máy chủ ủy quyền thì Apache còn thực hiện:
- Chuyển các yêu cầu tới máy chủ đích (mã hóa hoặc không mã hóa SSL). - Bóc tách gói tin HTTP response ra thành từng phần.
- Tách các phần body của HTTP response nếu cần thiết.
ModSecurity sử dụng một cách tiếp cận hỗn hợp nhờ vào cơ chế bóc tách gói tin HTTP, cách tiếp cận này rất hiệu quả vì nó giúp giảm khối lượng công việc trùng lặp khi xử lý gói tin HTTP. Một nhược điểm của cách tiếp cận đó chính là không phải
có thể không xử lý các dữ liệu do một vài cơ chế an toàn. Neu như sử dụng Apache Web Server thì có các tiếp cận hỗn hợp của ModSecurity sẽ có một vài điểm cần lưu ý:
- Các dòng request và header thường trả về Null-bytẹ Điều này thường sẽ không
gây ảnh hưởng gì đến các hoạt động của ModSecurity vì những dữ liệu Apache không
thể nhìn thấy thì sẽ không gây ảnh hưởng đến module hoặc ứng dụng nàọ
- Apache thường chuẩn hóa các request header, kết hợp nhiều header sử dụng cùng một tên và thu gọn các header mà kéo dài hơn hai dòng. Bước chuẩn hóa này của Apache có thể gây khó khăn cho việc phát hiển các dấu hiệu lẩn tránh tinh vị
- Cơ chế xử lý nhanh các request của Apache làm cho ModSecurity không thể xử lý các request này ngoài việc nhận diện chúng trong bước ghi nhật ký. Các request
không hợp lệ thường bị Apache chối bỏ ngay trước khi ModSecurity kịp xử lý chúng.
Trường thông tin “Server” và “Date” trong các response header thường ẩn với ModSecurity di cơ chế hoạt động của Apache, vì thế các thông tin đó không được giám sát hoặc ghi lạị