Tài liệu gốc tham khảo tại: https://www.missioncriticalemail.com/2018/10/19/using-zimbras-dosfilter-and-failed-login-lockout-policy-together/
Zimbra DoSFilter là cơ chế chặn các địa chỉ IP liên tiếp đăng nhập sai đến mail server. Ngoài ra, Zimbra còn có Failed Login Lockout Policy trong COS nhằm đặt account vào trạng thái Locked Out khi account này liên tiếp đăng nhập sai. Mục đích là ngăn chặn các cuộc tấn công dạng Brute force. Ta có thể kết hợp cả 2 cơ chế này để tăng độ bảo mật cho Mail server.
Trước đây, Fail2ban thường được sử dụng để chặn các địa chỉ IP xấu (có số lần đăng nhập sai vượt ngưỡng). Fail2ban có một bất lợi khi hệ thống của bạn sử dụng mô hình Multi server vì log file thường được lưu tập trung trên mailbox server trong khi bạn lại muốn áp dụng Fail2ban cho cả mailbox server lần MTA, Proxy server. Thường thì bạn phải triển khai nhiều Fail2ban instance trên toàn bộ các server này. Mặt khác, nếu bạn sử dụng phiên bản NE hoặc dịch vụ hỗ trợ kỹ thuật cho OSE thì đội ngũ hỗ trợ kỹ thuật của Zimbra chỉ hỗ trợ xử lý các vấn đề liên quan đến DoSFilter mà không hỗ trợ Fail2ban.
Một điểm cần lưu ý nữa là bạn phải cập nhật file cấu hình của Fail2ban (file jail) để phù hợp với định dạng log mới nếu có thay đổi sau khi nâng cấp phiên bản Zimbra.
Như vậy sử dụng cơ chế DOSFilter của Zimbra sẽ dễ hơn nhiều so với sử dụng Fail2ban.
Bạn sẽ cần cấu hình DOSFilter trên giao diện dòng lệnh. Còn Failed Login Lockout Policy thì có thể cấu hình qua giao diện đồ họa (bạn vẫn có thể cấu hình qua giao diện dòng lệnh nếu muốn).
Chiến thuật là ta sẽ sử dụng DOSFilter làm lớp phòng thủ đầu tiên. DOSFilter sẽ chặn các địa chỉ IP xấu trước khi Failed Login Lockout Policy được thực hiện. Bằng cách này, người dùng sẽ không bị lock out nếu hacker tấn công sử dụng account name của họ từ một địa chỉ IP nào đó.
Các bước thực hiện:
Ta sẽ cấu hình DOSFilter trong vòng 30 phút sẽ chặn các địa chỉ IP xấu có hơn 10 lần đăng nhập sai, cũng như chặn các IP tạo ra hơn 100 request trong 1 giây (và làm cho server bị quá tải). Với quyền zimbra user, chạy:
zmprov mcf zimbraHttpDosFilterDelayMillis 20
zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec 100
zmprov mcf zimbraInvalidLoginFilterDelayInMinBetwnReqBeforeReinstating 30
zmprov mcf zimbraInvalidLoginFilterMaxFailedLogin 10
zmprov mcf zimbraInvalidLoginFilterReinstateIpTaskIntervalInMin 5
Như vậy ta đã cấu hình để chặn các địa chỉ IP xấu, bây giờ ta sẽ khóa một mailbox 1 giờ đồng hồ nếu có nhiều hơn 15 lần đăng nhập sai (dùng đúng account name nhưng sai password) từ bất kỳ đâu trong vòng 1 giờ đồng hồ. Để thực hiện, ta vào các COS: Home > Configure > Class of Service > (each class of service) > Advanced > Failed Login Policy và thiết lập:
Enable failed login lockout: đánh dấu check.
Number of consecutive failed logins allowed: 15
Time to lockout the account: 1 hours
Time window in which the failed logins must occur to lock the account: 1 hours
Nếu công ty, cơ quan bạn lớn và có nhiều chi nhánh, có khả năng 1 chi nhánh nào đó có các người dùng cấu hình sai mật khẩu và cố gắng đăng nhập mail server nhiều lần, dẫn đến DoSFilter sẽ chặn WAN IP của chi nhánh đó và tất cả các người dùng khác đều không truy cập được. Trong trường hợp này, bạn có thể muốn “white list” các địa chỉ IP này. Gỉa sử địa chỉ IP WAN của chi nhánh là 35.171.80.173 và bạn đang dùng Zimbra 8.8, bạn chạy lệnh sau dưới quyền Zimbra user.
zmprov mcf +zimbraHttpThrottleSafeIPs 35.171.80.173/32
Kết hợp các bước nêu trên, bạn sẽ có một cách hữu hiệu để chống lại “kẻ xấu” trong khi vẫn cho phép người dùng đầu cuối truy cập vào mail server.