Hướng Dẫn Tích Hợp SafeLine WAF với Apache APISIX
Bạn muốn thêm một tường lửa ứng dụng web (WAF) mã nguồn mở mạnh mẽ vào cổng API của mình? Trong hướng dẫn này, chúng ta sẽ cùng nhau tích hợp SafeLine WAF với Apache APISIX, giúp bảo vệ toàn diện lưu lượng truy cập và chặn các yêu cầu độc hại như SQL injection, XSS và nhiều hơn nữa.
Mục Lục
- Giới Thiệu về APISIX và SafeLine
- Yêu Cầu Hệ Thống
- Bước 1: Cấu Hình SafeLine cho Lưu Lượng TCP
- Bước 2: Mở Cổng 8000
- Bước 3: Cài Đặt APISIX (qua Docker)
- Bước 4: Kết Nối SafeLine với APISIX
- Bước 5: Tạo Một Tuyến Đường APISIX với WAF Kích Hoạt
- Bước 6: Kiểm Tra Cài Đặt Bảo Mật
- Mẹo Cuối: Kích Hoạt Bảo Vệ Trang Web cho WAF Địa Phương
- Kết Luận
- Tham Gia Cộng Đồng SafeLine
Giới Thiệu về APISIX và SafeLine
Apache APISIX là một cổng API hiệu suất cao, thân thiện với đám mây, cung cấp các tính năng như định tuyến động, chia tách lưu lượng và cân bằng tải.
SafeLine WAF, được phát triển bởi Chaitin Tech, cung cấp khả năng bảo vệ HTTP tiên tiến và một công cụ phát hiện tích hợp để bảo vệ các ứng dụng web.
Với APISIX v3.5.0 hoặc cao hơn, plugin chaitin-waf có thể dễ dàng định tuyến lưu lượng qua SafeLine để kiểm tra an ninh.
Yêu Cầu Hệ Thống
- APISIX ≥ 3.5.0
- SafeLine ≥ 5.6.0
Bước 1: Cấu Hình SafeLine cho Lưu Lượng TCP
Mặc định, SafeLine sử dụng Unix sockets để giao tiếp. Để tích hợp với APISIX, hãy chuyển sang chế độ TCP.
bash
cd /data/safeline/resources/detector/
Chỉnh sửa detector.yml và thêm các dòng sau:
yaml
bind_addr: 0.0.0.0
listen_port: 8000
Cấu hình này sẽ cho phép SafeLine lắng nghe trên cổng 8000 cho lưu lượng TCP.
Bước 2: Mở Cổng 8000
Sửa đổi compose.yaml để mở cổng 8000 cho container SafeLine:
bash
cd /data/safeline/
Thêm phần ports vào dịch vụ detect:
yaml
detect:
...
ports:
- 8000:8000
Khởi động lại SafeLine:
bash
docker compose down
docker compose up -d
Bước 3: Cài Đặt APISIX (qua Docker)
Sao chép và chạy APISIX sử dụng Docker:
bash
git clone https://github.com/apache/apisix-docker
cd apisix-docker/compose
echo 'APISIX_DOCKER_TAG=3.5.0-debian' >> .env
docker compose -f docker-compose-release.yaml up -d
Truy cập:
- Endpoint kinh doanh: http://127.0.0.1:9080/
- Admin API: http://127.0.0.1:9180/
Bước 4: Kết Nối SafeLine với APISIX
Liên kết công cụ phát hiện của SafeLine với APISIX qua Admin API:
bash
curl http://127.0.0.1:9180/apisix/admin/plugin_metadata/chaitin-waf \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' \
-X PUT -d '
{
"nodes":[
{
"host": "192.168.99.11",
"port": 8000
}
]
}'
Bước 5: Tạo Một Tuyến Đường APISIX với WAF Kích Hoạt
Tạo một tuyến đường trong APISIX với bảo vệ của SafeLine WAF:
bash
curl http://127.0.0.1:9180/apisix/admin/routes/1 \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' \
-X PUT -d '
{
"uri": "/*",
"plugins": {
"chaitin-waf": {}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"192.168.99.12:80": 1
}
}
}'
Bước 6: Kiểm Tra Cài Đặt Bảo Mật
Kiểm tra với một yêu cầu bình thường:
bash
curl 'http://127.0.0.1:9080/'
Mô phỏng một cuộc tấn công SQL injection:
bash
curl 'http://127.0.0.1:9080/' -d 'a=1 and 1=1'
Phản hồi dự kiến:
json
{
"code": 403,
"success": false,
"message": "blocked by Chaitin SafeLine Web Application Firewall",
"event_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
Mẹo Cuối: Kích Hoạt Bảo Vệ Trang Web cho WAF Địa Phương
Sau khi chuyển sang chế độ TCP, đừng quên cập nhật cấu hình NGINX để bảo vệ trang web địa phương.
- Nhân đôi tệp cấu hình:
bash
cp /data/safeline/resources/nginx/safeline_unix.conf /data/safeline/resources/nginx/safeline_http.conf
- Chỉnh sửa
nginx.conf:
nginx
# include /etc/nginx/safeline_unix.conf;
include /etc/nginx/safeline_http.conf;
- Khởi động lại SafeLine:
bash
docker restart safeline
Kết Luận
Bằng cách thực hiện các bước trên, bạn đã tích hợp thành công SafeLine WAF với APISIX để bảo vệ cổng API của mình. Bạn có thể bảo vệ các API khỏi các cuộc tấn công phổ biến như SQL injection, XSS và nhiều hơn nữa.
Tham Gia Cộng Đồng SafeLine
Thực Hành Tốt Nhất
- Luôn cập nhật phiên bản mới nhất của APISIX và SafeLine để tận dụng các tính năng bảo mật mới nhất.
- Kiểm tra định kỳ các cấu hình bảo mật để đảm bảo không có lỗ hổng nào tồn tại.
Những Cạm Bẫy Thường Gặp
- Không thay đổi địa chỉ IP và cổng trong cấu hình đúng cách có thể dẫn đến lỗi kết nối.
- Bỏ qua bước kiểm tra bảo mật có thể khiến API của bạn dễ bị tấn công.
Mẹo Hiệu Suất
- Đảm bảo rằng hệ thống của bạn có đủ tài nguyên để xử lý lưu lượng truy cập, đặc biệt khi có tấn công lớn.
- Sử dụng caching để giảm tải cho APISIX và cải thiện tốc độ phản hồi.
Câu Hỏi Thường Gặp
- SafeLine WAF có miễn phí không?
Có, SafeLine WAF là mã nguồn mở và miễn phí sử dụng. - Tôi có thể sử dụng SafeLine WAF với các cổng API khác không?
Có, SafeLine WAF có thể tích hợp với nhiều cổng API khác nhau, không chỉ APISIX. - Cách khắc phục khi xảy ra lỗi kết nối?
Kiểm tra các cấu hình địa chỉ IP và cổng, đảm bảo rằng chúng khớp với cấu hình của APISIX.