Thứ Năm, 30 tháng 3, 2017

Hướng dẫn block User Agent với Ngin

Khi sử dụng Nginx, bạn có thể dễ dàng block request GET / POST bất kỳ dựa theo User Agent.
gun
Mình tìm hiểu phương pháp này khi website thường xuyên bị spam mail với nhiều IP khác nhau, tuy nhiên điểm chung là header của chúng giống hệt nhau. Nginx block rất hiệu quả.
Ngoài ra, bạn có thể ứng dụng để block Bot, Spider, chống crawl…

Hướng dẫn block User Agent với Nginx

Mở file cấu hình tên miền (nếu dùng HocVPS Script file cấu hình ở đường dẫn /etc/nginx/conf.d/), trong section server, hãy thêm đoạn code if sau:
server {
    listen       80 default_server;

    root         /home/hocvps.com/public_html;
    index index.php index.html index.htm;
    server_name hocvps.com;

    # case sensitive matching
    if ($http_user_agent ~ (Antivirx|Arian)) {
        return 403;
    }

    # case insensitive matching
    if ($http_user_agent ~* (netcrawl|npbot|malicious)) {
        return 403;
    }

    ....
}
Sau đó nhớ restart lại Nginx.
Tùy bạn lựa chọn:
  • case sensitive matching: phân biệt chữ in hoa, chữ in thường
  • case insensitive matching: không phân biệt in hoa, in thường
Để tìm được header cần filter, tất nhiên bạn sẽ phải phân tích file access.log trước.
Để test kết quả bạn có thể dùng lệnh wget kèm theo option --user-agent, ví dụ:
wget --spider --user-agent "malicious bot" http://domain.com
Đây là đoạn code mình dùng để block request spam comment các bạn có  thể tham khảo thêm:
    #Block Spam comment
    location ~* /wp-comments-post\.php$ {
        if ($http_user_agent ~* "x11; linux i686; rv:17" ) {
            return 403;
        }
    }
Chúc bạn thành công.

Không có nhận xét nào:

Đăng nhận xét