Hallo!

In de hoop dat de verzamelde kennis hier me een beetje op weg wil
helpen:

De overstap naar Debian 10 vraagt een nieuwe aanpak van de
firewall. De default iptables is vervangen door nftables.  De firewall
die ik heb ondersteund nftables niet. Op dit moment doet de firewall het
wel voor IPv4 maar niet voor IPv6.

Ik kan iptables terugzetten. Of proberen snel naar nftables over te gaan.

Deze wiki bestudeerd: https://wiki.debian.org/nftables en diverse
voorbeelde bekeken. De huidige (...) iptables regels vertaalt (daar is
een script voor).



Ik heb nu een eerste set, maar die zit vol vragen.

Bijvoorbeeld de { en spaties: is het {80, 443} of moet het zijn { 80,
443 }, of is het identiek?

Ik zie voor poort 80 en 443 dit: ct state new,established. Waarom kom ik
dat tegen als advies voor die poorten, en niet voor bijvoorbeeld poort
25 (en anderen)?


Schrijfwijze, poort nummer of naam? Met een voorbeeld:

Is:

# HTTP (ports 80 & 443)
#               tcp dport { http, https } accept
                
beter dan 

# WWW server: count and accept traffic in 80/tcp and 443/tcp in new and 
establised state
# nft add rule inet filter input tcp dport {80, 443} ct state new,established 
counter accept comment "WWW"
 
Is het slim of overbodig om bij alle regels /comment/ te gebruiken?
(Zoals hierboven comment "www". Ik neem aan dat ik dat later in de logs
zie). Maar ik kijk niet echt vaak naar de logs.


Tot slot, wie weet hoe openvpn en nftables te combineren? 



Hieronder mijn huidige klad nftables regels. Echt klad, en onbruikbaar.


# WARNING this is untested and not at all ready to be used
#
# verder te bekijken
# https://ral-arturo.org/2017/04/07/openvpn-debian-stretch.html

# De eerste 9 regels zijn gekopieerd uit een voorbeeld. Essentieel?
table inet filter {
        chain input {
                 type filter hook input priority 0;

                 # accept any localhost traffic
                 iif lo accept

                 # accept traffic originated from us
                 ct state established,related accept

# de volgde regels kom ik her en der tegen, zie ook PING en PING alternatief 
hieronder
                 # accept neighbour discovery otherwise connectivity breaks
                 ip6 nexthdr icmpv6 icmpv6 type { nd-neighbor-solicit, 
echo-request, nd-router-advert, nd-neighbor-advert } accept

                 # SSH server
                 nft add rule ip filter input tcp dport 22 ct state new counter 
accept comment "SSH"

# is het {80, 443} of moet het zijn { 80, 443 }, of is het identiek?

                 # WWW server: count and accept traffic in 80/tcp and 443/tcp 
in new and establised state
                 nft add rule inet filter input tcp dport {80, 443} ct state 
new,established counter accept comment "WWW"
 
# vraag, wat doet/betekent die new,stablished hierboven en is dat wellicht ook 
nodig voor hieronder?

# alternatieve schrijfwijze https://wiki.archlinux.org/index.php/Nftables
#
# SSH (port 22)
#               tcp dport ssh accept
#
#               # HTTP (ports 80 & 443)
#               tcp dport { http, https } accept
                

                 # MAIL server, accept traffic for 
                 # SMTP SMTPS 25/tcp, 465/tcp and 587
                 # POP3 POP3S 110/tcp, 995/tcp
                 # IMAP IMAPS 143/tcp, 993/tcp
                 nft add rule inet filter input tcp dport {25, 110, 143, 465, 
587, 993, 995} counter accept comment "MAIL"

                 # PING
                 nft add rule inet filter input icmp type echo-request accept 
comment "PING"
                 
# alternatief voor PING https://wiki.archlinux.org/index.php/Nftables
                # accept ICMP & IGMP
                ip6 nexthdr icmpv6 icmpv6 type { destination-unreachable, 
packet-too-big, time-exceeded, parameter-problem, mld-listener-query, 
mld-listener-report, mld-listener-reduction, nd-router-solicit, 
nd-router-advert, nd-neighbor-solicit, nd-neighbor-advert, 
ind-neighbor-solicit, ind-neighbor-advert, mld2-listener-report } accept
                ip protocol icmp icmp type { destination-unreachable, 
router-solicitation, router-advertisement, time-exceeded, parameter-problem } 
accept
                ip protocol igmp accept


# OpenVPN
# add rule ip filter udp dport 1194 counter accept comment "OpenVPN"

# FIXME wat moet ik hiermee
# add chain ip filter ovpn-fw
# add chain ip filter ovpn-net
# add chain ip filter ovpn-ovpn
# add chain ip filter ovpn_frwd

# en dan nog Fail2ban 
# add chain ip filter f2b-blocklist
# add chain ip filter f2b-sshd
# add chain ip filter f2b-exim4


                 # count and drop any other traffic
                 counter drop
                 

        }
}

Antwoord per e-mail aan