Trong thời gian qua mình có phát triển một phần mềm Nginx WAF – Advanced Nginx Management Platform dùng để quản lý nginx và cấu hình cho loadbalancer và WAF để đảm bảo an toàn cho hệ thống dịch vụ, với cấu hình giao diện đơn giản dễ sử dụng
I: Hướng dẫn cài đặt
Phần mềm này yêu cầu hệ điều hành là ubuntu tối thiểu là 22.04 và có quyền root, khi đăng nhập ssh các bạn chạy lệnh
# Clone repository
git clone https://github.com/TinyActive/nginx-love.git
cd nginx-love
# Run deployment script (requires root)
bash scripts/deploy.shSau đó chờ cho hệ thống hoàn thiện cài đặt bạn sẽ có thông tin đăng nhập với IP public, quá trình cài đặt có thể lâu chóng tùy vào cấu hình trong quá trình cài mọi thành phần cần thiết sẽ được triển khai và cài đặt đầy đủ

Lúc này bạn vào phần Access the portal để cấu hình với tài khoản mặc định
Username: admin
Password: admin123Sau khi đăng nhập lần đầu bạn được yêu cầu đổi mật khẩu và bật 2fa cho tài khoản

Bạn cần tiến hành đổi mật khẩu và bật 2FA để đảm bảo an toàn cho hệ thống

Sau khi cấu hình song thì bạn sẽ được chuyển vào Dashboard để sử dụng được phần mềm
II: Cấu hình domain
Để cấu hình domain bạn vào phần domain chọn add domain một giao diện mới sẽ hiện ra

Bạn điền các thông tin cần thiết bao gồm:
- domain name: domain của bạn là gì
- status và loadbalancer algorithm các bạn để nguyên cũng được
- Upstream Backends: là IP và port truy cập tới backend cần điền đầy đủ các thông tin về IP port, bạn có nhiều backend thì chọn add backend để điền thêm
- Domian các bạn có cần waf không nếu có hãy bật Enables Modsecurity lên
Lưu ý cực quan trọng nếu backend của bạn chạy port có ssl thì cần phải kích hoạt Disable SSL Verification lên như hình thì mới có thể truy cập được

như vậy chúng ta đã cấu hình song domain vào hệ thống
2: Cấu hình ssl
Cấu hình ssl thì có hai phần nếu bạn dùng ssl auto thì bạn cần đảm bảo đang trỏ domian về IP và sau đó vào phần ssl chọn auto ssl chọn domain và điền email vào

sau khi được cấp ssl thành công bạn sẽ thấy giao diện như bên dưới

Bây giờ cần kích hoạt ssl cho domain các bạn quay lại phần domain chọn kích hoạt ssl bằng cách nhấn vào biểu tượng cái khiên chờ một lát là ssl sẽ được áp dụng cho domain

Nhấn xác nhận để kích hoạt ssl

Lúc này sau khi xác nhận các bạn có thể vào được domain có ssl rồi

Tiện đây các bạn có thể kiểm tra luôn waf có hoạt động không với payloads đơn giản như bên dưới
<IMG SRC="javascript:alert('XSS');">Nếu bạn đã bật modsec từ đầu thì bạn sẽ nhận được thông báo 403

Bây giờ tôi sẽ tắt waf đi để xem có bị chặn nữa không

Chúng ta sẽ thấy không bị chặn nữa như vậy waf đã hoạt động đúng

III: Quản Lý Log
Để xem được log thì cần chọn vào menu log trong này bạn sẽ thấy toàn bộ log được hiển thị có phân loại các log

Bạn có thể chọn domain cụ thể để xem log của chúng cho dễ theo dõi

Phần Details log sẽ có chi tiết về IP, Path truy cập và trạng thái, ví dụ người dùng bị chặn thì bạn có thể thấy log như sau
IP: 103.107.199.90
GET /?adim=%3CIMG%20SRC=%22javascript:alert(%27XSS%27);%22%3E
Status: 403IV: Cấu hình ALert
Ở đây mình chỉ hướng dẫn cấu hình về Telegram còn Mail thì các bạn cần thêm cấu hình vào file .env backend với các thông số bên dưới sau đó build lại backend và cấu hình tương tự
# SMTP Configuration
SMTP_HOST="smtp.example.com"
SMTP_PORT=587
SMTP_USER="[email protected]"
SMTP_PASS="change-this-to-random-password"Trong phần Alerts & Notifications chọn add channel

Các bạn điền đầy đủ thông tin kết nối vào đây

Sau khi thêm song bạn qua ALert Rule để cấu hình loại cảnh báo, hệ thống có 4 loại cảnh báo phân thành 2 loại
- Cảnh báo về hệ thống như RAM, CPU, DISK
- Cảnh báo về backend: Cert hết hạn, Backend Down

Sau khi thiết lập rule song thì lưu lại khi có vấn đề sẽ nhận được thông báo qua tin nhắn tele như sau ở đây mình ví dụ về backend down
