Product SiteDocumentation Site

Chapitre 12. Foire Aux Questions (FAQ)

12.1. La sécurité dans le système d'exploitation Debian
12.1.1. Debian est-elle plus sûre que X ?
12.1.2. Le système est vulnérable ! (En êtes-vous certain ?)
12.2. Logiciels spécifiques
12.2.1. ProFTPD est vulnérable à une attaque de déni de service
12.2.2. Après l'installation de portsentry, de nombreux ports sont ouverts.
12.3. Questions concernant l'équipe de sécurité Debian
Ce chapitre introduit quelques questions qui reviennent souvent sur la liste de diffusion de sécurité. Vous devriez les consulter avant de poster sur la liste ou certains pourraient vous dire d'aller RTFM.

12.1. La sécurité dans le système d'exploitation Debian

12.1.1. Debian est-elle plus sûre que X ?

Un système est aussi sûr que l'administrateur est capable de le rendre. Debian essaie d'installer les services d'une façon sûre par défaut, mais elle n'est peut-être pas aussi paranoïaque que d'autres systèmes d'exploitation qui installent tous les services désactivés par défaut. Toutefois, l'administrateur système a besoin d'adapter la sécurité du système à la politique de sécurité locale.
Pour une liste des données concernant les failles de sécurité pour plusieurs systèmes d'exploitation, consultez les http://www.cert.org/stats/cert_stats.html ou générez des statistiques en utilisant la http://nvd.nist.gov/statistics.cfm (anciennement ICAT). Est-ce que ces données sont utiles ? Plusieurs facteurs sont à considérer pour l'interprétation des données, mais remarquez qu'elles ne permettent pas de comparer les failles d'un système d'exploitation par rapport à un autre.[81] Rappelez-vous également que certaines failles signalées concernant Debian ne s'appliquent qu'à la branche unstable (c'est-à-dire non publiée).

12.1.1.1. Debian est-elle mieux sécurisée que d'autres distributions Linux (comme Red Hat, SuSE, etc.) ?

Peu de grandes différences existent entre les distributions Linux, à l'exception de l'installation de base et du système de gestion des paquets. La plupart des distributions partagent une grande partie des mêmes applications, les différences étant seulement dans les versions de ces applications livrées avec la version stable de la distribution. Par exemple, le noyau, BIND, Apache, OpenSSH, Xorg, gcc, zlib, etc. sont tous communs entre les distributions Linux.
Par exemple, Red Hat a joué de malchance et a livré une version stable quand truc était en version 1.2.3, où une faille sécurité a été découverte plus tard. Debian, d'un autre côté, a été plus chanceuse de livrer truc 1.2.4, qui contient la correction du bogue. Cela a été le cas avec le gros problème de http://www.cert.org/advisories/CA-2000-17.html il y quelques années.
Beaucoup de collaboration existe entre les équipes de sécurité respectives des distributions Linux majeures. Les mises à jour de sécurité connues sont rarement, voire jamais, laissées non corrigées par un distributeur. La connaissance d'une faille de sécurité n'est jamais cachée à un autre distributeur, tout comme les corrections sont habituellement coordonnées en amont ou par le http://www.cert.org. Par conséquent, les mises à jour de sécurité nécessaires sont habituellement diffusés en même temps et la sécurité relative des différentes distributions est très semblable.
L'un des principaux avantages de Debian concernant la sécurité est la facilité des mises à jour du système par l'utilisation d'apt. Voici quelques autres aspects de la sécurité dans Debian à considérer.

12.1.1.2. De nombreux bogues Debian sont dans Bugtraq, cela la rend-elle plus vulnérable ?

Debian distribue un grand nombre, en augmentation constante, de paquets logiciels, probablement plus que la plupart des systèmes d'exploitation propriétaires. Par conséquent le risque est plus grand de trouver des logiciels victimes de failles de sécurité exploitables que sur les systèmes contenant moins de logiciels.
De plus en plus de personnes examinent le code source à la recherche de failles. De nombreux annonces sont liées à des audits de code source effectués sur des composants logiciels majeurs livrés dans Debian. Lorsqu'un de ces audits de code source fait ressortir une faille majeur, elle est réparée et une alerte est envoyée aux listes comme celle de BugTraq.
Les bogues présents dans la distribution Debian affectent également d'autres distributeurs et distributions. Vérifiez la partie « Debian specific: yes/no » en haut de chaque annonce (DSA).

12.1.1.3. Debian possède-t-elle une certification relative à la sécurité ?

Réponse courte : non.
Réponse longue : la certification coûte de l'argent (particulièrement, une certification de sécurité sérieuse et personne n'a attribué de ressources pour faire certifier la distribution Debian GNU/Linux à n'importe quel niveau que ce soit, par exemple, la Common Criteria. Si vous êtes intéressé par l'obtention d'une distribution GNU/Linux certifiée, essayez de fournir les ressources pour que cela devienne possible.
Au moins deux distributions Linux sont actuellement certifiées à différents niveaux http://fr.wikipedia.org/wiki/Evaluation_Assurance_Level. Remarquez que certains des tests CC sont en cours d'intégration dans le http://ltp.sourceforge.net disponible dans le paquet Debian ltp.

12.1.1.4. Existe-t-il un programme de durcissement pour Debian ?

