← Semaine 0
semaine 0 - le serveur

Le serveur : votre nouvelle maison

Bienvenue dans le cours ! Cette semaine, on obtient un vrai serveur sur Internet et on apprend à y entrer par la grande porte : le shell.
shell local, shell distant

Deux shells, un pont entre les deux

Shell local
Le terminal sur VOTRE ordinateur. C'est votre point de départ.
Shell distant
Le shell du serveur, à l'autre bout d'Internet. C'est là qu'on travaille.
# Le pont entre les deux : SSH vous@portable:~$ ssh prenom@adresse.de.votre.serveur
Un seul shell local suffit, que vous soyez sous Windows, Mac ou Linux. Pas besoin de dual-boot !
acces depuis windows

Accéder au serveur à partir de Windows

Une seule des 3 techniques est nécessaire. Choisissez celle qui vous convient.

1. PuTTY
Le classique. Facile à installer, interface graphique simple.
2. WSL Ubuntu
Un vrai Ubuntu dans Windows. La connexion dure plus longtemps que PuTTY.
3. PowerShell
SSH est déjà là ! Ouvrez PowerShell et tapez la commande ssh directement.
acces depuis windows

PuTTY : qualités, défauts et alternatives

Qualités de PuTTY
  • Logiciel libre, open-source et gratuit
  • Code sans porte dérobée connue
  • Outil bien connu de la communauté
Défauts de PuTTY
  • Se déconnecte (trop) rapidement
  • Refuse le changement du port 22
  • Pas de gestionnaire de connexions

Alternative appréciée : MobaXterm (open-source, non-libre) : reste connecté, permet le choix du port, très ergonomique. Autres options : KiTTY, Bitvise, mRemoteNG, Xshell...

acces depuis mac et linux

Mac et Linux : le shell SSH est déjà là

# Ouvrez le terminal, c'est tout : vous@mac:~$ ssh prenom@adresse.de.votre.serveur
truc de pro

Garder la session SSH en vie

Le démon sshd coupe la connexion si le client reste silencieux. La parade : envoyer un signe de vie régulier.

# Dans le fichier ~/.ssh/config (a creer au besoin) : Host * ServerAliveInterval 240 # Puis proteger le fichier : vous@portable:~$ chmod 600 ~/.ssh/config
240 secondes = un petit coucou au serveur toutes les 4 minutes. Fini les déconnexions !
commande de vps

Commander son VPS : le plus important !

Réservez votre VPS MAINTENANT : la création du compte peut prendre 2-3 jours chez certains fournisseurs. Si rien ne bouge, écrivez à votre prof pour de l'assistance.
Plan A : Linode
  • Des mois d'essai gratuits
  • Économique, peu de problèmes de compte
Plan B : Hetzner
Fournisseur européen, très bon rapport qualité-prix.
Plan C : OVH
Présent au Québec. Service en français.
Plan D : Autres
DigitalOcean, Vultr... validez avec votre prof.
securisation

Règle d'or : sécuriser un serveur NEUF

Serveur acheté à la seconde
Vous pouvez commencer la sécurisation tout de suite.
Serveur acheté hier
Trop tard ! Il faut le REBUILD (réinstaller) avant de le sécuriser.
Un serveur non sécurisé sur Internet, c'est comme une maison porte ouverte : les robots pirates frappent dans les minutes qui suivent.
securisation - etape 1

Créer un utilisateur administratif non-root

# Se connecter en root (seulement cette fois-ci) vous@portable:~$ ssh root@ton.adresse.ip # Creer l'usager (choisir un BON mot de passe) root@serveur:~# adduser prenom # L'ajouter au groupe sudo root@serveur:~# usermod -aG sudo prenom # Tester le nouvel usager root@serveur:~# exit vous@portable:~$ ssh prenom@ton.adresse.ip prenom@serveur:~$ sudo apt update

Pour le cours Créez 2 sudoers : le vôtre avec votre prénom + celui du prof.

securisation - etape 2

Activer le firewall UFW

# Installer et remettre a zero prenom@serveur:~$ sudo apt install ufw prenom@serveur:~$ sudo ufw reset # Ouvrir seulement les portes necessaires prenom@serveur:~$ sudo ufw allow 22/tcp # SSH prenom@serveur:~$ sudo ufw allow 80/tcp # HTTP prenom@serveur:~$ sudo ufw allow 443/tcp # HTTPS # Activer prenom@serveur:~$ sudo ufw enable
Attention de ne pas vous barrer dehors : la règle du port 22 AVANT le ufw enable !
securisation - etape 3

fail2ban : le videur de la porte SSH

# Installer et activer prenom@serveur:~$ sudo apt install fail2ban -y prenom@serveur:~$ sudo systemctl enable --now fail2ban # Configurer dans /etc/fail2ban/jail.local prenom@serveur:~$ sudo apt install jed prenom@serveur:~$ sudo jed /etc/fail2ban/jail.local
# Contenu de jail.local : [sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 5 findtime = 300 bantime = 28800

Traduction : 5 tentatives ratées en 5 minutes = banni 8 heures. Puis sudo systemctl restart fail2ban.

securisation - resume

Le grand résumé de la semaine 0

$ ssh root@ton.adresse.ip # adduser prenom # usermod -aG sudo prenom $ sudo apt install ufw $ sudo ufw allow ssh $ sudo ufw allow http $ sudo ufw allow https $ sudo ufw enable $ sudo apt install fail2ban -y $ sudo systemctl enable --now fail2ban $ sudo jed /etc/fail2ban/jail.local $ sudo systemctl restart fail2ban
Usager sudo + UFW + fail2ban : le trio de départ de tout serveur bien né.
en savoir plus

Bonus : screen, la session qui survit

Avec screen, votre travail continue sur le serveur même si la connexion tombe.

# Demarrer une session nommee prenom@serveur:~$ screen -S mon-travail # Se detacher : Ctrl-A puis D # Lister et reattacher prenom@serveur:~$ screen -ls prenom@serveur:~$ screen -r mon-travail # Reattacher une session encore attachee ailleurs prenom@serveur:~$ screen -r -d mon-travail

Rendez-vous au laboratoire de la semaine 0 pour tout mettre en pratique !