Configuration et sécurisation d’un serveur Linux Debian: Partie 1

Update: Version Debian 8 dispo.

Aujourd’hui je reçois enfin mon serveur dédié OVH ! Il s’agit d’un serveur de la gamme Kimsufi 2013 d’OVH.

Un serveur personnel c’est bien. On peut y installer toutes sortes d’applications pour héberger ses données, ses jeux, ou encore montrer ses photos perso aux copains sans pour autant les offrir a la NSA a Facebook. Enfin, avant tout cela il faut bien penser qu’un serveur avec les fesses à l’air sur internet ça se fait très vite violer par toutes sortes de scripts chinois qui se baladent. Il est donc important de mettre en place une certaine sécurisation. Cet article a pour but de proposer une configuration et une sécurisation d’un serveur dédié Linux Debian Wheezy.

Partie 1: Configuration

Changement du mot de passe ROOT

Que cela soit OVH ou un autre, votre hébergeur vous a fournit un mot de passe de connexion ssh par défaut. Un fois connecté grâce à ce dernier, la première étape va consister à le changer.

Création d’un compte pour la connexion

Il faut un compte utilisateur pour se loguer sur la machine de façon a interdire par la suite la connexion direct en root.

Le répertoire personnel de l’utilisateur « test » est automatiquement créé (/home/test).

Verrouillage SSH par clé uniquement

On se log sous l’utilisateur créé précédemment.

On se place dans son home

Génération de la paire de paire de clé RSA

Vous n’êtes pas obligé de saisir une passphrase quand on vous le propose. La commande a crée 2 fichiers dans un dossier caché nommé  .ssh .

On copie la clé publique dans le fichier des clés autorisées par le serveur.

La clé privée nommée id_rsa est a récupérer sur votre poste client.

Si vous travaillez depuis un poste client Linux je vous invite à utiliser l’outil Gigolo pour transférer des fichiers facilement. Sinon sous Windows il y a WinSCP.

Sous Linux la clé privé doit être placée dans le répertoire de votre utilisateur dans /home/moua/.ssh/id_rsa

La connexion à vôtre serveur sous l’utilisateur que vous venez de créer doit à présent se faire sans aucun mot de passe. Pour se connecter depuis un Linux il suffit de taper la commande

Sous Windows vous devez spécifier l’utilisation de cette clé dans Putty. La clé id_rsa doit être au préalable converti au format ppk. Pour cela vous devez utiliser l’outil puttygen disponible sur le site officiel. Ce dernier vous permet également de générer une paire de clé privée/publique.
putty_private_key

Cette étape est très importante! N’effectuez pas les manipulations suivantes sans être sur que la connexion sans mot de passe est bien fonctionnelle !

On va maintenant éditer le fichier de configuration du serveur ssh et apporter les modifications qui suivent

On redémarre le service SSH pour prendre en compte les modifications

Et voila ! Seul l’utilisateur que vous avez créé est autorisé à ce connecter à votre serveur et uniquement à l’aide de sa clé ssh privé. Une fois logué vous pouvez ensuite passer root sur vôtre serveur avec la commande:

Changer le hostname

Le hostname est le nom de la machine hôte. son identité diffusé sur le réseau, le nom d’un périph connecté au réseau en gros.Il se compose de deux parties:

  • Le petit nom du serveur
  • Le nom FQDN (Le nom de domaine)

Pour modifier le petit nom du serveur on édite le fichier /etc/hostname. Dans ce fichier on va juste donner un nom sans domaine.

Pour le nom de domaine on modifie le fichier /etc/hosts. Ce dernier permet de bypasser (forcer la résolution DNS entre l’ ip et nom de machine.  On oblige cette « ip » a avoir ce « nom » de correspondance.)

Pour résumer, les fichiers hostname et hosts dialoguent ensemble.

Voila à quoi ressemble mon fichier hosts

Pour vérifier que le hostname est bien changé on tape

Pour le nom de domaine

Heure du serveur

Avoir un serveur à la bonne heure est très important pour les journaux d’événements (que on appel « log » en barbus). Pour cela on utilise le protocole NTP (Network Time Protocol). C’est un protocole qui permet à un ordinateur de synchroniser son horloge sur un autre ordinateur de précision plus élevée via internet.

