1. Cài đặt các thư viện phụ thuộc
yum install -y gcc-c++ flex bison yajl yajl-devel curl-devel curl GeoIP-devel doxygen zlib-devel pcre-devel lmdb-devel libxml2-devel ssdeep-devel lua-devel libtool autoconf automake wget epel-release openssl-devel
2. Biên dịch và cài đặt ModSecurity
cd /usr/local/src/
wget http://www.modsecurity.cn/download/modsecurity/modsecurity-v3.0.8.tar.gz
tar zxf modsecurity-v3.0.8.tar.gz
cd modsecurity-v3.0.8
sh build.sh
./configure
make && make install
3. Tải connector ModSecurity cho Nginx
cd /usr/local/src/
wget https://codeload.github.com/SpiderLabs/ModSecurity-nginx/zip/refs/heads/master -O modsecurity-nginx.zip
unzip modsecurity-nginx.zip
mv ModSecurity-nginx-master /usr/local/modsecurity/modsecurity-nginx
4. Kiểm tra tham số biên dịch Nginx hiện tại
nginx -V
Lưu ý các tùy chọn --prefix, --user, --group và các module đã được bật để sử dụng lại khi tái biên dịch.
5. Tái biên dịch Nginx với module ModSecurity
Tải mã nguồn Nginx phiên bản đang sử dụng, giải nén và chạy lệnh cấu hình với module ModSecurity:
./configure --user=www --group=www \
--add-module=/usr/local/modsecurity/modsecurity-nginx \
--prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_gzip_static_module \
--with-http_sub_module \
--with-stream \
--with-stream_ssl_module \
--with-stream_ssl_preread_module \
--with-openssl=/usr/local/src/openssl-1.1.1o \
--with-openssl-opt=enable-weak-ssl-ciphers
make
Lưu ý: Không chạy make install để tránh ghi đè cấu hình hiện có.
6. Thay thế tệp thực thi Nginx
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cp objs/nginx /usr/local/nginx/sbin/
7. Thiết lập thư mục và tệp cấu hình ModSecurity
mkdir -p /usr/local/nginx/conf/modsecurity
cp /usr/local/src/modsecurity-v3.0.8/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity/modsecurity.conf
cp /usr/local/src/modsecurity-v3.0.8/unicode.mapping /usr/local/nginx/conf/modsecurity/
8. Kích hoạt ModSecurity trong Nginx
Chỉnh sửa /usr/local/nginx/conf/nginx.conf trong khối http:
modsecurity on;
modsecurity_rules_file /usr/local/nginx/conf/modsecurity/modsecurity.conf;
9. Cấu hình tệp modsecurity.conf
Mở tệp /usr/local/nginx/conf/modsecurity/modsecurity.conf và chỉnh sửa như sau:
# Bật engine xử lý rule
SecRuleEngine On
# Cấu hình phần nội dung ghi log (bao gồm request body)
SecAuditLogParts ABCDEFHZ
# Tải các rule từ bộ OWASP CRS
Include /usr/local/nginx/conf/modsecurity/crs-setup.conf
Include /usr/local/nginx/conf/modsecurity/rules/*.conf
10. Tải và cài đặt bộ quy tắc OWASP CRS
cd /usr/local/src/
wget http://www.modsecurity.cn/download/corerule/owasp-modsecurity-crs-3.3-dev.zip
unzip owasp-modsecurity-crs-3.3-dev.zip
cd owasp-modsecurity-crs-3.3-dev
cp crs-setup.conf.example /usr/local/nginx/conf/modsecurity/crs-setup.conf
cp -r rules /usr/local/nginx/conf/modsecurity/
cd /usr/local/nginx/conf/modsecurity/rules
mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
11. Xử lý lỗi liên quan đến địa lý IP
Nếu gặp lỗi khởi động Nginx do thiếu cơ sở dữ liệu GeoIP, hãy tắt tạm rule kiểm tra quốc gia rủi ro cao trong tệp:
/usr/local/nginx/conf/modsecurity/rules/REQUEST-910-IP-REPUTATION.conf
Bình luận toàn bộ block rule bắt đầu bằng SecRule TX:HIGH_RISK_COUNTRY_CODES.
12. Khởi động lại Nginx
killall nginx
/usr/local/nginx/sbin/nginx
13. Giám sát nhật ký ModSecurity
tail -f /var/log/modsec_audit.log