ModSecurity là một tường lửa lớp ứng dụng web được thiết kế để hoạt động với IIS, Apache2 và Nginx. Đây là phần mềm mã nguồn mở miễn phí được phát hành theo giấy phép Apache 2.0. ModSecurity giúp bảo mật máy chủ web của bạn bằng cách theo dõi và phân tích lưu lượng truy cập trang web của bạn. Nó thực hiện điều này trong thời gian thực để phát hiện và chặn các cuộc tấn công từ hầu hết các khai thác đã biết bằng cách sử dụng các biểu thức thông thường. Về bản thân, ModSecurance cung cấp sự bảo vệ hạn chế và dựa vào các quy tắc để tối đa hóa sự bảo vệ.
Bộ quy tắc cốt lõi của Dự án bảo mật ứng dụng web mở (OWASP) (CRS) là một bộ quy tắc phát hiện tấn công chung cung cấp mức bảo vệ cơ bản cho bất kỳ ứng dụng web nào. Bộ quy tắc này là miễn phí, nguồn mở và hiện được tài trợ bởi Spider Labs.
OWASP CRS cung cấp:
- Bảo vệ HTTP - phát hiện vi phạm giao thức HTTP và chính sách sử dụng được xác định cục bộ.
- Tra cứu danh sách đen thời gian thực - sử dụng danh tiếng IP của bên thứ 3.
- Bảo vệ từ chối dịch vụ HTTP - bảo vệ chống lũ HTTP và tấn công HTTP DoS chậm.
- Bảo vệ tấn công web phổ biến - phát hiện các cuộc tấn công bảo mật ứng dụng web phổ biến.
- Phát hiện tự động hóa - Phát hiện bot, trình thu thập thông tin, máy quét và hoạt động độc hại bề mặt khác.
- Tích hợp với AV Scanning để tải lên tệp - phát hiện các tệp độc hại được tải lên thông qua ứng dụng web.
- Theo dõi dữ liệu nhạy cảm - Theo dõi việc sử dụng thẻ tín dụng và chặn rò rỉ.
- Bảo vệ Trojan - Phát hiện ngựa trojan.
- Xác định lỗi ứng dụng - cảnh báo về cấu hình sai của ứng dụng.
- Phát hiện lỗi và ẩn - Ngụy trang các thông báo lỗi được gửi bởi máy chủ.
Cài đặt
Hướng dẫn này chỉ cho bạn cách cài đặt bộ quy tắc ModSecurity và OWASP trên CentOS 6 chạy Apache 2.
Trước tiên, bạn cần đảm bảo rằng hệ thống của bạn được cập nhật.
yum -y update
Nếu bạn chưa cài đặt Apache 2, thì hãy cài đặt nó ngay.
yum -y install httpd
Bây giờ bạn cần cài đặt một số phụ thuộc để ModSecurity hoạt động. Tùy thuộc vào cấu hình máy chủ của bạn, một số hoặc tất cả các gói này có thể đã được cài đặt. Yum sẽ cài đặt các gói bạn không có và thông báo cho bạn nếu bất kỳ gói nào đã được cài đặt.
yum -y install httpd-devel git gcc make libxml2 pcre-devel libxml2-devel curl-devel
Thay đổi thư mục và tải mã nguồn từ trang web ModSecuity. Phiên bản ổn định hiện tại là 2.8.
cd /opt/
wget https://www.modsecurity.org/tarball/2.8.0/modsecurity-2.8.0.tar.gz
Giải nén gói và thay đổi thư mục của nó.
tar xzfv modsecurity-2.8.0.tar.gz
cd modsecurity-2.8.0
Cấu hình và biên dịch mã nguồn.
./configure
make
make install
Sao chép cấu hình ModSecurity mặc định và tệp ánh xạ unicode vào thư mục Apache.
cp modsecurity.conf-recommended /etc/httpd/conf.d/modsecurity.conf
cp unicode.mapping /etc/httpd/conf.d/
Cấu hình Apache để sử dụng ModSecurity. Có 2 cách mà bạn có thể làm điều này.
echo LoadModule security2_module modules/mod_security2.so >> /etc/httpd/conf/httpd.conf
... hoặc sử dụng trình soạn thảo văn bản như nano:
nano /etc/httpd/conf/httpd.conf
Ở dưới cùng của tệp đó, trên một dòng riêng biệt thêm vào đây:
LoadModule security2_module modules/mod_security2.so
Bây giờ bạn có thể khởi động Apache và cấu hình nó để bắt đầu khi khởi động.
service httpd start
chkconfig httpd on
Nếu bạn đã cài đặt Apache trước khi sử dụng hướng dẫn này, thì bạn chỉ cần khởi động lại nó.
service httpd restart
Bây giờ bạn có thể tải xuống bộ quy tắc cốt lõi OWASP.
cd /etc/httpd
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
Bây giờ cấu hình quy tắc OWASP.
cd modsecurity-crs
cp modsecurity_crs_10_setup.conf.example modsecurity_crs_10_config.conf
Tiếp theo, bạn cần thêm bộ quy tắc vào cấu hình Apache. Một lần nữa chúng ta có thể làm điều này theo hai cách.
echo Include modsecurity-crs/modsecurity_crs_10_config.conf >> /etc/httpd/conf/httpd.conf
echo Include modsecurity-crs/base_rules/*.conf >> /etc/httpd/conf/httpd.conf
... hoặc với trình soạn thảo văn bản:
nano /etc/httpd/conf/httpd.conf
Ở dưới cùng của tập tin trên các dòng riêng biệt thêm điều này:
Include modsecurity-crs/modsecurity_crs_10_config.conf
Include modsecurity-crs/base_rules/*.conf
Bây giờ khởi động lại Apache.
service httpd restart
Cuối cùng, xóa các tập tin cài đặt.
yum erase /opt/modsecurity-2.8.0
yum erase /opt/modsecurity-2.8.0.tar.gz
Sử dụng ModSecurance
Theo mặc định, ModSecurity chạy ở chế độ chỉ phát hiện, có nghĩa là nó sẽ ghi lại tất cả các vi phạm quy tắc nhưng sẽ không có hành động. Điều này được khuyến nghị cho các cài đặt mới để bạn có thể xem các sự kiện được tạo trong nhật ký lỗi Apache. Sau khi xem lại nhật ký, bạn có thể quyết định xem có bất kỳ sửa đổi nào đối với quy tắc hoặc vô hiệu hóa quy tắc (xem bên dưới) trước khi chuyển sang chế độ bảo vệ hay không.
Để xem nhật ký lỗi Apache:
cat /var/log/httpd/error_log
Dòng ModSecurity trong nhật ký lỗi Apache được chia thành chín phần tử. Mỗi yếu tố cung cấp thông tin về lý do tại sao sự kiện được kích hoạt.
- Phần đầu tiên cho biết tập tin quy tắc nào đã kích hoạt sự kiện này.
- Phần thứ hai cho biết dòng nào trong tệp quy tắc bắt đầu.
- Phần tử thứ ba cho bạn biết quy tắc nào đã được kích hoạt.
- Yếu tố thứ tư cho bạn biết sửa đổi quy tắc.
- Phần tử thứ năm chứa dữ liệu đặc biệt cho mục đích gỡ lỗi.
- Phần tử thứ sáu xác định mức độ nghiêm trọng đăng nhập của mức độ nghiêm trọng của sự kiện này.
- Phần thứ bảy mô tả hành động nào đã xảy ra và trong giai đoạn nào nó đã xảy ra.
Lưu ý rằng một số thành phần có thể vắng mặt tùy thuộc vào cấu hình máy chủ của bạn.
Để thay đổi ModSecurity sang chế độ bảo vệ, hãy mở tệp conf trong trình chỉnh sửa văn bản:
nano /etc/httpd/conf.d/modsecurity.conf
... và thay đổi:
SecRuleEngine DetectionOnly
đến:
SecRuleEngine On
Nếu bạn gặp phải bất kỳ khối nào khi ModSecurity đang chạy, thì bạn cần xác định quy tắc trong nhật ký lỗi HTTP. Lệnh "tail" cho phép bạn xem nhật ký theo thời gian thực:
tail -f /var/log/httpd/error_log
Lặp lại hành động gây ra khối trong khi xem nhật ký.
Sửa đổi Bộ quy tắc / Vô hiệu hóa ID quy tắc
Sửa đổi một quy tắc là vượt quá phạm vi của hướng dẫn này.
Để vô hiệu hóa một quy tắc cụ thể, bạn xác định id quy tắc nằm trong phần tử thứ ba (ví dụ [id = 200000]) và sau đó vô hiệu hóa nó trong tệp cấu hình Apache:
nano /etc/httpd/conf/httpd.conf
... bằng cách thêm phần sau vào dưới cùng của tệp với id quy tắc:
<IfModule mod_security2.c>
SecRuleRemoveById 200000
</IfModule>
Nếu bạn thấy ModSecurity đang chặn tất cả các hành động trên (các) trang web của bạn, thì "Bộ quy tắc cốt lõi" có thể ở chế độ "Tự chứa". Bạn cần thay đổi điều này thành "Phát hiện hợp tác", chỉ phát hiện và chặn các bất thường. Đồng thời, bạn có thể xem các tùy chọn "Tự chứa" và thay đổi chúng nếu bạn muốn làm như vậy.
nano /etc/httpd/modsecurity-crs/modsecurity_crs_10_config.conf
Thay đổi "phát hiện" thành "Tự chứa".
Bạn cũng có thể định cấu hình ModSecurity để cho phép IP của bạn thông qua tường lửa ứng dụng web (WAF) mà không cần đăng nhập:
SecRule REMOTE_ADDR "@ipMatch xxx.xxx.xxx.xxx" phase:1,nolog,allow,ctl:ruleEngine=Off
... hoặc với việc đăng nhập:
SecRule REMOTE_ADDR "@ipMatch xxx.xxx.xxx.xxx" phase:1,nolog,allow,ctl:ruleEngine=DetectionOnly