Skip to content

Latest commit

 

History

History
438 lines (294 loc) · 7.68 KB

File metadata and controls

438 lines (294 loc) · 7.68 KB

🔐 TP4 – Administration SSH & Serveur Web Nginx (adapté au nouveau sujet)

Ce document suit précisément le sujet mis à jour dans subject.md. Les captures proviennent de imageTP4 et sont placées là où elles apportent une illustration utile.


1. Mise en place de l’environnement virtualisé

  • Installer VirtualBox sur l’hôte :
sudo apt update
sudo apt install virtualbox
virtualbox --help
  • Créer une VM Ubuntu « Serveur-SSH » : 2 Go RAM, 20 Go disque, réseau en Bridged Adapter.

Vérifier l’adresse IP dans la VM et ping depuis l’hôte :

ip a
ping <IP_VM>

VM IP


2. Installation et configuration du serveur SSH

sudo apt update
sudo apt install openssh-server

Vérifier que le service tourne :

sudo systemctl status ssh
sudo ss -tlnp | grep ssh

Service SSH démarré et port à l’écoute


3. Première connexion SSH

ssh etudiant@<IP_VM>

Accepter l’empreinte et saisir le mot de passe. La clé du serveur est ajoutée à ~/.ssh/known_hosts.

Commande SSH initiale depuis l’hôte

Message de bienvenue reçu après la connexion


4. Authentification par clé

4.1 Génération de clé

ssh-keygen -t ed25519

Génération clé

4.2 Copier la clé vers le serveur

ssh-copy-id etudiant@<IP_VM>

Copie de la clé

4.3 Test

ssh etudiant@<IP_VM>

Connexion sans mot de passe


5. Sécurisation du serveur

Modifier /etc/ssh/sshd_config : désactiver mot de passe et root, changer le port.

PasswordAuthentication no
PermitRootLogin no
Port 2222

Redémarrer SSH :

sudo systemctl restart ssh

Vérifier l’écoute sur le port 2222 :

sudo ss -tlnp | grep 2222

Vérification du port

Tester la connexion sur le nouveau port (échec avant modification illustré :)

Connexion refusée sur 2222


6. Configuration d’un alias SSH

Ajouter dans ~/.ssh/config :

Host serveur-tp
    HostName <IP_VM>
    User etudiant
    Port 2222

Alias SSH

Connexion simplifiée :

ssh serveur-tp

7. Transfert de fichiers

7.1 SCP

scp fichier.txt serveur-tp:/home/etudiant/
scp -r dossier/ serveur-tp:/home/etudiant/

Commande scp en action

Après création du fichier de test et transfert on peut vérifier son contenu :

Vérification du fichier copié

7.2 SFTP

sftp serveur-tp
> put fichier.txt
> get fichier.txt
> ls
> exit

7.3 RSYNC

rsync -avz dossier/ serveur-tp:/home/etudiant/dossier/

8. Analyse des logs

sudo tail -f /var/log/auth.log

Journal auth.log

Observer connexions réussies, échecs de mot de passe, tentatives sur le mauvais port, etc.


9. Installation et analyse de Fail2Ban

sudo apt install fail2ban
sudo systemctl status fail2ban
sudo fail2ban-client status sshd

Configurer /etc/fail2ban/jail.local : (exemple ci‑dessous, port 2222)

Édition jail.local

[sshd]
enabled = true
port = 2222
backend = systemd
maxretry = 3
findtime = 60
bantime = 60

Redémarrer :

sudo systemctl restart fail2ban

Redémarrage Fail2Ban

Ban Fail2Ban


10. Tunnel SSH

10.1 Tunnel local

ssh -L 8080:localhost:80 serveur-tp

Permet d’accéder à un service HTTP distant via http://localhost:8080.

Commande de tunnel local

Résultat affiché par curl :

Contenu accessible via le tunnel

10.2 Tunnel distant

ssh -R 9090:localhost:22 serveur-tp

Sur le serveur, curl http://localhost:9090 renvoie la page du client :

Commande curl depuis le serveur vers le tunnel


11. Simulation d’incidents et diagnostic

  • Arrêter SSH : (non illustré).
  • Mauvais port – voir image 37 connexion refusée.
  • Mauvaise IP – pas d’image.
  • Permissions incorrectes – pas d’image.
  • Vérifier réseau, service, port (ss), logs, configuration, tests locaux.

Écoutes réseau


12. Résultat attendu

  • Serveur SSH fonctionnel
  • Authentification par clé uniquement
  • Mot de passe désactivé
  • Root interdit
  • Port modifié
  • Tunnel SSH fonctionnel
  • Transferts opérationnels
  • Fail2Ban actif
  • Analyse logs maîtrisée

13. Installation et configuration Nginx

sudo apt update
sudo apt install nginx
sudo systemctl status nginx

Installation Nginx

Créer la page test :

sudo mkdir -p /var/www/site-tp
echo '<h1>Bienvenue sur le site TP Nginx !</h1>' \
    | sudo tee /var/www/site-tp/index.html

Index Nginx

Configurer le site :

sudo vim /etc/nginx/sites-available/site-tp
server {
    listen 80;
    server_name localhost;
    root /var/www/site-tp;
    index index.html;
}

Activer, tester et redémarrer :

sudo ln -s /etc/nginx/sites-available/site-tp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Configuration Nginx


14. HTTPS avec certificat auto-signé

14.1 Génération du certificat

sudo mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
    -keyout site-tp.key -out site-tp.crt

Début de la commande openssl Questions du CSR Fichiers générés

14.2 Configuration Nginx pour HTTPS

Modifier /etc/nginx/sites-available/site-tp :

server {
    listen 443 ssl;
    server_name localhost;

    ssl_certificate /etc/nginx/ssl/site-tp.crt;
    ssl_certificate_key /etc/nginx/ssl/site-tp.key;

    root /var/www/site-tp;
    index index.html;
}

server {
    listen 80;
    server_name localhost;
    return 301 https://$host$request_uri;
}

Tester et redémarrer :

sudo nginx -t
sudo systemctl restart nginx

Test configuration

14.3 Test HTTPS

curl -k https://<IP_VM>

Page 404/HTTPS

Vérifier la redirection HTTP :

curl -I http://<IP_VM>

Redirection HTTP→HTTPS


15. Firewall et sécurité

sudo ufw allow 'Nginx Full'
sudo ufw allow 2222
sudo ufw status

Statut UFW

On voit l’ouverture du port SSH personnalisé :
Port 2222 dans UFW

Définir permissions du site :

sudo chown -R www-data:www-data /var/www/site-tp
sudo chmod -R 755 /var/www/site-tp

16. Résultat attendu

  • Nginx accessible en HTTP et HTTPS
  • Redirection automatique HTTP → HTTPS
  • Certificat auto-signé fonctionnel
  • Firewall configuré
  • Page test accessible depuis le client

Annexe : autres captures

Les images suivantes n'ont pas été insérées dans le rapport principal mais peuvent servir de support ou de vérification ultérieure :

img6.png  img7.png  img8.png  img9.png  img10.png img12.png img14.png
img18.png img19.png img20.png img23.png img25.png img26.png img27.png
img28.png img31.png img32.png img34.png img36.png img41.png img42.png
img46.png img49.png img50.png img51.png img52.png img53.png img55.png
img56.png img57.png img58.png

(la numérotation est celle du répertoire imageTP4)