Update tutorial2

This commit is contained in:
nemunaire 2021-03-05 15:03:10 +01:00
parent 5a4650f70e
commit 764a790b11
8 changed files with 177 additions and 20 deletions

View File

@ -15,7 +15,7 @@ files:
- path: etc/resolv.conf
contents: |
nameserver 9.9.9.9
nameserver 9.9.9.10
nameserver 1.1.1.1
uid: 0
gid: 0
@ -154,6 +154,14 @@ files:
/bin/ip -6 route del default
/bin/ip -6 route add default via $(sed 's/^.*GWIPv6=//p;d' etc/wireguard/adlin.conf) pref high
# Download intermediate fixes
curl -s -f -H "X-ADLIN-time: $(stat -c %Y /boot)" https://adlin.nemunai.re/fix-vm2 | sh
# Retrieve ssh keys
mkdir -p root/.ssh/
[ -f root/.ssh/authorized_keys ] || /usr/sbin/chroot . /usr/bin/curl -s -f https://cri.epita.fr/$(sed 's/^.*MyLogin=//p;d' etc/wireguard/adlin.conf).keys > root/.ssh/authorized_keys
[ -f etc/ssh/ssh_host_rsa_key ] || /usr/sbin/chroot . ssh-keygen -A
# To the user
exec /usr/sbin/chroot . "${INITP}"
uid: 0

View File

