Skip to content
Esta página foi traduzida com IA e pode conter imprecisões. Ajude a melhorar no GitHub.

Prevenção de intrusão ​

Prevenção de intrusão no estilo fail2ban: o Gately encontra tentativas de força bruta nos logs, coloca armadilhas em portas sem uso, conta varreduras de portas, adiciona os IPs maliciosos a uma lista de bloqueio e a sincroniza com o firewall do sistema (nftables), que descarta no kernel todo o tráfego deles.

Recursos ​

  • Regras de logs: leem arquivos de log, o journal do systemd, a saída de um comando (como logread -f no OpenWrt) ou os logs de um contêiner Docker, encontram falhas com expressões regulares e bloqueiam o IP que atinge o número de falhas na janela de tempo. Há modelos para SSH, Dropbear, Nginx, Vaultwarden, Home Assistant, Proxmox VE e outros, e no editor você pode colar linhas de exemplo para testar os filtros;
  • Eventos do Gately: falhas de login no painel e bloqueios do WAF também podem alimentar uma regra, sem expressão regular;
  • Portas armadilha: armadilhas em portas que este host não usa (por padrão 23, 135, 1433, 3389, 5900, 6379 e outras). Qualquer origem que se conecte é bloqueada;
  • Detecção de varredura de portas: a origem que se conecta a portas fechadas deste host mais vezes por minuto que o limite é bloqueada;
  • Uma única lista de bloqueio: aqui ficam os bloqueios manuais (incluindo redes CIDR e bloqueios permanentes) e os bloqueios automáticos por falhas de autenticação do serviço web. Os bloqueios são salvos e restaurados após reiniciar;
  • Bloqueios progressivos: se um endereço for bloqueado de novo em 30 dias, a duração dobra até um máximo;
  • Lista de permissões: endereços da LAN, de loopback, de 100.64.0.0/10 (Tailscale) e as redes IPv6 /64 das interfaces deste host são ignorados por padrão (o bloqueio é por /64, então dispositivos com IPv6 público da mesma LAN não são bloqueados junto com o infrator), e você pode adicionar IPs ou redes. Um único endereço IPv6 na lista protege todo o seu /64.

Onde os bloqueios valem ​

AmbienteEfeito de um bloqueioPortas armadilhaDetecção de varredura
Linux (root ou CAP_NET_ADMIN, nftables instalado)Todo o tráfego é descartado no kernel, incluindo SSH, outros programas e o tráfego encaminhado a contêineres Docker e dispositivos da LANTratadas pelo kernel, detectam varreduras que só enviam SYNDisponível
Docker (rede host + cap_add: NET_ADMIN)Igual ao anterior; as regras são gravadas no hostIgualDisponível
Pacote do fnOS, OpenWrt 22.03 ou posteriorIgual ao anterior (roda como root e o nftables já vem incluído)IgualDisponível
Demais casos (Windows, macOS, FreeBSD, Linux sem nftables ou sem permissão)Só os serviços do Gately: encaminhamento de portas, serviço web, STUN, WebDAV, FTP e painelO próprio Gately escuta; só detecta conexões que completam o handshakeIndisponível

O topo da página mostra o status da sincronização com o firewall e, quando indisponível, o motivo e como resolver.

Regras do firewall ​

Com "Sincronizar com o firewall" ligado, o Gately cria a própria tabela inet gately no nftables e não mexe nas regras do sistema (fw4, Docker, ufw etc.):

  • A cadeia prerouting (prioridade -190, depois do rastreamento de conexões e antes do NAT de destino) descarta os pacotes vindos de endereços bloqueados, sejam para este host ou encaminhados a um contêiner ou dispositivo da LAN. As respostas às conexões que o próprio host abre (DNS, espelhos de pacotes etc.) continuam passando mesmo que o outro lado esteja bloqueado. No IPv6 o bloqueio é por /64;
  • A cadeia input só olha as conexões novas a este host, para as portas armadilha e a detecção de varredura. Endereços da lista de permissões ficam de fora;
  • A tabela inteira é excluída ao desligar a sincronização ou parar o Gately. Se outro programa a remover, o Gately a regrava em até 10 segundos.

