Cấu hình ModSecurity trên Nginx trong CentOS 7 để triển khai tường lửa ứng dụng web (WAF)

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

Thẻ: nginx modsecurity centos7 WAF owasp-crs

Đăng vào ngày 2 tháng 6 lúc 23:04