Contenu | Recherche | Plan du site | Accessibilité | Contact

Documentation

Debian et la sécurité

Introduction à la sécurité

Tous les ordinateurs connecté à internet subissent en moyenne un scan toutes les 1 à 5 min par d'autres machines infectées par des vers ou virus, très très souvent destinés à Microsoft et non aux systèmes GNU/Linux. Ces ordinateurs cherchent a savoir si certains ports sont vulnérables, par exemple: le port 445 pour Microsoft-ds, 139 pour samba, ce sont les trous de sécurité standards de Windows. Avec un serveur connecté 24h sur 24h il y a environ 700 essais de login avec ssh par semaine, sans compter les refus de relay smtp (mail)! Il faut donc bien réfléchir aux ports et services que l'on ouvre sur une machine serveur.

Garder un système Debian sécurisé

Pour garder un système Debian sécurisé, pensez à le mettre à jour régulièrement avec aptitude, apt-get ou Synaptic. Si vous avez aimé apt-get, vous allez encore plus aimer aptitude. Vous puvez mettre votre système à jour en une ligne de commande avec aptitude:

 # aptitude update && aptitude upgrade

Chkrootkit pour detecter un RootKit

chkrootkit est un logiciel libre sous licence GNU GPL permettant de détecter si un système UNIX n'a pas été compromis par un rootkit. Il permet de détecter les traces d'une attaque et de rechercher la présence d'un rootkit sur un système Unix/Linux en vérifiant, si des fichiers exécutables du système ont été modifiés, si la carte réseau est en mode « promiscuous », et si un ou des vers LKM (Linux Kernel Module) sont présents. Pour une installation sous Debian avec aptitude:

 # aptitude install chkrootkit

Eliminer le rootkit RH-Sharpe

Vous pouvez avoir été avertit d'un root kit par chkrootkit ou un autre logiciel de surveillance tel que Tiger. Vous pouvez aussi trouver le RootKit RH-Sharpe avec un pipe et la commande grep:

# chkrootkit | grep Sharpe

Ce qui peut donner, et s'avérer alarmant:

Searching for RH-Sharpe's default files... Possible RH-Sharpe's rootkit installed

Pour l'éliminer, il faut désinstallé slice, les dépendances vous désinstallera aussi wml:

 # apt-get remove --purge slice

Ensuite on peut tester si RH-Sharpe est toujours présent:

 # chkrootkit | grep Sharpe

Ce qui devrait vous donner:

Searching for RH-Sharpe's default files... nothing found

Et voilà plus de RootKit RH-Sharpe. Vous pouvez aussi lancer chkrootkit sans argument pour vérifier l'ensemble du système.

Le démon et les outils OpenSSH

OpenSSH est une version libre de la suite d'outils du protocole SSH de connexion réseau utilisée par un nombre croissant de personnes sur l'Internet. De nombreux utilisateurs de telnet, rlogin, ftp et autres programmes identiques ne réalisent pas que leur mot de passe est transmis non chiffré à travers l'Internet. OpenSSH chiffre tout le trafic (mots de passe inclus) de façon à déjouer les écoutes réseau, les prises de contrôle de connexion, et autres attaques. De plus, OpenSSH fournit toute une palette de possibilités de création de tunnels TCP et de méthodes d'authentification.

La suite logicielle OpenSSH inclus les programmes ssh qui remplace telnet et rlogin, scp qui remplace rcp, et sftp qui remplace ftp. De plus sshd est inclus, constituant la partie serveur du package, ainsi que d'autres utilitaires tels que ssh-add, ssh-agent, ssh-keygen, ssh-keysign, ssh-keyscan, et sftp-server. OpenSSH supporte les protocoles SSH 1.3, 1.5 et 2.0. De plus un protocole comme sftp peut s'utiliser graphiquement via le navigateur de fichiers Nautilus, Gftp ou encore Konqueror.

Si vous utilisez toujours telnet au lieu de ssh, vous devriez remédier à cela. SSH devrait être utilisé pour toutes les connexions distantes à la place de telnet. Il faut éviter les mots de passe en clair, et utiliser uniquement les protocoles qui utilisent la cryptographie. Si vous n'utilisé plus que SSH vous pouvez alors désinstallez telnet.

Pour devenir root, il faut éviter de se connecter au système en utilisant SSH en tant que root et préférer l'utilisation de méthodes alternatives tel que su ou sudo. Le fichier de configuration /etc/ssh/sshd_config peut-être modifié pour accroître la sécurité du système.

