POP HOSTING

Como configurar o firewall CSF: guia do csf.conf imprimir

  • csf.conf, configurar csf, tcp_in, lfd, connlimit, portflood, bloqueio por país
  • 0

Guia do csf.conf: portas, modo de teste, bloqueio por senha errada, proteção contra flood, listas allow e deny e bloqueio por país no firewall CSF.

  • Tempo: 20 min
  • Nível: Intermediário
  • Vale para: CSF mantido pelo cPanel (cpanel-csf) e versões 14 ou mais novas
  • Atualizado: outubro de 2026

Toda a configuração do CSF fica no arquivo /etc/csf/csf.conf. Você pode editá-lo de dois jeitos: pela tela WHM » Plugins » ConfigServer Security & Firewall » Firewall Configuration (cada opção tem a explicação ao lado e o botão Change no fim) ou direto no arquivo, pelo SSH. Nos dois casos, as mudanças só valem depois de reiniciar:

csf -ra

Se o CSF ainda não está instalado, comece pelo guia de como instalar o CSF.

Antes de começar

  • Faça uma cópia do arquivo: cp -a /etc/csf/csf.conf /root/csf.conf.$(date +%F).
  • Deixe o seu IP liberado: csf -a 203.0.113.50 "meu IP" (descubra o seu em pophosting.com.br/meu-ip).
  • Tenha um acesso de emergência (console do provedor), caso uma regra corte o SSH.

Modo de teste: TESTING e TESTING_INTERVAL

Com TESTING = "1", o CSF agenda uma limpeza de todas as regras a cada TESTING_INTERVAL minutos (o padrão é 5). Se você se trancar fora, basta esperar. A contrapartida é grande: nesse modo o lfd não roda, então ninguém é bloqueado. Ajuste as portas, confirme que tudo funciona e passe para TESTING = "0".

Portas abertas: TCP_IN, TCP_OUT, UDP_IN e UDP_OUT

São listas de portas separadas por vírgula. Faixas usam dois pontos (49152:65534). Numa instalação nova, a lista de entrada vem assim:

TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,853,993,995,2077,2078,2079,2080,2082,2083,2086,2087,2095,2096,8443"
  • Feche o que você não usa. Sem FTP, tire 20 e 21. Sem DNS no servidor, tire 53 de TCP_IN e UDP_IN.
  • Mudou a porta do SSH? Adicione a porta nova, reinicie, teste a conexão numa segunda janela e só então retire a 22. O passo a passo está em como alterar a porta do SSH.
  • FTP passivo precisa de uma faixa de portas própria. Veja FTP com firewall CSF.
  • IPv6: se o servidor tem IPv6, ligue IPV6 = "1" e mantenha TCP6_IN e TCP6_OUT coerentes com as listas IPv4.

A lista completa das portas de cada serviço do painel está em portas usadas pelo cPanel.

Ping: ICMP_IN e ICMP_IN_RATE

ICMP_IN = "1" permite que o servidor responda ao ping. Não desligue: monitores de disponibilidade dependem dele. ICMP_IN_RATE = "1/s" limita a um ping por segundo por IP. Se o seu monitoramento acusa perda de pacotes que não existe, aumente o valor (por exemplo, "5/s") ou use "0" para tirar o limite.

Bloqueio por senha errada (lfd)

Com LF_TRIGGER = "0", que é o padrão, cada serviço tem o próprio limite de falhas dentro da janela LF_INTERVAL (3600 segundos):

OpçãoServiçoPadrão
LF_SSHDSSH5
LF_FTPDFTP10
LF_SMTPAUTHenvio de e-mail autenticado5
LF_POP3D e LF_IMAPDleitura de e-mail10
LF_CPANELlogin no cPanel e no WHM5
LF_MODSECdisparos do ModSecurity5

Cada uma tem o par _PERM (por exemplo, LF_SSHD_PERM): "1" bloqueia para sempre; um número maior, como "3600", bloqueia por esse tempo em segundos. Em servidor de hospedagem compartilhada, bloqueios temporários no e-mail e no FTP evitam que um cliente com senha velha no celular fique bloqueado para sempre.

LF_PERMBLOCK = "1" transforma em permanente o IP que levou mais de LF_PERMBLOCK_COUNT bloqueios temporários (4) em LF_PERMBLOCK_INTERVAL (86400 segundos).

