tuto3: done
This commit is contained in:
parent
6b81aebc71
commit
2baa88a7aa
@ -12,7 +12,7 @@ cmdline() {
|
||||
[ -f "/var/lib/adlin/wireguard/adlin.token" ] && WGTOKEN=$(cat /var/lib/adlin/wireguard/adlin.token)
|
||||
[ -z "${WGTOKEN}" ] && WGTOKEN=$(cmdline adlin.token)
|
||||
[ -z "${WGTOKEN}" ] && {
|
||||
echo "You didn't define your token to connect the network. Please run here `join-p0m` and then reboot."
|
||||
echo "You didn't define your token to connect the network. Please run here `join-maatma` and then reboot."
|
||||
exit 1
|
||||
}
|
||||
[ -f "/var/lib/adlin/wireguard/adlin.conf" ] && WGPRVKEY=$(sed 's/^.*PrivateKey *= *//p;d' /var/lib/adlin/wireguard/adlin.conf)
|
||||
|
@ -1,23 +1,30 @@
|
||||
\newpage
|
||||
|
||||
Netfilter
|
||||
=========
|
||||
Routage
|
||||
=======
|
||||
|
||||
Le projet `netfilter`[^netfilter] est l'implémentation de pare-feu au sein du
|
||||
noyau Linux. Il s'agit d'un mécanisme de filtrage des paquets réseau basés sur
|
||||
des règles, chargées par l'espace utilisateur dans le noyau. On utilise pour
|
||||
cela les programmes `nft` (du projet `nftables`), ou de manière historique
|
||||
`iptables`.
|
||||
Votre entreprise dispose d'un modeste routeur utilisant
|
||||
[OpenWrt](https://openwrt.org/). Il s'agit d'une petite distribution Linux
|
||||
mettant à disposition une interface web pour configurer son routeur
|
||||
facilement[^facilement].
|
||||
|
||||
[^netfilter]: <https://netfilter.org/>
|
||||
[^facilement]: Si vous préférez, ce TP existe aussi en utilisant une simple
|
||||
distribution Debian comme routeur. C'est tout aussi efficace et les mêmes
|
||||
technologies sont en jeu. Demandez à votre professeur l'ISO si vous êtes
|
||||
intéressés !
|
||||
|
||||
Au sein du noyau Linux, le [projet `netfilter`](https://netfilter.org/) est
|
||||
l'implémentation de pare-feu standard. Il s'agit d'un mécanisme de filtrage des
|
||||
paquets réseau basés sur des règles, chargées par l'espace utilisateur dans le
|
||||
noyau. On utilise pour cela les programmes `nft` (du projet `nftables`), ou de
|
||||
manière historique `iptables`.
|
||||
|
||||
Les deux projets ont une manière de fonctionner très similaire, mais il est
|
||||
important de ne pas les utiliser en même temps, sous peine de voir apparaître
|
||||
des problèmes incompréhensible à déboguer, plus ou moins aléatoirement.
|
||||
|
||||
|
||||
Réseau fonctionnel ?
|
||||
--------------------
|
||||
## Réseau fonctionnel ?
|
||||
|
||||
Première étape : avez-vous vérifié l'état du réseau sur le routeur ?
|
||||
|
||||
@ -35,8 +42,7 @@ que vous devriez obtenir sont :
|
||||
contacter.
|
||||
|
||||
|
||||
Donner accès à Internet
|
||||
-----------------------
|
||||
## Donner accès à Internet
|
||||
|
||||
Votre administrateur système vous assure que le serveur de noms est bien lancé
|
||||
et configuré comme demandé.
|
||||
@ -59,9 +65,43 @@ Test à passer :
|
||||
```
|
||||
</div>
|
||||
|
||||
Vous pouvez utiliser, par exemple `tcpdump`, pour comprendre ce qu'il se passe
|
||||
sur votre routeur :
|
||||
|
||||
Exposer un service web sur Internet
|
||||
-----------------------------------
|
||||
<div lang="en-US">
|
||||
```
|
||||
router# tcpdump -i ethsrv
|
||||
router# tcpdump -i eth0 udp and port 53
|
||||
```
|
||||
</div>
|
||||
|
||||
|
||||
## Accéder aux autres serveurs du parc
|
||||
|
||||
Depuis le routeur, vous pouvez vous SSH en utilisant le nom d'hôte attribué aux
|
||||
machines :
|
||||
|
||||
<div lang="en-US">
|
||||
- `ssh root@news`
|
||||
- `ssh root@matrix`
|
||||
- `ssh root@www`
|
||||
</div>
|
||||
|
||||
|
||||
Depuis l'extérieur, vous devez utiliser le routeur comme *bastion*. Avec SSH,
|
||||
utilisez l'option `-J` pour désigner une machine intermédiaire qui servira à
|
||||
accéder à la machine cible :
|
||||
|
||||
<div lang="en-US">
|
||||
```
|
||||
42sh$ ssh -J root@$EXT_ROUTER root@172.23.42.3
|
||||
```
|
||||
</div>
|
||||
|
||||
|
||||
## Exposer les services
|
||||
|
||||
### Localement
|
||||
|
||||
Vous avez compris comment vos machines peuvent accéder à Internet sans avoir
|
||||
pour autant d'IP routable sur Internet. Cependant, si cela répond parfaitement
|
||||
@ -73,13 +113,16 @@ depuis l'interface externe du routeur. Après configuration, depuis un
|
||||
navigateur sur votre poste, vous devriez pouvoir accéder à :
|
||||
|
||||
<div lang="en-US">
|
||||
* `http://$EXT_ROUTER_IP:80/` : Vitrine
|
||||
* `http://$EXT_ROUTER_IP:8000/` : Vitrine
|
||||
* `http://$EXT_ROUTER_IP:8080/` : Miniflux
|
||||
* `http://$EXT_ROUTER_IP:8448/` : Matrix
|
||||
* `http://$EXT_ROUTER_IP:8008/` : Matrix
|
||||
</div>
|
||||
|
||||
Notez bien qu'il s'agit là seulement d'un test avec l'IPv4 de votre routeur. Il
|
||||
n'est pas encore demandé de faire cela sur l'IPv6 routable sur Internet.
|
||||
|
||||
### Miniflux
|
||||
|
||||
### Utiliser Miniflux
|
||||
|
||||
Utilisez le nom d'utilisateur `adeline` pour vous connecter à
|
||||
miniflux. N'oubliez pas de changer le mot de passe avant que quelqu'un
|
||||
@ -88,3 +131,11 @@ d'autre s'en charge à votre place !
|
||||
Si vos serveurs ont bien accès à Internet, vous pourrez mettre à jour
|
||||
la liste des flux pré-enregistrés dans miniflux, afin de faire un peu
|
||||
de veille !
|
||||
|
||||
|
||||
### On passe sur Internet ?
|
||||
|
||||
Si jusque là, tout se passe à merveille pour vous (c'est ce que je vous
|
||||
souhaite !), vous pouvez maintenant rediriger le port 80 et 443 arrivant sur
|
||||
l'IPv6 de votre routeur, vers ceux du serveur web. Sur lequel nous allons
|
||||
installer un reverse-proxy...
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 118 KiB |
@ -3,14 +3,14 @@ title: Administration Linux avancée -- TP n^o^ 3
|
||||
subtitle:
|
||||
author: Pierre-Olivier *nemunaire* [Mercier]{.smallcaps}
|
||||
institute: EPITA
|
||||
date: Lundi 30 mars 2020
|
||||
date: Lundi 22 mars 2021
|
||||
abstract: |
|
||||
Durant ce troisième TP, nous allons faire un peu plus de réseau !
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
Tous les éléments de ce TP (exercices et projet) sont à rendre à
|
||||
<adlin@nemunai.re> au plus tard le dimanche 12 avril 2019 à 23
|
||||
<adlin@nemunai.re> au plus tard le dimanche 11 avril 2021 à 23
|
||||
h 42. Consultez la dernière section de chaque partie pour plus d'information
|
||||
sur les éléments à rendre.
|
||||
|
||||
|
@ -7,24 +7,32 @@ Présentation du système d'information
|
||||
-------------------------------------
|
||||
|
||||
Le système d'information que vous allez avoir à gérer aujourd'hui est de taille
|
||||
moyenne : vous aurez en votre possession un serveur DNS résolveur, un serveur
|
||||
DNS autoritaire, un serveur de base de données ainsi que plusieurs serveurs web
|
||||
(servant respectivement votre vitrine, [Miniflux](https://miniflux.app/), ainsi
|
||||
que [Matrix](https://matrix.org/)).
|
||||
moyenne. Vous aurez en votre possession :
|
||||
|
||||
- un serveur DNS résolveur,
|
||||
- un serveur DNS faisant autorité,
|
||||
- un serveur de base de données,
|
||||
- plusieurs serveurs web (servant respectivement votre vitrine,
|
||||
[Miniflux](https://miniflux.app/), ainsi que [Matrix](https://matrix.org/)),
|
||||
- de nombreux postes de travail.
|
||||
|
||||
Vous êtes l'administrateur réseau de l'entreprise et l'on vous demande de
|
||||
connecter tous ces services **correctement**.
|
||||
|
||||
Voici un schéma de l'infrastructure complète dont vous allez disposer en
|
||||
démarrant l'ISO.
|
||||
|
||||
![Architecture réseau à produire](topologie.png "Topologie")
|
||||
|
||||
L'image ISO que vous avez récupérée met à votre disposition tout ce système
|
||||
d'information, déjà en partie configuré pour sa partie logicielle, il ne reste
|
||||
plus qu'à éditer la configuration du routeur.
|
||||
|
||||
![Architecture réseau à produire](topologie.png "Topologie")
|
||||
|
||||
Attention, contrairement au précédent TP, tout se fait en direct, il n'y a
|
||||
aucune sauvegarde effectuée : à chaque redémarrage de la machine virtuelle,
|
||||
vous retomberez dans l'état initial : seuls quelques éléments comme le token de
|
||||
votre tunnel et le contenu de la base de données.
|
||||
Attention, contrairement au précédent TP, la majorité des modifications que
|
||||
vous allez effectuer ne seront pas persistantes d'un reboot à l'autre. À chaque
|
||||
redémarrage de la machine virtuelle, vous retomberez dans un état initial.
|
||||
Seuls quelques éléments comme le token de votre tunnel, la configuration du
|
||||
routeur et le contenu de la base de données persistent.
|
||||
|
||||
Accéder à la machine virtuelle
|
||||
------------------------------
|
||||
@ -33,7 +41,7 @@ Une fois la machine virtuelle démarrée, vous devriez voir apparaître l'IP qu'
|
||||
obtenue la machine sur votre réseau :
|
||||
|
||||
```
|
||||
You didn't define your token to connect the network. Please run here `join-p0m` and then reboot.
|
||||
You didn't define your token to connect the network. Please run here `join-maatma` and then reboot.
|
||||
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
|
||||
link/ether 42:2c:63:f1:5a:49 brd ff:ff:ff:ff:ff:ff
|
||||
inet 10.42.23.211/24 brd 10.42.23.255 scope global eth0
|
||||
@ -50,15 +58,11 @@ Une ligne de commande est disponible au sein de la machine virtuelle à des fins
|
||||
de débogage, si nécessaire. Vous ne devriez normalement pas avoir à interagir
|
||||
avec celle-ci.
|
||||
|
||||
Si vous assignez deux cartes réseau à la machine virtuelle, vous devriez voir
|
||||
apparaître l'IP de la carte `eth1` en dessous. Il s'agit d'une interface de
|
||||
station de travail.
|
||||
|
||||
|
||||
### Tunnel Maatma
|
||||
|
||||
Pour retrouver votre tunnel sur Internet, vous devez, dans la console de la
|
||||
machine virtuelle, utiliser la commande `join-p0m`.
|
||||
machine virtuelle, utiliser la commande `join-maatma`.
|
||||
|
||||
Vous pouvez aussi écrire directement dans le fichier persistant :
|
||||
|
||||
@ -68,13 +72,21 @@ Vous pouvez aussi écrire directement dans le fichier persistant :
|
||||
```
|
||||
</div>
|
||||
|
||||
Une fois le token renseigné, vous devez redémarrer la machine afin qu'il soit
|
||||
pris en compte.
|
||||
|
||||
|
||||
### Connexions SSH
|
||||
|
||||
Vous pouvez vous connecter en utilisant le compte `root` et le mot de passe
|
||||
`adlin2021`.
|
||||
`adlin2022`. Comme au précédent TP, si vous disposez d'une ou plusieurs [clefs
|
||||
SSH enregistrées au CRI](https://cri.epita.fr/users/nemunaire/ssh-keys/),
|
||||
celles-ci sont automatiquement ajoutées aux différents serveurs. Cependant,
|
||||
seuls les clefs RSA et DSA sont utilisables pour se connecter sur le routeur,
|
||||
le serveur SSH ne gère pas les courbes éliptiques.
|
||||
|
||||
Notez que vous n'avez pas accès à la machine hébergeant la base de données, ni
|
||||
à celle du résolveur DNS.
|
||||
Notez que vous n'avez pas accès à la machine hébergeant la base de données, le
|
||||
lecteur de flux RSS, ni à celle du résolveur DNS.
|
||||
|
||||
|
||||
Objectif du TP
|
||||
@ -89,3 +101,48 @@ s'assurer que ce soit également le cas des stations de travail).
|
||||
|
||||
Étant donné le caractère éphémère de vos actions, la réalisation d'un
|
||||
*Playbook* Ansible semble plutôt adaptée !
|
||||
|
||||
|
||||
Au secours ça ne marche pas !
|
||||
-----------------------------
|
||||
|
||||
Pas de panique !
|
||||
|
||||
Quelques commandes sont à votre disposition dans le shell de la machine
|
||||
virtuelle afin de vérifier que tout fonctionne correctement.
|
||||
|
||||
|
||||
### Monitoring
|
||||
|
||||
Utilisez la commande `diagnostic` afin d'avoir une vue d'ensemble des éventuel
|
||||
problèmes.
|
||||
|
||||
Tout est vert ? Toutes les machines sont opérationnelles !
|
||||
|
||||
Une ou plusieurs machines sont rouges ? il y a effectivement un problème avec
|
||||
les machines concernées. Tentez de redémarrer une fois.
|
||||
|
||||
Si le problème persiste, vous pouvez formater votre disque en utilisant la
|
||||
commande `raz-my-dd`. Ce qui vous permettra de retrouver la configuration
|
||||
d'origine.
|
||||
|
||||
Pour les plus téméraires, les journaux des machines sont regroupés dans
|
||||
`/var/log` accessible uniquement dans la console de la machine virtuelle.
|
||||
|
||||
|
||||
### Retrouver mes IP
|
||||
|
||||
Vous ne pouvez pas simplement taper `ip a` dans le terminal de votre machine
|
||||
virtuelle. Utilisez plutôt la commande `welcome` qui affichera à nouveau le
|
||||
message d'accueil avec les différentes IP associées à vos machines.
|
||||
|
||||
|
||||
### Rejoindre Maatma
|
||||
|
||||
Utilisez la commande `join-maatma` dans la console de la machine virtuelle,
|
||||
puis redémarrez la machine.
|
||||
|
||||
Vous pouvez aussi passer par l'interface de votre routeur pour ajouter une
|
||||
interface 'Wireguard VPN'. Utilisez les informations contenues sur la page
|
||||
[Tunnels de Maatma](https://adlin.nemunai.re/maatma/tunnels) pour remplir les
|
||||
différents champs.
|
||||
|
@ -24,13 +24,8 @@ N'ayant pas, pour le moment, d'IPv6 sur votre réseau ; vous devez mettre en
|
||||
place un serveur DHCP sur votre réseau afin que vos collaborateurs puissent
|
||||
utiliser facilement le réseau.
|
||||
|
||||
Configurez un serveur DHCP, tel quel `isc-dhcp-server` ou `udhcpd` afin de
|
||||
distribuer des IP correspondant au plan d'adressage. N'oubliez pas de définir
|
||||
le chemin permettant de sortir sur Internet ainsi que d'utiliser le résolveur
|
||||
de noms de domaine local.
|
||||
|
||||
Une fois configuré, vous pouvez tenter de vous connecter aux services web (vous
|
||||
devriez avoir `wget` sur la station de travail accessible).
|
||||
devriez avoir `wget` sur les stations de travail accessibles).
|
||||
|
||||
|
||||
Zone démilitarisée et filtrage
|
||||
|
Reference in New Issue
Block a user