Sécuriser son serveur Debian, les règles de base

 Serveurs dédiés  Commentaires fermés sur Sécuriser son serveur Debian, les règles de base
Août 112012
 

Introduction

Dans l’administration d’un serveur, la sécurité doit être un point essentiel et ne doit en aucun cas être prise à la légère. Votre point d’accès central au serveur est (et restera) votre connexion ssh. Dans le cas d’une distribution linux ‘nue’ vous ne disposerez pas d’autre moyen d’accès à votre serveur lors de la première connexion. Enfin, même une fois complètement fonctionnel, vous serez toujours amenés à vous connecter en ssh à celui-ci. Il est donc important de sécuriser correctement cet accès et il peut également s’avérer pratique d’automatiser la connexion à partir d’une machine suffisamment sécurisée physiquement. Je m’attarderais dans ce post à la configuration de la connexion en ssh depuis Windows via Putty. Putty est un logiciel gratuit aux fonctionnalités multiples. Il permet notamment d’établir aisément des connexions de type telnet, ssh, rlogin/rsh et raw. Vous trouverez le logiciel en téléchargement sur le site de l’éditeur: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Premiers réflexes:

Lors de votre première connexion au serveur, il est important de prendre deux précautions.

  1. Penser à changer le mot de passe du root (qui vous a probablement été transmis en clair, par mail.
  2. Créer un nouvel utilisateur et lui donner les droits suffisants pour l’administration afin d’éviter de travailler en root sur le serveur.

Changer le mot de passe root.

Vous avez de cette façon créé un utilisateur héritant des droits des groupes root et admin. Vous pouvez alors vérifier la connexion avec le nouvel utilisateur (commande ‘su’) puis vous déconnecter de root. Il reste maintenant à sécuriser votre connexion ssh.

Utilisation de putty et connexion à l’aide de clés ssh:

Maintenant que les bases sont posées pour la sécurité de votre serveur, vous pouvez être tenté d’en automatiser la connexion à partir de votre poste de travail principal. Bien évidemment, je ne m’attarderais pas sur le fait qu’il convient, dès que l’on pense à ce genre de solution, de s’assurer de la sécurité du poste de travail en question. (D’autant plus si vous gérez plusieurs serveurs.) Toutefois, il est souvent plus simple de sécuriser une machine locale qu’un serveur distant. (Et si l’IP de votre serveur sera facilement accessible par n’importe qu’elle personne accédant à l’un de vos services, il lui sera bien plus difficile de trouver l’IP à partir de laquelle vous administrez le serveur, ce qui rend l’attaque en ligne plus délicate.)

  1. Génération de la clé SSH: Nous allons tout d’abord utiliser PuttyGen (disponible sur la page de téléchargement de putty) afin de générer la clé ssh. Pour la plupart des cas d’utilisation, les paramètres par défaut suffisent amplement. Ils génèrent une clé SSH-2 (Rsa) qui est la clé la plus sécurisé qu’il est en mesure de créer. La clé est cryptée sur 1024bits qui, à ce jour est considérée comme incassable dans des délais humainement raisonnables. (Il va de soit que la technologie évoluant, il sera toujours nécessaire d’augmenter la complexité de cryptage au fil des ans…) Appuyez sur « generate » et bouger votre souris à l’écran pour générer une clé totalement aléatoire. La clé s’affiche dans le premier cadre. Le champ « key comment » vous permet d’entrer une zone de texte pour identifier votre clé. Le champs « passphrase » vous permet de définir un mot de passe pour protéger l’utilisation de votre clé privée. Si vous n’entrez pas de mot de passe, l’utilisation de la clé ne sera pas restreinte. C’est à dire que n’importe quelle personne ayant accès à votre ordinateur ou ayant réussi à se procurer votre clé pourra l’utiliser pour se connecter librement à votre serveur. L’utilisation d’un mot de passe vous permet ainsi de sécuriser votre connexion mais il vous sera toujours demandé lors de la connexion au serveur. Il vous faut alors sauvegarder votre clé privé et votre clé publique (« save public key » et « save private key ») L’extension de la clé privé doit nécessairement être du type .ppk pour la clé publique, il est communément admis l’utilisation de l’extension .pub
  2. Vous pouvez maintenant configurer Putty afin d’utiliser automatiquement la clé ssh que vous venez de configurer. Après avoir configuré votre Host Name et le port pour votre connexion, qui dépend de la configuration de votre serveur ( je recommande d’utiliser un autre port que le port 22 pour des raisons de sécurité…) Dans la catégorie SSH c’est le menu Auth qui vous intéresse. Dans la zone Private key file for authentification saisissez l’emplacement de votre clé privé (extension .ppk si vous avez suivi les instructions ci-dessus.) Vous pouvez ensuite revenir au menu Session afin de sauvegarder la configuration.
  3. Connectez vous à l’aide de votre mot de passe sur votre serveur. Placez vous dans le répertoire home de l’utilisateur pour lequel vous souhaitez activer l’authentification par clé. Il vous suffit ensuite de créer le répertoire .ssh (s’il n’existe pas déjà) qui contiendra vos diverses clés ssh privées ou publique pour les diverses authentifications que vous mettrez en place. Il vous suffit ensuite de créer le fichier  authorized_keys et d’y coller le contenu de votre clé publique. (Si puttygen est toujours ouvert, vous pouvez copier le contenu de la clé, autrement, il vous suffit d’ouvrir votre clé .pub avec un éditeur de texte et d’en copier le contenu.) Enregistrer le fichier et déconnectez vous du serveur.

Vous pouvez alors tenter de vous reconnecter à votre serveur avec putty et la connexion configurée précédemment. Si vous aviez configuré un mot de passe pour votre clé, celui-ci vous sera demandé à chaque connexion (mais n’est plus transmis au serveur ce qui diminue le risque d’interception du mot de passe) si vous n’aviez configuré aucun mot de passe, vous vous connectez directement au serveur. Si la connexion échoue, votre serveur vous demandera votre mot de passe pour vous connecter manuellement. Vérifier alors la bonne mise en place des clés .ppk et .pub sur Putty et sur votre serveur.

Vous avez ainsi pu sécuriser et automatiser la connexion à votre serveur par ssh. Il existe bien évidemment d’autres méthodes pour disposer d’une connexion sure et ceci n’est pas La méthode fondamentale. Toutefois, elle permet déjà de sécuriser convenablement la connexion et éventuellement de l’automatiser afin d’éviter d’avoir à entrer un mot de passe à chaque connexion.

Juin 212012
 

Serveur dédié

Lorsque l’on choisit d’opter pour un serveur dédié plutôt qu’une offre d’hébergement mutualisée, on a vite fait d’être submergé par toutes les opérations de maintenance dudit serveur. Pourtant, cela est bien plus simple qu’il n’y parait, sous réserve de faire les choses proprement et avec les bons outils.

ISPConfig 3

Pour l’installation et l’utilisation de mon serveur dédié, j’ai choisi l’utilisation d’une distribution Linux sous Debian 6.0 (Squeeze) nue, sur laquelle j’ai choisi d’installer l’interface de gestion open source ISPConfig 3. Ce choix est strictement personnel et si le choix d’une distribution Linux ne choquera personne, certains trouveront à redire à ISPConfig. Il existe bien sûr d’autres interfaces d’administration telles que CPanel, DirectAdmin ou bien d’autres, mais je ne les ai encore jamais testées. (Cela viendra et je pourrais alors juger des avantages et inconvénients de chacun en connaissance de cause.)

ISPConfig est, pour citer Wikipedia :

une interface de gestion de serveur pour Linux. destinée à simplifier la gestion des différents services liés à l’hébergement web tels que la configuration DNS, la gestion des noms de domaine, le courrier électronique ou le transfert de fichiers FTP.

Si cette interface ne vous permettra pas de vous passer du Shell, excepté pour les opérations basiques, vous gagnerez un temps précieux dans la mise en place des services d’hébergement Web. (Mise en place d’un site, d’un serveur mail, gestion des DNS, ftp et bien d’autres…)

Judicieusement associé à la ligne de commande, ISPConfig vous permettra ainsi de mettre en place très rapidement tous les services nécessaires à votre hébergement. Je présenterais dans les prochains posts, la procédure d’installation de ISPConfig sur une machine sous Debian ainsi que les premières opérations pour mettre en place un serveur Web/mail/ftp/…

En attendant, libre à vous de me proposer d’autres interfaces d’administration avec leurs principaux avantages et inconvénients.

Juin 192012
 

Cet article est une ébauche sur l’adressage et le protocole IPv6

Vous le savez probablement, l’adressage en IPv4 arrive à sa fin et s’il restera pendant longtemps actif, il est important de penser à la migration vers le protocole IPv6 dès maintenant. Je détaillerais dans un prochain post, la configuration réseau pour activer l’IPv6 sur un serveur Debian mais avant, je vais essayer de clarifier ce sujet pour ce qui est des grandes lignes.

L’adressage IP:

Pour définir l’adresse d’une machine ou d’un réseau, on utilisait jusqu’à présent un code à 32 bits (IPv4) unique pour chaque machine ou, à défaut, réseau. Toutes les adresses peuvent ainsi être représentées de la façon suivante:

Bien sûr, vous me direz que vous n’avez jamais vu telle adresse. Cette forme d’écriture n’est effectivement pas très pratique pour une utilisation courante. On a donc très simplement décidé de couper cette adresse en 8 octets distincts. Ce qui nous donne la forme suivante:

Enfin, toujours pour plus de simplicité, on prend le réflexe de convertir chacun de ces octets en base 10 afin de retomber sur une série simple de 4 chiffres, plus facile à manipuler. L’adresse précédente devient donc:

192 168 0 1 (ou 192.168.0.1, cette fois ça devrait vous parler…)

Bien sur, comme il est toujours difficile de se rappeler une adresse IP (même sous forme de 4 chiffres) à chaque fois que l’on veut aller sur un site web, on fera par la suite appel aux dns pour associer un nom de domaine à une ou plusieurs adresses IP. Ceci fera l’objet d’un post futur sur la mise en place d’un serveur dns et la définition de zones dns pour un domaine précis.

Les limites de l’IPv4:

J’ai dit plus haut que l’adresse utilisée par le protocole IPv4 était codée sur 32 bits. Il existe donc 2^32 soit 4294967296 adresses distinctes. Si cela était suffisant lors des débuts d’internet, on peut aisément comprendre que cela ne soit plus le cas aujourd’hui. (Il faut prendre en compte le fait que tout appareil connecté à internet doit être en mesure d’obtenir une adresse IP.)

On a pu limiter le nombre d’adresses IP nécessaires grâce à l’utilisation des routeurs et du protocole NAT qui permet de faire correspondre une seule IP publique d’un réseau à une multitude d’adresses IP internes non-uniques, à l’intérieur du réseau. Aujourd’hui, toutefois, avec l’arrivée massive des téléphones et tablettes connectées et la constante croissance de personnes connectées à internet, ce protocole devient obsolète.

Qu’est-ce que l’IPv6:

Ce qu’il est important de comprendre, c’est que l’IPv6 n’est que peu différent de l’IPv4. Sur le principe, il s’agit même exactement de la même chose. (Dans la pratique, on a intégré de nouvelles spécificités au protocole, afin de palier à certaines lacunes présente dans le protocole IPv4.)

Alors qu’est-ce qui change: Au lieu de coder une adresse sur 32 bits, on va la coder sur 128bits.

Bien entendu, on va revoir un peu la façon dont on va simplifier cette adresse; utiliser la même simplification que pour l’IPv4 nous amènerait à des adresses 4 fois plus longue que nos habituels 192.168.0.1 ce qui poserait vite certains problèmes. Le choix effectué quand au codage de l’adresse a été d’utiliser le système hexadécimal.

De cette façon, l’octet 00000000 devient 00 et l’octet 11111111 devient FF

Ainsi, une adresse IPv6 qui est, rappelons le, constituées de 128 bits, soit 16 octets, sera condensé en 32 caractères hexadécimaux. Alors, oui, c’est toujours plus complexe que notre ancienne adresse IPv4, mais en même temps, on a quadruplé le nombre de bit. A noter que l’on prendra l’habitude de regrouper les caractères de l’adresse condensée en 8 groupes de 4 caractères.

Par ailleurs, la codification autorise la contraction d’une adresse en remplaçant toute série de quatre 0 consécutifs par :: (qu’il s’agisse d’une ou plusieurs séries de 0000. L’adresse suivante est équivalente à :

A noter, une fois encore, que dans la pratique, nous n’aurons que rarement à retenir 32 caractères mais plutôt 16 à 20 caractères selon l’utilisation. Un post suivra pour expliquer plus en détail le fonctionnement détaillé de l’IPv6 et le fonctionnement des masques réseau. Intégrer cette partie dans ce post le rendrait vraiment trop long.

Mais alors, qu’apporte l’IPv6?

Comme indiqué précédemment, l’IPv6 est un standard destiné à palier à la pénurie d’adresses en IPv4. En effet, quand l’IPv4 permet quelques 4 milliards de combinaisons différentes (2^32), l’IPv6 en autorise 2^128 soit plus de 3.4×10^38 adresses, cad plus de 667 millions de milliards d’adresses par mm² sur la surface de la terre. De plus, l’IPv6 apporte une meilleure gestion du routage et un adressage bien plus structuré.

Le problème: les protocoles IPv4 et IPv6 ne sont pas compatibles. C’est une des raisons qui explique que le changement ait été tant repoussé. Durant la phase de transition (maintenant inévitable) il faudra donc que les machines soient compatibles et autorisent les 2 protocoles simultanément.

Vous l’aurez compris, plus tôt vous effectuer le passage à l’IPv6, plus vous anticiperez le changement massif qui doit de toute façon s’effectuer. Je vous invite donc à lire mes prochains posts sur la configuration réseau d’un serveur Debian pour l’IPv6 et les autres sujets associés.

Quelques liens utiles:

http://fr.wikipedia.org/wiki/IPv6
http://mirrors.deepspace6.net/Linux+IPv6-HOWTO-fr/