Oui. http://bastille-linux.sourceforge.net/, orienté à la base vers certaines distributions Linux (Red Hat et Mandrake), cela fonctionne actuellement aussi sur Debian. Des étapes sont prévues pour intégrer les changements de la version amont dans le paquet Debian nommé bastille.
Certains pensent, cependant, qu'un outil de durcissement n'élimine pas la nécessité d'une bonne administration.

12.1.1.5. Je veux fournir le service XYZ, lequel dois-je choisir ?

L'une des grandes forces de Debian est la grande variété de choix disponibles entre les paquets fournissant la même fonctionnalité (serveurs DNS, serveurs de messagerie, serveurs FTP, serveurs web, etc.). Cela peut être déroutant pour l'administrateur débutant lorsqu'il essaie de déterminer l'outil adapté à son besoin. Le meilleur choix dans une situation donnée dépend d'un équilibre entre les fonctionnalités et la sécurité nécessaires. Voici quelques questions à se poser pour choisir parmi des paquets semblables.
  • Est-ce que le logiciel est maintenu en amont ? De quand date la dernière version ?
  • Le paquet est-il mûr ? Le numéro de version n'indiquera vraiment rien concernant sa maturité. Essayez de tracer l'histoire du logiciel.
  • Est-ce que le logiciel est truffé de bogues ? Y a-t-il eu des alertes de sécurité liées au logiciel ?
  • Est-ce que le logiciel fournit toutes les fonctionnalités nécessaires ? Fournit-il plus que le nécessaire ?

12.1.1.6. Comment mieux sécuriser le service XYZ dans Debian ?

Les informations disponibles dans ce document vous permettront de rendre certains services (FTP, BIND) plus sécurisés dans Debian GNU/Linux. Toutefois, pour les services non abordés ici, vous pouvez vérifier la documentation des programmes ou les informations générales sur Linux. La plupart des directives concernant la sécurité des systèmes UNIX peut également s'appliquer à Debian. Ainsi, la sécurisation d'un service X dans Debian revient, la plupart du temps, à sécuriser un service dans n'importe quelle autre distribution Linux (ou UNIX, peu importe).

12.1.1.7. Comment supprimer toutes les informations de version pour les services ?

Si vous ne voulez pas que des utilisateurs se connectent au démon POP3, par exemple, et récupèrent des renseignements sur le système, vous pourriez supprimer (ou modifier) les versions affichées aux utilisateurs. [83] Faire cela dépend du logiciel que vous utilisez pour un service donné. Par exemple, dans postfix, vous pouvez placer la bannière SMTP suivante ans /etc/postfix/main.cf :
 
  smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
D'autres logiciels ne sont pas aussi faciles à modifier. SSH devra être recompilé pour pouvoir modifier la version affichée. Prenez garde à ne pas supprimer la première partie (SSH-2.0) de la bannière, car les clients l'utilisent pour identifier les protocoles pris en charge par le paquet.

12.1.1.8. Les paquets Debian sont-ils tous sûrs ?

