root: Add a page about ssh and challenge administration

This commit is contained in:
nemunaire 2023-11-26 20:59:23 +01:00
parent fd28cf1db6
commit dd196b6dd8
2 changed files with 92 additions and 20 deletions

View File

@ -137,24 +137,6 @@ nsenter -t 1 -a
```
## Transférer des fichiers hors des machines
## Connexion SSH et transfert de fichiers hors des machines
Tous les fichiers nécessaire au challenge sont stockés dans le répertoire `/var/lib/fic`.
On y trouve à la fois les répertoires courants de la plateforme (`teams`, `submissions`, ...), mais aussi le répertoire de la base de données `mysql`, les sauvegardes, ...
Ce répertoire n'est pas partagé avec le conteneur `sshd` auquel on se connecte.
En dehors des fichiers bruts du challenge, il n'est donc pas possible d'utiliser `rsync` ou `scp` directement.
Seul le répertoire `/var/lib/fic/outofsync` est partagé.
Il convient donc de copier le fichier que l'on souhaite partager vers ce dossier, afin de le retrouver dans le conteneur `sshd` :
```
ssh root@192.168.3.92
nsenter -t 1 -a
cp /var/lib/fic/backups/db-20421225000000.sql.xz /var/lib/fic/outofsync
exit # On sort du système hôte pour revenir dans le conteneur sshd
exit # On quitte la connexion SSH
scp root@192.168.3.92:/var/lib/fic/outofsync/db-20421225000000.sql.xz .
```
Voir [l'article dédié]({{< relref "ssh.md" >}})

90
content/root/ssh.md Normal file
View File

@ -0,0 +1,90 @@
---
date: 2023-11-26T19:46:12+02:00
title: Connexion SSH et administration du challenge
weight: 55
---
## Se connecter en SSH aux machines
### `deimos`
`deimos` expose un serveur ssh sur les ports `admin` du switch.
Actuellement, l'IP du serveur est `192.168.3.92` (peu changer selon le plan d'adressage fourni par les organisateurs).
### `phobos`
Il n'est pas possible de se connecter à `phobos`.
Cette machine expose un serveur SSH uniquement à des fins de synchronisation des fichiers.
Le conteneur exécutant le serveur SSH ne permet pas de rebondir sur le reste du système, ce qui rend de toute manière la connexion assez inutile.
Pour administrer la machine, il faut donc utiliser l'iDRAC.
## Gestion des clefs SSH
Pour pouvoir se connecter au serveur, il est nécessaire d'avoir une clef SSH autorisée.
Les clefs SSH font parties des [métadonnées]({{< relref "fickit-deploy.md" >}}).
## Interface d'administration
Afin d'éviter que des personnes puissent accéder à l'interface d'administration, celle-ci n'est accessible que via la connexion SSH :
```
ssh -L 8081:127.0.0.1:8081 root@192.168.3.92
```
Cela ouvre un tunnel entre le port 8081 de votre système et le port 8081 du serveur.
Vous pourrez ensuite accéder à l'interface d'administration directement depuis votre machine à l'adresse : <http://localhost:8081/>.
## Transférer des fichiers hors des machines
Tous les fichiers nécessaire au challenge sont stockés dans le répertoire `/var/lib/fic`.
On y trouve à la fois les répertoires courants de la plateforme (`teams`, `submissions`, ...), mais aussi le répertoire de la base de données `mysql`, les sauvegardes, ...
Ce répertoire n'est pas partagé avec le conteneur `sshd` auquel on se connecte.
En dehors des fichiers bruts du challenge, il n'est donc pas possible d'utiliser `rsync` ou `scp` directement.
Seul le répertoire `/var/lib/fic/outofsync` est partagé.
Il convient donc de copier le fichier que l'on souhaite partager vers ce dossier, afin de le retrouver dans le conteneur `sshd` :
```
ssh root@192.168.3.92
nsenter -t 1 -a
cp /var/lib/fic/backups/db-20421225000000.sql.xz /var/lib/fic/outofsync
exit # On sort du système hôte pour revenir dans le conteneur sshd
exit # On quitte la connexion SSH
scp root@192.168.3.92:/var/lib/fic/outofsync/db-20421225000000.sql.xz .
```
## Tableau de bord
Sur l'IP du serveur, le port 8083 est ouvert afin de rendre le tableau de bord accessible à des personnes sans connexion SSH (par exemple pour que les organisateurs puissent le diffuser).
Afin de limiter son accès, il est possible de restreindre les IP qui peuvent le contacter.
Pour cela, il faut créer un fichier à cet emplacement sur `deimos` : `/var/lib/fic/dashboard/restricted-ips.json`.
Le contenu du fichier est un tableau JSON des préfixes d'IP autorisées :
```
[
"192.168.0.1",
"127.0.0.1"
]
```
Ou encore :
```
[
"192.168.0.",
"127.0.0.1"
]
```
Ce dernier exemple autorise toutes les adresses commençant par 192.168.0. à se connecter.