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.
- Un serveur, c'est un ordinateur toujours allumé, branché sur Internet, qui rend des services.
- On le pilote à distance, en ligne de commande, avec le protocole SSH.
- Objectif de la semaine : commander un VPS, s'y connecter et le sécuriser.
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.
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à
vous@mac:~$ ssh prenom@adresse.de.votre.serveur
- Sur Mac : application Terminal.
- Sur Linux : n'importe quel émulateur de terminal.
- SSH est intégré au système, rien à installer.
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.
Host *
ServerAliveInterval 240
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
vous@portable:~$ ssh root@ton.adresse.ip
root@serveur:~# adduser prenom
root@serveur:~# usermod -aG sudo prenom
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
prenom@serveur:~$ sudo apt install ufw
prenom@serveur:~$ sudo ufw reset
prenom@serveur:~$ sudo ufw allow 22/tcp
prenom@serveur:~$ sudo ufw allow 80/tcp
prenom@serveur:~$ sudo ufw allow 443/tcp
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
prenom@serveur:~$ sudo apt install fail2ban -y
prenom@serveur:~$ sudo systemctl enable --now fail2ban
prenom@serveur:~$ sudo apt install jed
prenom@serveur:~$ sudo jed /etc/fail2ban/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.
prenom@serveur:~$ screen -S mon-travail
prenom@serveur:~$ screen -ls
prenom@serveur:~$ screen -r mon-travail
prenom@serveur:~$ screen -r -d mon-travail
Rendez-vous au laboratoire de la semaine 0 pour tout mettre en pratique !