Update tutorial2
This commit is contained in:
parent
5a4650f70e
commit
764a790b11
10
tuto2.yml
10
tuto2.yml
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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 !
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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 à
|
||||
|
@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user