0

Разбираемся со встроенной DoS защитой в Zimbra

После увеличения количества пользователей Zimbra появились жалобы, что при входе в веб интерфейс появляется «Ошибка сети». Эта проблема связана с работой встроенного в Zimbra 8.0 и старше метода защиты от DoS

Пользователи начали жаловаться, что периодически при попытке входа возникает «Ошибка сети». Анализ логов выявил следующее сообщение:

2016-04-12 09:22:30,489 INFO  [qtp509886383-3765:http://127.0.0.1:80/service/soap/AuthRequest] [] misc - Access to IP 1.2.3.4 suspended, for repeated failed login.

Выяснилось, что это срабатывает встроенная, начиная с версии 8.0 защита от DoS. Настройка осуществляется с помощью нескольких параметров:

  • zimbraHttpDosFilterDelayMillis — задержка, которая применяется ко всем запросам выше лимита, прежде чем они будут рассмотрены. В миллисекундах. Возможны варианты в виде значения от -1,0,1 и более. Где -1 — отклонять запросы сразу. 0 — не выставлять задержку, 1 и более — задержка в мс. По-умолчанию -1.
  • zimbraHttpDosFilterMaxRequestsPerSec — Лимит количества запросов в секунду. По-умолчснию 30
  • zimbraHttpThrottleSafeIPs — белый список IP, с которых запросы не проверяются на их количество.

Решение проблемы кроется в подкручивании этих ручек до комфортных значений и последующего перезапуска mailbox сервиса (zmmailboxdctl restart)

Однако, есть нюансы, если у Вас так называемая «Multi server» кофигурация, то есть несколько mailbox серверов за proxy.

Что бы все это дело работало, необходимо для начала сделать так, что бы mailbox знали о реальных IP, с которых приходят запросы. По-умолчанию в логах отображается IP proxy.
Это, конечно, логично, но пока я обратил внимание на IP адрес запроса в логах чуть крутилку DoS фильтра не сломал…

Для этого проверяю текущее значение параметра zimbraMailTrustedIP:
$ zmprov gcf zimbraMailTrustedIP
Добавляю IP zimbra-proxy
$ zmprov mcf +zimbraMailTrustedIP 10.202.1.31
выполняю на всех mailbox серверах:
$ zmmailboxdctl restart

После этого в логах будут реальные IP и политики DoS будут применяться к ним и все будет работать как задумано.

Alexey Egorychev

FreeBSD and Linux sysadmin. Know many systems like mailsystems, DB, WWW stack. Automation with salt, ansible. Monitoring with nagios, zabbix.