Installation du paquet qui va bien

Lancement du deamon

On édite le fichier /etc/ntp et on modifie les ligne « server » pour se synchroniser sur les serveurs français

On redémarre le service pour prendre en compte les changements

On vérifie que la synchronisation se fait correctement

Envoi de mail

Ce point est incontournable dans l’administration d’un serveur. Les outils de sécurisations ou de monitoring que nous  mettrons en place ont besoin d’émettre des alertes ou des rapports.

Ici on va configurer le serveur pour qu’il utilise le SMTP de google car les SMTP d’OVH sont souvent bloqués. Les mails sont considérés comme SPAM.

Linux propose un multitude d’outils pour envoyer ou recevoir des mail. Les puristes barbus doivent déjà être en train de taper apt-get install postfix. Seulement voila, c’est lourd, compliqué à mettre en place et ça offre une surface d’attaque pour nos amis les scripts chinois. On va donc installer un simple petit agent de transfert de mail appelé Nullmailer.

Pour commencer, Debian est livré avec un client mail nommé Exim4. On le supprime.

Installation de Nullmailer

Pendant l’installation il demande un nom de courrier système. Vous pouvez saisir ce que vous voulez comme nom.

 Ensuite il demande les informations du serveur smtp. Pour un compte Google il faut rentrer la ligne suivante

Il est possible de le changer plus tard dans le fichier /etc/nullmailer/remotes.

On redemarre le service Nullmailer pour prendre en compte les changements

Un petit test d’envoi de mail

Mise à jour automatique du système

Dans cette partie on va mettre en place un système de mise à jour automatique.

Il n’est pas conseillé de mettre à jour automatiquement tous les paquets et logiciels installés. Cela parce que dans certains cas, des changement profond on étaient appliqués et la mise à jour demande une intervention de l’administrateur. On va donc uniquement appliquer les mises à jour de sécurité. Ces mises à jour ont pour seul but de combler les vulnérabilités du système au fur et à mesure de la découverte de failles.

Pour commencer, on applique immédiatement une mise à jour du système.

Puis on nettoie les paquets inutiles

L’automatisation sera pris en charge par l’outil cron-apt. Cron-apt permet de vérifier à intervalle régulier, via le crontab , si des mises à jours sont disponibles et va les installer.

Installation

Dans le fichier /etc/apt/sources.list doit se trouver la ligne suivante correspondant au dépôt de sécurité de Debian Wheezy. Il faut supprimer les “#” de mise en commentaire.

Nous allons créer un fichier qui ne contiendra que les repository de sécurité Debian. C’est ce fichier qui sera ensuite utilisé par cron-apt.

On édite le fichier de configuration de cron-apt sous /etc/cron-apt/config pour y ajouter les lignes suivantes(celui-ci est vierge d’origine). J’utilise pour ma part apt-get mais vous pouvez utiliser aptitude si vous préférez.

Par défaut, cron-apt télécharge les mise à jour mais ne les installe pas. Pour corriger cela on se rend sous /etc/cron-apt/action.d/3-download et on supprime le paramètre -d de la ligne.

Pour tester directement on tape

Il n’est pas impossible que la console se fige un moment si le serveur ssh est mis à jour. Attendez alors un moment que le script termine son taf et elle devrait se débloquer toute seule.

Une fois le script a terminé de bosser vous recevez un mail avec les  changements effectués sur la machine.

Le programme utilise une tache cron pour se lancer automatiquement. Depuis la nouvelle version il faut spécifier le créneau horaire dans le fichier /etc/cron.d/cron-apt. Par défaut il se lance chaque jour à 4 heure du matin comme ceci

En ce qui me concerne j’ai remplacé la ligne afin d’effectuer mes mises à jours tous les lundi à 1 heure du matin.

C’est terminé pour cette première partie de configuration. Dans la prochaine partie je parlerais de sécurisation du serveur.

