ModSecurity là một ứng dụng tường lửa web (Web Application Firewall – WAF) mã nguồn mở, giúp bảo vệ các ứng dụng web khỏi các cuộc tấn công phổ biến như SQL injection, cross-site scripting (XSS), và nhiều loại tấn công khác. Kết hợp với Nginx, nó cung cấp một lớp bảo mật mạnh mẽ cho server của bạn.
Trong bài viết này, chúng ta sẽ thực hiện các bước cài đặt ModSecurity với Nginx trên hệ điều hành Debian/Ubuntu.
Bước 1: Cập nhật hệ thống
Trước khi bắt đầu, hãy đảm bảo rằng hệ thống của bạn được cập nhật các gói phần mềm mới nhất:
sudo apt update
sudo apt upgradeBước 2: Cài đặt các gói phụ thuộc
ModSecurity yêu cầu một số gói phụ thuộc, vì vậy hãy cài đặt chúng bằng lệnh sau:
sudo apt install libnginx-mod-http-modsecurity libmodsecurity3Gói libmodsecurity3 là phiên bản thứ ba của ModSecurity, được viết lại với hiệu suất cao hơn và khả năng mở rộng tốt hơn.
Bước 3: Cấu hình ModSecurity trong Nginx
Sau khi cài đặt, bạn cần cấu hình Nginx để sử dụng ModSecurity. Mở file cấu hình Nginx:
sudo nano /etc/nginx/nginx.confThêm dòng sau vào phần http {} để kích hoạt ModSecurity:
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/modsecurity.conf;File modsecurity.conf chứa các quy tắc của ModSecurity.
Bước 4: Cấu hình ModSecurity
ModSecurity cần được cấu hình để hoạt động. Bạn cần tải về và sử dụng tập tin cấu hình mặc định:
sudo mkdir /etc/nginx/modsec
sudo cp /usr/share/modsecurity-crs/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.confMở file cấu hình để chỉnh sửa:
sudo nano /etc/nginx/modsec/modsecurity.confTìm dòng sau và thay đổi giá trị từ DetectionOnly thành On để kích hoạt chế độ phòng thủ:
SecRuleEngine OnBước 5: Tải về và cấu hình Core Rule Set (CRS)
ModSecurity sử dụng Core Rule Set (CRS), một tập hợp các quy tắc bảo mật phổ biến. Hãy tải về CRS:
sudo apt install modsecurity-crs
sudo cp /usr/share/modsecurity-crs/crs-setup.conf.example /etc/nginx/modsec/crs-setup.confCấu hình Nginx để sử dụng CRS:
sudo nano /etc/nginx/nginx.confThêm dòng sau vào phần http {}:
include /etc/nginx/modsec/crs-setup.conf;
include /usr/share/modsecurity-crs/rules/*.conf;Bước 6: Kiểm tra cấu hình và khởi động lại Nginx
Sau khi cấu hình xong, hãy kiểm tra cấu hình Nginx để đảm bảo không có lỗi:
sudo nginx -tNếu không có lỗi, hãy khởi động lại Nginx để áp dụng thay đổi:
sudo systemctl restart nginxBước 7: Kiểm tra hoạt động của ModSecurity
Bạn có thể kiểm tra ModSecurity bằng cách thử thực hiện một số tấn công phổ biến lên ứng dụng web của mình (trong môi trường kiểm thử) và kiểm tra file log của ModSecurity tại:
sudo tail -f /var/log/nginx/error.logVới các bước trên, bạn đã cài đặt và cấu hình thành công ModSecurity với Nginx trên Debian/Ubuntu. Giờ đây, ứng dụng web của bạn sẽ được bảo vệ trước nhiều loại tấn công web phổ biến.