tuto2: Update for 2024

This commit is contained in:
nemunaire 2023-02-28 15:10:35 +01:00
parent fe69b319cc
commit 9cd77a5152
12 changed files with 114 additions and 29 deletions

View File

@ -128,7 +128,7 @@ steps:
- tar xf /tmp/FantasqueSansMono-Normal.tar.gz -C /usr/share/fonts/fantasque-sans-mono OTF/ TTF/ --strip-component=1
- mkdir dist
- make -C tutorial/ansible
- mv tutorial/ansible/tutorial.pdf dist/tutorial-2-${DRONE_TAG##srs20??-tutorial2-}.pdf
- mv tutorial/ansible/tutorial-2.pdf dist/tutorial-2-${DRONE_TAG##srs20??-tutorial2-}.pdf
- name: deploy subject
image: appleboy/drone-scp

View File

@ -24,6 +24,30 @@
\path[fill=black,draw=none] (interior.south west) rectangle node[white]{\huge\bfseries\texttt >\_} ([xshift=10mm]interior.north west);
},#1}
\usetikzlibrary{calc}
\newtcolorbox{exercicebox}[1][parbox=false]{breakable,enhanced,
before=\hspace{.7em},after=\hspace{.5em},
tile,left=2mm,right=12mm,top=.5em,bottom=.5em,
frame code={\path[draw=Gold!85!gray,sharp corners,line width=2.5pt] (frame.north west) -- (frame.north) -- (frame.north east);}
sharp corners,
colback=white,
underlay={%
\path[fill=Gold!85!gray,draw=none] (interior.south east) rectangle node[white]{\begin{tikzpicture}
\draw[fill=white,even odd rule]
let
\n{dpt} = {360/7}
in
(0,0) circle (1.2mm) %
({\n{dpt}*(0.5)}:2.5mm) \foreach \x in {1,...,7}{ %
arc ({\n{dpt}*(\x-0.5)}:{\n{dpt}*(\x-0.25)}:2.5mm) %
--++(\x*\n{dpt}:1.5mm) %
arc ({\n{dpt}*(\x-0.25)}:{\n{dpt}*(\x+0.25)}:2.5mm) %
--++(\x*\n{dpt}:-1.5mm) %
arc ({\n{dpt}*(\x+0.25)}:{\n{dpt}*(\x+0.5)}:2.5mm)--%
({\n{dpt}*(\x+0.5)}:2.5mm)
};\end{tikzpicture}} ([xshift=-10mm]interior.north east);
},#1}
\newtcolorbox{questionbox}[1][]{breakable,enhanced,
before skip balanced=2mm,after skip balanced=3mm,
tile,left=11mm,right=2mm,top=1mm,bottom=1mm,

View File

@ -1 +1,3 @@
tutorial.pdf
tutorial-2.pdf
tutorial-ansible.pdf

View File

@ -1,12 +1,15 @@
include ../pandoc-opts.mk
SOURCES = tutorial.md setup.md maatma.md what.md vitrine.md ansible.md nameserver.md deploiement-svc.md rendu.md
SOURCES_2 = tutorial-2.md setup.md maatma.md what.md vitrine.md nameserver.md
SOURCES_ANSIBLE = tutorial.md ansible.md deploiement-svc.md rendu.md
all: tutorial.pdf
all: tutorial-2.pdf tutorial-ansible.pdf
tutorial.pdf: ${SOURCES}
tutorial-2.pdf: ${SOURCES_2}
pandoc ${PANDOCOPTS} -o $@ $+
tutorial-ansible.pdf: ${SOURCES_ANSIBLE}
pandoc ${PANDOCOPTS} -o $@ $+
clean::
rm tutorial.pdf
rm tutorial-2.pdf tutorial-ansible.pdf

View File

@ -77,9 +77,9 @@ pouvez l'ignorer pour le moment.
Notez que vous ne disposez pas d'IPv4 publique (c'est-à-dire routable sur
Internet), vous disposez seulement d'une IPv6 publique. L'ensemble de vos
services sont cependant accessibles également en IPv4, car Maatma centralise
les requêtes faites en IPv4 et les distribue entre vos IPv6, lorsque le
protocole permet de faire cette distribution. Par exemple, HTTP et HTTPS le
permette, mais pas SSH. Vous ne pourrez donc pas vous connecter en SSH via
les requêtes faites en IPv4 et les distribue entre vos IPv6, **lorsque le
protocole permet de faire cette distribution**. Par exemple, HTTP et HTTPS le
permettent, mais pas SSH. Vous ne pourrez donc pas vous connecter en SSH via
l'IPv4 de Maatma.
Voici un schéma reprenant ces explications :

View File

@ -12,8 +12,9 @@ possédant les caractéristiques suivantes :
permettant d'aller sur Internet.
Le choix de la technologie de virtualisation est laissé à votre
appréciation. L'ISO est réputée supportée par *Hyper-V* (Windows), *qemu*/*KVM*
(macOS, Linux, Windows) et VMware (macOS, Windows).\
appréciation. L'ISO est réputée supporter *Hyper-V* (Windows), *qemu*/*KVM*
(macOS, Linux, Windows), *Virtualization.Framework* (macOS) et VMware (macOS,
Windows).\
L'hyperviseur qui vous laissera le plus de liberté (et avec lequel vous pourrez
apprendre le plus de choses !) est sans doute *qemu*, sous Linux ; vous pouvez
@ -46,7 +47,7 @@ Gérer le réseau de son hyperviseur
Cette section est là pour vous donner un aperçu du fonctionnement de votre
installation, pour que plus jamais, vous ne puissiez vous demander «On la met
en NAT ou en Bridge la VM? », sans vraiment savoir de quoi vous parler.
en NAT ou en Bridge la VM? », sans vraiment savoir de quoi vous parlez.
On vous encourage évidemment à comprendre les éléments présentés et à tester
par vous-même avec `qemu`, mais tous les hyperviseurs fonctionnent de la même
@ -86,7 +87,7 @@ nombre d'interfaces physiques existantes.
Concrètement, l'opération est assez fastidieuse à réaliser à la main, car cela
demande de détacher le périphérique (via
<span lang="en-US">`/sys/bus/pci/devices/0000:03:00.0/driver/unbind`</span>,
par exemple pour une carte `enp0s3`) ; avant de l'assigner à notre machine
par exemple pour une carte `enp0s3`), avant de l'assigner à notre machine
virtuelle :
<div lang="en-US">
@ -189,8 +190,8 @@ machine hôte sur ce réseau virtuel.
Il est tout à fait possible d'ajouter une interface réseau physique à un pont,
et c'est sans doute la méthode la plus simple pour que les machines virtuelles
puissent accéder à internet : si le réseau local de la machine hôte fournie des
adresses IP par DHCP à toute machine rejoignant le réseau.
puissent accéder à Internet (si le réseau local de la machine hôte fournit des
adresses IP par DHCP à toute machine rejoignant le réseau).
Lorsque le pont existe, `qemu` peut créer l'interface virtuelle et l'assigner à

