Sécurisation d'un serveur VPS
Vous trouverez dans ce document les éléments essentiels à mettre en place dans le cadre de la sécurisation d’un serveur Ubuntu.
Dernière mise à jour
Vous trouverez dans ce document les éléments essentiels à mettre en place dans le cadre de la sécurisation d’un serveur Ubuntu.
Dernière mise à jour
II - Pour aller plus loin
Lorsque vous recevez votre serveur (VPS/serveur dédié), il est important d’effectuer quelques actions afin de disposer d’un minimum de sécurité. Par conséquent nous avons décidé de rédiger une procédure traitant des points essentiels à mettre en place au sein d’un système.
Cette procédure a été rédigée par des membres volontaires de la communauté Avalanche. Pour toutes suggestions, merci de nous contacter via Telegram : https://t.me/Avalanche_fr
Cette procédure est rédigée pour un système d’exploitation Ubuntu >=18.04.
Vous avez installé votre système d’exploitation sur un serveur virtuel privé. Félicitations !
Celui-ci doit être protégé afin d’éviter que des personnes malveillantes puissent s’introduire au sein de votre serveur et ainsi voler vos données.
La première mesure de sécurité à appliquer est la mise à jour du système.
Cette étape est primordiale car régulièrement des mises à jour sont publiées pour corriger des vulnérabilités découvertes au sein du système d’exploitation. L’installation de ces mises à jour vous permet donc de déployer les protections nécessaires afin de corriger ces vulnérabilités.
Pour ce faire, il vous suffit de vous rendre au sein du terminal de votre serveur :
Si vous accéder à votre serveur à l’aide d’une interface graphique, il vous suffit de cliquer sur la touche du clavier ci-dessous :
Ensuite il va falloir saisir la commande terminal dans la barre de recherche.
Vous aurez ensuite une fenêtre comme celle-ci qui devrait apparaître :
Parfait, le terminal est ouvert. Souvenez-vous de ces manipulations car tout au long de la procédure nous allons utiliser ce terminal.
Bien maintenant que le terminal est ouvert nous allons saisir les commandes suivantes afin de mettre à jour le système :
Une fois les commandes saisies, le système vous demandera de confirmer l’installation des mises à jour (s’il y’en a), vous aurez juste à appuyer sur la touche Y (yes) de votre clavier pour confirmer.
Cette manipulation peut prendre un peu de temps selon le nombre de mises à jour à installer.
Si vous avez des erreurs du type permission denied c’est que vous n’etes pas root, utilisez cette commande puis recommencez
En matière de système d’exploitation, le root est le nom donné à l’utilisateur qui possède toutes les permissions sur le système et bénéficie d’accès privilégiés.
Se connecter directement en root est dangereux, ce compte peut en effet exécuter des opérations irréversibles sur votre serveur. C’est pour cela que nous allons créer un second utilisateur dans lequel vous pourrez installer votre nœud Avalanche, Cet utilisateur sera autorisé à se connecter à votre système en SSH avec le mot de passe indiqué lors de la création du compte.
Modifier le mot de passe associé à l’utilisateur « root »
À l’installation d’une distribution, un mot de passe est créé automatiquement pour l’accès principal (root). Il est très fortement recommandé de le personnaliser en le modifiant. Pour ce faire, une fois connecté, il vous suffit d’entrer la commande suivante :
Votre système vous demandera ensuite d’entrer votre nouveau mot de passe deux fois pour le valider. Attention, pour des raisons de sécurité, le mot de passe ne sera pas affiché lors de l’écriture. Vous ne pourrez donc pas voir les caractères saisis.
Une fois cette opération effectuée, vous devez renseigner le nouveau mot de passe dès votre prochaine connexion au système.
Pour créer un utilisateur:
Remplacez Nom_Utitilisateur_Personnalisé par le nom d’utilisateur que vous souhaitez, confirmez en appuyant sur entrée.
Pour le reste des informations affichées nous allons garder les paramètres par défaut, donc confirmez avec entrée et appuyez sur la touche Y
Vous avez créé votre user (utilisateur) qui dans notre exemple se nomme ‘avalanche-user’, et dans lequel nous installerons le noeud Avalanche, Il faut maintenant donner la capacité à l’utilisateur ‘avalanche-user’ de pouvoir lancer la commande sudo, cette commande permet à un administrateur système de donner à un utilisateur la possibilité d’exécuter une ou plusieurs commandes en tant que super utilisateur, tout en gardant une trace des commandes tapées et en demandant un mot de passe à l’utilisateur avant d’exécuter sa commande. Ainsi, sudo peut empêcher l’exécution libre de commandes critiques pouvant gravement affecter le système.
Lancez la commande ‘sudo’, si vous voyez le résultat affiché ci-dessous c’est que la commande est déjà installée
Dans le cas échéant, lancez la commande suivante :
Pour tester le changement d’utilisateur lancez la commande:
Pour revenir à l’utilisateur qui était précédemment lancé (ici root). Lancez la commande exit
SSH est un protocole de communication permettant de communiquer avec un serveur distant et sans avoir besoin de se connecter à une interface graphique. C’est littéralement un terminal distant.
Tout protocole étant amené à communiquer avec le réseau externe (Internet) utilise un port de communication. Dans le cas de SSH le port par défaut est 22.
Il est fortement conseillé de changer le port de communication par défaut de SSH, pour la simple raison que ce port de communication est par défaut, une personne malveillante peut ainsi tenter de réaliser une attaque de type Brute Force, ce type d’attaque consiste à trouver un mot de passe ou une clé en testant successivement toutes les combinaisons possibles, afin de trouver le couple identifiant, et cela passe par le port de communication 22.
Si nous changeons le port de communication par défaut de SSH, ces tentatives de Brute Force se réaliseront sur un port qui n’est pas actif par SSH.
Pour ce faire, nous allons accéder au fichier de configuration de SSH avec l’utilisateur root, car il le est seul utilisateur capable d’apporter des modifications sur les fichiers système.
Important : Pour réaliser les manipulations qui vont suivre il est impératif de les exécuter à l’aide de l’interface graphique.
Voici la commande à saisir afin d’accéder au fichier de configuration :
Vi est un éditeur de texte natif au système, il va vous permettre de réaliser des modifications sur un fichier système, dans notre cas le fichier sshd_config
Pour se déplacer sur le fichier avec l’éditeur de texte vi, il va falloir utiliser les flèches de votre clavier.
On devra donc naviguer vers l’emplacement du fichier qui nous intéresse afin d’éditer la valeur par défaut. Il faut donc dans notre cas identifier la ligne où se situe la phrase suivante :
« Port 22 »
Une fois que votre curseur est positionné sur cette ligne, il va falloir saisir la touche « i » de votre clavier afin d’entrer dans le mode d’édition de vi.
Vous verrez en bas de votre fichier que le mot « INSERTION » apparait. Cela signifie que vous êtes prêt à saisir une valeur et ou supprimer une valeur.
Nous allons donc supprimer la valeur 22, et la remplacer par une autre valeur. Vous pouvez saisir par exemple le port 2221. Veillez toutefois à ne pas renseigner un numéro de port déjà utilisé sur votre système. Nous allons également apporter une autre modification au niveau de ce fichier afin de ne permettre l’authentification en SSH uniquement aux utilisateurs non root. Pour ce faire il faut appuyer sur la touche « ECHAP » de votre clavier afin de pouvoir de nouveau naviguer sur le fichier à l’aide des flèches de votre clavier, et se rendre au niveau de la phrase :
« PermitRootLogin » il va falloir saisir à cette ligne « no » , ce qui donne ça :
Une fois les modifications apportées, vous devez les enregistrer, pour ce faire, vous allez dans un premier temps appuyer sur la touche « ECHAP » de votre clavier afin d’arrêter la saisie, et par la suite saisir les commandes suivantes :
Cette commande permet d’enregistrer et quitter l’éditeur vi.
Si vous souhaitez uniquement enregistrer votre modification sans quitter le fichier vous pouvez faire :
Une fois le fichier enregistré et quitté, vous retournez à l’emplacement dans lequel vous aurez lancé la commande.
Il est maintenant nécessaire d’appliquer les modifications au niveau du système, il nous faut pour cela redémarrer le service SSH.
Pour ce faire, vous devez saisir la commande suivante :
Une fois cette commande, pour vérifier que le service SSH est bien actif vous devez saisir la commande suivante:
Nous allons monter d’un cran en sécurisation du protocole SSH, en autorisant la connexion via SSH uniquement à l’aide de clé publique/privé, et ce dans le but d’autoriser les authentifications au protocole SSH uniquement à l’aide de la clé privée. Cela permet d’être totalement protégé des attaques de type Brute Force.
Pour MacOS / Linux :
ouvrez un nouveau terminal en local (changer $USER et $VPS_IP):
Parfait vous avez généré vos clés SSH dans le dossier .ssh Vous trouverez dans le dossier .ssh deux clés : La première ‘id_server’ correspond à la clé privée. La seconde clé ‘id_serveur.pub’ correspond à la clé publique.
La clé publique va être renseignée au niveau du fichier sshd_config afin de communiquer au service SSH que vous devez utiliser les éléments dans ce fichier uniquement, pour autoriser une connexion provenant d’une clé privée. La clé privée va être la clé permettant la connexion. La paire de clés fonctionne donc en binôme. La clé privée doit être gardée très précieusement car elle sera la seule manière de vous authentifier à votre serveur en SSH.
Pour Windows :
téléchargez et installez PuttyGen
Générez vos clefs ssh, ouvrez PuttyGen et configurez les paramètres comme ci dessous :
Appuyez sur Générer puis rentrez un mot de passe
Enregistrez votre clef privée sur votre ordinateur, ainsi que votre clef publique.
ouvrez le fichier de clé publique (fichier.pub) que vous avez généré et copiez son contenu.
reconnectez vous à votre vps avec Putty et tapez cette comande :
modifiez les permissions :
coller votre clef publique avec un clique droit
faites Ctrl + X, tapez yes, puis appuyez sur Entrée pour sauvegarder
MacOS, Linux, Windows :
Reconnectez-vous à votre vps si vous ne l’êtes pas
Nous devons maintenant renseigner au fichier sshd_config le chemin vers lequel se trouve la nouvelle clé publique :
On édite les éléments suivants de manière à ce qu’ils correspondent explicitement aux éléments ci-dessous, n’oubliez pas de modifier $USER par votre propre nom d’utilisateur.
On désactive les méthodes d’authentification autres que la paire clé publique/privé :
Pour certains provider pour aurez l'erreur "Deprecated option error" à la ligne GSSAPIAuthentification no, il n'est donc pas nécessaire de remplir cette ligne.
On enregistre le fichier et on redémarre le service SSH avec la commande suivante :
Vous êtes maintenant prêts à vous connecter avec votre clé privée en SSH sur votre serveur. Pour ce faire, si vous utilisez Putty vous devez renseigner l’emplacement de votre clé privé, il suffit d’aller sur l’onglet de gauche “Auth” et ensuite cliquer sur “Browse” sur la fenêtre de droite, il ne vous restera plus qu’a choisir l’endroit où est stocké votre clé privée.
pour se connecter en ssh avec une clef privée et un port différent avec MacOS/Linux :
Si vous avez cette erreur "Server refused our key", veuillez suivre ce tutoriel https://blog.juansorroche.com/cles-ssh-server-refused-our-key
Utilisateurs Linux et Mac
Afin d’avoir un accès ssh avec clé privée, SANS passer par Putty ( pour les utilisateurs Mac ), et ainsi augmenter sa sécurité nous pouvons établir sur notre système linux la désactivation de la connexion sans clé privée et y ajouter Google Auth.
Nous vous recommandons de ne jamais laisser votre clé privée sur votre pc. Créez la spécifiquement pour votre Node et et utilisez une clé USB sécurisée lorsque vous souhaitez vous connecter a votre VPS.
Ouvrez deux fenêtres, une ayant accès au VPS et l’autre en local.
ETAPE 1 : depuis votre VPS , vous devez copier votre fichier ssh dans le fichier authorized_keys qui se trouve dans le dossier .ssh de votre VPS
Entrez les commandes suivantes dans votre VPS :
ETAPE 2 : En local :
Copiez L’intégralité dans le fichier authorized_keys de votre fenêtre ouverte sur le VPS, Sauvegardez et quittez.
ETAPE 3 : En VPS, ouvrir le fichier et mettez les valeurs présente ci dessous
Sauvegardez puis quittez (échap, tapez :wq et enfin touche Entrée)
Pour installer Google Auth
En plus d’avoir un accès uniquement via clé privée, on peut aussi utiliser en plus de cela, la méthode 2FA via Google Auth, ce dernier est un logiciel de génération de mots de passe à usage unique permettant l’authentification à deux facteurs, développé par Google. Le logiciel fournit un nombre de 6 chiffres que l’utilisateur doit donner lors de son authentification, en plus de son pseudo et de son mot de passe.
Installer Google Auth
Pour obtenir votre QR code, lancez la commande depuis l’utilisateur (non root).
Une fois la commande exécutée, appuyez sur la touche ‘Y’ de votre clavier et validez, le QR Code devrait s’afficher comme ci-dessous. Vous devez ensuite télécharger l’application google Authenticator sur mobile depuis l’App Store ou le Play Store. Une fois l’application téléchargée suivez les indications et scannez le QR code. ATTENTION, veuillez stocker la clé secrète, le code diversification et les lignes où il y a marqué ‘emergency’. Nous vous conseillons de stocker ces informations dans un support sécurisé et non connecté a internet , car en cas de perte de votre téléphone, ces informations seront le seul moyen de retrouver vos accès a Google Auth.
Veuillez ensuite appuyer sur le bouton Y (yes) de votre clavier pour toutes les questions suivantes.
Activer l’option 2FA:
Il faudra par la suite modifier le fichier suivant :
Et Ajouter cette ligne tout en haut du fichier :
Nous terminons comme d’habitude par enregistrer les modifications apportées, et en relançant le ssh, afin que tout soit mis a jour au niveau du système, pour cela entrez la commande :
A partir de maintenant pour vous connecter sur votre VPS vous devez non pas lancer la commande ssh avalanche-username@10.10.10.10 -p
mais :
Un pare-feu est un programme qui vous permet d'activer et/ou de désactiver le trafic entrant et sortant de votre serveur. Vous pouvez utiliser ufw comme pare-feu.
Installez ufw :
Vous trouverez ci-dessous les ports sur lesquels le trafic entrant doit être activé :
trafic http sur le port 80
trafic https sur le port 443
le trafic ssh sur le port que vous avez configuré précédemment, donc le 2221
le trafic sur les deux ports utilisés par le nœud de validation pour se connecter au réseau Avalanche, 9650 et 9651. Ce sont les ports standard utilisés par le nœud lorsqu'il est lancé ; ces ports peuvent être modifiés (voir X), si vous vous souvenez de les remplacer dans les commandes suivantes.
Si vous commencez tout juste à utiliser votre pare-feu, les premières règles à définir sont vos politiques par défaut. Ces règles traitent le trafic qui ne correspond pas explicitement à d'autres règles. Par défaut, l'UFW est réglé pour refuser toutes les connexions entrantes et autoriser toutes les connexions sortantes. Cela signifie que toute personne essayant d'atteindre votre serveur ne pourra pas se connecter, tandis que toute application à l'intérieur du serveur pourra atteindre le monde extérieur.
Exécutez les commandes suivantes l'une après l'autre pour appliquer les règles dont vous avez besoin :
Attention penser à changer avec le port SSH que vous avez choisi pour ne pas perdre l’accès à votre vps !
Pour activer le par-feu, utilisez cette commande :
Vous recevrez un avertissement indiquant que la commande peut perturber les connexions SSH existantes. Nous avons déjà mis en place une règle de pare-feu qui autorise les connexions SSH, il devrait donc être possible de continuer. Répondez à l'invite avec y et appuyez sur ENTRÉE.
Vous pouvez vérifiez vos règles du par-feu avec cette commande :
Pour vous connectez en ssh rajouter ceci à la fin de votre commande : -p 2221
Deux possibilités:
Depuis le code source: (le plus rapide et permet l’utilisation d’un service pour gérer son noeud) -- voir plus bas dans la partie 'Bonus'
Pour vérfifier la version sur laquelle se trouve votre node (attendre quelques minutes avant ça) :
Pour vérifier que tout fonctionne (attendre quelques minutes avant ça) :
Si vous avez une réponse : "isBootstrapped":true},"id":1
alors tout fonctionne !
Depuis l’exécutable:
récupérer le lien du dernier exécutable pour Linux ici (lien: https://github.com/ava-labs/avalanchego/releases/)
relancer votre noeud (ex: ./avalanche-<VERSION>/avalanchego)
Bonus :
Création d’un service qui permet de gérer son noeud Avalanche (auto redémarrage si crash, etc)
Pensez à changer $USER avec votre nom d’utilisateur
Pour faire un backup de votre Node il nous faudra copier le dossier ‘staking’ présent dans votre VPS et ensuite le coller en local (clé USB ou autre ), nous vous conseillons de ne surtout pas stocker le dossier dans un support qui serait souvent connecté a internet et/ou facilement piratable.
Lancer la commande :
Si une ligne vide apparait (voir image ci dessous ). il faut configurer la valeur qui permet d'accéder au dossier go, qui contient le dossier staking.
Pour se rendre dans le dossier staking, il faut lancer les commandes suivantes pour faire afficher une information qui nous servira à nous rendre dans le dossier staking
Pour se rendre à la racine de votre session utilisateur et faire afficher dans quel dossier ou vous vous trouvez dans votre VPS (cd veut dire change directory et pwd print working directory :
pwd indique le chemin qui mène à l'endroit où vous vous trouvez actuellement. Par exemple, dans la photo ci dessous "cd" et "pwd" indiquent que nous rendons à la racine et ensuite nous affichons ou ou nous situons, dans la photo nous nous trouvons session utilisateur avalanche-user.
Lancez la commande "ls" pour afficher les dossiers. Vous pouvez voir sur l'image ci dessous qu'il y a un dossier go, dans lequel a été installé le dossier avalanche go.
Pour copier en local avec les restrictions de private key et de port ssh, entrez la commande ci dessous, n’oubliez pas de rédiger la valeur du port ssh précédemment désigné par vous, dans notre cas il s’agit du port 2221. Il faudra également modifier ‘avalanche-user’ par votre nom d’utilisateur, ainsi que le chemin local à partir de ‘localMachine’. Il faut donc que vous connaissiez le chemin d'accès de votre bureau.
exemple : scp -r -P 2221 -i /Users/UserLocal/.ssh/id_rsa avalanche-user@10.10.10.10:/home/avalanche-user/.avalanchego/staking/ Users/myComputer/Desktop
Une fois la commande entrée, si vous avez configuré une connexion via une clé privée, le mot de passe associé sera demandé et si y a la double authentification Google qui est activé, il faudra la renseigner aussi.
Dans le cas ou vous n'avez pas configuré un accès via clé privée il faut supprimer la partie -i <Chemins_private_key>
Une fois cela réalisé, Il suffit maintenant d'aller dans votre bureau et un dossier nommé staking qui sera votre dossier de sauvegarde en cas de probleme àvec votre VPS.
Lancer ensuite la commande htop
Il est vivement conseillé d’effacer l’historique des commandes de votre terminal, cela effacera toutes les lignes rédigées sur ce dernier, pour cela il suffit d’exécuter ces deux commandes :