Hướng dẫn cài đặt Modsecurity Nginx Ubuntu

Trong hướng dẫn này, chúng ta sẽ cấu hình tính năng Nginx Modsecurity trên VPS chạy Ubuntu Linux.

• Ubuntu 18
• Ubuntu 19
• Ubuntu 20
• Nginx 1.18.0
• ModSecurity 3.0.4


I. Cài đặt

1. Cài đặt máy chủ Nginx.

Bỏ qua nếu bạn đã cài đặt trước

apt-get update
apt-get install nginx

2. Cài đặt các gói cần thiết

apt-get install bison build-essential ca-certificates curl dh-autoreconf doxygen flex gawk git iputils-ping libcurl4-gnutls-dev libexpat1-dev libgeoip-dev liblmdb-dev libpcre3-dev libpcre++-dev libssl-dev libtool libxml2 libxml2-dev libyajl-dev locales lua5.3-dev pkg-config wget zlib1g-dev zlibc

3. Cài đặt SSDEP

mkdir /downloads
cd /downloads
git clone https://github.com/ssdeep-project/ssdeep
cd ssdeep/
./bootstrap
./configure
make
make install

sudo ldconfig

4. Tải xuống phiên bản ModSecurity mới nhất.

cd /downloads
git clone https://github.com/SpiderLabs/ModSecurity 
cd ModSecurity 
git checkout v3/master
git submodule init 
git submodule update 

5. Biên dịch và cài đặt ModSecurity.

sh build.sh 
./configure 
make
make install

6. Tải xuống phiên bản mới nhất của trình kết nối Nginx cho ModSecurity.

cd /downloads
git clone https://github.com/SpiderLabs/ModSecurity-nginx

7. Xác minh phiên bản Nginx được cài đặt trên hệ thống của bạn.

nginx -v

Đây là đầu ra

nginx version: nginx/1.18.0

8. Tải xuống mã nguồn của cùng một phiên bản Nginx được cài đặt trên hệ thống của bạn.

Nếu bạn đã cài phiên bản này trước đó, như Thêm hỗ trợ Brotli cho Nginx trên Ubuntu 18.04 thì có thể tận dụng lại. Lưu ý đường dẫn.

cd /downloads
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -zxvf nginx-1.18.0.tar.gz

9. Biên dịch và cài đặt trình kết nối Nginx.

cd nginx-1.18.0
./configure --with-compat --add-dynamic-module=../ModSecurity-nginx
make modules
cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/

10. Tải xuống và cài đặt Bộ quy tắc cốt lõi của ModSecurity

cd /downloads
wget https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/v3.2.0.tar.gz
tar -zxvf v3.2.0.tar.gz
mv owasp-modsecurity-crs-3.2.0 owasp-modsecurity-crs
mv owasp-modsecurity-crs/crs-setup.conf.example owasp-modsecurity-crs/crs-setup.conf
mv owasp-modsecurity-crs/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example  owasp-modsecurity-crs/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
mv owasp-modsecurity-crs /usr/local/

Xin chúc mừng! Bạn đã hoàn tất cài đặt ModSecurity trên máy chủ Nginx.

II. Cấu hình ModSecurity - Nginx

Tạo tệp /etc/nginx/modules-enabled/module-modsecurity.conf với nội dung:

load_module modules/ngx_http_modsecurity_module.so;

Tạo một thư mục có tên Modsec và sao chép các tệp cấu hình cần thiết.

mkdir -p /etc/nginx/modsec
cp /downloads/ModSecurity/unicode.mapping /etc/nginx/modsec/
cp /downloads/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf

Chỉnh sửa tệp cấu hình ModSecurity /etc/nginx/modsec/modsecurity.conf
Xác định vị trí các dòng sau:

SecRuleEngine DetectionOnly # dòng 7
SecAuditLog /var/log/modsec_audit.log # dòng 230

Thay đổi các dòng này thành cấu hình sau:

SecRuleEngine On
SecAuditLog /var/log/nginx/modsec_audit.log

Tạo một tệp vi /etc/nginx/modsec/main.conf để cho phép ModSecurity sử dụng các quy tắc CRS đã cài đặt với nội dung:

Include "/etc/nginx/modsec/modsecurity.conf"
Include "/usr/local/owasp-modsecurity-crs/crs-setup.conf"
Include "/usr/local/owasp-modsecurity-crs/rules/*.conf"

Chỉnh sửa tệp default tại /etc/nginx/sites-available/
Thêm dòng sau vào tệp cấu hình:

modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;

Đây là tệp sau khi cấu hình của chúng tôi:

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        modsecurity on;
        modsecurity_rules_file /etc/nginx/modsec/main.conf;

        root /var/www/html;
        index index.html index.htm index.nginx-debian.html;
        server_name _;
        location / {
                try_files $uri $uri/ =404;
        }
}

Kiểm tra cấu hình và khởi động

nginx -t
nginx -s reload

III. Kiểm tra hoạt động của ModSecurity - Nginx

curl -H "User-Agent: masscan" http://localhost/

Đầu ra:

<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx</center>
</body>
</html>

Sau khi gửi yêu cầu kiểm tra, hãy xác minh nhật ký ModSecurity

tail -f /var/log/nginx/modsec_audit.log

Đầu ra:

...
 [msg "Found User-Agent associated with security scanner"] [data "Matched Data: masscan found within REQUEST_HEADERS:User-Agent: masscan"] [severity "2"] 
...

Xin chúc mừng! :beer: Bạn đã hoàn thành cấu hình ModSecurity trên máy chủ Nginx.