Vous connaissez le principe des VLANs ?
Non ???

Etchebest Oh merde

Bon, il n’est jamais trop tard pour s’y mettre: petite remise à niveau ici.

L’idée est simple: on va segmenter notre réseau local pour mieux isoler les usages et limiter les dégâts en cas de problème.
Dans mon cas, je découpe le réseau en cinq VLANs:

  • VLAN_Guests10.66.66.0/24
    Réseau invité totalement isolé: aucune communication avec les autres VLANs, accès à Internet via VPN seulement. Utile quand on a des invités.
  • VLAN_Admin10.66.50.0/24
    Conteneurs, VM, services de l’hyperviseur… typiquement un cloud privé.
  • VLAN_Secure10.66.45.0/24
    Même philosophie que les invités, mais avec un niveau de méfiance supplémentaire. On évite par principe de mélanger des équipements potentiellement risqués avec le reste.
  • VLAN_Personal10.66.40.0/24
    Tous les équipements personnels: PC, consoles, téléphones, etc.
  • VLAN_IOT10.66.35.0/24
    Les objets connectés. Par défaut, ils ne communiquent ni entre eux ni avec Internet, sauf exceptions bien définies (et justifiées).

Création des VLANs

Passons à la pratique.

Rendez-vous dans Interfaces → Devices → VLAN, puis créez chacun des VLANs avec les tags et noms de votre choix (vous pouvez suivre les miens, ou pas).
Le parent doit être une interface du LAN:

  • igb0 pour un m720q
  • igc0 pour l’autre configuration matérielle

VLAN Creation

Une fois les VLANs créés, allez dans Interfaces → Assignments.

Dans la section Assign a new interface, sélectionnez chaque VLAN et assignez-le à une interface en les nommant clairement:
VLAN_Admin, VLAN_Personal, VLAN_IOT, etc.

Configuration des interfaces VLAN

Pour chaque nouvelle interface, rendez-vous dans Interfaces → [VLAN_XXXXX] et appliquez les paramètres suivants:

  • Décochez block private networks et block bogon networks
  • IPv4 Configuration: Static IPv4
  • IPv6 Configuration: Track Interface
    (sauf pour VLAN_Secure et VLAN_Guests, qui doivent rester sur None)
  • Static IPv4 configuration:
    10.66.TAG.1 /24
    (remplacez TAG par celui du VLAN: 50, 45, 40, etc.)

Paramètres IPv6

Dans Track IPv6 Interface:

  • Parent interface: WAN
  • Assign prefix ID: à définir

Pour éviter toute ambiguïté, voici les prefix ID que j’utilise (ils doivent être uniques par VLAN):

  • LAN: 0
  • VLAN_Admin: 1
  • VLAN_Personal: 2
  • VLAN_IOT: 3

⚠️ N’oubliez pas de configurer également le prefix ID du DHCPv6 sur le LAN.

Et vérifiez dans System → Settings → General que l’option
“Prefer to use IPv4 even if IPv6 is available” est bien décochée.

Configuration du DHCP

Un réseau sans DHCP, c’est triste. Allons corriger ça. Rendez-vous dans Services → ISC DHCPv4 → [VLAN_XXXXX].
Pour chaque VLAN:

  • Activez le serveur DHCP
  • Range:
    • From: 10.66.TAG.2
    • To: 10.66.TAG.254
  • DNS server: 10.66.10.1
    (on y reviendra plus tard, sauf pour VLAN_Secure et VLAN_Guests, qui seront traités dans un autre article)

Ouf 😮‍💨
Les VLANs sont créés et configurés.

Il ne reste plus qu’une chose… les règles de firewall.

Règles basiques

On va faire simple et efficace pour les règles de firewall. Les captures d’écran parlent d’elles-mêmes, et la création des règles n’a rien de sorcier.

Règles WAN

Côté WAN, l’objectif est double:

  • empêcher les IP externes d’utiliser notre DNS,
  • s’assurer que le trafic légitime entrant et sortant est bien autorisé.

À noter: l’interface INTERNET_DHCP s’appelle probablement WAN_DHCP chez vous (ou INTERNET_DHCP si vous êtes sur la configuration m720q).

Rules WAN


Règles LAN

Pour le LAN, on ne se complique pas la vie:
on autorise tous les paquets, entrants comme sortants.

Rules LAN


Création d’un alias pour les réseaux privés

Afin de faciliter le filtrage des réseaux locaux, on va créer un Alias.
(Ce n’est pas obligatoire, mais c’est pratique, on peut inverser le sens d’un match dans une règle pour cibler tout ce qui n’est pas local aussi).

Rendez-vous dans Firewall → Aliases et créez l’alias suivant:

Alias RFC

Adresses à inclure: 192.168.0.0/16 10.0.0.0/8 172.16.0.0/12

Retour aux règles de firewall.


