← Semaine 3
semaine 3 - securisation

Le cadenas et les clés

L'homme et sa sécurité doivent constituer la première préoccupation de toute aventure technologique.Albert Einstein
https - pourquoi

Pourquoi le HTTPS ?

HTTP
Tout circule en clair : mots de passe, formulaires, pages. N'importe qui sur le chemin peut lire et modifier.
HTTPS
Le trafic est chiffré entre le navigateur et votre serveur. Le certificat prouve que vous êtes bien vous.
Les navigateurs marquent les sites HTTP « Non sécurisé » et les moteurs de recherche les pénalisent. En 2026, le HTTPS n'est plus une option.
https - prealables

Conditions préalables

# Le vhost doit contenir : ServerName tonsite.com ServerAlias www.tonsite.com
https - etape 1

Installer certbot

Certbot est le logiciel de l'EFF qui parle à Let's Encrypt pour vous.

prenom@serveur:~$ sudo apt update prenom@serveur:~$ sudo apt install certbot python3-certbot-apache

Confirmez avec Y puis Enter : certbot est prêt.

https - etape 2

Ouvrir le pare-feu au HTTPS

# Seulement si sudo ufw status est actif : prenom@serveur:~$ sudo ufw allow 'Apache Full' prenom@serveur:~$ sudo ufw delete allow 'Apache' prenom@serveur:~$ sudo ufw status Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache Full ALLOW Anywhere

Apache Full = ports 80 et 443. Le profil « Apache » (80 seulement) devient redondant.

https - etape 3

Obtenir le certificat

prenom@serveur:~$ sudo certbot --apache
Certbot programme lui-même le renouvellement automatique : vos certificats se renouvellent sans vous.
https - verification

Vérifier son HTTPS

# Dans le navigateur : # https://tonsite.com -> le cadenas apparait ! # Tester le renouvellement automatique : prenom@serveur:~$ sudo certbot renew --dry-run # Voir les certificats installes : prenom@serveur:~$ sudo certbot certificates

Refaites sudo certbot --apache à chaque nouveau sous-domaine à protéger.

webmestre - qui

Le webmestre : tout sauf le shell

Le webmestre programme et maintient UN site web. Il a besoin d'accéder :

Accès permis
  • Aux fichiers de SON site via SFTP (FileZilla, WinSCP, Dolphin)
  • À SA base de données via phpMyAdmin
Accès interdits
  • Aux répertoires des autres sites
  • Aux autres bases de données
  • Au shell pour taper des commandes !
webmestre - creation

Créer un webmestre

# Un utilisateur par site, nomme comme le site : prenom@serveur:~$ sudo useradd wiki-tonsite-com prenom@serveur:~$ sudo passwd wiki-tonsite-com # Lui donner son repertoire : prenom@serveur:~$ sudo chown -R wiki-tonsite-com:www-data /var/www/wiki.tonsite.com # Valider avant / apres : prenom@serveur:~$ ls -l /var/www

Le webmestre se connecte ensuite en SFTP sur le port 22 et téléverse ses fichiers.

useradd vs adduser

useradd ou adduser ?

useradd (bas niveau)
Crée un utilisateur SANS profil ni home. Pour les webmestres sans shell et les scripts (portable sur toutes les distributions).
adduser (haut niveau)
Profil détaillé, répertoire home, questions interactives. La majorité du temps, c'est lui.
# Ou sont-ils stockes ? prenom@serveur:~$ sudo cat /etc/passwd prenom@serveur:~$ sudo cat /etc/group
webmestre - securisation

Retirer le shell : sftponly

prenom@serveur:~$ sudo jed /usr/local/bin/sftponly
#!/bin/bash if [[ "$2" = *sftp-server ]] then exec /bin/bash "$@" else echo "'$LOGNAME' peut seulement utiliser sftp." exit 1 fi
prenom@serveur:~$ sudo chmod +x /usr/local/bin/sftponly prenom@serveur:~$ sudo usermod --shell /usr/local/bin/sftponly wiki-tonsite-com prenom@serveur:~$ sudo service ssh restart

Test : ssh wiki-tonsite-com@ip doit être refusé, le SFTP doit passer.

groupes

Exploiter les groupes d'utilisateurs

# Creer un groupe prenom@serveur:~$ sudo groupadd legroupe # Ajouter un membre au groupe prenom@serveur:~$ sudo usermod -aG legroupe ami # Verifier prenom@serveur:~$ cat /etc/group | grep legroupe
Le G MAJUSCULE est vital : un g minuscule supprime l'utilisateur de tous ses autres groupes !
resume

Un serveur digne de confiance

HTTPS partout
Certbot + Let's Encrypt : cadenas et renouvellement automatique.
Webmestres cadrés
SFTP sur leur site, phpMyAdmin sur leur base, zéro shell.
Comptes maîtrisés
useradd, adduser, groupes : chaque humain à sa place.

Le laboratoire de la semaine 3 vous attend : cadenas pour tous vos sites et un webmestre bien encadré. C'est aussi la ligne d'arrivée du Projet Serveur Web !