🚧 Firewall
Se desejar segue um exemplo um exemplo básico com nftables de como proteger seu servidor.
Habilite o nftables
# systemctl enable nftables
Edite o arquivo /etc/nftables.conf
#!/usr/sbin/nft -f
flush ruleset
# IPs SERVIDOR
# Defina o(s) IPv4/6(s) da interface do servidor
define IPV4_SERV = { 200.200.200.200 }
define IPV6_SERV = { 2001:db8:1::cafe }
# Portas abertas para TODOS
# Obs: se não quiser abrir nenhuma, manter { 0 } evita match em portas normais.
define PORTS_ACCEP_PUB = { 0 }
# Portas restritas apenas às listas ACESSO_TOTAL4 e ACESSO_TOTAL6
# Não esqueça de incluir portas que recebem fluxos, ex.: 3055, 3056, 3057
define PORTS_ACCEP_ADM = { 5000, 3000, 22, 3055, 3056, 3057 }
table inet filter {
set ACESSO_TOTAL4 {
type ipv4_addr
flags interval
elements = {
127.0.0.0/8,
192.168.0.0/24
}
}
set ACESSO_TOTAL6 {
type ipv6_addr
flags interval
elements = {
::1,
aaaa:aaaa:aaaa::/48
}
}
chain input {
type filter hook input priority 0; policy accept;
# Conexões já estabelecidas/relacionadas
ct state established,related counter accept
# Loopback
iifname "lo" counter accept
# Descarta pacotes inválidos
ct state invalid counter drop
# ICMPv6 essencial para IPv6 funcionar corretamente:
# NDP, RA, PMTU e erros necessários da pilha IPv6.
meta l4proto ipv6-icmp icmpv6 type {
destination-unreachable,
packet-too-big,
time-exceeded,
parameter-problem,
echo-reply,
nd-router-solicit,
nd-router-advert,
nd-neighbor-solicit,
nd-neighbor-advert
} counter accept
# Aceita ping apenas das origens com permissão
ip saddr @ACESSO_TOTAL4 meta l4proto icmp icmp type echo-request counter accept
ip6 saddr @ACESSO_TOTAL6 meta l4proto ipv6-icmp icmpv6 type echo-request counter accept
# PERMITE PORTAS ACESSO PUBLICO
ip saddr 0.0.0.0/0 ip daddr $IPV4_SERV tcp dport $PORTS_ACCEP_PUB counter accept
ip saddr 0.0.0.0/0 ip daddr $IPV4_SERV udp dport $PORTS_ACCEP_PUB counter accept
ip6 saddr ::/0 ip6 daddr $IPV6_SERV tcp dport $PORTS_ACCEP_PUB counter accept
ip6 saddr ::/0 ip6 daddr $IPV6_SERV udp dport $PORTS_ACCEP_PUB counter accept
# Permite acesso às portas administrativas vindo das origens permitidas
ip saddr @ACESSO_TOTAL4 ip daddr $IPV4_SERV tcp dport $PORTS_ACCEP_ADM counter accept
ip saddr @ACESSO_TOTAL4 ip daddr $IPV4_SERV udp dport $PORTS_ACCEP_ADM counter accept
ip6 saddr @ACESSO_TOTAL6 ip6 daddr $IPV6_SERV tcp dport $PORTS_ACCEP_ADM counter accept
ip6 saddr @ACESSO_TOTAL6 ip6 daddr $IPV6_SERV udp dport $PORTS_ACCEP_ADM counter accept
# Fecha todo resto destinado aos IPs do servidor
ip daddr $IPV4_SERV counter drop
ip6 daddr $IPV6_SERV counter drop
}
chain forward {
type filter hook forward priority 0; policy accept;
}
chain output {
type filter hook output priority 0; policy accept;
}
}
Reinicie o nftables para carregar as configurações
# systemctl restart nftables