O filtro de negação de serviço ou DoSFilter foi adicionado ao servidor de caixa de correio no ZCS 8.0 para acelerar os clientes enviando um grande número de solicitações em um período muito curto de tempo. O DoSFilter é aplicado a todas as solicitações de serviço, caixa de correio e admin. Este recurso foi adicionado com a conclusão do bug 66921 .
A filtragem de DoS é ativada por padrão quando o ZCS 8 é instalado. Pode ser necessário ajustar a configuração para acomodar necessidades ambientais específicas. Desativar DoSFilter não é recomendado.
Identificando falsos positivos
É possível que clientes como o Zimbra Connector for Outlook (ZCO), o Mobile ActiveSync, o zmprov, etc. acionem o DoSFilter. Para o cliente, o serviço de caixa de correio do Zimbra não está disponível. O DoSFilter pode ser identificado no servidor das seguintes maneiras:
/opt/zimbra/log/sync.log
2013-01-15 15: 52: 20,426 AVISO [qtp1635701107-91: https: //10.10.0.54: 443 / Microsoft-Server-ActiveSync? Usuário = zsupport2 & DeviceId = Appl5K0113UN3NR e DeviceType = iPhone & Cmd = FolderSync] [[email protected] ; mid = 64; ip = 71.194.89.54; Cmd = FolderSync; DeviceID = Appl5K0113UN3NR; Versão = 12.1;] sync - Exceção de serviço com.zimbra.common.service.ServiceException: erro ao enviar proxy ao servidor de destino: HTTP / 1.1 503 Serviço indisponível ExceptionId: qtp1635701107-91: https: / 10/10.10.54: 443 / Microsoft-Server-ActiveSync? Usuário = zsupport2 & DeviceId = Appl5K0113UN3NR e DeviceType = iPhone & Cmd = FolderSync: 1358286740426: c5ca7f36bb0a038f Código: service.PROXY_ERROR Arg: (url, STR, "http: //mail.domain.com:80/service/soap/SyncRequest ")
/opt/zimbra/log/zmmailboxd.out
2013-01-15 15: 57: 32.537: AVISO: oejs.DoSFilter: DOS ALERTA: ip = 127.0.1.1, session = null, user = null
Configuração
Os atributos de configuração zimbraHttpDosFilterDelayMillis , zimbraHttpDosFilterMaxRequestsPerSec e zimbraHttpThrottleSafeIPs . Cada atributo é herdado do servidor global ou é configurável no nível do servidor. Nossa recomendação é preservar a configuração padrão sempre que possível.
Atraso de DoSFilter (milissegundos) – zimbraHttpDosFilterDelayMillis
Atraso imposto a todas as solicitações acima do limite de taxa, antes de serem consideradas. -1 = Rejeitar pedido, 0 = Sem atraso, qualquer outro valor = Atraso em ms. O padrão é -1.
Para modificar na configuração global; Por exemplo, defina o atraso para 20 ms:
zmprov mcf zimbraHttpDosFilterDelayMillis 20
Solicitações Máximas de DoSFilter por Segundo – zimbraHttpDosFilterMaxRequestsPerSec
Número máximo de solicitações de uma conexão por segundo. Solicitações em excesso são limitadas. O padrão é 30 e o mínimo é 1.
Para definir o número máximo de solicitações na configuração global:
zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec 100
Endereços IP do DoSFilter Whitelist – zimbraHttpThrottleSafeIPs
Aviso: O Zimbra Collaboration 8.7 anterior não suporta o CIDR, portanto você deve adicionar os IPs individualmente.
Endereços IP para ignorar ao aplicar o Jetty DosFilter. Este atributo não possui um valor padrão, no entanto, esses IPs de loopback são permitidos por padrão:
- 127.0.0.1
- :: 1
- 0: 0: 0: 0: 0: 0: 0: 1
- Todos os servidores de caixa de correio
Você pode verificar se esses hosts foram colocados corretamente na lista de permissões pela entrada de log em /opt/zimbra/log/mailbox.log. Essa entrada de log deve conter todos os hosts whitelisted padrão, bem como quaisquer IPs adicionados ao zimbraHttpThrottleSafeIPs:
2014-09-09 10: 33: 47,772 INFO [main] [] misc - DoSFilter: IP da lista de permissões configurados = 192.168.234.130,127.0.0.1, :: 1,0: 0: 0: 0: 0: 0: 0: 1
Observação: os nós de proxy não precisam estar na lista de permissões, desde que o recurso de IP de origem esteja configurado corretamente no ZCS: https://wiki.zimbra.com/wiki/Log_Files#Logging_the_Originating_IP
Os endereços IP devem ser fornecidos no atributo zimbraHttpThrottleSafeIPs de valores múltiplos. A notação CIDR pode ser usada no ZCS 8.7 e acima. Por favor, note em 8.6, 8.5 e 8.0 você deve usá-lo IP por IP .
Exemplos no ZCS 8.7 ou acima
zmprov mcf zimbraHttpThrottleSafeIPs 10.1.2.3/32 zimbraHttpThrottleSafeIPs 192.168.4.0/24
ou para anexar a uma lista existente de zimbraHttpThrottleSafeIPs com vários valores
zmprov mcf + zimbraHttpThrottleSafeIPs 10.1.2.3/32 zmprov mcf + zimbraHttpThrottleSafeIPs 192.168.4.0/24
Exemplos no ZCS 8.6, 8.5 ou anterior
zmprov mcf zimbraHttpThrottleSafeIPs 10.1.2.3 zimbraHttpThrottleSafeIPs 192.168.4.5
ou para anexar a uma lista existente de zimbraHttpThrottleSafeIPs com vários valores
zmprov mcf + zimbraHttpThrottleSafeIPs 10.1.2.3 zmprov mcf + zimbraHttpThrottleSafeIPs 10.1.2.50 zmprov mcf + zimbraHttpThrottleSafeIPs 192.168.4.5 zmprov mcf + zimbraHttpThrottleSafeIPs 192.168.4.6
Reinicialização do servidor de caixa de correio
Uma reinicialização do servidor de caixa de correio é necessária ao modificar esses atributos.
reinicialização zmmailboxdctl
Usando o DoSFilter para bloquear IPs em logins repetidos com falha – Somente ZCS 8.5+
A partir do ZCS 8.5, você pode bloquear IPs por um período de tempo após várias tentativas de login com falha. Note que isto honra zimbraHttpThrottleSafeIPs , portanto, se configurado, ele não bloqueará os IPs na lista de permissões.
Você estará olhando para estes valores:
zimbraInvalidLoginFilterDelayInMinBetwnReqBeforeReinstating: 15 zimbraInvalidLoginFilterMaxFailedLogin: 10 zimbraInvalidLoginFilterReinstateIpTaskIntervalInMin: 5
zimbraInvalidLoginFilterDelayInMinBetwnReqBeforeReinstating define por quanto tempo um IP é bloqueado.
zimbraInvalidLoginFilterMaxFailedLogin define o número de logins com falha antes que um IP seja bloqueado.
zimbraInvalidLoginFilterReinstateIpTaskIntervalInMin define quanto tempo entre a execução do processo para desbloquear os IPs.
Exemplos
Para definir o filtro DoS para bloquear um IP após 5 tentativas de login malsucedidas por 25 minutos, você faria isso:
zmprov mcf zimbraInvalidLoginFilterDelayInMinBetwnReqBeforeReinstating 25 zmprov mcf zimbraInvalidLoginFilterMaxFailedLogin 5 reinicialização zmmailboxdctl
Considerações de ajuste – 8.0.3 e posterior
Servidores membros do ZCS
Os servidores ZCS sob o controle de um único servidor LDAP mestre são automaticamente permitidos por endereço IP. Esses hosts são descobertos usando uma chamada GetAllServersRequest; ou seja, gás zmprov .
Hosts de provisionamento externo / API SOAP
Hosts de provisionamento externo podem ser adicionados à lista de permissões de IP para garantir que o DoSFilter não bloqueie algumas solicitações. Por exemplo, uma reindexação de caixa de correio pode fazer várias chamadas por segundo que podem acionar o DoSFilter.
ZCS 8.0.0 – 8.0.2
Veja este link nos fóruns do Zimbra para obter informações sobre como configurar o DoSFilter para as versões do ZCS 8 anteriores à 8.0.3.