Mon réseau d’entreprise
4.1 Base des Services Réseaux
4.1.1 Objectifs
Le but du module consiste à mettre en place un petit réseau d’entreprise. Pour cela un fournisseur d’accès fournit une plage de 255 adresses IP, un accès internet. L’étudiant doit mettre en place :
-
• Une machine virtuelle : routeur, serveur DNS, serveur DHCP
-
• Au moins une autre machine virtuelle : serveur wordpress
-
• Un serveur DNS
-
• Le partage de fichiers entre deux machines (NFS, sshfs, samba, webdav)
-
• Sauvegarde, restauration
-
• Supervision
Ce réseau sera utilisé dans le module de téléphonie pour mettre en place le serveur de téléphonie.
Le support de présentation est : disponible ici.
Les transcriptions parfois disponibles. Ces transciptions sont réalisées automatiquement par l’outil Lokas de Framsoft. Le résultat est certes approximatif, mais si cela peut aider, faites le moi savoir.
4.1.2 Compétences visées
Mettre en place un petit réseau d’entreprise. Pour cela, il faut pouvoir définir un plan d’adressage et définir les noms, installer facilement de nouveaux serveurs.
4.1.3 Mise en œuvre
Le serveur de virtualisation est partagé entre tous les étudiants. Il convient de respecter un ensemble de règles :
-
1. Avoir un mot de passe fort et ne pas l’oublier. Je ferai tourner un logiciel de crackage de mots de passe.
-
2. Avoir une consommation raisonable. Je pourrais mettre en place des quotas d’utilisation disque, cpu, ram...
-
3. Les adresses IP, ports réseau doivent contenir l’UID de l’étudiant. Par exemple, l’étudiant d’UID 2073 pourra utiliser le serveur vnc sur les ports 73, 173 ; les adresses IP 10.20.73.X, les adresses mac 42:20:73:xy:zt:uv ;
-
4. S’il le faut, on rajoutera des règles
4.1.3.1 Les réseaux dédiés à un étudiant
Pour connaître ses paramètres réseaux, l’étudiant doit connaitre son UID (l’identifiant utilisateur).
L’élève Ducobu cherche son identifiant :
id ducobu uid=7013(ducobu) gid=5000(P2021) groupes=5000(P2021)
Les réseaux lui étant dédiés portent son numéro d’utilisateur et il en est le propriétaire. Ainsi, aucun autre étudiant ne devrait pouvoir utiliser ce réseau :
root@thorin:~# ls -ls /var/run/vde2/ | grep ducobu 0 drwxrws--- 2 ducobu vde2 60 févr. 17 21:17 kvmstud7013.ctl 0 srw-rw---- 1 ducobu vde2 0 févr. 17 21:17 kvmstud7013.mgmt 4 -rw-r--r-- 1 ducobu vde2 5 févr. 17 21:17 kvmstud7013.pid 0 drwxrws--- 2 ducobu vde2 60 févr. 17 21:17 kvmstudPriv7013.ctl 0 srw-rw---- 1 ducobu vde2 0 févr. 17 21:17 kvmstudPriv7013.mgmt 4 -rw-r--r-- 1 ducobu vde2 5 févr. 17 21:17 kvmstudPriv7013.pid
Il dispose donc des réseaux kvmstud7013 et kvmstudPriv7013.
$ ip address show kvmstud7013 19: kvmstud7013:... UP ... link/ether 8e:d6:80:ae:aa:43 brd ff:ff:ff:ff:ff:ff inet 10.4.13.1/24 brd 10.4.13.255 scope global kvmstud7013 valid_lft forever preferred_lft forever inet6 fe80::8cd6:80ff:feae:aa43/64 scope link valid_lft forever preferred_lft forever $ ip address show kvmstudPriv7013 94: kvmstudPriv7013: ... UP ... link/ether 1a:9f:eb:fd:13:3f brd ff:ff:ff:ff:ff:ff inet 10.244.13.1/24 brd 10.244.13.255 scope global kvmstudPriv7013 valid_lft forever preferred_lft forever inet6 fe80::189f:ebff:fefd:133f/64 scope link valid_lft forever preferred_lft forever
Regardons les routes vers ces interfaces :
ip route | grep 7013 10.4.13.0/24 dev kvmstud7013 proto kernel scope link src 10.4.13.1 10.144.13.0/24 via 10.4.13.10 dev kvmstud7013 10.244.13.0/24 dev kvmstudPriv7013 proto kernel scope link src 10.244.13.1
Trois réseaux sont affectés à l’étudiant :
- 10.4.13.0/24
-
le réseau principal. Ce réseau est celui qui relie Internet avec le réseau de l’étudiant. Seul le routeur (10.4.13.10) peut être utilisé sur ce réseau. Il n’y a pas de serveur DHCP, donc le routeur doit être configuré avec ses adresses en statique.
- 10.144.13.0/24
-
Le réseau privé de l’étudiant. Il peut y installer autant de machine GNU/Linux qu’il désire.
- 10.244.13.0/24
-
la carte réseau de Thorin, sur lequel est connecté le réseau privé de l’étudiant. Le firewall bloque tout les paquets sur cette interfaces, ces adresses sont donc inutilisables.
La connexion vers les machines virtuelles s’effectuera en utilisant le protocole ssh. Les connexions par VNC, indispensables, ne seront utilisées uniquement quand le protocole ssh ne peut être utilisé.
4.1.4 La notation du module
Attention : vinagre est en fin de vie, utiilsez gvncviewer
-
1. Connexion Thorin, identification des paramètres 4.1.4.1
-
2. Installation d’un routeur sur thorin 4.1.4.2
-
3. Installation de serveurs Apache, Asterisk 4.1.4.3
-
4. Partage de fichiers réseaux : nfs, fuse, samba 4.1.4.4
-
5. Installation wordpress et webdav, script php 4.1.4.5
-
6. Sauvegarde, restauration mariadb, Synchronisation des données hors d’Osaka 4.1.4.6
-
7. Recherches de pannes 4.1.4.7
-
8. Supervision 4.1.4.8
-
9. Linux à la maison 4.1.4.9 ;
-
10. Gestion des mots de passe par KeePass 4.1.4.10 ;
4.1.4.1 Connexion Thorin, identification des paramètres
Il s’agit de préparer le réseau qui va être utilisé. Vous devez donc commencer par rédiger un dessin (analogue à celui dessiné ci-dessus). Vous écrivez dessus les noms de vos serveurs (qui contiennent le nom de famille et l’usage (routeur, asterisk, lamp…)), les adresses réseaux, les adresses de chaque carte réseau utilisée, les ports VNC utilisés.
-
1. connexion sans mot de passe vers Thorin ;
-
2. liste des adresses dans le Wiki :
-
• L’adresse de votre station en Osaka
-
• L’adresse de Thorin (vue depuis Osaka)
-
• Les deux adresses de vos cartes réseaux sur Thorin
-
• Vos adresses de réseau
-
• Les adresses (toutes) de vos serveurs virtuels
-
-
3. liste des ports VNC utilisables par vous ;
-
4. xlogo,
-
5. affichage des compteurs :
-
• identification du disque qui contient vos données,
-
• Utilisation de ce disque (df -h),
-
• Consommation personnelle sur ce disque (du -ah),
-
• RAM,
-
• CPU (nombre et utilisation uptime) ;
-
-
6. Effacement de clef de la machine cible et afficher la page de doc sur ce sujet ;
-
7. dessin dans le Wiki ;
-
8. fichier contenant une machine juste installée (Ram : 1Go, DD : 10Go), modification du nom de la machine (fichiers du répertoire /etc : hosts et hostname).
L’effacement de la clef de la machine cible sert quand celle ci a été réinstallée. Par exemple, lors d’un TP en Osaka, vous pouvez envoyer un fichier depuis thorin vers joe. À l’issue du TP, les ordinateurs sont réinstallés. Lors de la séance suivante, la connexion depuis Thorin vers Joe ne sera pas acceptée. Il faut donc indiquer à Thorin qu’il faut oublier l’ancienne clef de Joe.
Le fichier, machine juste installée, permet de récupérer une image de Debian propre quand vous en avez besoin sans gâcher du temps.
4.1.4.2 Routeur sur Thorin
Vous installez un serveur sur Thorin. Ce serveur aura comme fonctionnalité d’assurer le routage. Il lui faudra donc deux interfaces réseaux, donc répéter le couple -net nic MAC et -net vde....
kvm ... // plein d'options
-net nic,macaddr=42:30:03:01:01:02
-net vde,sock=/var/run/vde2/kvmstud7013.ctl
-net nic,macaddr=42:30:03:01:02:03
-net vde,sock=/var/run/vde2/kvmstudPriv7013.ctl
... // d'autres options
Il faudra identifier les deux interfaces dans la machine virtuelle ensuite.
-
1. Installation d’un serveur sur Thorin ;
-
2. Utilisation de deux interfaces réseaux ;
-
3. Utilisation de VNC ;
-
4. Affectation des adresses IP (/etc/network/interfaces.d)
-
5. Avec tshark, prouver que le réseau privé est accessible (Depuis la station osaka, faire un ping vers une adresse du réseau privé).
-
6. Récupération du disque dur avec kpartx (utiliser qemu-img pour changer le type de disque dur qcow2 ou autre vers raw) ;
-
7. Afficher la documentation sur kpartx ;
-
8. connexion ssh/vnc.
La partie difficile pour cette question consiste à configurer le réseau pour votre machine virtuelle. Ensuite, il faut se connecter à cet ordinateur par ssh, d’une part et par VNC d’autre part. Le serveur ssh est lancé par votre machine virtuelle mais le serveur vnc est lancé par kvm. Le serveur vnc tourne donc sur Thorin. Il faut donc se connecter vers votre machine virtuelle, par ssh et vers Thorin pour VNC.
Pourquoi ? Le serveur virtuel tourne dans un local fermé et distant. Il est peut être même inaccessible. Il faut donc prévoir les problèmes. Pour l’administration courante, il faut pouvoir se connecter dessus en utilisant ssh. Il permet d’ouvrir simultanément plusieurs connexions, peut s’utiliser depuis un téléphone Linux et depuis des réseaux peu efficaces.
Parfois, la machine virtuelle ne répond plus. Elle n’est pas forcément cassée. Par exemple, le serveur DHCP ne fonctionnait pas quand elle a démarré, elle n’a donc pas pu obtenir ses paramètres réseaux. La connexion VNC permet de récupérer une machine virtuelle qui n’a pas de réseau.
Si le problème est plus grave, il est possible d’accéder directement au disque dur. Par exemple, le mot de passe administrateur est perdu. Il est possible d’utiliser kpartx pour le changer avant de relancer la machine.
Pour la connexion VNC vers la machine virtuelle, il faut se connecter sur le processus kvm, donc vers Thorin. Selon l’étudiant, le numéro de port doit changer : par exemple, l’étudiant portant l’ID 77 lancera la commande
kvm ... -vnc :77
Le port à transférer sera le port 5977. C’est l’analogue du tranfert pour le wiki. Attention, l’augmentation de la charge de cet ordinateur risque de générer des problèmes de connexions, en particulier une interaction avec les serveurs X-Window. Si un port semble problématique, vous pouvez vérifier avec ss s’il est déjà occupé et en prendre un autre. Les numéros de ports entre 6000 et 6030 peuvent être utilisés par X-Window, donc :
- Peu de problème
-
5977 (vnc :77), 6077 (vnc :177), 6177…
- Risque
-
: 5910 (vnc :10, ok), 6010 (vnc :110, risque avec X-Window)
ssh thorin -L 5977:localhost:5977
Le port apparaîtra donc sur la machine physique, il reste à se connecter avec le protocole VNC. Cette manipulation n’est pas utile depuis les salles Osaka, Panama, Vladivostock.
gvncviewer localhost:77
ATTENTION utilisez votre numéro de port, sinon vous aurez des problèmes !
4.1.4.3 Apache, Asterisk
Pour prouver cette partie, il faut un serveur dhcp dns et deux clients (serveurs apache et asterisk). Pour prouver que votre client se connecte bien sur votre serveur, il faut laisser tourner un tshark sur le serveur et visualiser le trafic DHCP et DNS. Le routage sera activé en utlisant la commande présentée 14.3.4.2. Il n’y a pas besoin de firewall.
-
1. présentation des deux serveurs (respect des noms, des adresses IP, des ports VNC) ;
-
2. Documentation sur dnsmasq ;
-
3. installation de dnsmasq ;
-
4. utilisation du range (pool d’adresses) ;
-
5. adresse fixe ;
-
6. définition des noms ;
-
7. montrer par tshark (ou tcpdump) que c’est bien le serveur prévu qui répond.
4.1.4.4 Partage de fichiers
Il s’agit de montrer quelques techniques d’échanges de fichiers entre deux ordinateurs. Il faut montrer une fenêtre sur chaque ordinateur, modifier un fichier sur un des ordinateurs et vérifier qu’il est modifié sur l’autre.
-
1. NFS ;
-
2. Samba :
-
3. Fuse (sshfs).
La démonstration s’effectue ainsi :
-
1. Documentation Fuse et NFS ;
-
2. Un terminal sur chaque ordinateur (ssh, pas de qemu/vnc) ;
-
3. Montrer le fichier de configuration du serveur ;
-
4. Montrer le répertoire exporté sur le serveur ;
-
5. Montrer le répertoire sur le client ;
-
6. Créer un fichier (date > bar ) sur le client ou le serveur ;
-
7. Montrer sa création et son contenu sur le serveur.
La démonstration peut être fluide en préparant chaque protocole dans un bureau disctinct.
Samba peut sembler surprenant dans une formation de cybersécurité. L’histoire de ce protocole ne plaide pas pour une recommandation de sécurité objective. Néanmoins, il a deux utilisations :
-
1. Si vous arrivez dans une entreprise pas vraiment à la pointe de la sécurité, vous pouvez avoir besoin d’accéder à des ressources. D’où l’utilisation d’un client samba sous GNU/Linux.
-
2. Si vous avez pour mission de sécuriser les serveurs d’une entreprise, alors vous les installez sur Debian. Les stations de travail peuvent, dans un premier temps, rester avec un système défaillant. Dans ce cas, vous utilisez un serveur samba sous GNU/Linux.
Jean-Christophe Perennes pourra vous aider pour samba. Pour la soutenance, il suffit d’un client et d’un serveur GNU/Linux opérationnel pour montrer le succès de l’opération.
Webdav sera évalué dans la question 4.1.4.5.
4.1.4.5 Installation wordpress et webdav, PhP
-
1. Trouver dans la doc, l’explicitation de LAMP ;
-
2. Installer un serveur wordpress qui doit contenir :
-
• un titre personnalisé (faisant apparaître votre nom de famille),
-
• un document PDF,
-
• un photo jpg,
-
• un peu de texte (pourquoi pas les explications de votre wordpress ;
-
-
3. Installer Webdav sur un serveur apache2, utiliser un client texte pour changer les fichiers ;
-
4. créer une page php qui affiche
-
• la dernière valeur d’un fichier,
-
• un graphique produit par programme (voir 17.3).
Utiliser un terminal pour modifier le fichier et l’image, le site se mets à jour automatiquement.
-
4.1.4.6 Sauvegarde
Tout ordinateur est voué à la destruction. Les données systèmes sont facile à reproduire. En général, une installation classique, ajout des paquets utilisés, ajout des fichiers de configuration.
Pour les données issues de l’utilisation, c’est un peu plus complexe. Il faut copier les données d’un ordinateur vers un autre, par exemple avec rsync qui ne propage que les fichiers modifiés depuis la dernière copie. Pour certains fichiers, comme les bases de données ou les images de machines virtuelles, il faut s’assurer que le fichier n’est pas altéré pendant la durée de la copie. Pour les bases de données, il faut donc réaliser un dump de celle-ci.
-
1. Identifier les données à sauvegarder (wordpress et sa base de données) ;
-
2. Réaliser un dump de la base de données ;
-
3. Utiliser rsync pour transferer les données entre deux ordinateurs ;
-
4. Modifier un fichier dans l’arborescence de wordpress ;
-
5. Relancer rsync pour montrer que seul le fichier modifié est transféré ;
-
6. Vérifier sur l’autre ordinateur que le site wordpress est bien restauré.
4.1.4.7 Recherche de pannes
Pour cette question, c’est plus simple d’utiliser un serveur spécifique comme telnetd. La capture produira moins de lignes qui seront donc plus faciles à interpréter. Il s’agit de commencer à se donner les moyens d’investiguer et donc pouvoir utiliser les outils d’analyse :
Pour être encore plus simple, il suffit d’utiliser netcat qui fournit un client et un serveur TCP :
$ netcat -l -p 4444 # ouvre un serveur sur le port 4444 $ netcat @IP 4444 # se connecte sur cette adresse ip et le port 4444
Les deux commandes ne se font pas sur la même machine pour que ce soit plus joli.
- 1. tshark ou tcpdump
-
montrer une connexion :
-
• les phases TCP (Connexion, dialogue, fin),
-
• les ports utilisés ;
-
- 2. logs
-
montrer un événement et le retrouver dans un fichier de logs ;
- 3. nmap
-
lister les ports ouverts sur un serveur distant ;
- 4. ss
-
les retrouver avec SS (12.1.4) ;
4.1.4.8 Supervision
Les services mis en place vont tomber en panne. Il faut donc les surveiller, par exemple avec Icinga. La documentation est sur le serveur interne, dans les TP de Licence.
Il faut :
-
1. installer Icinga2 ;
-
2. installer IcingaWeb2 ;
-
3. ajouter la supervision d’un autre ordinateur ;
-
4. superviser un service, par exemple ssh ou apache.
4.1.4.9 Linux à la maison
Ce point sert à valider que vous pouvez utiliser un linux chez vous. Vous avez le choix entre utiliser un ordinateur spécifique (un raspberry Pi coûte moins de 50€) ou une machine virtuelle.
Il faudra ensuite montrer comment établir un accès temporaire à un service web, vers lequel il n’est possible de se connecter qu’à travers deux connexions ssh, voir 12.4.4 :
Si vous n’avez pas d’ordinateur à la maison, merci de le signaler.
Sinon, si vous choisissez la solution de la machine virtuelle. Jean-Christophe pourra vous aider. Si vous n’y arrivez pas, soit c’est de votre faute, et c’est à vous de corriger. Soit, c’est l’ordinateur qui ne le permet pas, dans ce cas votre installation est défaillante, c’est aussi à vous de corriger.
Il faudra :
-
1. Installer une machine linux Debian à la maison ;
-
2. Utiliser le partage d’écran jit.si pour la montrer ;
-
3. connexion ssh vers sas et ouverture d’un port vers Thorin ;
-
4. connexion ssh vers Thorin et ouverture d’un port vers le Wiki ;
-
5. simplification dans le fichier de configuration de ssh :
-
• Accès simplifié vers sas, redirection vers Thorin
-
• Accès simplifié vers thorin, redirection vers :
-
– le wiki
-
– Votre machine en Panama
-
– Un (voire deux) port VNC sur votre machine de Panama
-
-
-
6. partager les commandes dans un screen.
4.1.4.10 Porte feuille : KeepassX*
Il faut mettre en place keepassXc sur un ordinateur :
-
1. Montrer le fichier coffre fort ;
-
2. l’ouvir avec keepassxc ;
-
3. utiliser keepassxc pour fournir le mot de passe au navigateur (firefox ou chromium) ;
-
4. Même chose sur un téléphone.
