NfTables (nftables.conf)

NfTables

Categoria: Segurança

Software: NfTables

[ Hits: 776 ]

Por: Buckminster


Arquivo de configuração do NfTables com bloqueios de endereços IP que tentam mais de 10 novas conexões em um minuto.
Libera tráfego de pacotes established, related e dropa pacotes inválidos.
Permite SSH na porta TCP/22, permite HTTP(S) TCP/80 e TCP/443 para IPv4 e IPv6 e rejeita para as outras portas.
O arquivo está comentado em Português.


#!/usr/sbin/nft -f

flush ruleset

table ip filter {
        chain input {
                # Bloqueando endereços IP que tentam mais de dez novas conexões TCP de entrada em um minuto
                type filter hook input priority 0; policy accept;
                ip protocol tcp ct state new,untracked meter ratemeter size 0 { ip saddr timeout 5m limit rate over 10/minute}  drop;
        }
}
# Comando para testar a regra acima: nft list meter ip filter ratemeter
# Comandos úteis: nft -n -a list table filter nft -n -a list ruleset
# nft list ruleset > /home/nftables.conf.bkp
# Lembrando que o comando acima salvará somente as regras sem os comentários do script.
# Para salvar completo:
# cp /etc/nftables.conf /home/nftables.conf.bkp

table inet firewall {

    chain inbound_ipv4 {
        # Para aceitar ping (icmp-echo-request) com propósito de diagnóstico
        # ou simplesmente para ver se o servidor está no ar
        # descomente esta regra que aceita ping dentro do limite estabelecido:
        #
        # icmp type echo-request limit rate 5/second accept
    }

    chain inbound_ipv6 {
        # aceite a descoberta do vizinho (próximo), caso contrário,
   # a conectividade será interrompida.
        #
        icmpv6 type { nd-neighbor-solicit, nd-router-advert, nd-neighbor-advert } accept

        # Para aceitar ping (icmpv6-echo-request) com propósito de diagnóstico
        # ou simplesmente para ver se o servidor está no ar
        # descomente esta regra que aceita ping dentro do limite estabelecido:
        #
        # icmpv6 type echo-request limit rate 5/second accept
    }

    chain inbound {

        # Por padrão descarte todo o tráfego, a menos que ele atenda a um filtro
        # com critérios especificados pelas regras que seguem abaixo.
        type filter hook input priority 0; policy drop;

        # Permitir tráfego de pacotes estabelecidos e relacionados, descartar inválidos
        ct state vmap { established : accept, related : accept, invalid : drop }

        # Permitir tráfego loopback.
        iifname lo accept

        # Ir para a chain de acordo com o protocolo da camada 3 usando o mapa de veredicto
        meta protocol vmap { ip : jump inbound_ipv4, ip6 : jump inbound_ipv6 }

        # Permitir SSH na porta TCP/22 e permitir HTTP(S) TCP/80 e TCP/443
        # para IPv4 e IPv6 e rejeitar para as outras portas.
        tcp dport { 22, 80, 443 } accept
        reject
        # Descomente para ativar o registro do tráfego de entrada negado
        log prefix "[nftables] Inbound Denied: " counter drop
    }

  chain forward {
        # Descarte tudo (assume que este dispositivo não é um roteador)
        type filter hook forward priority 0; policy drop;
    }

    # não há necessidade de definir a chain output, pois a política padrão é accept se indefinida.
}
  


Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário

  



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts