hiện nginx và mod_security phổ biến. Mình không bàn luận về công dụng của nginx và mod_security.
đối với các bạn dùng nginx làm reverse proxy + apache thì mod_security không có gì để nói.
nhưng nếu bạn dùng nginx + fastcgi thì khi muốn dùng mod_security thì nó lại là một vấn không dễ dàng gì, Mình mở topic này muốn các bạn và mình chung tay convert mod_security từ apache qua nginx.
Điểm quan trọng ở đây của nginx chính là : request_uri
nếu ta xem lại các rules của mod_security thì quả thật cũng có REQUEST_URI và mình nghĩ tại sao không thử áp dụng vào nginx.
Sau khi áp dụng thử thì kết quả như mong đợi.
Code:
if ($request_uri ~* (/etc/passwd) ) {
return 403;
}
dòng trên có nghĩa là các request_uri sẽ được nginx kiểm tra matches của uri nếu có giá trị là /etc/passwd sẽ trả về lỗi 403.
đây là log debug
2010/04/04 16:07:56 [notice] 2323#0: *592 "(/etc/passwd)" matches "/etc/passwd", client: xxx.xxx.xxx.xxx, server: abc.net, request: "GET /etc/passwd HTTP/1.1", host: "abc.net"
và đây là log của rules
04/Apr/2010:16:07:56 -0400] "GET /etc/passwd HTTP/1.1" 403 131 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3" "-"
mình đã tạo một số rules về xss và inject sql và một số rules khác.
mình biết một mình không thể nào hoàn thiện được nên mở topic này để cùng các bạn trao đổi và có thể hoàn thiện convert rules của mod_security sang nginx.
rất mong mọi người cùng tham gia và thảo luận.