Giới Thiệu
Nhiều lập trình viên biết đến SafeLine WAF như một tường lửa ứng dụng web miễn phí và tự host. Tuy nhiên, có một điều có thể bạn chưa biết: nhờ vào Tengine (một nhánh của Nginx), SafeLine còn có thể hoạt động như một cân bằng tải với tính năng dự phòng tự động.
Điều này có nghĩa là bạn không chỉ nhận được bảo vệ đa WAF miễn phí mà còn có thể cải thiện tính khả dụng và phân phối lưu lượng mà không cần thêm hạ tầng.
Trong bài viết này, chúng ta sẽ tìm hiểu cách mà SafeLine hoạt động như một WAF và cân bằng tải.
Mục Lục
- Thiết Lập Server HTTP Kiểm Tra
- Thiết Lập Ban Đầu SafeLine WAF
- Chỉnh Sửa Cấu Hình Nginx của SafeLine
- Xác Thực và Tải Lại Nginx
- Kiểm Tra Cân Bằng Tải & Dự Phòng
- Kết Luận
- Tham Gia Cộng Đồng SafeLine
1. Thiết Lập Server HTTP Kiểm Tra
Chúng tôi đã tạo hai server HTTP cơ bản để thử nghiệm. Yêu cầu duy nhất là một route /status
luôn trả về 200 OK
.
Dưới đây là mã Go mà chúng tôi đã sử dụng:
go
package main
import (
"os"
"fmt"
"net/http"
)
func Hello1Handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Tôi là 11111")
}
func Hello2Handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Tôi là 22222")
}
func check(w http.ResponseWriter, r *http.Request){
fmt.Fprintf(w, "check")
}
func main () {
if len(os.Args) > 1 {
http.HandleFunc("/hello", Hello1Handler)
http.HandleFunc("/status", check)
http.ListenAndServe(":8001", nil)
} else {
http.HandleFunc("/hello", Hello2Handler)
http.HandleFunc("/status", check)
http.ListenAndServe(":8002", nil)
}
}
Chạy cả hai phiên bản của dịch vụ - một trên cổng 8001, dịch vụ còn lại trên cổng 8002.
2. Thiết Lập Ban Đầu SafeLine WAF
Trong giao diện quản trị SafeLine, hãy tạo một site mới và trỏ upstream đến một trong các server thử nghiệm (ví dụ: cổng 8001).
Kiểm tra cấu hình bằng cách gửi một vài yêu cầu - chúng nên được chuyển tiếp đúng đến server thử nghiệm đầu tiên của bạn.
3. Chỉnh Sửa Cấu Hình Nginx của SafeLine
Bây giờ là lúc chỉnh sửa cấu hình Nginx nội bộ của SafeLine để hỗ trợ cân bằng tải với kiểm tra tình trạng.
Đi đến:
/data/safeline/resources/nginx/sites-enabled
Mỗi site đã cấu hình sẽ tạo ra một file có tên theo định dạng IF_backend_*.conf
.
Xác định file của site mà bạn nhắm đến (bằng cách kiểm tra cổng hoặc sử dụng cat
).
Trong trường hợp của chúng tôi, file cấu hình là IF_backend_2
.
Chỉnh sửa file này để định nghĩa một khối upstream bao gồm cả hai server (8001 và 8002), và thêm một server upstream để cho phép cân bằng tải dựa trên kiểm tra tình trạng.
4. Xác Thực và Tải Lại Nginx
Xác thực cấu hình của bạn:
docker exec safeline-tengine nginx -t
Nếu hợp lệ, tải lại Nginx để áp dụng các thay đổi:
docker exec safeline-tengine nginx -s reload
5. Kiểm Tra Cân Bằng Tải & Dự Phòng
Kiểm Tra Cân Bằng Tải
Với trọng số bằng nhau, SafeLine bây giờ nên phân phối lưu lượng đều giữa các server trên cổng 8001 và 8002.
Kiểm Tra Dự Phòng
Dừng dịch vụ trên cổng 8002. Tất cả lưu lượng sẽ tự động chuyển sang cổng 8001, xác nhận rằng logic dự phòng của bạn đang hoạt động như mong đợi.
Kết Luận
SafeLine không chỉ là công cụ chặn các cuộc tấn công - nó cũng có thể giúp bạn xây dựng một kiến trúc mạng bền vững hơn. Với chỉ một vài thay đổi nhỏ đối với Nginx tích hợp sẵn, bạn có thể nhận được bảo vệ đa WAF, cân bằng tải và dự phòng ngay lập tức.
Nếu bạn đã và đang chạy SafeLine, hãy thử nghiệm với nó. Bạn có thể nhận ra rằng nó không chỉ là một WAF - mà còn là một công cụ DevOps tiềm ẩn trong hệ thống của bạn.