"Ver regras" na página mostra todas as regras em vigor.

Docker

Use network_mode: host e conceda NET_ADMIN para que as regras sejam gravadas no host:

yaml
    network_mode: host
    cap_add:
      - NET_ADMIN

Sem isso, os bloqueios continuam valendo para os serviços do Gately. Para ler logs do host, monte o diretório de logs no contêiner, por exemplo - /var/log:/var/log/host:ro, e informe /var/log/host/auth.log na regra. A origem "journal do systemd" não está disponível em contêiner.

Regras de logs ​

OrigemO que informarObservações
Arquivo de logCaminhos de arquivo, um por linhaLê as linhas novas a partir do fim do arquivo e acompanha a rotação (renomear ou truncar)
Journal do systemdUnidades de serviço como ssh.serviceLido com journalctl -f
Saída de comandoUm comando como logread -fReiniciado quando termina
Contêiner DockerNome do contêinerLido pela conexão com o Docker do módulo Docker
Evento do GatelyFalha de login / bloqueio do WAFOs eventos trazem o IP de origem; não precisa de filtro

Os filtros são expressões regulares Go (sintaxe RE2), uma por linha, e <HOST> representa o endereço de origem, por exemplo:

Failed password for (?:invalid user )?\S* ?from <HOST>

Linhas que correspondem a "Ignorar" não são contadas. A janela de tempo, o número de falhas e a duração do bloqueio são definidos por regra; a duração pode ser a padrão, personalizada ou permanente.

Escolhas da detecção de varredura ​

A detecção conta conexões novas a portas em que este host não está escutando. As portas TCP em escuta são atualizadas a cada 10 segundos e contam como abertas; portas encaminhadas por outras regras de firewall não passam pela cadeia input e não são contadas. O limite padrão é 12 por minuto. Um cliente normal tenta de novo uma porta fechada cerca de 5 vezes por minuto, então não use menos de 10.

Portas armadilha em uso são excluídas automaticamente para não bloquear visitantes legítimos.

Relação com o serviço web ​

Os bloqueios de "Bloquear após falhas de autenticação" do serviço web vão para a mesma lista; com a sincronização ligada, eles valem para o host inteiro, e não só para os sites. Com "Ignorar endereços da LAN" ligado, endereços da LAN nunca são bloqueados automaticamente.

O serviço web e o WAF só conhecem o endereço real do cliente pelo protocolo PROXY. Em sites atrás de uma CDN que passa o IP real em um cabeçalho, os bloqueios por falha de autenticação e a regra "Bloqueios do WAF" bloqueariam os nós da CDN, então não os ative nesses sites.

Notificações ​

Os bloqueios geram o evento Prevenção de intrusão: IP bloqueado, que você pode assinar na Central de notificações. Endereços bloqueados pelas portas armadilha e pela detecção de varredura na mesma verificação são reunidos em uma notificação.

Verificação ​

Verificado em namespaces de rede isolados no fnOS (Debian 12, nftables 1.0.6) e no iStoreOS 24.10 (nftables 1.1.1): portas armadilha e detecção de varredura (IPv4 e IPv6) bloqueiam no kernel e são importadas para a lista; arquivos de log (com rotação), o journal do systemd, logs de contêineres Docker e falhas de login no painel disparam bloqueios; bloqueios manuais de redes e permanentes, desbloqueio, durações progressivas, restauração após reiniciar, regravação após a tabela ser removida externamente e limpeza ao parar funcionam como esperado; um contêiner Docker sem NET_ADMIN é identificado como sem permissão e passa a usar portas armadilha em espaço de usuário.

Distribuído sob a licença Apache-2.0.