Tamanho das listas de bloqueio: DENY_IP_LIMIT e LF_IPSET

DENY_IP_LIMIT (padrão 200) é o máximo de IPs no csf.deny; ao chegar no limite, os mais antigos saem. DENY_TEMP_IP_LIMIT (100) faz o mesmo com os temporários. Há uma troca aqui: limite baixo faz um atacante antigo voltar mais rápido; limite alto deixa o servidor exposto a quem forja linhas de log para provocar bloqueios em massa (a própria documentação do CSF recomenda valores baixos por isso). Se precisar de listas grandes, instale o ipset (dnf install ipset), ligue LF_IPSET = "1" e só então aumente o limite. Sem ipset, milhares de regras soltas no iptables deixam a rede lenta.

Proteção contra flood e conexões em excesso

  • CONNLIMIT limita conexões novas simultâneas por IP numa porta. Formato porta;limite. Exemplo: CONNLIMIT = "22;5,80;50".
  • PORTFLOOD limita conexões por intervalo de tempo. Formato porta;protocolo;conexões;segundos. Exemplo: PORTFLOOD = "22;tcp;5;300" bloqueia na porta 22 quem abrir mais de 5 conexões em 300 segundos. Mantenha o número de conexões abaixo de 20, que é o máximo que o módulo do kernel consegue contar.
  • CT_LIMIT conta todas as conexões de cada IP e bloqueia quem passar do limite (veja CT_INTERVAL, CT_PORTS e CT_BLOCK_TIME). Comece alto, perto de 300, e observe: FTP, IMAP e sites com muitos arquivos abrem muitas conexões legítimas.
  • SYNFLOOD só deve ser ligado durante um ataque de SYN flood, porque ele desacelera as conexões novas de todo mundo.

Rode perl /etc/csf/csftest.pl antes: CONNLIMIT e PORTFLOOD dependem de módulos que podem faltar em VPS de contêiner.

Listas: csf.allow, csf.deny e csf.ignore

  • /etc/csf/csf.allow: IPs e faixas (CIDR, como 203.0.113.0/24) sempre liberados no firewall. Um por linha, com comentário depois de #.
  • /etc/csf/csf.deny: bloqueios permanentes. Se o comentário da linha contiver do not delete, o CSF não remove esse IP quando a lista atingir o limite.
  • /etc/csf/csf.ignore: IPs que o lfd nunca bloqueia, como o do seu escritório ou o do seu monitoramento. Estar no csf.allow não basta para isso.

Pela linha de comando, prefira csf -a, csf -d e csf -dr, que já aplicam a regra na hora.

Bloqueio por país: CC_DENY e CC_ALLOW_PORTS

CC_DENY = "XX,YY" bloqueia países inteiros pelo código de duas letras. Uma alternativa mais fina é deixar o SSH aberto só para o Brasil: retire a porta do SSH de TCP_IN, ponha CC_ALLOW_PORTS = "BR" e a porta em CC_ALLOW_PORTS_TCP. Com CC_SRC = "2" (padrão) as bases de países são baixadas sem cadastro; o valor "1" usa a MaxMind e exige uma chave em MM_LICENSE_KEY. Listas de países grandes também pedem LF_IPSET = "1".

Atenção: bloquear países inteiros também bloqueia clientes viajando, robôs de busca e serviços de monitoramento hospedados no exterior. Use em portas administrativas, não no site.

Alertas por e-mail

LF_ALERT_TO define para quem vão os avisos do lfd. Vazio, eles vão para o root do servidor. Os detalhes estão em alertas de e-mail do CSF e do lfd.

Problemas comuns

Mudei a configuração e nada aconteceu

Faltou reiniciar com csf -ra, ou o CSF está desligado (existe o arquivo /etc/csf/csf.disable; religue com csf -e).

Um cliente diz que foi bloqueado e não errou a senha

Rode csf -g IP-DO-CLIENTE. A saída mostra a regra e o motivo. O caso mais comum é um celular ou um Outlook insistindo com a senha antiga do e-mail. Para clientes da POP, o desbloqueio está em como liberar o IP pela Área do Cliente.

Prefere receber o servidor já protegido? Veja os servidores dedicados da POP Hosting, com suporte em português.

Esta resposta lhe foi útil?
« Retornar