L'équipe de sécurité Debian ne peut pas analyser tous les paquets inclus dans Debian pour tester des potentielles failles de sécurité, simplement à cause du manque de ressources pour contrôler le code source de l'ensemble du projet. Cependant Debian bénéficie des audits de code source réalisés par des développeurs amont.
De fait, un développeur Debian pourrait distribuer un cheval de Troie dans un paquet sans moyen de le vérifier. Même s'il était introduit dans une branche Debian, il serait impossible de couvrir toutes les situations imaginables dans lesquelles le cheval de Troie pourrait agir. C'est pourquoi Debian a une clause de licence de « non garantie ».
Cependant, les utilisateurs Debian peuvent être assurés que le code stable rassemble une large audience et que la plupart des problèmes seront découverts pendant l'utilisation. Installer des logiciels non testés dans un système critique n'est pas recommandé (si vous ne pouvez pas fournir l'audit de code nécessaire). Dans tous les cas, si des failles de sécurité étaient intégrées à la distribution, le processus permettant d'inclure les paquets (utilisation de signature numérique) assure que le problème pourra être remonté jusqu'au développeur, et que le projet Debian ne prend pas cela à la légère.

12.1.1.9. Pourquoi certains fichiers journaux ou fichiers de configuration sont-ils lisibles par tous les utilisateurs, est-ce que c'est sûr ?

Vous pouvez bien sûr modifier les permissions Debian par défaut du système. La règle actuelle concernant les fichiers journaux et les fichiers de configuration est qu'ils doivent être lisibles par tous les utilisateurs sauf s'ils fournissent des informations sensibles.
Soyez attentifs si vous faites des modifications car :
  • des processus pourraient ne plus pouvoir écrire dans des fichiers journaux si leurs permissions ont été restreintes ;
  • certains applications peuvent ne pas fonctionner si le fichier de configuration dont elles dépendent est illisible. Par exemple, si vous supprimez la permission en lecture pour tous les utilisateurs de /etc/samba/smb.conf, le programme smbclient ne pourra pas fonctionner pour un utilisateur normal.
FIXME : Vérifier si c'est écrit dans la Charte. Certains paquets (par exemple, les démons FTP) semblent nécessiter différentes permissions.

12.1.1.10. Pourquoi est-ce que /root/ (ou UserX) a 755 comme permissions ?

De fait, la même question s'applique pour tout autre utilisateur. Comme l'installation de Debian ne place aucun fichier dans ce répertoire, il n'y a aucune information sensible à y protéger. Si vous pensez que ces permissions sont trop laxistes pour le système, vous pouvez les renforcer en 750. Pour les utilisateurs, veuillez lire Section 4.11.19.1, « Limiter l'accès aux informations d'autres utilisateurs ».
Ce http://lists.debian.org/debian-devel/2000/debian-devel-200011/msg00783.html de la liste de diffusion de sécurité Debian contient plus d'informations sur ce problème.

12.1.1.11. Après l'installation de grsec ou d'un pare-feu, j'ai commencé à recevoir beaucoup de messages de console ! Comment les supprimer ?

Si vous recevez des messages en console et que /etc/syslog.conf est configuré pour les rediriger dans des fichiers ou dans un TTY spécial, vous pourriez voir des messages envoyés directement en console.
Le niveau de journalisation en console par défaut est 7 quel que soit le noyau, donc tous les messages avec une priorité inférieure apparaîtront dans la console. En général, les pare-feu (la règle LOG) et d'autres outils de sécurité journalisent à des priorités inférieures donc les messages sont envoyés directement en console.
Pour réduire les messages envoyés en console, vous pouvez utiliser dmesg (l'option -n, consultez dmseg(8)>), qui examine et contrôle le tampon anneau du noyau. Pour corriger cela après le prochain redémarrage, modifiez /etc/init.d/klogd en substituant :
  KLOGD=""
par :
  KLOGD="-c 4"
Utilisez un nombre plus petit pour -c si vous les voyez toujours. Une description des différents niveaux de journalisation est disponible dans /usr/include/sys/syslog.h :
  #define LOG_EMERG   0  /* le système est inutilisable */
  #define LOG_ALERT   1  /* une action doit être entreprise immédiatement */
  #define LOG_CRIT    2  /* conditions critiques */
  #define LOG_ERR     3  /* conditions d'erreur */
  #define LOG_WARNING 4  /* conditions d'avertissement */
  #define LOG_NOTICE  5  /* normal, mais conditions significatives */
  #define LOG_INFO    6  /* informatif */
  #define LOG_DEBUG   7  /* messages de débogage */

12.1.1.12. Les utilisateurs et les groupes du système d'exploitation

12.1.1.12.1. Tous les utilisateurs systèmes sont-ils nécessaires ?
Oui et non. Debian est livrée avec certains utilisateurs prédéfinis (identifiant utilisateur (UID) < 99 comme décrit dans la http://www.debian.org/doc/debian-policy/ ou /usr/share/doc/base-passwd/README) afin de faciliter l'installation de certains services qui imposent d'être lancés par un utilisateur ayant un UID approprié. Si vous n'avez pas l'intention d'installer de nouveaux services, vous pouvez supprimer sans problème ces utilisateurs qui ne possèdent aucun fichier sur le système et n'exécutent aucun service. Dans tous les cas, le comportement par défaut est que les UID de 0 à 99 sont réservées dans Debian et les UID de 100 à 999 sont crées par des paquets lors de l'installation (et supprimées quand le paquet est purgé).
Vous pouvez facilement trouver les utilisateurs ne possédant aucun fichier en exécutant la commande suivante[84] (assurez-vous de l'exécuter en tant que superutilisateur, étant donné qu'un utilisateur ordinaire pourrait ne pas avoir les droits nécessaires pour accéder à certains répertoires sensibles) :
cut -f 1 -d : /etc/passwd |
while read i; do find / -user "$i" | grep -q . || echo "$i"; done
Ces utilisateurs sont fournis par base-passwd. Vous trouverez dans sa documentation plus d'informations sur la manière dont ces utilisateurs sont gérés dans Debian. Voici la liste des utilisateurs par défaut (avec un groupe correspondant).
  • root : c'est (typiquement) le superutilisateur.
  • daemon : quelques démons sans droit ont besoin de pouvoir écrire certains fichiers du disque en tant que daemon:daemon (par exemple, portmap, atd, et probablement d'autres). Les démons qui n'ont besoin d'aucune appartenance de fichier peuvent tourner en tant que nobody:nogroup, et des démons plus complexes ou plus consciencieux de la sécurité tournent en tant qu'utilisateurs spécifiques. L'utilisateur daemon est aussi utile pour les démons installés localement.
  • bin : maintenu pour des raisons historiques.
  • sys : comme bin. Toutefois, /dev/vcs* et /var/spool/cups appartiennent au groupe sys.
  • sync : l'interpréteur de commandes de l'utilisateur sync est /bin/sync. Donc, si son mot de passe est quelque chose de facile à deviner (comme «  »), n'importe qui peut synchroniser le système depuis la console même sans compte sur le système.
  • games : de nombreux jeux sont SETGID à games pour pouvoir écrire dans les fichiers des meilleurs scores. C'est expliqué dans la Charte.
  • man : le programme man est (parfois) lancé en tant qu'utilisateur man, il peut alors écrire les pages cat vers /var/cache/man.
  • lp : utilisé par les démons d'impression.
  • mail : les boîtes aux lettres de /var/mail appartiennent au groupe mail, comme décrit dans la Charte. L'utilisateur et le groupe sont également utilisés à d'autres fins par différents MTA.
  • news : plusieurs serveurs de nouvelles et autres programmes associés (comme suck) utilisent l'utilisateur et le groupe news de différentes façons. Les fichiers dans la file d'attente des nouvelles appartiennent souvent à l'utilisateur et au groupe news. Les programmes comme inews qui peuvent être utilisés pour envoyer des nouvelles sont typiquement SETGID news.
  • uucp : l'utilisateur et le groupe uucp sont utilisés par le sous-système UUCP. Les fichiers de file d'attente et de configuration lui appartiennent. Les utilisateurs du groupe uucp peuvent exécuter uucico.
  • proxy : comme daemon, cet utilisateur et ce groupe sont utilisés par certains démons (en particulier les démons de mandataire) qui ne possèdent pas d'identifiant utilisateur et qui n'ont pas besoin de posséder des fichiers. Par exemple, le groupe proxy est utilisé par pdnsd et squid est exécuté en tant qu'utilisateur proxy.
  • majordom : majordomo a un identifiant utilisateur alloué statiquement sur les systèmes Debian pour des raisons historiques. Il n'est plus installé sur les nouveaux systèmes.
  • postgres : les bases de données postgresql appartiennent à cet utilisateur et ce groupe. Tous les fichiers dans /var/lib/postgresql appartiennent à cet utilisateur afin d'imposer un niveau de sécurité convenable.
  • www-data : certains serveurs web tournent en tant que www-data. Le contenu web ne devrait pas appartenir à cet utilisateur, sinon un serveur Internet compromis serait en mesure de réécrire un site web. Les données transférées par les serveurs web, incluant les fichiers journaux, seront la propriété de www-data.
  • backup : de cette manière la responsabilité de sauvegarde ou restauration peut être localement déléguée à quelqu'un sans avoir à lui donner tous les droits du superutilisateur.
  • operator : c'est historiquement (et pratiquement) le seul compte « utilisateur » qui peut se connecter à distance, sans dépendre de NIS ou NFS.
  • list : les archives des listes de diffusion et les données appartiennent à cet utilisateur et à son groupe. Certains programmes de listes de diffusion utilisent aussi cet utilisateur.
  • irc : utilisé par les démons IRC. Un utilisateur alloué statiquement est nécessaire à cause d'un bogue dans ircd, il se SETUID lui-même vers un UID donné au démarrage.
  • gnats.
  • nobody, nogroup : les démons qui n'ont pas besoin d'être propriétaires de fichiers devraient fonctionner sous l'utilisateur nobody et le groupe nogroup. Donc, aucun fichier sur un système ne devrait appartenir à cet utilisateur ou à ce groupe.
Les autres groupes suivants n'ont pas d'utilisateur associé.
  • adm : utilisé pour les tâches de surveillance du système. Les membres de ce groupe peuvent lire de nombreux journaux d'événements dans /var/log et peuvent utiliser xconsole. Historiquement, /var/log était /usr/adm (et plus tard /var/adm) d'où le nom du groupe.
  • tty : les périphériques TTY appartiennent à ce groupe. C'est utilisé par write et wall pour leur permettre d'écrire sur les TTY d'autres personnes.
  • disk : accès brut aux disques. Quasiment équivalent à l'accès superutilisateur.
  • kmem : /dev/kmem et les fichiers similaires sont lisibles par ce groupe. C'est la plupart du temps un reste de BSD, mais certains programmes en ont besoin pour un accès direct en lecture sur la mémoire du système ce qui peut ainsi être fait par SETGID kmem.
  • dialout : accès direct et total aux ports séries. Les membres de ce groupe peuvent reconfigurer les modems, téléphoner n'importe où, etc.
  • dip : le nom du groupe signifie « Dialup IP ». Être dans le groupe dip permet d'utiliser des outils comme ppp, dip, wvdial, etc. pour établir une connexion. Les utilisateurs de ce groupe ne peuvent pas configurer le modem, ils peuvent juste utiliser les programmes qui en font usage.
  • fax : autorise les membres à utiliser les logiciels de fax pour envoyer et recevoir des faxes.
  • voice : boîte vocale, utile pour les systèmes qui utilisent les modems comme répondeurs.
  • cdrom : utilisé localement pour donner à certains utilisateurs un accès aux lecteurs de CD.
  • floppy : utilisé localement pour donner à certains utilisateurs un accès aux lecteurs de disquettes.
  • tape : utilisé localement pour donner à certains utilisateurs un accès aux lecteurs de bandes.
  • sudo : les membres de ce groupe n'ont pas besoin de fournir un mot de passe lors de l'utilisation de sudo. Consultez /usr/share/doc/sudo/OPTIONS.
  • audio : utilisé localement pour donner à certains utilisateurs un accès aux périphériques audio.
  • src : ce groupe possède les codes source, y compris les fichiers de /usr/src. Il peut être utilisé pour permettre à un utilisateur de manipuler les codes source du système.
  • shadow : /etc/shadow est lisible par ce groupe. Certains programmes ayant besoin d'accéder à ce fichier sont SETGID shadow.
  • utmp : les membres de ce groupe peuvent écrire dans /var/run/utmp et dans fichiers similaires. Les programmes qui nécessitent l'écriture sont SETGID utmp.
  • video : utilisé localement pour donner à certains utilisateurs un accès aux périphériques vidéo.
  • staff : autorise les utilisateurs à ajouter des modifications au système local (/usr/local, /home) sans avoir les droits du superutilisateur. À comparer au groupe « adm » plus apparenté à la surveillance et la sécurité.
  • users : alors que les systèmes Debian utilisent le système de groupe privé par utilisateur par défaut (chaque utilisateur a son propre groupe), certains préfèrent d'utiliser un système de groupes plus traditionnel. Dans ce système, chaque utilisateur est un membre de ce groupe.
12.1.1.12.2. J'ai supprimé un utilisateur système ! Comment puis-je le récupérer ?
Si vous avez supprimé un utilisateur système et que vous n'avez pas de sauvegardes des fichiers password et group, vous pouvez essayez de récupérer de ce problème en utilisant update-passwd (consultez update-passwd(8)).
12.1.1.12.3. Quelle est la différence entre les groupes adm et staff ?
Le groupe « adm » est normalement celui des administrateurs et leur permet de lire les journaux d'activités sans utiliser su. Le groupe « staff » est généralement pour les administrateurs système secondaires afin de faire des choses dans /usr/local et de créer des répertoires dans home.

12.1.1.13. Pourquoi y a-t-il un nouveau groupe à chaque ajout de nouvel utilisateur (ou pourquoi Debian attribue-t-elle un groupe à chaque utilisateur) ?

Le comportement par défaut dans Debian est que chaque utilisateur a son propre groupe privé. Le schéma traditionnel UNIX place tous les utilisateurs dans le groupe users. Des groupes supplémentaires étaient créés et utilisés pour restreindre l'accès à des fichiers partagés associés aux différents répertoires de projets. La gestion des fichiers devenait difficile quand un seul utilisateur travaillait sur plusieurs projets car quand quelqu'un créait un fichier, ce dernier était associé au groupe primaire auquel il appartenait (c'est-à-dire « users »).
Le schéma Debian résout ce problème en attribuant à chaque utilisateur son propre groupe ; ainsi avec un umask correct (0002) et le bit SETGID positionné dans un répertoire de projet donné, le groupe correct est automatiquement attribué aux fichiers créés dans ce répertoire. Cela facilite le travail sur plusieurs projets sans modifier les groupes ou les umask pour travailler sur des fichiers partagés.
Vous pouvez, cependant, changer ce comportement en modifiant /etc/adduser.conf. Changez la variable USERGROUPS à « no », pour qu'aucun nouveau groupe ne soit créé quand un nouvel utilisateur est créé. Positionnez également USERS_GID au GID du groupe users auquel appartiennent tous les utilisateurs.

12.1.1.14. Questions concernant les services et les ports ouverts

12.1.1.14.1. Pourquoi tous les services sont-ils activés lors de l'installation ?
C'est un compromis entre la présence de sécurité et la facilité d'utilisation. Contrairement à OpenBSD, qui désactive tous les services non activés par l'administrateur, Debian GNU/Linux activera tous les services installés à moins de les désactiver (consultez Section 3.5.1, « Désactivation de services démon » pour plus de renseignements). Après tout, vous avez installé ces services de votre propre chef, n'est-ce pas ?
De nombreuses discussions sur les listes de diffusion Debian (sur debian-devel et debian-security) ont eu lieu sur l'installation standard. Cependant, il n'y a pas de consensus à ce jour (mars 2002) sur la solution à adopter.
12.1.1.14.2. Puis-je retirer inetd ?
inetd n'est pas aisé à retirer étant donné que netbase dépend du paquet qui le fournit (netkit-inetd). Si vous voulez le retirer, vous pouvez soit le désactiver (consultez Section 3.5.1, « Désactivation de services démon »), soit retirer le paquet en utilisant equivs.
12.1.1.14.3. Pourquoi le port 111 est-il ouvert ?
Le port 111 est le mappeur de port sunrpc, il est installé par défaut dans toutes les installations de base d'un système Debian puisqu'il est nécessaire pour savoir quand le programme d'un utilisateur a besoin de RPC pour fonctionner correctement. Dans tous les cas, il est principalement utilisé pour NFS. Si vous n'en avez pas besoin, retirez-le comme décrit en Section 5.13, « Sécurisation des services RPC ».
Dans les versions du paquet portmap ultérieures à 5-5, le portmapper peut être en fait installé en n'écoutant que localhost (en modifiant /etc/default/portmap).
12.1.1.14.4. À quoi sert identd (port 113) ?
Le service identd est un service d'authentification du propriétaire d'une connexion TCP/IP spécifique au serveur distant acceptant la connexion. Par exemple, quand un utilisateur se connecte sur un hôte distant, inetd de l'hôte distant va envoyer une demande sur le port 113 pour déterminer les informations du propriétaire. C'est souvent utilisé pour les serveurs de courriers, FTP et IRC et peut également être utilisé pour remonter la trace de l'utilisateur qui attaque un système distant par l'intermédiaire de votre machine.
Des discussions complètes ont eu lieu sur la sécurité d'identd (consultez les http://lists.debian.org/debian-security/2001/debian-security-200108/msg00297.html). En règle générale, identd est plus utile sur un système multiutilisateur que sur un poste de travail mono-utilisateur. Si vous n'en avez pas l'utilité, désactivez-le, pour ne pas laisser un service ouvert au monde extérieur. Mais si vous le bloquez par un pare-feu, s'il vous plaît, créez une règle de rejet et non une règle de déni, sinon la communication à un serveur utilisant identd pourrait être en attente jusqu'à l'expiration d'un délai (consultez les http://logi.cc/linux/reject_or_deny.php3).
12.1.1.14.5. Des services utilisent les ports 1 et 6, quels sont ces services et comment les enlever ?
Si la commande netstat -an affiche :
  Active Internet connections (servers and established)
  Proto Recv-Q Send-Q Local Address           Foreign Address         State
  PID/Program name
  raw        0      0 0.0.0.0:1               0.0.0.0:*               7
  -
  raw        0      0 0.0.0.0:6               0.0.0.0:*               7
  -
Aucun processus n'écoute sur les ports 1 et 6. En fait, un processus écoute sur une socket raw (brut) pour les protocoles 1 (ICMP) et 6 (TCP). Un tel comportement est courant pour les chevaux de Troie et pour certains systèmes de détection d'intrusions comme iplogger et portsentry. Si ces paquets sont installés, supprimez-les simplement. Sinon, essayez l'option -p (processus) de netstat pour voir le processus à l'écoute.
12.1.1.14.6. Le port XYZ est ouvert, puis-je le fermer ?
Bien sûr que vous pouvez, les ports laissés ouverts doivent adhérer à la politique de sécurité du site concernant les services publiques disponibles pour les autres systèmes. Vérifiez s'ils sont ouvert par inetd (consultez Section 3.5.2, « Désactivation d'inetd ou de ses services ») ou par d'autres paquets installés et prenez les mesures adéquates (par exemple, configuration d'inetd, suppression du paquet, éviter qu'il démarre au démarrage).
12.1.1.14.7. Est-ce que la suppression de services de /etc/services va aider à sécuriser la machine ?
Non, le fichier /etc/services fournit juste une cartographie d'un nom virtuel à un numéro de port donné. La suppression des noms ne va pas (en général) empêcher les services d'être lancées. Certains démons ne se lanceront peut-être pas si /etc/services est modifié mais ce n'est pas la norme. Pour désactiver correctement les services, consultez Section 3.5.1, « Désactivation de services démon ».

12.1.1.15. Problèmes courants de sécurité

12.1.1.15.1. J'ai perdu mon mot de passe et je ne peux plus accéder au système !
Les démarches pour récupérer le système dépendent des différentes procédures appliquées pour limiter l'accès à lilo et au BIOS.
Si les deux accès sont limités, vous devez désactiver les fonctionnalités du BIOS (démarrer uniquement depuis le disque dur) avant de commencer. Si vous avez également oublié le mot de passe du BIOS, vous devrez ouvrir le système et retirer manuellement la pile du BIOS.
Une fois activé l'amorçage depuis un CD ou une disquette, vous pouvez essayer de :
  • démarrer depuis une disquette de secours (rescue) et démarrer le noyau ;
  • accéder aux consoles virtuelles (Alt+F2) ;
  • monter le disque dur où est placé la partition /root ;
  • éditer (la disquette de secours de Debian 2.2 est livrée avec ae, Debian 3.0 est livrée avec nano-tiny qui est similaire à vi) /etc/shadow et modifier la ligne :
    root:asdfjl290341274075:XXXX:X:XXXX:X::: (X=n'importe quel nombre)
    par :
    root::XXXX:X:XXXX:X:::
Cela retirera le mot de passe superutilisateur oublié, contenu dans le premier champ séparé par deux points après le nom d'utilisateur. Enregistrez le fichier, redémarrer le système et connectez-vous en tant que superutilisateur (avec un mot de passe vide). Cela fonctionnera sauf si le système est configuré plus strictement, par exemple sans autorisation des connexions avec mot de passe vide ou des connexions du superutilisateur à partir de la console.
Si ces caractéristiques ont été introduites, vous devrez passer en mode utilisateur unique. Si LILO a été restreint, vous devrez relancer lilo après la réinitialisation du superutlisateur précédente. C'est assez rusé puisque /etc/lilo.conf devra être modifié car le système de fichiers racine est alors un disque virtuel et non le vrai disque dur.
Une fois que LILO n'est plus restreint, vous pouvez :
  • presser l'une des touches Alt, Maj ou Ctrl juste avant que le BIOS système ne finisse, pour obtenir l'invite de LILO ;
  • entrer linux single, linux init=/bin/sh ou linux 1 à l'invite ;
  • cela donnera accès à une invite de commandes un mode utilisateur unique (un mot de passe sera demandé, mais vous le connaissez déjà) ;
  • remonter en lecture/écriture la partition racine (/), en utilisant la commande de montage :
    mount -o remount,rw /
  • modifier le mot de passe du superutilisateur avec passwd (étant superutilisateur, l'ancien mot de passe ne sera pas demandé).

12.1.1.16. Comment mettre en place un service pour les utilisateurs sans leur donner un compte avec invite de commande ?

Par exemple, si vous voulez mettre en place un service POP, vous n'avez pas besoin de configurer un compte d'utilisateur pour chaque utilisateur y accédant. Il est préférable de mettre en place une authentification basé sur un répertoire grâce à un service externe (comme Radius, LDAP ou une base de données SQL). Installez simplement la bibliothèque PAM appropriée (libpam-radius-auth, libpam-ldap, libpam-pgsql ou libpam-mysql), consultez la documentation (pour commencer, consultez Section 4.11.1, « Authentification utilisateur: PAM ») et configurez le service en activant PAM pour utiliser la méthode que vous avez choisi. C'est fait en éditant les fichiers de /etc/pam.d/ pour les services et en modifiant :
 
  auth   required    pam_unix_auth.so shadow nullok use_first_pass
en, par exemple pour ldap :
  auth   required    pam_ldap.so
Dans le cas de répertoires LDAP, certains services fournissent des schémas LDAP à inclure dans le répertoire et qui sont nécessaires pour utiliser l'authentification LDAP. Si vous utilisez une base de données relationnelle, une astuce utile est d'utiliser la clause where en configurant les modules PAM. Par exemple, avec une base de données contenant les attributs de table suivants :
  (user_id, user_name, realname, shell, password, UID, GID, homedir, sys, pop, imap, ftp)
En modifiant les attributs de service en champs booléens, vous pouvez les utiliser pour permettre ou interdire l'accès aux différents services avec simplement les lignes appropriées dans les fichiers suivants :
  • /etc/pam.d/imap : where=imap=1 ;
  • /etc/pam.d/qpopper : where=pop=1 ;
  • /etc/nss-mysql*.conf : users.where_clause = user.sys = 1; ;
  • /etc/proftpd.conf : SQLWhereClause "ftp=1".

12.1.2. Le système est vulnérable ! (En êtes-vous certain ?)

12.1.2.1. Le scanneur X de vérification des failles indique que le système Debian est vulnérable !

Plusieurs scanneurs de vérification de failles renvoient des faux positifs quand ils sont utilisés sur des systèmes Debian, car ils n'utilisent que le numéro de version pour déterminer si un paquet donné de logiciel est vulnérable, mais ils ne testent pas réellement la faille de sécurité elle-même. Comme Debian ne change de numéros de version lors de la correction d'un paquet (il est courant que la correction effectuée pour des versions plus récentes soit rétroportée), certains outils ont tendance à croire qu'un système Debian mis à jour est vulnérable alors qu'il ne l'est pas.
Si vous pensez que le système est à jour des correctifs de sécurité, vous pourriez utiliser les références croisées des bases de données des failles de sécurité publiées avec les DSA (consultez Section 7.2, « Alertes de sécurité Debian ») pour éliminer les faux positifs, si l'outil utilisé inclut des références CVE.

12.1.2.2. Une attaque apparaît dans les fichiers journaux du système. Le système est-il compromis ?

Une trace d'une attaque ne veut pas toujours dire que le système a été compromis et vous devriez effectuer les étapes habituelles pour déterminer si le système est vraiment compromis (consultez Chapitre 11, Après la compromission (la réponse à l'incident)). Même si le système n'était pas vulnérable à l'attaque journalisée, un attaquant déterminé pourrait avoir utilisé une autre faille en plus de celles détectées.

12.1.2.3. D'étranges lignes « MARK » apparaissent dans les journaux : le système est-il compromis ?

Les lignes suivantes pourraient apparaître dans les fichiers journaux du système :
  Dec 30 07:33:36 debian -- MARK --
  Dec 30 07:53:36 debian -- MARK --
  Dec 30 08:13:36 debian -- MARK --
Cela n'indique pas un type de compromission et les utilisateurs changeant de versions de Debian peuvent trouver cela étrange. Si le système n'a pas une charge importante (ou beaucoup de services actifs), ces lignes peuvent apparaître dans les journaux. C'est pour indiquer que le démon syslogd fonctionne correctement. De syslogd(8) :
       -m interval
            Syslogd garde dans un journal une marque d'horodatage
            régulièrement. L'intervalle par défaut entre deux lignes
            -- MARK -- est de 20 minutes. Cela peut être modifié
            par cette option. Positionner l'intervalle à 0 le
            désactive complètement.

12.1.2.4. Des utilisateurs utilisant « su » apparaissent dans les journaux : le système est-il compromis ?

Vous pouvez trouver ce genre de lignes dans les journaux :
  Apr  1 09:25:01 server su[30315]: + ??? root-nobody
  Apr  1 09:25:01 server PAM_unix[30315]: (su) session opened for user nobody by (UID=0)
Ne vous inquiétez pas trop. Vérifiez que ces entrées sont dues à des tâches cron (habituellement, /etc/cron.daily/find ou logrotate) :
  $ grep 25 /etc/crontab
  25 9    * * *   root    test -e /usr/sbin/anacron || run-parts --report
  /etc/cron.daily
  $ grep nobody /etc/cron.daily/*
  find:cd / && updatedb --localuser=nobody 2>/dev/null

12.1.2.5. « possible SYN flooding » apparaît dans les journaux : le système est-il attaqué ?

Si vous voyez ce genre d'entrées dans les fichiers journaux :
  May 1 12:35:25 linux kernel: possible SYN flooding on port X. Sending cookies.
  May 1 12:36:25 linux kernel: possible SYN flooding on port X. Sending cookies.
  May 1 12:37:25 linux kernel: possible SYN flooding on port X. Sending cookies.
  May 1 13:43:11 linux kernel: possible SYN flooding on port X. Sending cookies.
Vérifiez le nombre de connexions au serveur en utilisant netstat, par exemple :
  linux:~# netstat -ant | grep SYN_RECV | wc -l
     9000
Cela peut indiquer une attaque par déni de service (DoS) sur le port X du système (très certainement sur un service public comme un serveur web ou un serveur de courrier). Vous devriez activer TCP syncookies dans le noyau, consultez Section 4.18.2, « Configurer syncookies ». Cependant, notez qu'une attaque par déni de service peut inonder le réseau même si vous pouvez l'empêcher de planter les systèmes (à cause de la raréfaction de descripteurs de fichiers, le système peut ne plus répondre avant que les connexions TCP expirent). Le seul moyen efficace pour arrêter cette attaque est de contacter le fournisseur d'accès réseau.

12.1.2.6. Des sessions superutilisateur étranges apparaissent dans les journaux : le système est-il compromis ?

Ce genre d'entrées peut apparaître dans le fichier /var/log/auth.log :
  May 2 11:55:02 linux PAM_unix[1477]: (cron) session closed for user root
  May 2 11:55:02 linux PAM_unix[1476]: (cron) session closed for user root
  May 2 12:00:01 linux PAM_unix[1536]: (cron) session opened for user root by
  (UID=0)
  May 2 12:00:02 linux PAM_unix[1536]: (cron) session closed for user root
Elles sont dues à l'exécution d'une tâche cron (dans cet exemple, toutes les cinq minutes). Pour déterminer le programme responsable de ces tâches, vérifiez les entrées dans : /etc/crontab, /etc/cron.d, /etc/crond.daily et la crontab du superutilisateur dans /var/spool/cron/crontabs.

12.1.2.7. Le système a été victime d'une intrusion, que faire ?

Plusieurs étapes sont à prendre en compte en cas d'intrusion.
  • Vérifiez que le système est à jour avec les correctifs de sécurité pour les failles publiées. Si le système est vulnérable, les risques de compromission réelle du système augmentent. Les risques augmentent encore plus si la faille est connue depuis un certain temps, car il y a habituellement plus d'activité en lien avec d'anciennes failles. Voici un lien vers les http://www.sans.org/top20/.
  • Consultez ce document, en particulier la section Chapitre 11, Après la compromission (la réponse à l'incident).
  • Demandez de l'aide. La liste de diffusion debian-security permet de demander conseil sur la manière de récupérer ou corriger le système.
  • Informez le http://www.cert.org local (s'il existe, sinon vous pourriez contacter le CERT directement). Cela peut ou non vous aider, mais au minimum, cela informera le CERT des attaques en cours. Cette information est très précieuse pour déterminer les outils et attaques utilisés par la communauté blackhat.

12.1.2.8. Comment pister une attaque ?

En regardant les journaux (s'ils n'ont pas été modifiés), en utilisant un système de détection d'intrusions (consultez Section 10.3, « Mise en place de détection d'intrusion »), traceroute, whois et outils similaires (y compris des analyses post-mortem) vous pourriez trouver la source de l'attaque. La réaction face à ces informations dépend uniquement des règles de sécurité, et de ce que vous considérez comme une attaque Un scan distant est-il une attaque ? Un test de failles de sécurité est-il une attaque ?

12.1.2.9. Le programme X dans Debian est vulnérable, que faire ?

Tout d'abord, vérifiez si la vulnérabilité a été annoncée sur les listes de diffusion publiques de sécurité (comme Bugtraq) ou autre forums. L'équipe de sécurité Debian se met à jour à l'aide de ces listes, elle peut donc déjà être consciente du problème. Ne lancez pas d'autres actions si l'annonce est sur http://security.debian.org.
Si rien n'a été publié, veuillez envoyer un message à propos des paquets concernés avec une description aussi détaillée que possible de la vulnérabilité rencontrée (la preuve par un code d'exploitation est aussi bienvenue) à mailto:team@security.debian.org. Cela vous mettra en rapport avec l'équipe de sécurité Debian.

12.1.2.10. Le numéro de version pour un paquet indique une version vulnérable !

Au lieu de mettre à jour vers une nouvelle version, Debian rétroporte le correctif de sécurité dans la version de la distribution stable. La raison d'agir ainsi est simple : cela permet d'assurer qu'une version a le moins de modifications possible, de cette manière les choses ne changeront pas ou ne se briseront pas à cause d'une mise à jour de sécurité. Vous pouvez vérifier qu'une version sécurisée du paquet est utilisée en regardant le journal de modifications du paquet ou en comparant le numéro exact de version (version amont et révision Debian) avec celui indiqué dans l'alerte de sécurité Debian (« Debian Security Advisory »).


[81] Par exemple, à partir de certaines données, Windows NT semblerait plus sûr que Linux, ce qui est une assertion discutable. Après tout, les distributions Linux fournissent habituellement beaucoup plus d'applications par rapport à Windows NT de Microsoft. Ces problèmes de failles comptabilisées sont mieux décrits dans http://www.dwheeler.com/oss_fs_why.html#security de David A. Wheeler.
[82] Sans diminuer le fait que d'autres distributions, comme Red Hat ou Mandrake, prennent aussi en compte la sécurité dans leurs installations standard en demandant à l'utilisateur de sélectionner des profils de sécurité ou en utilisant des assistants pour configurer des pare-feu personnels.
[83] Notez que c'est de la « sécurité par l'obscurité » et ne vaudra probablement pas l'effort à long terme.
[84] Prenez garde, car cela parcourt tout le système. Si vous avez beaucoup de disques et partitions, vous pourriez réduire sa portée.