
#!/usr/sbin/nftables -f

flush ruleset

# family `inet` c'est pour ipv4/ipv6
table inet myfilter {
        chain myglobal {
                # par défaut on accepte tous les paquets entrant
                type filter hook input priority 0; policy accept;
                # accepte les ping (mais pas plus de 1 par seconde)
                ip protocol icmp icmp type { echo-request, echo-reply } limit rate 1/second accept
                ip protocol icmp icmp type { echo-request, echo-reply } drop
                ip6 nexthdr icmpv6 icmpv6 type { echo-request, echo-reply } limit rate 1/second accept
                ip6 nexthdr icmpv6 icmpv6 type { echo-request, echo-reply } drop
                # on accepte tout le reste du traffic icmp
                ip protocol icmp accept
                ip6 nexthdr icmpv6 accept
                # accepte le traffic qui vient de nous
                ct state established,related accept
                ct state invalid drop
                # accepte le traffic localhost
                iif lo accept
                # accepte tout le traffic ssh peut importe l'origine
                tcp dport 22 accept
                # accepte le traffic tcp depuis le reste du monde si la cible est un des ports http, https, smtp
                tcp dport {80, 443} accept
                # ouvre les port udp I/O 10000 et 44446 pour jitsi
                udp dport {10000, 4446} accept
                udp sport {10000, 4446} accept
                
                # count and drop any other traffic
                counter drop
        }
}
