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
|
- path: etc/resolv.conf
|
||||||
contents: |
|
contents: |
|
||||||
nameserver 9.9.9.9
|
nameserver 9.9.9.10
|
||||||
nameserver 1.1.1.1
|
nameserver 1.1.1.1
|
||||||
uid: 0
|
uid: 0
|
||||||
gid: 0
|
gid: 0
|
||||||
@ -154,6 +154,14 @@ files:
|
|||||||
/bin/ip -6 route del default
|
/bin/ip -6 route del default
|
||||||
/bin/ip -6 route add default via $(sed 's/^.*GWIPv6=//p;d' etc/wireguard/adlin.conf) pref high
|
/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
|
# To the user
|
||||||
exec /usr/sbin/chroot . "${INITP}"
|
exec /usr/sbin/chroot . "${INITP}"
|
||||||
uid: 0
|
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
|
[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
|
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
|
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
|
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
|
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">
|
<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 => {
|
192.168.0.106 | SUCCESS => {
|
||||||
"changed": false,
|
"changed": false,
|
||||||
"ping": "pong"
|
"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
|
connexion a bien été effectuée et que le nécessaire est bien installé sur la
|
||||||
machine distance.
|
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
|
### 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
|
La configuration de votre serveur SSH laisse à désirer. Corriger les problèmes
|
||||||
énoncés par ces deux articles :
|
é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>.
|
- <https://stribika.github.io/2015/01/04/secure-secure-shell.html>.
|
||||||
|
|
||||||
Mettez en place un *handler* pour relancer votre serveur SSH en cas de
|
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*
|
Après cet échauffement, vous devriez être prêt à créer un *playbook*
|
||||||
dédié à l'installation d'un serveur [Matrix](https://matrix.org/) :
|
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
|
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
|
## Client de test
|
||||||
|
|
||||||
Vous n'êtes pas tenu d'installer un client. Pour vos tests, vous pouvez
|
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
|
votre sous-domaine dédié à Matrix (normalement
|
||||||
<https://matrix.login-x.srs.p0m.fr/>). (Conservez le serveur d'identité à
|
<https://matrix.login-x.srs.p0m.fr/>). (Conservez le serveur d'identité à
|
||||||
<https://vector.im>).
|
<https://vector.im>).
|
||||||
@ -68,7 +68,7 @@ votre sous-domaine dédié à Matrix (normalement
|
|||||||
## Validation
|
## Validation
|
||||||
|
|
||||||
Pour valider l'installation de votre serveur, rejoignez le canal
|
Pour valider l'installation de votre serveur, rejoignez le canal
|
||||||
`#adlin:nemunai.re` et envoyez un message « Ping ! » à `@nemubot:nemunai.re`
|
`#adlin:nemunai.re` et envoyez un message « Ping ! » pour signaler votre
|
||||||
qui s'occupera de valider ce pallier.
|
présence.
|
||||||
|
|
||||||
Vous devriez également pouvoir tester entre-vous.
|
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
|
Au premier lancement de votre VM, la machine vous demandera d'indiquer un jeton
|
||||||
afin de mettre en place le tunnel IPv6.
|
afin de mettre en place le tunnel IPv6.
|
||||||
|
|
||||||
Afin d'en obtenir un, rendez-vous sur la page Tunnels et créez un nouveau
|
Afin d'en obtenir un, rendez-vous sur la [page
|
||||||
tunnel. Un jeton de 10 caractères s'affichera alors, c'est celui que vous
|
Tunnels](https://adlin.nemunai.re/maatma/tunnels) et créez un nouveau
|
||||||
devrez recopier dans le terminal (attention à la casse !).
|
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
|
### 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.
|
* 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/>.
|
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
|
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
|
Cette image contient un système Debian minimaliste, en partie préinstallé afin
|
||||||
de vous permettre de commencer à travailler sans plus attendre !
|
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
|
Connexion
|
||||||
---------
|
---------
|
||||||
|
|
||||||
La machine ne se connecte pas au réseau toute seule, vous allez devoir l'aider
|
Si la machine ne se connecte pas au réseau toute seule, vous allez devoir
|
||||||
en reproduisant les étapes que nous avons apprises au TP précédent.
|
l'aider en reproduisant les étapes que nous avons apprises au TP précédent.
|
||||||
|
|
||||||
### Requête DHCP
|
### Requête DHCP
|
||||||
|
|
||||||
@ -295,7 +295,7 @@ pouvoir émettre un paquet sur le réseau.
|
|||||||
```
|
```
|
||||||
42sh$ ip link
|
42sh$ ip link
|
||||||
1: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
|
1: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
|
||||||
^^^^^^^^^^
|
^^^^^^^^^^
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ reporter dans un fichiers au chapitre suivant !
|
|||||||
Ma première vitrine
|
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).
|
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
|
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/)
|
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
|
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
|
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
|
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
|
souhaitez l'utiliser pour ce TP, vous pouvez suivre les instructions dans
|
||||||
mette en place les redirections adéquates.*
|
l'interface de Maatma pour pouvoir l'utiliser.
|
||||||
|
|
||||||
|
|
||||||
Une fois votre serveur web configuré et votre vitrine installée, accédez à
|
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
|
`root` pour éviter que n'importe qui sur le réseau local (et ayant accès à ce
|
||||||
TP), ne rentre sur votre machine.
|
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
|
### Création d'un utilisateur
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user