VLAN_Personal

  • Interdiction de communiquer avec VLAN_Secure
  • Accès autorisé aux autres VLANs
  • Accès autorisé à Internet

Rules Personal


VLAN_Admin

Ici, pas de restriction particulière:
on autorise tout le trafic, entrant et sortant.

Rules Admin


VLAN_Guests

  • Interdiction totale de communiquer avec les autres VLANs
  • Pas d’accès Internet pour le moment

Rules Guests


VLAN_Secure

  • Interdiction de communiquer avec VLAN_Guests et VLAN_Personal
  • Pas d’accès Internet pour le moment

Rule Secure


Règles Floating

Enfin, les règles Floating, appliquées à toutes les interfaces. Ici, on bloque tout le trafic sortant par défaut.
C’est ce mécanisme qui permet de:

  • bloquer l’accès à Internet,
  • bloquer l’accès à d’autres équipements, tant qu’aucune règle explicite ne l’autorise.

Rules Floating


Cas particulier: INTERNET

Si vous avez un VLAN 0.10 lié à votre WAN (comme c’est le cas pour Swisscom), il vous faudra alors configurer INTERNET comme le WAN !


Cas particulier: VLAN_IOT

Le VLAN_IOT reste volontairement sans règles.
Grâce aux règles Floating, tout est bloqué par défaut: autres VLANs et Internet compris.

Pour autoriser une exception, il suffit d’ajouter une règle pass ciblée, avec comme IP source celle de l’équipement concerné.

Propre, lisible, et surtout facile à maintenir.

Configuration du DNS

Grâce à notre firewall, on peut obtenir l’équivalent d’un Pi-hole, pour ceux à qui ça parle.
Autrement dit, on peut bloquer directement au niveau DNS:

  • les domaines utilisés par la publicité,
  • les hôtes connus pour distribuer des malwares,
  • certains contenus (adultes, tracking, etc.).

En bonus, on peut aussi se protéger contre le DNS rebinding (des noms de domaine qui pointent vers des IP privées), et forcer l’utilisation du DNS over TLS afin de renforcer la confidentialité des requêtes.

Pour tout ça, nous allons utiliser Unbound DNS.

Grâce à notre firewall, on peut avoir l’équivalent d’un “piHole” pour ceux qui connaissent. C’est-à-dire qu’on peut bloquer directement les dns des advertisers (donc pas de pub), idem pour des hosts de malwares connus, des sites pour adultes… En plus de ça, il est possible de se protéger contre du dns rebinding (DNS qui redirige vers une IP privée), on peut forcer les requêtes DNS over TLS pour maximiser notre vie privée.

Configuration générale

Rendez-vous dans Services → Unbound DNS → General et configurez les options comme ci-dessous:

Unbound general config

Dans le menu Overrides, vous pourrez ajouter vos DNS locaux.
On y reviendra plus tard, notamment lors de la mise en place de notre cloud privé.

Paramètres avancés

Allez ensuite dans l’onglet Advanced et appliquez la configuration suivante:

Unbound advanced config

Liste des plages IP à renseigner:

0.0.0.0/8 10.0.0.0/8 100.64.0.0/10 169.254.0.0/16 172.16.0.0/12 192.0.2.0/24 192.168.0.0/16 198.18.0.0/15 198.51.100.0/24 203.0.113.0/24 233.252.0.0/24: :1/128 2001:db8::/32 fc00::/8 fd00::/8 fe80::/10


Listes de blocage

Passons maintenant aux blocklists.

Rendez-vous dans l’onglet Blocklists, créez une nouvelle liste et sélectionnez celles qui vous intéressent.
Laissez les autres champs vides.

De mon côté, je me limite à ces trois listes: AdGuard List, OSID - Domain Blocklist Ads, Steven Black List

C’est un bon compromis entre efficacité et faux positifs.


DNS over TLS

Dernière étape: activer le DNS over TLS.
Par souci de respect de la vie privée, j’utilise les DNS de Mullvad. Nous les réutiliserons d’ailleurs plus tard pour le réseau sécurisé (VPN permanent).

Vous trouverez ci-dessous l’adresse IP et le port à utiliser:

Unbound TLS


Application de la configuration

La configuration est maintenant terminée.
Vous pouvez soit:

  • redémarrer complètement le firewall,
  • soit simplement redémarrer le service Unbound (bouton Restart en haut à droite).

Pour que vos équipements utilisent correctement ce DNS, rendez-vous dans Services → ISC DHCPv4, puis sélectionnez les VLANs concernés (par exemple VLAN_Personal).

Dans le champ DNS servers, renseignez l’IP locale du firewall sur le LAN.
Si vous utilisez la même configuration que moi, il s’agit de 10.66.10.1.

DHCP config

N’oubliez pas de sauvegarder.
Les équipements prendront en compte ces paramètres lors de leur prochaine demande de bail DHCP.


Prochain article

👉 VPN administratif, accès à distance et hardening du firewall 🔐