Infrastructure réseau Linux (Ubuntu)

Tutoriel : Mettre en place l’infrastructure réseau sécurisée

Mettre en place une infrastructure réseau virtualisée sous Linux permettant de simuler un environnement sécurisé pour le traitement de fichiers.

Ici j’utilise VMware pour virtualiser les différentes machines.

L’infra comprend :

  • Un routeur/firewall (machine pivot avec 4 interfaces réseau, une carte NAT et 3 cartes VMnet (10, 11 & 12))
  • Un serveur DNS
  • Un serveur DHCP
  • Un serveur de fichiers externe (zone publique)
  • Un serveur de fichiers interne (zone sécurisée)
  • Un poste immigrant (client externe SFTP)
  • Un poste inspecteur (consultation de documents validés)

Je vous laisse réfléchir un peu pour définir vous mêmes vos adresses IP 😀

Routeur / Firewall

  • Distribution : Ubuntu Server
  • Fonctions :
    • Routage entre les sous-réseaux
    • Règles iptables pour filtrer le trafic (accès SSH/SFTP uniquement depuis certaines IP)
    • NAT configuré pour permettre à certaines VM de sortir vers internet
  • Pour activer le routage :
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
  • Définir vos règles firewall (ceci est un exemple minimal, il faut une meilleure configuration que vous devrez personnalisé vous mêmes en fonction de ce que vous souhaitez faire).
# Autoriser le forwarding
iptables -A FORWARD -i ens37 -o ens38 -j ACCEPT
iptables -A FORWARD -i ens38 -o ens37 -m state --state ESTABLISHED,RELATED -j ACCEPT

#NAT pour internet
iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE

# autoriser SFTP du LAN2 vers LAN3
iptables -A FORWARD -i ens38 -o ens39 -p tcp --dport 22 -j ACCEPT
  • Sauvegarder les règles :
apt install iptables-persistent
netfilter-persistent save

Serveur DHCP

  • Distribution automatique des IPs pour les clients internes
  • Installer le service DHCP :
apt update && apt install isc-dhcp-server -y
  • Modifier le fichier de configuration 50-cloud-init.yaml :
network:
  version: 2
  ethernets:
    ens33:
      dhcp4: no
      addresses: [Mettre IP]
      gateway4: 
      nameservers:
        addresses: [Mettre IP]
  • Appliquer les modifications :
sudo netplan apply
  • Configurer l’interface réseau :
sudo nano /etc/default/isc-dhcp-server
#Ajoutez : 
INTERFACESv4=“ens33“ 
  • Configurer le fichier principal du DHCP :
sudo nano /etc/dhcp/dhcpd.conf
  • Ajouter votre configuration : (ceci est un exemple de configuration que vous devrez personnaliser)
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.150;
  option routers 192.168.1.1;
  option domain-name-servers 192.168.1.2;
  option domain-name "interne.local";
}
  • Redémarrer le service et vérifier le status :
sudo systemctl restart isc-dhcp-server
sudo systemctl status isc-dhcp-server

Serveur DNS

  • Installer Bind9 pour résoudre les noms internes
  • Zones configurées pour interne.local et externe.local
  • Tous les postes utilisent ce serveur comme résolveur principal
  • Installer Bind9 :
apt install bind9 bind9utils -y
  • Configurer la redirection DNS :
sudo nano /etc/bind/named.conf.options
#Ceci est un exemple de configuration : 
zone "interne.local" {
    type master;
    file "/etc/bind/db.interne.local";
};
  • Créer le fichier de zone :
cp /etc/bind/db.local /etc/bind/db.interne.local
nano /etc/bind/db.interne.local

#Ajoutez ceci au fichier (c'est une config exemple) :

@   IN  SOA ns.interne.local. root.interne.local. (
        2     ; Serial
        604800 ; Refresh
        86400  ; Retry
        2419200; Expire
        604800 ); Negative Cache TTL

@   IN  NS      ns
ns  IN  A       192.168.1.2
router IN A     192.168.1.1
  • Vérifier et redémarrer :
named-checkconf
systemctl restart bind9

Serveur de fichiers externe

  • Accueille les dépôts SFTP des clients
  • Utilisateur client restreint à son répertoire
  • Envoie les archives valides via scp au serveur interne
  • Créer l’utilisateur SFTP :
useradd -m -d /srv/immigration_uploads/immigrant -s /usr/sbin/nologin immigrant
passwd immigrant
  • Configurer SSHD config :
Match User client
    ChrootDirectory /srv/immigration_uploads
    ForceCommand internal-sftp
    AllowTcpForwarding no
  • Redémarrez ssh :
systemctl restart ssh

Serveur de fichiers interne

  • Répertoire /cases/waiting
  • Accès SFTP uniquement depuis le serveur externe (via le client)
  • Créer l’utilisateur de transfert :
useradd -m -s /bin/bash inspecteurcontrole
passwd inspecteurcontrole
  • Créer le dossier d’attente :
mkdir -p /cases/waiting
chown inspecteurcontrole: /cases/waiting

Poste client

  • Ce poste simule un utilisateur externe qui dépose des archives compressées (.zip) via SFTP sur le serveur de fichiers externe, sans pouvoir voir ou modifier autre chose.
  • Config minimal :
# Configuration IP manuelle (Mettez vos ip correctes)
IP: 192.168.X.X
Gateway: 192.168.X.X
DNS: 192.168.X.X
  • Accès SFTP :
sftp VOTRECLIENT@192.168.X.X
  • Une fois connecter pour déposer un fichier :
put archive.zip

Poste inspecteur

  • Ce poste simule un inspecteur du ministère qui consulte les dossiers validés, accessibles uniquement via SFTP en lecture, depuis le serveur interne.
  • Config minimal :
# Configuration IP manuelle (Mettez vos ip correctes)
IP: 192.168.X.X
Gateway: 192.168.X.X
DNS: 192.168.X.X
  • Accès SFTP :
sftp inspecteurcontrole@192.168.X.X
  • Une fois connecter pour récupérer les fichiers :
cd /cases/waiting
get archive.zip

Retour en haut