View File

@ -0,0 +1,21 @@
---
title: Administration Linux avancée -- TP n^o^ 2
subtitle: "Maatma : l'hébergeur DIY"
author: Pierre-Olivier *nemunaire* [Mercier]{.smallcaps}
institute: EPITA
date: Jeudi 2 mars 2023
abstract: |
Durant ce deuxième TP, nous allons préparer un serveur pour réponde à des
services classiques d'Internet. Nous appréhenderons le fonctionnement des
noms de domaine et des certificats TLS, au travers de Maatma, votre
hébergeur.
\vspace{1em}
Ce TP est la partie découverte du 1er projet qui sera à rendre pour le
**mercredi29mars 2023 à 23h42**. Nous verrons au prochain TP comment
automatiser toutes les étapes d'aujourd'hui grâce à Ansible. Vous serez notés
d'une part sur votre avancement dans les étapes de ce TP, et également sur la
qualité du rendu de l'automatisation de ces mêmes étapes, via Ansible (que
l'on verra au prochain TP).
...

View File

@ -3,9 +3,9 @@ title: Administration Linux avancée -- TP n^o^ 2
subtitle: "Maatma : l'hébergeur DIY"
author: Pierre-Olivier *nemunaire* [Mercier]{.smallcaps}
institute: EPITA
date: Mercredi 9 mars 2022
date: Jeudi 16 mars 2023
abstract: |
Durant ce deuxième TP, nous allons apprendre à déployer des services sur un
Durant ce troisième TP, nous allons apprendre à déployer des services sur un
serveur, de manière industrielle !
\vspace{1em}

View File