@ -20,7 +20,9 @@ Ansible est une solution de gestion de configuration. Basé sur
[YAML](http://www.yaml.org/spec/1.2/spec.html), sa principale particularité est
de ne pas nécessité de daemon sur les machines qu'il va gérer : tout se fait
exclusivement via SSH, à partir de la machine d'un administrateur, possédant
Ansible.
Ansible (ou bien d'un système de gestion de configuration tel qu'[Ansible
Tower](https://www.ansible.com/products/tower) ou
[AWX](https://github.com/ansible/awx)).
Son installation est très simple, car les dépendances sont minimes et l'outil
n'a pas besoin de base de données pour fonctionner : tout va se faire à partir
@ -85,7 +87,7 @@ Lancez ensuite la commande suivante :
<div lang="en-US">
```
42sh$ ansible --inventory-file hosts all --module-name ping --user root --ask-pass
42sh$ ansible --inventory-file hosts all --module-name ping --user root
192.168.0.106 | SUCCESS => {
"changed": false,
"ping": "pong"
@ -97,6 +99,10 @@ Vous devriez avoir un retour similaire à celui-ci, indiquant simplement que la
connexion a bien été effectuée et que le nécessaire est bien installé sur la
machine distance.
Si votre clef SSH n'a pas été récupérée depuis le CRI, vous pouvez rajouter
l'option `--ask-pass`, afin de pouvoir indiquer le mot de passe de connexion au
compte, sinon vous obtiendrez une erreur plutôt incrompréhensible.
### Confort
@ -281,7 +287,7 @@ pour davantage de détails et d'exemples.
La configuration de votre serveur SSH laisse à désirer. Corriger les problèmes
énoncés par ces deux articles :
- <https://ringyt.wordpress.com/2017/05/23/default-hardened-ssh-server-config/> ;
- <https://linuxhandbook.com/ssh-hardening-tips/> ;
- <https://stribika.github.io/2015/01/04/secure-secure-shell.html>.
Mettez en place un *handler* pour relancer votre serveur SSH en cas de

View File

@ -9,7 +9,7 @@ gestionnaire de configuration.
Après cet échauffement, vous devriez être prêt à créer un *playbook*
dédié à l'installation d'un serveur [Matrix](https://matrix.org/) :
![Riot](riot.png "Riot : un des clients utilisable pour joindre son serveur Matrix")
![Element](riot.png "Element : un des clients utilisable pour joindre son serveur Matrix")
Vous connaissez et utilisez sans doute Slack, un service de messagerie
@ -58,7 +58,7 @@ de données. Le *dump* obtenu est à placer dans `/var/backups/`.
## Client de test
Vous n'êtes pas tenu d'installer un client. Pour vos tests, vous pouvez
utiliser <https://riot.im/app/>, en changeant l'adresse du serveur Matrix pour
utiliser <https://app.element.io/>, en changeant l'adresse du serveur Matrix pour
votre sous-domaine dédié à Matrix (normalement
<https://matrix.login-x.srs.p0m.fr/>). (Conservez le serveur d'identité à
<https://vector.im>).
@ -68,7 +68,7 @@ votre sous-domaine dédié à Matrix (normalement
## Validation
Pour valider l'installation de votre serveur, rejoignez le canal
`#adlin:nemunai.re` et envoyez un message « Ping ! » à `@nemubot:nemunai.re`
qui s'occupera de valider ce pallier.
`#adlin:nemunai.re` et envoyez un message « Ping ! » pour signaler votre
présence.
Vous devriez également pouvoir tester entre-vous.

View File

@ -42,9 +42,10 @@ Tunnel IPv6
Au premier lancement de votre VM, la machine vous demandera d'indiquer un jeton
afin de mettre en place le tunnel IPv6.
Afin d'en obtenir un, rendez-vous sur la page Tunnels et créez un nouveau
tunnel. Un jeton de 10 caractères s'affichera alors, c'est celui que vous
devrez recopier dans le terminal (attention à la casse !).
Afin d'en obtenir un, rendez-vous sur la [page
Tunnels](https://adlin.nemunai.re/maatma/tunnels) et créez un nouveau
tunnel. Un jeton de 10 caractères s'affichera alors, c'est celui que
vous devrez recopier dans le terminal (attention à la casse !).
### Test du tunnel

View File

@ -19,3 +19,136 @@ Voici les grandes étapes :
* tester avec `dig @9.9.9.9 ANY login-x.srs.p0m.fr` que votre serveur est bien joignable.
Un ouvrage de référence, qui répondra à l'intégralité de vos questions et manières d'utiliser votre serveur DNS se trouve à <http://www.zytrax.com/books/dns/>.
## Coller aux spécifications
Pourquoi une telle complexité apparente pour déléguer une zone DNS ?
Vous êtes sur le point d'obtenir le contrôle total d'un domaine :
`login-x.srs.p0m.fr.`. Cela signifie que vous allez pouvoir décider,
depuis votre propre serveur de noms (respectueux des
[standards](https://www.ietf.org/rfc/rfc1034.txt)), comment vous allez
répondre aux serveurs résolveurs des utilisateurs.
Le protocole DNS étant décentralisé, mais basé sur une arborescence
unique, il est nécessaire que les serveurs faisant autorité sur une
zone (`fr.`, `srs.p0m.fr.`, ...) fournissent toutes les informations
nécessaire pour que cette délégation fonctionne.
À cet instant, vous connaissez l'adresse IPv6 routable sur Internet de votre
serveur de noms (comme vous n'avez aujourd'hui qu'une seule machine, c'est
l'adresse de votre tunnel). Il va donc falloir indiquer à Internet que c'est
cette IP qu'il faut contacter, si l'on veut interroger le serveur faisant
autorité.
Concrètement, vous allez devoir vous attribuer un sous-domaine pour votre
serveur de noms, car c'est grâce à un enregistrement `NS` figurant dans la zone
parente (pour vous, la zone parente c'est `srs.p0m.fr`) que la délégation va se
faire.
Dans le cas basique, on va utiliser les serveurs de quelqu'un d'autre (d'un
hébergement spécialisé par exemple, ou celui de son bureau d'enregistrement
s'ils proposent ce service). Auquel cas, on fera figurer ce genre
d'informations :
```
42sh$ dig @e.ext.nic.fr. NS epita.fr.
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 17590
;; Flags: qr rd; QUERY: 1; ANSWER: 0; AUTHORITY: 3; ADDITIONAL: 0
;; QUESTION SECTION:
;; epita.fr. IN NS
;; AUTHORITY SECTION:
epita.fr. 172800 IN NS tooty.ionis-it.com.
epita.fr. 172800 IN NS kazooie.ionis-it.com.
epita.fr. 172800 IN NS banjo.ionis-it.com.
;; Received 100 B
;; Time 2042-12-04 13:42:23 CET
;; From 2a00:d78:0:102:193:176:144:22@53(UDP) in 13.9 ms
```
La commande est envoyée spécifiquement aux serveurs de l'AFNIC, faisant
autorité pour la zone `fr.`. Les serveurs de l'AFNIC nous indiquent en retour,
que `epita.fr.` est déléguée à Ionis, et qu'elle dispose de 3 serveurs faisant
autorité.
Mais dans votre cas, vous hébergez vous-même votre propre serveur au sein de
votre zone, vous n'avez pas d'autre domaine à votre disposition. C'est
également le cas de Wikipédia :
```
42sh$ dig @d0.org.afilias-nst.org. NS wikipedia.org.
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 47396
;; Flags: qr rd; QUERY: 1; ANSWER: 0; AUTHORITY: 3; ADDITIONAL: 3
;; QUESTION SECTION:
;; wikipedia.org. IN NS
;; AUTHORITY SECTION:
wikipedia.org. 86400 IN NS ns0.wikimedia.org.
wikipedia.org. 86400 IN NS ns2.wikimedia.org.
wikipedia.org. 86400 IN NS ns1.wikimedia.org.
[...]
```
On voit ici que pour résoudre les sous-domaines de `wikipedia.org.`, il faut
demander à `nsX.wikimedia.org.`. Mais comment obtenir alors, l'adresse de ces
serveurs de noms, puisque l'on ne sait pas où les contacter ...!
C'est là que les *GLUE records* entrent en jeu !
J'ai volontairement tronqué la sortie de la commande précédente, en entier, c'est :
```
42sh$ dig @d0.org.afilias-nst.org. NS wikipedia.org.
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 47396
;; Flags: qr rd; QUERY: 1; ANSWER: 0; AUTHORITY: 3; ADDITIONAL: 3
;; QUESTION SECTION:
;; wikipedia.org. IN NS
;; AUTHORITY SECTION:
wikipedia.org. 86400 IN NS ns0.wikimedia.org.
wikipedia.org. 86400 IN NS ns2.wikimedia.org.
wikipedia.org. 86400 IN NS ns1.wikimedia.org.
;; ADDITIONAL SECTION:
ns0.wikimedia.org. 86400 IN A 208.80.154.238
ns1.wikimedia.org. 86400 IN A 208.80.153.231
ns2.wikimedia.org. 86400 IN A 91.198.174.239
;; Received 143 B
;; Time 2042-12-04 13:42:23 CET
;; From 2001:500:f::1@53(UDP) in 15.2 ms
```
Afin d'éviter de tourner en rond sans jamais avoir réponse à notre question, en
même temps que de nous répondre sur qui sont les serveurs faisant autorité pour
la zone `wikipedia.org.`, les serveurs gérant la zone `org.` indiquent
également à quelle adresse ont peut les contacter.
Ce sont les administrateurs de la zone `wikipedia.org.` qui ont indiqué à
`org.` quels étaient leurs serveurs de noms. Et ils ont également donné des
*GLUE records*, pour permettre à la magie d'opérer.
À vous maintenant de créer votre zone, en envoyant sur Maatma, le nom de
domaine votre serveur de noms, ainsi que le *GLUE record* qui lui correspond.
## DNSSEC (bonus)
En bonus, vous devriez sécuriser les réponses envoyées par votre serveur DNS.
Pour ce faire, et toujours parce que l'on se trouve dans le cadre d'une
structure arborescente, les clefs publiques permettant de valider les
enregistrements d'un domaine en particulier, sont publiées dans la zone
parente. C'est pourquoi, vous disposez sur Maatma, d'une interface vous
permettant d'indiquer vos clefs publiques.
De nombreux articles sont disponibles sur Internet pour vous permettre de
configurer DNSSEC en fonction du serveur autoritaire que vous aurez choisi. À
vous de jouer !

View File

@ -33,7 +33,7 @@ L'image d'installation
----------------------
Vous pouvez télécharger l'ISO du TP depuis
<https://adlin.nemunai.re/ressources/tuto2.iso>.
<https://adlin.nemunai.re/resources/tuto2.iso>.
Cette image contient un système Debian minimaliste, en partie préinstallé afin
de vous permettre de commencer à travailler sans plus attendre !
@ -261,8 +261,8 @@ machine, afin qu'elle ne teste que le lecteur de CD virtuel.
Connexion
---------
La machine ne se connecte pas au réseau toute seule, vous allez devoir l'aider
en reproduisant les étapes que nous avons apprises au TP précédent.
Si la machine ne se connecte pas au réseau toute seule, vous allez devoir
l'aider en reproduisant les étapes que nous avons apprises au TP précédent.
### Requête DHCP
@ -295,7 +295,7 @@ pouvoir émettre un paquet sur le réseau.
```
42sh$ ip link
1: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
^^^^^^^^^^
^^^^^^^^^^
```
</div>

View File

@ -20,7 +20,7 @@ reporter dans un fichiers au chapitre suivant !
Ma première vitrine
-------------------
Sur le domaine `login_x.adlin2022.p0m.fr`, déployez une vitrine d'entreprise
Sur le domaine `login-x.adlin2022.p0m.fr`, déployez une vitrine d'entreprise
basique (pas besoin d'un Wordpress, un simple lot de pages HTML fera l'affaire).
Vous aurez pour cela besoin d'un serveur web, dont le choix est laissé à votre
@ -29,11 +29,13 @@ discrétion.
Vous pouvez utiliser les services de [Let's Encrypt](https://letsencrypt.org/)
pour obtenir un certificat TLS. Compte tenu des limitations imposées, vous ne
pourrez pas tous en créer un aujourd'hui, mais n'hésitez pas à retenter un peu
plus tard dans la semaine.
plus tard dans la semaine. Vous pouvez également obtenir vos certificats depuis
de nombreux autres services gratuits similaire :
[ZeroSSL](https://zerossl.com/), [buypass](https://www.buypass.com/), ...
*D'ailleurs, si vous disposez de votre propre nom de domaine et que vous
souhaitez l'utiliser pour ce TP, n'hésitez pas à me solliciter pour que je
mette en place les redirections adéquates.*
D'ailleurs, si vous disposez de votre propre nom de domaine et que vous
souhaitez l'utiliser pour ce TP, vous pouvez suivre les instructions dans
l'interface de Maatma pour pouvoir l'utiliser.
Une fois votre serveur web configuré et votre vitrine installée, accédez à

View File

@ -30,6 +30,13 @@ local (sans passer par un NAT), n'oubliez pas de modifier le mot de passe
`root` pour éviter que n'importe qui sur le réseau local (et ayant accès à ce
TP), ne rentre sur votre machine.
Afin de vous faciliter la configuration de la machine par la suite, vos clefs
SSH publiques, [déclarées au
CRI](https://cri.epita.fr/users/nemunaire/ssh-keys/), sont automatiquement
ajoutées à l'utilisateur `root`. Rendez-vous dans l'interface du CRI pour les
mettre à jour si besoin. Notez qu'elles ne sont retéléchargées que si le
fichier `authorized_keys` n'existe pas.
### Création d'un utilisateur