TP03 - bpatureau/admin-2-TP GitHub Wiki
Noms des auteurs : Bongartz, Patureau, Ladrière Date de réalisation : 01-04-25 (remake)
- Tout d'abord on mets à jour la liste des paquets avec
sudo apt update
puis on mets à jour le système sur base de cette liste avecsudo apt upgrade
- On se rend dans
sudo nano /etc/ssh/sshd_config
- On modifie le champ
Port
(numéro de port à titre d'exemple ici pour ne pas donner le vrai)
AllowUsers maxime
Port 53271
#AddressFamily any
#ListenAddress 0.0.0.0
- Puis on redémarre ssh avec
sudo systemctl restart sshd
-
Validation : on fait un
sudo netstat -ntplu | grep sshd
pour voir le port ssh
On peut voir que ssh utilise bien le port qu'on à définis
-
On va créer un utilisateur nommé
admin
qui aura les droits sudo et un utilisateur avec des droit restreits nommédns
car c'est sur ce vps qu'on s'occupe du dns -
Création du user
dns
non privilégé :
Création du user
sudo adduser dns
On lui à donné un mot de passe
Ajout du user au groupe docker
sudo usermod -aG docker dns
On vérifie qu'il n'ait pas de droits importants et qu'il fasse partie du groupe docker, avecgroups dns
-
Création du user
admin
privilégé :
Création du user
sudo adduser admin
On lui à donné un mot de passe fort étant donné qu'il pourra tout executer
Ajout du user au sudo group
sudo usermod -aG sudo admin
On vérifie qu'il soit bien dans le groupe sudo avecgroups admin
Puis on redémarre ssh avecsudo systemctl restart ssh
- On désactive la conexion par root car on se connectera par l'utilisateur
dns
pour cela on va danssudo nano /etc/ssh/sshd_config
: - Pour valider ceci on essaie de se connecter en ssh au root avec
ssh -p 53271 [email protected]
et on voit que ça ne fonctionne pas
✔️ Configurer le pare-feu : Indiquez les règles choisies (et mettez les à jour au fur et à mesure du semestre)
- On a choisi d'utiliser ufw voici nos règles :
- Autoriser SSH :
sudo ufw allow 53271/tcp
- Autoriser le DNS :
sudo ufw allow 53/tcp
sudo ufw allow 53/udp
- Désactiver tout le reste :
sudo ufw default deny incoming
sudo ufw default allow outgoing
- Validation :
- On peut afficher toutes les règles avec
sudo ufw status
- Vérification des ports ouverts avec
nmap -p- <ip.de.notre.vps>
(notre vrai port est flouté): - Vérifier si il y a des services qui tournent de manière superflues
netstat -ntplu
:
✔️ Installer Fail2ban et le configurer pour éviter les attaques brute-force sur SSH. Indiquez les règles choisies (et mettez les à jour au fur et à mesure du semestre)
- Installer le package :
sudo apt install fail2ban
- Créer un fichier de configuration local de nos services en copiant le fichier "jail" :
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- Configurer le fichier jail.conf
sudo nano /etc/fail2ban/jail.local
On a configuré une jail pour sécuriser l'accès SSH qui est le seul service utilisé en plus du DNS mais qui lui tourne dans un docker :
[DEFAULT]
bantime = 15m
maxretry = 5
enabled = false
[sshd]
enabled = true
port = 51515
logpath = /var/log/auth.log
filter = sshd
maxretry = 4
findtime = 30m
bantime = 1h
bantime.increment = true
bantime.factor = 2
bantime.maxtime = 24h
filter = sshd
etenabled = true
: Active fail2ban pour SSH
maxretry = 4
etfindtime = 30m
: Une IP sera bannie après 4 tentatives ratées dans un intervalle de 30min
bantime = 1h
,bantime.increment = true
,bantime.factor = 2
,bantime.maxtime = 24h
: Quand une IP est bannie c'est pendant 1h et chaque récidive double la durée du bannissement, jusqu'à un maximum de 24 heures
logpath = /var/log/auth.log
: logs pour voir ce qu'a fait fail2ban
- Démarrer fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
- Validation :
sudo systemctl status fail2ban
sudo fail2ban-client status sshd
- Générer une pair de clés sur la machine locale :
- Si ce n'est pas déjà fait il faut créer un répertoire .ssh
- On créer la paire de clés :
ssh-keygen -t rsa -b 4096 -a 100
L'invite propose de choisir un nom (on a mis rsa_vps_admin
) et de protèger la clé avec une passphrase (on l'a fait)
on peut voir que la paire de clé a été créée, composée d'une clé privée
rsa_vps_admin
et une publique (.pub)rsa_vps_admin.pub
- Copier la clé publique sur le vps
- Soit sur linux on fait :
cat ~/.ssh/rsa_vps_admin.pub
- Soit sur windows on fait
type rsa_vps_admin.pub
ou on ouvre directement le fichier dans l'explorer. Puis on copie la clé (tout le contenu du fichier) - On se connecte à la machine distante et on colle la clé dans le fichier
sudo nano ~/.ssh/authorized_keys
(on peut en mettre plusieurs à la suite)
- Validation
- On essaie de se connecter, pour faire ça on s'est simplifié la vie en configurant le fichier config dans le .ssh. Toutes les infos du vps comme l'ip, le port, le chemin d'accès de la clé privée, sont spécifiés pour pouvoir facilement se connecter au vps en faisant jsute
ssh maxVps
:
Host maxVps
HostName <ip>
User maxime
Port <port>
IdentityFile <chemin>\.ssh\rsa_vps_admin
- ça marche on est connecté
- Désactiver l’authentification par mot de passe
- On va dans sshd_config et on remplace yes par no (et on limite la connexion uniquement au compte non privilégé)
sudo nano /etc/ssh/sshd_config
AllowUsers maxime
PasswordAuthentication no
- Pareille pour le fichier contenu dans le include de sshd_config
sudo nano /etc/ssh/sshd_config.d/*.conf
PasswordAuthentication no
Le site web a été déployé sur le vps de Bastien : Liens vers le TP5