14 thoughts on “Configuration et sécurisation d’un serveur Linux Debian: Partie 1”

  1. Rathorian dit :

    Bonjour,

    Tutoriel très sympa à lire…

    Seulement j’ai un petit problème, j’ai suivi les étapes à la lettre pour s’authentifier avec une clé RSA et ça ne fonctionne pas.
    L’erreur sur Putty : Unable to use key file « C:\Users\XXXXXXX\Documents\RSA\XXXXXX.ppk » (OpenSSH SSH-2 private key)

    J’ai essayer 2 fois, toujours la même erreur !
    Auriez-vous une idée s’il vous plait ?

    1. Sispheor dit :

      Bonjour, il semble en effet qu’il manque une étape dans mon tutoriel. Sur Windows il faut utiliser le générateur de Putty pour convertir la clé en .ppk.

      1. Rathorian dit :

        Effectivement, j’ai téléchargé PuttyGen sur le site officiel, j’ai chargé ma clé privée pour la convertir en .ppk, maintenant ça fonctionne très bien.

        Une dernière chose, dans « /etc/ssh/sshd_config » cette ligne est commenté :
        #AuthorizedKeysFile %h/.ssh/authorized_keys

        Il faut la décommenté…

        Merci

  2. vince dit :

    bonjour,
    merci pour ce tuto très utile.
    il y a cependant un gros souci, concernant cron-apt : votre solution télécharge les mises à jour de sécurité mais ne les installe pas !
    Il faut modifier le fichier /etc/cron-apt/action.d/3-download et enlever le « -d » qui est download only mode :
    upgrade -y -o APT::Get::Show-Upgraded=true
    hope it helps

    1. Sispheor dit :

      C’est exacte. Un oubli de ma part je vais corriger l’article merci!

  3. Psykko dit :

    Bonjour.

    Suite à l’installation de nullmailer, Linux m’a demandé d’installer mailutils.

    J’ai bel et bien réglé mon serveur smtp.gmail.com, mon auth-login ainsi que le port. Mais, mailutils installé ou pas, je ne reçois aucun mail.

    J’ai essayé avec les 2ports proposés pour le serveur Gmail : 465 ou 25. L’adresse que j’ai mis dans le fichier remotes est la même que celle que j’utilise en adresse cliente.

    Je voudrais bien une petite aide car l’utilisation des alertes mail est un des points auquel j’ai bien suivi votre tuto.

    Caractéristiques du serveur :
    Machine hébergée chez ONLINE.net
    ubuntu 12.04.2_LTS (64BITS)

    Cordialement.
    Psykko.

    1. Sispheor dit :

      Les mails arrivent peut être en spam? Vous pouvez, si vous avez un nom de domaine, faire votre propre serveur smtp à l’aide de postfix. Il existe de nombreux tuto sur internet à ce sujet.

      1. Psykko dit :

        Rien n’arrive en spam. Je testerais dans ce cas avec postfix !

        Je viens d’essayer ces paramètre dans le remotes :
        [YOUR-SMPT-SERVER.COM] smtp –auth-login –user=[USER] –pass=[PASSWORD]
        Mais même sans citer de port particulier ni de protocole, cela ne fonctionne pas.

  4. Francois dit :

    Bonjour.
    Merci pour ce tuto bien utile.

    Concernant Nullmailer, je conseille de voir plus de détails sur ce site (en anglais): http://raspberry.znix.com/2013/03/nullmailer-on-raspberry-pi.html

    A savoir que c’est dans le /etc/nullmailer/adminaddr que l’on configure la redirection des mails adressés à root.

  5. Alf dit :

    Nullmailer et Gmail ne cohabitent pas bien : gmail détecte une activité suspecte et bloque l’adresse :/

    1. Sispheor dit :

      C’est exact. je suis passé sur postfix du coup. Il faut bien penser à déclarer le reverse DNS pour pas être placé en spam par contre.

      1. Paul dit :

        Peut être une rapide maj du tuto du coup ?
        Nan parce que la doc sur nullmailer est pas glop, et pour un tuto accés débutant, il n’est expliqué nul part, si le moua@gmail.com correspond à l’adresse émettrice ou le destinataire par exemple.
        Merci d’avance !

        1. N.i.c.O dit :

          Oui, un article est en cours d’écriture pour le passage sur Debian 8.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *