Dans ce tutoriel sur l'installation et la configuration d'un serveur GNU/Linux nous allons utiliser la distribution Debian avec un déploiement de type minimal.
Fiche Debian sur : DistroWatch
Parce que de nombreuses distro GNU/Linux se basent sur celle-ci, Debian est d’intérêt crucial.
Si vous souhaitez supporter ce magnifique projet, vous pouvez leur faire un don ou les aider d'autres façons.
Il existe plusieurs branches de Debian : Stable, Testing, Unstable.
Dans ce tutoriel nous utiliserons la branche Stable.
Bullseye (v11) est la version la plus récente à ce jour.
Sur serveur n'utilisez que la branche Stable !
Debian Stable est une distribution particulièrement appréciée sur serveur pour :
Debian est très léger, le système minimal fonctionne sans problème avec environ 128 Mo de mémoire RAM et 2 Go d'espace disque ! De plus de nombreux types de processeurs sont supportés pour les architectures 32 ou 64 bits : Intel, AMD, ARM, RISC...
Cependant, un minimum de 256 Mo de RAM et 5 Go d'espace disque est recommandé pour tenir la charge.
Attention, évidemment cette configuration dépendra avant tout des services que vous installerez sur votre serveur. C'est pourquoi vous devriez plutôt vous référer aux pré-requis des fournisseurs des logiciels que vous y installerez !
Tout d'abord, il vous faut récupérer les sources d'installation, c'est un fichier de type .iso
.
Les manipulations suivantes sont à faire depuis votre ordinateur
debian-11.6.0-<arch>-netinst.iso
et aussi le fichier SHA256SUMS
Avec
<arch>
correspondant à l'architecture de votre processeur (amd64 pour machines Intel/AMD 64 bits, arm64 pour processeurs arm 64bits, etc...).
Dans ce tutoriel, nous prendrons la version amd64.
Attention pour le RaspberryPi, le processus est différent, on en parle dans l'article Installer et configurer Pi-Hole
SHA256SUMS
est juste un fichier texte qui contient la somme de vérification au format SHA256 associée au nom du fichier.iso
.
Elle va nous permettre de s'assurer que le téléchargement du fichier ISO s'est bien déroulé et n'est à priori pas corrompu.
Référez-vous à l'article Intégrité et Signature pour plus d'informations.
cd ~/Téléchargements
sha256sum -c SHA256SUMS --ignore-missing
debian-11.6.0-amd64-netinst.iso: Réussi
Si vous voyez le nom de votre fichier
.iso
suivi de Réussi, vous pouvez passer au chapitre suivant
Si ce message s'affiche:
sha256sum: SHA256SUMS : aucun fichier n'a été vérifié
Cela veut dire que votre fichier.iso
n'est pas dans le même dossier que le fichierSHA256SUMS
Si par contre c'est ce message qui s'affiche :
debian-11.6.0-amd64-netinst.iso: Échec
sha256sum: Attention : 1 somme de contrôle ne correspond pas
Renouvelez le téléchargement car votre fichier.iso
est corrompu !
Rendez-vous sur l'article dédié pour rendre une clé USB bootable et ainsi créer le média d'installation de Debian.
On part du principe que le Secure Boot a été désactivé dans votre BIOS. Si vous souhaitez tout de même installer avec Secure Boot activé, suivez les instructions sur le wiki Debian SecureBoot
Avant l'installation, si le serveur contient déjà des données, les sauvegarder sur un support externe (clef ou disque dur USB, partage réseau...) car l'installation détruira toutes les données présentes sur le serveur !
Pour un serveur, il est préférable d'utiliser un câble Ethernet.
Le brancher entre votre Box et votre serveur avant l'installation.
Lors de l'installation, Debian téléchargera et installera ainsi les paquets les plus récents.
Afin d'autoriser le démarrage sur clef USB et désactiver le SecureBoot, vous devrez tout d'abord accéder au BIOS de votre machine.
N'hésitez pas à aller sur notre tutoriel dédié.
Du fait de la grande diversité de BIOS, marques et modèles de carte mère, il est très difficile de vous guider sur cette étape. Demandez de l'aide si vous ne vous en sortez pas.
Une fois terminé, n'oubliez pas de sauvegarder la configuration du BIOS avant de redémarrer.
Sur un serveur il est préférable de ne pas utiliser l'option "Graphical Install".
L'option "Install" fonctionnera à tous les coups et ne provoquera pas de problème d'affichage, c'est pourquoi nous l'utiliserons ici.
Si cet écran n'apparaît pas, vérifiez votre clef USB et/ou la configuration du BIOS !
Les premiers écrans de l'installeur sont triviaux et concernent la langue, le nom du serveur et les comptes utilisateurs.
...Dans la suite de ce tutoriel pour serveur, on utilisera toujours l'anglais.
Évidemment vous pouvez choisir Français mais cela est déconseillé sur serveur :
La raison est simple, quelle que soit la langue, les commandes que vous entrerez sur votre serveur au quotidien seront toutes en anglais. Aussi si vous choisissez Anglais le retour des commandes sera en Anglais.
Cela est préférable lorsque vous chercherez de l'aide sur Internet !
Voici comment naviguer entre les écrans de l'installeur :
-- la touche TAB de votre clavier vous permettra de sélectionner la partie d'écran suivant
-- la touche ENTRÉE valider la sélection pour passer à l'écran suivant
-- la touche ESPACE permet de sélectionner un ou des éléments d'une liste à choix multiples
Petit conseil, n'utilisez pas de nom explicite qui pourrait, sur le réseau, désigner les services hébergés ou le système d'exploitation installé ou toute autre information qui pourrait compromettre la sécurité de votre serveur, y compris votre identité
Ici par exemple le nom du serveur correspond à une couleur ("black") mais cela pourrait très bien être un monument, une célébrité, une planète... soyez créatif !
wikilibriste.fr
local
sur un réseau local.root
Il est fortement recommandé :
-- de ne pas oublier ce mot de passe
-- de le stocker dans un gestionnaire de mots de passe
-- de choisir un mot de passe fort
Consultez l'article lié aux mots de passe pour plus d'informations.
Notez que si vous laissez le mot de passe
root
vide, ce compte sera désactivé. De plus, le compte utilisateur (crée juste après) sera membre du groupesudoers
automatiquement.
Debian impose maintenant la création d'un compte utilisateur. Celui-ci sera utilisé pour les tâches courantes.
Vous ne pourrez pas modifier l'identifiant plus tard, il est figé. Un répertoire portant son nom sera d'ailleurs crée sous le dossier
/home/
Choisissez un identifiant qui ne vous identifie pas explicitement sur le système, par exemple, utilisez plutôt un pseudo.
Il est fortement recommandé :
-- de le stocker dans un gestionnaire de mots de passe
-- de choisir un mot de passe fort
-- de choisir un mot de passe différent de celui du compteroot
Consultez l'article lié aux mots de passe pour plus d'informations.
Le partitionnement est un sujet complexe et controversé, particulièrement sur serveur.
La raison est qu'il n'existe pas de meilleure façon de le réaliser car il dépendra du type de machine (PC ou serveur) et des services hébergés !
Le Wiki de Arch Linux explique très bien les différents cas d'usage.
Dans notre exemple nous partirons sur un partitionnement de type "LVM guidé".
C'est l'installeur guidé Debian qui réalisera tout pour vous et va nous créer automatiquement dans notre cas 3 partitions :
/boot : Qui contient tous les fichiers nécessaires à l'amorçage (noyau Linux, ...)
SWAP: Le "fichier" d'échange
/ : Ce point de montage sera la racine du système de fichiers, et contiendra tout le reste
LVM (Logical Volume Manager) vous permettra facilement le repartitionnement si à l'avenir cela s'avère nécessaire.
Attention, une fois cet écran validé, la table des partitions sera détruite et une nouvelle sera crée ! Toutes les données seront effacées par la suite.
Debian utilise
apt
pour installer et mettre à jour les paquets logiciels.
Pour stocker et distribuer les paquets logiciels, les distributions GNU/Linux utilisent des dépôts dupliqués et répliqués sur les serveurs de contributeurs à travers le monde, que l'on appelle "miroir".
apt
va maintenant installer et mettre à jour le système :L'installation est terminée, vous devez maintenant éjecter votre média d'installation.
Debian va démarrer automatiquement au bout de quelques secondes.
Si vous ne connaissez pas la ligne de commande, nous vous conseillons fortement de lire l'article Utilisation du Terminal avant de continuer !
root
:root
root
Notez que même si vous saisissez le mot de passe rien ne s'affichera à l'écran.
Ceci est un comportement normal, les caractères saisis ne sont pas affichés pour des raisons de sécurité !
Vous êtes maintenant connectés sur votre serveur fraîchement installé. Bravo !
Pour la suite vous aurez besoin de connaître l'adresse IP de votre serveur.
Celle-ci a été attribué automatiquement par votre serveur DHCP et généralement c'est votre Box qui s'en occupe.
Pour afficher l'adresse IP entrez :
ip addr
La sortie écran devrait afficher :
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether b8:27:eb:a1:b7:65 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.134/24 brd 192.168.1.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::ba27:ebff:febd:f755/64 scope link
valid_lft forever preferred_lft forever
Le premier bloc
lo
est la boucle local loopback et est toujours127.0.0.1
, ignorez-la, elle ne nous sera pas utile.
Ce qui nous intéresse c'est l'adresse IP, juste après inet
, dans notre cas 192.168.1.134
.
Localisez le nom de l'interface réseau : eth0
(dans cette exemple). C'est la carte réseau Ethernet.
Notez surtout l'adresse MAC correspondante, ici b8:27:eb:a1:b7:65
, c'est elle qui va nous être utile tout de suite
Vous pouvez aussi retrouver la carte sous le nom
enp0s3
,enp0s25
, ... tout dépend de votre matériel (wlo1
correspond à une carte réseau sans fil / wifi).
Sur serveur, il est fortement recommandé d'attribuer une adresse IP fixe pour qu'elle ne change jamais.
Cela est indispensable car les PC clients se connecteront dessus et si l'IP change, alors il faudra reconfigurer chaque PC à chaque changement !
Nous allons donc devoir fixer l'adresse IP de notre serveur
Pour cela il existe deux méthodes :
Cette méthode a 2 inconvénients :
-- Le premier c'est que si la topologie de votre réseau change, alors cette configuration sera à revoir.
-- Le second c'est que cela nécessite de savoir ce qu'est une IP, un masque, une passerelle, ...
Cette méthode est simple et ne nécessite pas de connaissance particulière.
C'est ce que nous allons faire dans ce tuto !
En général, c'est votre box qui fait office de serveur DHCP, donc nous allons nous connecter à la box pour modifier la configuration.
Depuis votre PC, rendez-vous sur la page suivante :
Une fois sur la page d'accueil de votre Box :
192.168.1.101
et l'adresse MAC de notre serveur : b8:27:eb:a1:b7:65
(celle que vous avez identifié précédemment).
192.168.1.101
etb8:27:eb:a1:b7:65
ne sont que des exemples, à vous choisir une adresse IP et entrez l'adresse MAC de votre serveur (voir chapitre précédent) !
dhclient -r
dhclient
dhclient
est le logiciel client DHCP,-r
permet de "relâcher" une IP (release) enfindhclient
sans paramètre va renouveller l'IP (renew).
ping 192.168.1.101
Vous devriez voir à l'écran ce genre de résultat :
PING 192.168.1.101 (192.168.1.101) 56(84) bytes of data.
64 bytes from 192.168.1.101: icmp_seq=1 ttl=64 time=1 ms
Pour terminer la commande
ping
appuyez simultanément sur les touches CTRL et C
Votre serveur est désormais accessible par l'adresse IP
192.168.1.101
SSH est un outil indispensable lorsqu'il s'agit d'administrer un serveur.
Il vous permettra de vous y connecter de façon sécurisée depuis une autre machine.
Nous partirons du principe que le service SSHd (deamon secure shell) a été installé et activé sur le serveur.
Si ce n'est pas le cas, pas de panique ! Depuis votre serveur, lancez cette commande :apt install -y openssh-server
Les commandes qui suivent seront à exécuter depuis votre PC connecté via SSH sur le serveur.
Pour apprendre à utiliser SSH, suivez le tuto SSH utilisation (à venir)
ssh root@192.168.1.101
192.168.1.101
est à remplacer par l'adresse IP de votre serveur.
The authenticity of host '192.168.1.101 (192.168.1.101)' can't be established.
ED25519 key fingerprint is SHA256:m65eoXR7/NGxhE169ey8YjE3pwYAR3O4vs0bc3Keyh5.
This key is not known by any other names
Are you sure you want to continue connecting (**yes**/no/[fingerprint])?
yes
:yes
Warning: Permanently added '192.168.1.101' (ED25519) to the list of known hosts.
Cela aura pour effet de valider l'authenticité de votre connexion en modifiant le fichier suivant sur votre PC :
~/.ssh/known_hosts
root
et la connexion sera ensuite établie.Linux black 5.10.0.21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) x86_64
The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
Last login: Sun Feb 19 21:08:19 2023
Nous avons effectué une installation minimale, c'est à dire que seuls les logiciels de base sont installés. Certains logiciels pratiques sont donc manquants.
Sur serveur, nous conseillons les applications suivantes :
bash-completion
: Auto complète les commandes shell, avec la touche TABlocate
: index et recherche rapide d'un fichier sur le systèmewget
: pour télécharger un fichiernano
: un éditeur de texte plus simple que le très célèbre vi
htop
: une moniteur de performance plus évolué que top
Sur Debian c'est le logiciel
apt
qui s'occupe de la gestion des paquets logiciels.
Lancez la commande suivante pour installer tout d'un coup :
apt install -y bash-completion locate wget nano htop
Notez que pour le moment nous sommes connectés avec le compte
root
donc pas besoin de sudo devant la commandeapt
Il est possible que certains de ces logiciels soient déjà installés.
-y
permet de ne pas demander de confirmation.
Pour que locate
fonctionne, il faut lancer une première indexation :
updatedb
Maintenant vous pouvez chercher l'emplacement de n'importe quel fichier
Par exemple, cherchons le fichier de version de debian :
locate debian_version
On découvre qu'il est situé dans le dossier /etc/
:
/etc/debian_version
Pour que l'auto-complétion du shell bash fonctionne, notez qu'il vous faut vous déconnecter puis reconnecter de votre session.
Vous l'aurez sûrement remarqué, le shell est un peu austère !
Par exemple la commande ls -l
pour "lister" le contenu de votre disque dur, n'affiche que du texte blanc sur fond noir :
Tâchons d'arranger cela :
-- nous allons coloriser le prompt et la sortie écran de la commandels
-- nous allons ajouter des alias, pour éviter de taperls -l
ouls -la
, on tapera respectivementll
oul
. Aussi nous activerons la confirmation avant suppression/déplacement/copie
nano /root/.bashrc
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
Dans les fichiers de configuration sous Linux :
-- En début de ligne, le symbole dièse#
permet de commenter la ligne complète.
-- Pour décommenter, retirez le symbole dièse#
du début de la ligne.
Ajoutez la ligne suivante, elle va coloriser le "prompt" :
PS1='\[\e[01;31m\]\u\[\e[m\]@\[\e[01;33m\]\h\[\e[m\]: \[\e[01;33m\]\w\[\e[m\]\$ '
Maintenant nous allons sortir de l'éditeur tout en sauvegardant les modifications.
exec bash
- Le prompt est colorisé, c'est la variable PS1 qui fait cela:
root
@black: /
#
Vous retrouverez sur cette page tous les codes couleur pour faire votre propre prompt.- Lorsque vous taperez
ll
en fait unls -l
sera exécuté pour afficher une liste détaillée.- Lorsque vous taperez
l
en fait unls -lA
sera exécuté et affichera aussi les fichiers cachés.- La sortie écran de
ls
est maintenant colorisée :
- en bleu les
dossiers
- en cyan les
liens symboliques
- en vert les
exécutables ou dossiers avec droit RWX
- en rouge les
archives
- en blanc le reste
Enfin, les commandes
rm
,mv
etcp
demanderons maintenant une confirmation avant la suppression, déplacement ou copie.
vous pouvez à tout moment commenter ces alias en ajoutant un dièse#
en début de ligne, mais nous recommandons de les laissez pour les débutants.
Notez que cette configuration a été effectuée seulement pour le compte
root
.
Si vous souhaitez aussi la faire pour votre compte utilisateur, il faudra la répeter en étant connecté sous ce compte.
La première chose à faire est de mettre à jour votre système.
Sur Debian c'est le logiciel apt
qui s'occupe aussi de la mise à jour des paquets logiciels.
Lorsque vous voulez mettre à jour ou installer un logiciel il est recommandé de mettre à jour la liste des paquets avec la commande :
apt update
La sortie écran suivante va s'afficher :
Hit:1 http://deb.debian.org/debian bullseye InRelease
Get:2 http://security.debian.org/debian-security bullseye-security InRelease [48.4 kB]
Get:3 http://deb.debian.org/debian bullseye-updates InRelease [44.1 kB]
...
...
Fetched 655 kB in 1s (1,051 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
3 packages can be upgraded. Run 'apt list --upgradable' to see them.
A partir de maintenant on peut mettre à jour les paquets logiciels :
apt upgrade
apt
va vous afficher les paquets qui nécessitent une mise à jour, la taille des données à télécharger et à installer :Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be upgraded:
libgnutls30 libssl1.1 openssl
3 upgraded, 0 newly instzlled, 0 to remove, and 0 not upgraded.
Need to get 3,753 kB of archives.
After this operation, 4,096 B of additional disk space will be used.
Il va surtout vous demander une confirmation, appuyez sur Y puis ENTRÉE.
Do you want to continue? [Y/n]
Notez que sous Debian (et Linux en général) lors de saisie de choix (Yes ou No), la valeur en majuscule (ici "Y") est la valeur par défaut. Vous pouvez donc juste appuyer sur la touche ENTRÉE pour valider.
Soyons honnête, combien d'entre vous se connecterons régulièrement sur leur serveur pour réaliser les mises à jour ?
L'une des principales mesure de sécurité est d'installer régulièrement les mises à jour de sécurité.
On vous conseille vivement d'installer l'outil unattended-upgrades
, il fera automatiquement les mises à jour pour vous :
apt install -y unattended-upgrades
Une fois l'installation terminée, nous allons éditer le fichier suivant :
nano /etc/apt/apt.conf.d/50unattended-upgrades
Décommentez les lignes suivantes, sauvez et quittez :
Unattended-Upgrade::Mail "root";
Unattended-Upgrade::MailOnlyOnError "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "05:00";
Acquire::http::Dl-Limit "500";
Dans l'ordre, ces lignes vont :
Pour l'activation il va falloir créer ce fichier :
touch /etc/apt/apt.conf.d/20auto-upgrades
Puis l'éditer :
nano /etc/apt/apt.conf.d/20auto-upgrades
Ajoutez les lignes suivantes, sauvez et quittez :
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "7";
Maintenant tous les jours, les mises à jour de sécurité seront installées automatiquement avec redémarrage à 5 heures du matin si besoin (pour les mises à jour du noyau).
Seules les mises à jour de sécurité seront effectuées automatiquement !
Pour le reste, à vous de le faire de temps en temps :
-- mettre à jour les logiciels :apt upgrade
-- nettoyer les anciens paquets ou dépéndences devenues inutiles :apt autoremove
-- nettoyer les anciens noyaux :dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get purge
-- faire la mise à niveau de version de Debian. Voir le Debian Lifecycle et la page Debian LTS pour plus d'information.
Si vous n'aviez pas mis de mot de passe sur le compte
root
, alors vous pouvez ignorer ce chapitre car l'installateur aura déja désactivé le compteroot
, installésudo
et configuré votre compte utilisateur pour obtenir des privilèges administrateur lorsque vous le demanderez.
Après ce chapitre, nous allons arrêter d'utiliser le compte
root
.
A la place nous allons utiliser notre compte utilisateur, vous vous souvenez ?
Celui que l'on a créé lors de l'installation...
Dans notre exemple le compte sera john
, bien-sûr vous devrez adapter au nom que vous auvez choisi lors de l'installation.
sudo
:apt install -y sudo
sudo
(super user do) veut dire : "faire en tant que super-utilisateur" ou en tant qu'administrateur.
On l'utilisera au début de chaque commande nécessitant des droits superutilisateur.
sudo usermod -aG sudo john
Cette commande va ajouter votre compte dans le fichier de configuration
/etc/sudoers
root
, nous n'en avons plus besoin et nous utiliserons à partir de maintenant notre compte utilisateur :exit
john
et entrez votre mot de passe :Il est important de sécuriser un minimum notre serveur SSH, pour cela nous allons :
-- interdire la connexion par mot de passe via SSH, vous devrez utiliser une paire de clef publique/privée.
-- interdire la redirection X11, elle n'est en général pas utile.
-- interdire la connexion avec le compteroot
à travers SSH, vous vous connecterez avec votre compte utilisateur
Notez que vous pourrez toujours basculer sur l'utilisateur
root
en SSH mais seulement après vous être connecté avec votre compte utilisateur et avoir tapésudo su -
.
Vous pourrez toujours vous connecter avecroot
directement en local sur la console (sans SSH).
ssh john@192.168.1.101
La suite se fera avec votre compte utilisateur, ici
john
et en utilisantsudo
pour élever vos droits.
sudo nano /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
X11Forwarding no
Pour le moment cette configuration n'est pas encore prise en compte car nous n'avons pas rechargé le service SSHd.
ssh-keygen -f ~/.ssh/black -t rsa -b 4096
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
.ssh
de votre répertoire utilisateur :Sous Linux, un fichier ou un dossier qui commence par un point (
.
) est caché.
Your identification has been saved in /home/votre-pseudo-pc/.ssh/black
Your public key has been saved in /home/votre-pseudo-pc/.ssh/black.pub
The key fingerprint is:
SHA256:Nrxaso0qRM4rJnQpxNyZb8t+B0Hq0n/AKoGJWoGmk john@pc
The key's randomart image is:
+---[RSA 4096]----+
|=+o+o |
|=*=o.+ |
|B=*.X |
|OE & o . |
|Oo* + S . |
|+ + o o = |
| . . o . |
| o |
| |
+----[SHA256]-----+
ssh-keygen
est le programme qui permet de créer une paire de clefs SSH
-f
est le paramètre qui permet de spécifier le fichier de sortie, ici la clef sera stockée dans votre dossier utilisateur dans un sous dossier .ssh
-t
permet de choisir l'algorithme, ici RSA
-b
sa taille, ici 4096 octetsNotez que 2 fichiers ont été créés :
-- un fichierblack
(c'est la clef privée à ne jamais communiquer et à ne pas perdre !)
-- un fichierblack.pub
(c'est la clef publique) à copier sur le serveur dans le fichier~/.ssh/autorized_keys
de votre utilisateur.Pour les concepts de cryptographie asymétrique, se référer à l'article dédié.
Ne jamais communiquer la clef privée.
La stocker ainsi que sa passphrase associée (si applicable) dans un coffre-fort chiffré comme par exemple KeePassXC !
Consultez l'article lié aux mots de passe pour plus d'informations.
black.pub
de cette paire de clef sur le serveur (le mot de passe de votre compte utilisateur vous sera demandé) :ssh-copy-id -i ~/.ssh/black.pub john@192.168.1.101
ssh-copy-id
est le programme qui permet de transférer la clef publique SSH de votre PC au serveur
-i
est le paramètre qui permet de spécifier le fichier d'entrée, ici votre clef publique
john
est votre compte utilisateur sur votre serveur
192.168.1.101
est l'adresse IP de votre serveur
A la suite de cette commande, le contenu du fichier black.pub à été inséré dans le fichier /home/john/.ssh/authorized_keys
Si vous n'avez accès à votre serveur qu'en SSH, après avoir exécuté cette commande, il est fortement recommandé de ne pas fermer cette session et de la conserver ouverte tant que vous n'aurez pas fini de valider le bon fonctionnement de SSH.
sudo systemctl reload sshd
ssh john@192.168.1.101
Aucun mot de passe ne vous sera demandé.
La passphrase de votre clef vous sera demandé si vous en avez défini une.
Si vous arrivez à vous connecter, vous pouvez passer à la suite
Le pare-feu est un élément incontournable quand il s'agit de sécuriser votre serveur.
Il va s'occuper de filtrer les connexions entrantes (on ne bloquera pas les connexions sortantes dans ce tutoriel).
Dès qu'une machine est sur le réseau et que par exemple sur votre serveur un service est actif (comme SSHd), le ou les port(s) correspondants sont ouverts. Si un autre appareil y accède on parle d'une connexion entrante sur votre serveur.
A l'inverse une application sur votre serveur qui irait sur le réseau (comme l'outilapt
qui téléchargerait un logiciel pour l'installer) va effectuer une connexion sortante.
Voici comment activer rapidement un logiciel pare-feu "simple" sur votre serveur.
ssh john@192.168.1.101
ufw
(Uncomplicated FireWall) :sudo apt install ufw
sudo ufw status
Status: inactive
C'est normal, nous devons tout d'abord créer des règles.
Nous n'activerons le firewall qu'à la fin.
sudo ufw default deny incoming
apt
pour les installations et mises à jour) :sudo ufw default allow outgoing
ufw app list
permet d'afficher les protocoles/applications supportées :sudo ufw app list
ssh
est l'une d'entre elle:Available applications:
AIM
Bonjour
CIFS
DNS
Deluge
IMAP
IMAPS
IPP
KTorrent
Kerberos Admin
Kerberos Full
Kerberos KDC
Kerberos Password
LDAP
LDAPS
LPD
MSN
MSN SSL
Mail submission
NFS
OpenSSH
POP3
POP3S
PeopleNearby
SMTP
SSH
Socks
Telnet
Transmission
Transparent Proxy
VNC
WWW
WWW Cache
WWW Full
WWW Secure
XMPP
Yahoo
qBittorrent
svnserve
ssh
sudo ufw allow ssh
Notez que vous pouvez aussi spécifier vous-même le port et le protocole (TCP et/ou UDP) :
sudo ufw allow 22/tcp
Gardez en tête que votre serveur n'autorise maintenant aucune connexion entrante (à part SSH).
Donc à l'avenir, si vous installez un nouveau service, il vous faudra autoriser les ports utilisés par ce service.
Par exemple pour un serveur web, il vous faudra autoriser les ports liés au web : 80/tcp et 443/tcp.
sudo ufw status verbose
Status: inactive
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
Les connexions entrantes sur le port 22 (protocol TCP) sont maintenant autorisées en IPv4 et IPv6.
Si vous n'avez accès à votre serveur qu'en SSH, après avoir exécuté cette commande, il est fortement recommandé de ne pas fermer cette session et de la conserver ouverte tant que le problème n'est pas réglé.
sudo ufw enable
Depuis votre PC, testez une nouvelle connexion via SSH pour valider que l'activation du firewall et la reconfiguration de SSH n'ont pas bloqué l'accès distant.
Si vous n'arrivez plus à vous connecter, retournez sur la fenêtre de session SSH toujours fonctionnelle et réglez le problème.
Maintenant que tout est installé et fonctionnel, il est recommandé de :
Consultez l'article lié aux mots de passe pour plus d'informations.
Par ordre d'importance, vous trouverez ici la boîte à outils du bon administrateur... que ce soit pour votre serveur personnel voire renforcer vos connaissances.
Il est très important voire primordial de réaliser des sauvegardes régulières de votre serveur et d'avoir une documentation pour restaurer les données. Si une coupure se produit, vous pourrez ainsi récupérer les données rapidement et remettre votre serveur en piste.
/etc/
/var/www/
/srv/
/root/
/home/
/tmp/
apt
ou dpkg
, sauvegardez le contenu de /opt/
/mnt/
, /media/
, /data/
.Pour sauvegarder une base de données on fait un export SQL ou on utilise l'outil inclus pour réaliser un "dump" de la base complète de façon à avoir un état consistent. Par exemple, pour MySQL ou MariaDB, nous utilisons
mysqldump
ou bienautomysqlbackup
.
On ne sauvegarde jamais les fichiers bruts d'une base de données car on ne pourrait pas restaurer les données.
Par exemple pour une base MySQL ou MariaDB il est inutile de sauvegarder le dossier/var/lib/mysql/
! On utilise plutôtmysqldump
ouautomysqlbackup
.
Consultez l'article lié aux mots de passe pour plus d'informations.
Documentez pas à pas l'installation de votre serveur dans un mémo, ainsi si vous avez besoin de le réinstaller cela ira plus vite et vous évitera de perdre du temps ou de faire des erreurs.
En général, écrire vos propres documentations vous permettra d'assimiler et de vous approprier votre environnement.
Ne stockez JAMAIS de mot de passe dans vos documentations !
Votre serveur est maintenant fonctionnel. Bravo !
Il ne fait rien pour le moment , à vous d'y installer les logiciels que vous souhaitez servir
Pour aller plus loin dans la sécurisation de votre serveur, suivez le tutoriel Serveur Hardening (à venir).
Contributeur(s): marmotte, Theudric, Ayo, DyanZan