Mar 20, 2018
93 Views

Chống DDoS với Varnish

Written by

Hướng dẫn này viết từ trường hợp thực tế, mình đã chống DDoS thành công cho một người bạn. Nếu bạn cũng đang đau đầu về việc bị DDoS, hãy tham khảo bài viết này biết đâu có thể áp dụng được.

Ngay khi kết nối SSH, mình kiểm tra file access.log thì thấy ngay đúng là server đang bị DDoS.

Một loạt request có cách thức giống nhau, cùng một user-agent, IP khác nhau. Tính sơ sơ cũng phải đến cả trăm request mỗi giây, hỏi sao server không bị overload.

Nếu sử dụng CSF để block từng IP thì không ổn, vì quá nhiều IP. May thay các request này đều có một điểm chung là user-agent trong header giống nhau, như vậy có thể block lại được toàn bộ những request này dễ dàng.

Do CSF không hỗ trợ block theo header, nên mình phải sử dụng Varnish để filter riêng những request này ra và trả về Error 403. Với một đoạn code ngắn bên dưới để trong block sub vcl_recv { ... }, mình đã khống chế hoàn toàn được vụ DDoS.

sub vcl_recv {
        if (req.http.user-agent ~ "Hotbar") {
                return(synth(403,"Not allowed."));
        }

Ý nghĩa của đoạn code trên là filter những request có user-agent chứa Hotbar, nếu có thì trả lại lỗi 403, ngược lại thì pass cho Nginx webserver xử lý.

Article Tags:
· · · · · · · · ·
Article Categories:
Bug & Security · IT & Network
    http://linholiver.com

    https://linholiver.com/diary/about/