Configuration serveur¶
2018
Installation Linux¶
Montage du systĂšme de fichiers :
/: ro,suid,dev,exec,auto,nouser,async/home: rw,suid,dev,noexec,auto,nouser,async/tmp: rw,suid,dev, noexec,auto,nouser,async/var: rw,suid,dev,noexec,auto,nouser,async
Attention pour le répertoire racine, un montage en lecture seule (ro) rend impossible la modification des fichiers.
Cela peut ĂȘtre voulu en production, notez que les mises Ă jour ne seront pas possibles.
Pour modifier le montage, il est nécessaire de modifier le fichier fstab en mode rescue.
Gestion des accÚs root¶
Installation de sudo
su
apt install sudo
Configuration de sudo, éditer le fichier
/etc/sudoers. Par exemple, pour que âuserâ ait accĂšs Ă tous les droits root sur le serveur, ajouter la ligne suivante :
user ALL=(ALL) ALL
Authentification par clé publique/privée¶
Il est recommandĂ© dâavoir une clĂ© publique/privĂ©e unique pour chaque machine et chaque utilisateur.
La clé privée et publique se trouve dans le répertoire ~/.ssh/.
Depuis OpenSSH version 6.5, il est nĂ©cessaire dâutiliser lâalgorithme ed25519.
Génération de la clé ed25519 :
ssh-keygen -o -a 100 -t ed25519 -f ~/.ssh/id_ed25519 -C "john@example.com"
Copier la clé publique dans le fichier ~/.ssh/authorized_keys
Ajouter une nouvelle machine Ă votre fichier ~/.ssh/config pour activer lâauthentification automatique.
Host newyork
HostName 127.0.0.1
Port 2222
User jdoe
IdentityFile ~/.ssh/id_ed25519
RequestTTY yes
RemoteCommand tmux -u attach || tmux -u new
Cette configuration active le multiplexage des connexions SSH, permettant Ă plusieurs sessions vers le mĂȘme hĂŽte de partager une seule connexion rĂ©seau, ce qui accĂ©lĂšre les connexions suivantes et rĂ©duit les demandes dâauthentification rĂ©pĂ©tĂ©es.
Host dev-server*
ControlMaster auto
ControlPath ~/.ssh/cm-%r@%h:%p
ControlPersist 10m
Configuration de sshd¶
Ăditer le fichier /etc/ssh/sshd_config pour configurer sshd.
Interdire lâauthentification par mot de passe
# To disable tunneled clear text passwords both PasswordAuthentication and
# ChallengeResponseAuthentication must be set to "no".
PasswordAuthentication no
Interdire lâauthentification de lâutilisateur root :
PermitRootLogin no
Désactiver les mots de passe vides
PermitEmptyPasswords no
fail2ban¶
apt install fail2ban
Guide de mise en place de WireGuard¶
Installer le paquet WireGuard sur votre systĂšme :
sudo apt install wireguard
Génération des clés
Générer les clés cryptographiques pour chaque machine :
cd /etc/wireguard/
umask 077
wg genkey | tee private.key | wg pubkey > public.key
Configuration du serveur
Créer le fichier /etc/wireguard/wg0.conf sur le serveur
[Interface]
# The server's private key
PrivateKey = <YOUR_SERVER_PRIVATE_KEY>
# Internal VPN IP address for the server
Address = 10.0.0.1/24
# Port to listen on
ListenPort = 51820
# Optional: NAT rules for internet access (ensure net.ipv4.ip_forward=1 is enabled)
# Replace 'eth0' with your actual public network interface
PostUp = iptables -t nat -I POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
# Peer configuration (Repeat this block for each client)
[Peer]
# The client's public key
PublicKey = <CLIENT_PUBLIC_KEY>
# Authorized internal IP for this client
AllowedIPs = 10.0.0.2/32
Configuration du client
Sur le client (par exemple, un PC Linux), créer /etc/wireguard/wg0.conf :
[Interface]
# The client's private key
PrivateKey = <CONTENU_DE_LA_PRIVATEKEY_CLIENT>
Address = 10.0.0.2/24
[Peer]
# The server's public key
PublicKey = <CONTENU_DE_LA_PUBLICKEY_SERVEUR>
# Your server's public IP address and port
Endpoint = <IP_PUBLIQUE_SERVEUR>:51820
# 0.0.0.0/0 routes all traffic through the VPN
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Gestion de lâinterface
DĂ©marrer lâinterface VPN manuellement :
sudo wg-quick up wg0
Activer le service pour quâil dĂ©marre automatiquement au dĂ©marrage :
sudo systemctl enable wg-quick@wg0
SSH par-dessus WireGuard
Dépendance de service
Pour sâassurer que SSH ne dĂ©marre quâaprĂšs que le VPN soit actif, crĂ©er une configuration de surcharge :
sudo systemctl edit ssh
Ajouter ces lignes dans lâĂ©diteur :
[Unit]
After=wg-quick@wg0.service
Wants=wg-quick@wg0.service
Appliquer les changements :
sudo systemctl daemon-reload
Restreindre lâaccĂšs SSH au VPN
Pour sâassurer que SSH nâest accessible que via lâinterface VPN, Ă©diter /etc/ssh/sshd_config sur le serveur et mettre Ă jour le ListenAddress :
Dans /etc/ssh/sshd_config
ListenAddress 10.0.0.1