Site web: www.openssh.org

Install sous Debian

OpenSSH est divisé en deux paquets, le client et le serveur. Si vous n'avez besoin que des commandes SSH, le paquet openssh-client suffit pour contrôler une machine distante. Le serveur est à installer sur une machine que l'on veut contrôler de manière sécurisée. Les paquets peuvent s'installer graphiquement via Synaptic ou via la ligne de commande et Aptitude:

 # aptitude install openssh-client
 Pour le serveur:
 # aptitude install openssh-server

Sécuriser le démon OpenSSH

Vous pouvez éditer le fichier de configuration: /etc/ssh/sshd_configdans un terminal via SSH et l'éditeur de texte Nano ou Vim. Pour faire écouter ssh que sur une interface donnée:

ListenAddress 192.168.0.1

Ne pas autoriser de connexion en tant que root. Si quelqu'un veut devenir root via ssh, deux logins sont maintenant nécessaires et le mot de passe root ne peut être attaqué par la force brute via SSH:

PermitRootLogin no

Change le port d'écoute, ainsi l'intrus ne peut être complètement sûr de l'exécution d'un démon sshd (soyez prévenus, c'est de la sécurité par l'obscurité):

Port 666 ou ListenAddress 192.168.0.1:666

Les mots de passe vides sont un affront au système de sécurité:

PermitEmptyPasswords no

Autorise seulement certains utilisateurs à avoir accès via ssh à cette machine. user@host peut également être utilisé pour n'autoriser l'accès qu'à un utilisateur donné depuis un hôte donné:

AllowUsers libordux debianitas

Autorise seulement certains membres de groupes à avoir accès via ssh à cette machine. AllowGroups et AllowUsers ont des directives équivalentes pour interdire l'accès à la machine. Sans surprise elles s'appellent « DenyUsers » et « DenyGroups »:

AllowGroups wheel admin

Il vous appartient complètement de décider ce que vous voulez faire. Il est plus sûr d'autoriser l'accès à la machine uniquement aux utilisateurs avec des clés ssh placées dans le fichier ~/.ssh/authorized_keys. Si c'est ce que vous voulez, positionnez cette option à "no":

PasswordAuthentication no

Désactiver toute forme d'autorisation dont vous n'avez pas réellement besoin si vous n'utilisez pas, par exemple, RhostsRSAAuthentication, HostbasedAuthentication, KerberosAuthentication ou RhostsAuthentication, vous devriez les désactiver même s'ils le sont déjà par défaut. Désactiver le protocole version 1, car il a des défauts de conception qui facilite le crack de mots de passe. Pour plus d'informations, lisez un article concernant les problèmes du protocole ssh ou le bulletin d'alerte Xforce:

Protocole 2

Ajouter une bannière (elle sera récupérée du fichier) pour les utilisateurs se connectant au serveur ssh. Dans certains pays, envoyer un avertissement avant l'accès à un système donné avertissant des accès non autorisés ou du suivi des utilisateurs devrait être ajouté pour avoir une protection légale. Sur Debian le fichier par défaut est: /etc/issue.net que vous pouvez facilement modifer avec votre éditeur de texte préféré:

banner /etc/fichier

Vous pouvez également restreindre l'accès au serveur ssh en utilisant pam_listfile ou pam_wheel dans le fichier de contrôle PAM. Par exemple, vous pourriez bloquer tous les utilisateurs qui ne sont pas dans /etc/loginusers en ajoutant cette ligne à /etc/pam.d/ssh:

auth    required    pam_listfile.so sense=allow onerr=fail item=user file=/etc/loginusers

Une fois que vous avez modifier le fichier de configuration du serveur SSH à votre convenance, il faut relancer (reload) le démon pour que les modifications soient prisent en compte:

 #  /etc/init.d/ssh reload

Manuel de sécurisation (Securing Debian howto)

Le manuel de sécuristation de Debian est très complet, bravo aux auteurs, il vaut la peine d'être lu au moins une fois, c'est la source principale nos informations. Ce document décrit la sécurité dans le projet Debian ainsi que dans le système d'exploitation Debian. Il commence par la sécurisation et le renforcement de l'installation standard d'une distribution Debian GNU/Linux. Il couvre quelques tâches courantes comme la sécurisation d'un réseau utilisant Debian et il donne également des informations complémentaires sur les outils de sécurisation disponibles ainsi que sur le travail accompli au sein du projet Debian par l'équipe en charge de la sécurité et par l'équipe d'audit.