@ -14,7 +14,7 @@ Internet, et renforcez cela au moyen d'un pare-feu (`iptables` ou
Faites le tour des configurations afin de vous assurer qu'elles sont
suffisamment durcies. Pensez à noter vos changements, vous devrez les
reporter dans un fichiers au chapitre suivant !
reporter dans un fichier au prochain TP !
À ce stade, vous devez suivre les recommandations de l'ANSSI que vous
jugez adaptées à votre déploiement :
@ -26,13 +26,21 @@ Ma première vitrine
Sur le domaine `login-x.adlin2024.example.tld`, déployez une vitrine
d'entreprise basique. Vous n'allez pas déployer tout un Wordpress, mais un
simple lot de pages HTML ... générées avec Hugo.
simple lot de pages HTML ... générées avec Hugo.
::::: {.exercice}
Vous aurez pour cela besoin d'un serveur web, dont le choix est laissé à votre
discrétion.
:::::
::::: {.exercice}
Vous pouvez utiliser les services de [Let's Encrypt](https://letsencrypt.org/)
pour obtenir un certificat TLS.\
pour obtenir un certificat TLS.
:::::
::::: {.warning}
@ -40,8 +48,8 @@ Compte tenu [des limitations
imposées](https://letsencrypt.org/docs/rate-limits/), vous ne pourrez pas tous
en créer un aujourd'hui, mais n'hésitez pas à retenter un peu 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/), ...\
autres services gratuits similaires : [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, vous pouvez suivre les instructions dans

View File

@ -9,6 +9,8 @@ Accéder à la machine virtuelle
Une fois la machine virtuelle démarrée, vous pouvez vous y connecter en `root`
avec le mot de passe `adlin2024`.
::::: {.more}
Vous pouvez également démarrer en mode *single user*, mais comme votre disque
n'est sans doute pas encore utilisable à ce stade, vous ne pourrez pas changer
le mot de passe `root`. Vous pourrez néanmoins effectuer les étapes de
@ -18,6 +20,8 @@ Lorsque vous avez accès à la ligne de commande du *bootloader*, vous pouvez
généralement ajouter l'option `init=/bin/sh` à la ligne de commande du noyau,
afin de lancer un shell au lieu du système d'init habituel.
:::::
Se mettre à l'aise
------------------
@ -56,9 +60,13 @@ de personnes susceptibles de s'y connecter pour l'administrer[^whysudo].
permet également de pouvoir retracer, via les journaux, qui a réalisé
quelles opérations.
::::: {.exercice}
Utilisez `adduser(8)` pour vous créer votre propre compte, et au minimum
`passwd(1)` pour lui définir un mot de passe.
:::::
C'est bon, vous pouvez maintenant commencer à utiliser le client SSH de votre
choix pour administrer votre machine virtuelle !
@ -81,16 +89,23 @@ d'administrateur. Utilisez :
administrateur ;
- `sudoedit` : pour éditer un fichier avec les droits administrateurs.
Après avoir installé le paquet, vous devrez ajouter les utilisateurs autorisés
à se servir de `sudo` dans le groupe `sudo` ou `wheel` (en fonction des
distributions). Vous pouvez également définir des conditions plus précise en
éditant le fichier `/etc/sudoers` (utilisez impérativement `visudo(1)` pour
éditer ce fichier).\
::::: {.exercice}
Après avoir installé le paquet `sudo`, vous devrez ajouter les utilisateurs
autorisés à se servir de `sudo` dans le groupe `sudo` ou `wheel` (en fonction
des distributions).
:::::
Vous pouvez également définir des conditions plus précises en éditant le
fichier `/etc/sudoers` (utilisez impérativement `visudo(1)` pour éditer ce
fichier).\
::::: {.code}
**Super astuce !** votre terminal rit encore de vous, affichant `Permission
Denied` car vous avez oublié de préfixer votre commande par `sudo` ? essayez :
**Super astuce !** si vous oubliez de préfixer votre commande par `sudo`, vous
allez obtenir une erreur `Permission Denied`. Vous n'êtes pas obligés de
recopier la commande, utilisez :
<div lang="en-US">
```

View File

@ -21,6 +21,17 @@ function Div(el)
el.content,
pandoc.RawBlock("latex", "\\end{codebox}"))
elseif el.classes[1] == "exercice"
then
-- insert element in front
table.insert(
el.content, 1,
pandoc.RawBlock("latex", "\\noindent\\begin{exercicebox}"))
-- insert element at the back
table.insert(
el.content,
pandoc.RawBlock("latex", "\\end{exercicebox}"))
elseif el.classes[1] == "question"
then
-- insert element in front

View File

@ -6,7 +6,7 @@ PANDOCOPTS = --pdf-engine=lualatex \
-M fontsize=12pt \
-M papersize=a4 \
-M mainfont="Linux Libertine" \
-M monofont="FantasqueSansMono" \
-M monofont="Inconsolata" \
-M sansfont="Linux Biolinum" \
-M colorlinks=true \
-M linkcolor="black" \