• Router

    • Plusieurs interfaces réseaux interconnectées à des sous réseaux différnets
    • Fait passer le trafic d’une interface à l’autre (et donc d’un sous-réseau à l’autre)
  • Table de routage

    • default via → passerelle pour sortir du réseau
    • scope link → connection direct au réseau (sans passage vers la passerelle)
  • schéma routeur

  • configurer en mode routeur

    • vim /etc/sysctl.d/10-ipforward.conf
      • Enable net.ipv4.ip_forward=1
      • Activer directement echo 1 > /proc/sys/net/ipv4/ip_forward
        • Ou redemarrer la machine
  • Attention

    • Les paquets addressés au routeur spécifie l’adresse du réseau du routeur, mais cette adresse n’est pas connue de pfsense (la passerelle du routeur)
      • Donc pas possible d’addresser au client car adresse inconnue
      • NAT → transforme l’adresse client en adresse du routeur (qui elle est connue) puis inversément
        • Solution utilisée
      • Route statique, connexion du gateway pfsense au réseau du routeur afin d’être connu
  • Configuration NAT

    • link to network course about it
    • nft add table ip nat
      • voir firewall
    • nft add chain nat postrouting { type nat hook postrouting priority 100 ; }
      • voir firewall
    • nft add rule nat postrouting ip saddr 172.18.1.0/24 masquerade
      • Translate les addresses du sous réseau 172.18.1.x vers celle du routeur courant
    • rendre config permanente
      • nft list ruleset > /etc/nftables/default.nft
  • Outils réseaux

    • tcpdump → capturer et analyser le trafic réseau
      • wireshark → interface graphique
      • discret
    • nmap
      • lister les ports ouverts, identifier des services, etc
      • peut être considéré comme un acte hostile → attention
      • nmap -A -T4 127.0.0.1
        • -A OS detection, etc → additional information
        • -T4 → aggressive mode → fera beaucoup de paquets
        • 127.0.0.1 adresse de la machine à scanner
      • nmap -sn 172.18.1.0/24
        • Utilise ping pour identifier toutes les adresses actives sur le réseau
          • Pas de tests de port
        • Souvent bloqués par les firewall
      • nmap -p 80 172.18.1.0/24
        • Retourne toutes les machines du réseau avec un serveur web → port 80
    • telnet
      • telnet mail.helmo.be 110
        • ouvre connexion TCP non sécurisée
        • permet de faire des tests simple et obtenir des informations sur les services ou versions
      • openssl s_client -connect pop.google.com:995 -servername pop.google.com
        • Equivalent de telnet mais sécurisée avec SSL/TLS
    • hping3
      • Lancer une commande ping sans paquet ICMP bloqué par les firewall → construction de paquets IP
      • hping3 -S www.swila.be -p 80
        • Va faire un ping sur le port 80 sur www.swila.be
        • Si flag = SA → port ouvert
        • Si flag = RA → port fermé
      • hping3 -S www.swila.be -p ++80
        • Scanner les ports ouverts sur une machine (Va tester tous les ports à partir de 80)
      • hping3 -z -t 1 -S www.swila.be -p 80
        • -z augmente le ttl lorsqu’il recoit CTRL+Z
        • -t 1 met le TTL à 1 par défault (donc un seul pont)
        • Va tester le nombre de ponts entre le client et la destination comme un traceroute mais sans ICMP
          • Plus discret pour les firewall
      • —flood dos attack
  • Définir une machine comme cliente du routeur

    • Créer une interfae commune de celle du routeur
    • Configurer l’adresse IP de l’interface via nmtui et définir la passerelle (gateway) à l’adresse du routeur et le DNS à un serveur DNS existant (exemple : 1.1.1.1)
    • Voir schéma du cours sur le sujet
  • Services réseaux de base

    • SSH
      • port 22
      • systemctl enable —now sshd
      • connexion à une machine distante et échange de fichiers
      • configuration
        • /etc/ssh/ssh_config pour le client
        • /etc/ssh/sshd_conifg pour le serveur
        • voir configuration locale pour les clés SSHs
      • Création clé
        • ssh-keygen -t rsa -b 4096
          • taille recommandée, par défault ssh-keygen fait de l’RSA 3072
        • ssh-keygen -t ed25519
          • pas toujours supporté mais est le futur rempacement de RSA
      • Ajout de la clé sur un serveur
        • ssh-copy-id username@host
      • Spécifier un nom custom pour la clé pour le service lui-même
        • cp ~/.ssh/id_rsa ~/.ssh/nom_du_service
        • cp ~/.ssh/id_rsa.pub ~/.ssh/nom_du_service.pub
      • Lier automatiquemnet avec une configuration ssh locale
        • nano ~/.ssh/config
