firewall/firewall.nft
2018-10-14 18:49:38 +02:00

78 lines
1.9 KiB
Text

#! /sbin/nft -f
# Remise à zéro des règles du pare-feu
flush ruleset
# Inclusion des dépendances
include "archi.nft"
include "checkmac.nft"
# Table principale
table inet firewall {
chain dispatch {
# Définition de la chaîne. On s'occupe du forward.
type filter hook forward priority 0;
# Politique par défaut : tout jeter.
policy drop;
# Filtre sur les interfaces entrantes, ne pas accepter
# directement dans la chaine, mais retourner.
# Par convention pour le routage, on vérifie dans la chaîne to_ que
# le passage d'un vlan à l'autre est autorisé.
#
# On utilise des jumps pour revenir ici une fois la chaîne évaluée.
meta iif vmap {
if_adherent : jump from_adh,
if_admin : jump from_admin,
if_federez : jump from_federez,
if_supelec : jump from_supelec,
if_aloes : jump from_aloes,
if_prerezotage : jump from_prerezotage,
if_dmz: jump from_dmz
}
# Filtre sur les interfaces sortantes, ne pas retourner : drop ou
# accept
# On utilise des goto pour ne pas revenir ici une fois la chaîne
# évaluée.
meta oif vmap {
if_adherent : goto to_adh,
if_admin : goto to_admin,
if_federez : goto to_federez,
if_supelec : goto to_supelec,
if_aloes : goto to_aloes,
if_prerezotage : goto to_prerezotage,
if_dmz: goto to_dmz
}
# Un compteur qui doit être à 0 si on a bien fait notre travail.
counter
}
chain input {
type filter hook input priority 0;
policy drop;
# Nos passerelles font beaucoup de choses...
tcp dport {http, https, ssh, dns, dhcp} accept;
# On a le droit de parler avec nous même.
iif lo accept;
counter
}
chain output {
type filter hook output priority 0;
policy accept;
}
}
table nat {
# TODO : on met 27 Ips internes par ip publiques
# Users : 193.48.225.10-119
# Prerezotage 193.48.225.240-254
# Aloes : 193.48.225.120-129
# Federez : 193.48.225.130-199
# Server : 193.48.225.200-209
}