Firewall
Segue um exemplo básico com nftables
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 aberta para TODOS
define PORTS_ACCEP_PUB = { 0 } # Defina a(s) portas que deseja deixar aberta o mundo
# Defina a(s) portas que serão restritas apeas as listas
# ACESSO_TOTAL4 e ACESSO_TOTAL6 (Não esqueça de incluir as portas que vão receber o 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;
# Aceita ICMP apenas das Origens com permissão
ip saddr @ACESSO_TOTAL4 ip protocol icmp icmp type echo-request accept
ip6 nexthdr icmpv6 ip6 saddr @ACESSO_TOTAL6 icmpv6 type echo-request 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 as portas em todos IPs vindo das origens permitidas
ip saddr @ACESSO_TOTAL4 tcp dport { $PORTS_ACCEP_ADM } counter accept
ip saddr @ACESSO_TOTAL4 udp dport { $PORTS_ACCEP_ADM } counter accept
ip6 saddr @ACESSO_TOTAL6 tcp dport { $PORTS_ACCEP_ADM } counter accept
ip6 saddr @ACESSO_TOTAL6 udp dport { $PORTS_ACCEP_ADM } counter accept
# Fecha todo resto
ip daddr { $IPV4_SERV } ct state related,established counter accept
ip daddr { $IPV4_SERV } counter drop
ip6 daddr { $IPV6_SERV } ct state related,established counter accept
ip6 daddr { $IPV6_SERV } counter drop
type filter hook input priority 0;
}
chain forward {
type filter hook forward priority 0;
}
chain output {
type filter hook output priority 0;
}
}
Reinicie o nftables para carregar as configurações
# systemctl restart nftables