Host alias
  HostName IP_OR_DOMAIN_NAME
  Port 22
  User debian
  IdentityFile ~/.ssh/nom_du_service.pub
  • ssh alias ou ssh-copy-id -i ~/.ssh/nom_du_service.pub alias

  • Gestion des clés dans ~/.ssh/authorized_keys

  • Gestion des hotes dnas ~/.ssh/known_hosts

    • TOFU (Trust On First Use)-like security
  • attention clé privée secrete comparée à clé publique

  • ouvrir application graphique ssh -X

  • code verouillage et agent

  • ne pas devoir reptaper le mdp d’une clé

    • ne pas mettre un mdp sur la clé
    • ou utilsier ssh-agent pour retenir la clé en mémoire vive
      • eval $(ssh-agent)
      • ssh-add ~/.ssh/id_rsa
  • accéder à un service local sur le serveur

    • ssh -L 8000:127.0.0.1:80 user@host
      • Va représenter le localhost:80 de la machine serveur au port local 8000
    • AllowTcpForwarding doit être activée dans le sshd_config
    • /etc/hosts pour éviter les problèmes avec le HTTPS qui indique un problème de sécurité
  • ssh change password → passwd

  • service dhcpd

    • Indispensable sur la plupart des réseaux
    • Distributin de la configuration réseau au postes clients
    • Très important car la plus part des appareils aujourd’hui sont nomades (PC portables, téléphones, etc)
    • ici seulement sur l’IPV4 car pour l’ipv6 il y a le protocole NDP (DHCPv6 ne servant pas à grand chose)
    • Renomé kea car dhcpcd est en fin de vie
  • Configuration dans /etc/kea

  • kea-ctrl-agent.conf → interface REST pour configurer et administrer le serveur kea

  • keactrl.conf → services activés au sein de kea

    • Désactiver le service dhcp6
    • Désactiver le service ctrl_agent
    • Plus facile pour analyser des problèmes de configuration par après
  • kea-dhcp4.conf → description du service DHCPv4

    • Exemple de code simplifié depuis la configuration par défault
{
  "Dhcp4": {
        "interfaces-config": {
                "interfaces": [ "eth1" ]
        },
        "control-socket": {
                "socket-type": "unix",
                "socket-name": "/run/kea/kea4-ctrl-socket"
        },
        "lease-database": {
                "type": "memfile",
                "lfc-interval": 3600
        },
        "valid-lifetime": 14400,
        "min-valid-lifetime": 7200,
        "max-valid-lifetime": 86400,
        "subnet4": [
           {
                "subnet": "172.18.1.0/24",
                "interface": "eth1",
                "pools": [
                  {
                        "pool": "172.18.1.50 - 172.18.1.100"
                  }
                ],
                "option-data": [
                  {
                        "name": "routers",
                        "data": "172.18.1.2"
                  },
                  {
                        "name": "domain-name-servers",
                        "data": "1.1.1.1, 9.9.9.9"
                  },
                  {
                        "name": "domain-name",
                        "data": "localdomain"
                  }
                ],
                "reservations": [
                  {
                        "hw-address": "00:11:22:33:44:55",
                        "ip-address": "172.18.1.200"
                  }
                ]
           }
        ]
  }
}
  • Configuration des interfaces réseaux et des sous-réseaux contrôlés par dhcp (dans nos cas il n’y aura qu’un seul sous réseau)

  • Information sur la base de donnée utilisée pour dhcp (et lfc-interval est l’interval entre deux nettoyage de la base de donnée)

  • Temps de bail DHCP (valid-lifetime)

    • 4 heures lorsqu’il y a beaucoup d’appareils mobiles
    • 8 heures lorsqu’il y a un peu d’appareils mobiles
    • 1 jour
    • 8 jours lorsqu’il y a majoritairement des PC fixes
  • Définition du sous réseau, de son interface, l’étendue des adresses IP pouvant être attribuées

    • Les informations devant être envoyées au client à propos de la configuration
      • Routeurs pour sortir du réseau
      • IP des DNS à envoyer au client
      • Le suffixe DNS à utiliser pour le réseau
  • Les réservations hardcodées

    • Association d’un e addresse MAC (phyisque) à une adresse IP précise

  • kea-dhcp6.conf → description du service DHCPv6 → pas utilisé ici car NDP

  • kea-dhcp-ddns.conf → configuration du lien DDNS (dont clé “TSIG”) pour s’inscrire automatique des entrées dans le DNS

  • ATTENTION ! Il ne peut y avoir qu’un seul service DHCP actif sur un sous réseau à un instant donné sinon les clients risquent de recevoir des configurations réseaux contradictoires

    • Faites bien attention à désactiver ce service dans la configuratoin de pfsense
  • Démarrage et activation du service dhcp

sudo systemctl start kea-dhcp4 sudo systemctl enable kea-dhcp4

  • Debug de la configuration

sudo systemctl status kea-dhcp4

  • Les bails sont enregistrés dans le fichier /var/lib/kea-leases4.csv

  • Les postes client doivent être configuré en “automatique” pour utiliser la configuration dhcp du réseau dans NetworkManager

  • NTP

    • Network Time Protocol
    • Synchronisation du temps aux machines et à l’équipement réseua
    • Service “chrony”
      • /etc/chrony.conf
        • server pool → serveur ntp auquel se synchroniser, stratum 1 pour les qulaité les meilleur avec un système atomique
        • driftfile → fichier qui observe les différences de temps observées
        • allow-deny pour sépcifier les adresses IP ou réseaux qui ont accès ou non au service chrony
          • Important pour être en mode serveur et pas seulement client. Par défault allow est exclusif, donc seul celui-la pourra se connecter et personne d’autre
          • Si pas de allow, personne ne peut s’y connecter, chrony est alors seulement un client pour un autre serveur sur la machine
      • chronyd -q ‘server ntp1.oma.be iburst’
        • Synchronisation une première fois afin de ne pas perturber le système en cours de fonctionnement en cas de différence de temps importante
        • AVANT le démarrage du service
      • systemctl enable —now chronyd
      • systemctl status chronyd
      • Voir les sources, la fiabilité, les synchornisations en cours, etc → chronyc sources