Securing Debian Manual
Notes de bas de page

1

Il a été remplacé à un moment donné par le « Linux Security Knowledge Base ». Cette documentation est également disponible dans Debian par l'intermédiaire du paquet lskb. Il est à nouveau de retour en tant que le Lasg.

2

Un très bon exemple de ce type d'attaque utilisant /tmp est détaillé dans Le programme mystérieusement exploitable de façon persistente (concours) et L'explication du programme mystérieusement exploitable de façon persistante (notez que l'incident est lié à Debian). C'est de manière basique une attaque dans laquelle un utilisateur local cache profondément une application setuid vulnérable en faisant un lien direct sur celle-ci, évitant de manière efficace toute mise à jour (ou suppression) du binaire lui-même réalisé par l'administrateur du système. dpkg a été récemment corrigé pour empêcher cela (consultez le bogue nº 225692), mais d'autres binaires setuid (non contrôlés par le gestionnaire de paquets) sont risqués si les partitions ne sont pas mises en place correctement.

3

Depuis Debian GNU/Linux 4.0, surnommée Etch.

4

L'empreinte dans Debian 3.0 et les versions précédentes n'était pas aussi réduite car certains services inetd étaient activés par défaut. Les installations standard de Debian 2.2 installaient également le serveur NFS ainsi que le serveur TELNET.

5

C'est pratique si vous mettez en place un chroot de développement, par exemple.

6

Par exemple, dans Debian Woody, elle est d'environ 400 à 500 Mo, essayez ceci :

      $ size=0 $
          for i in `grep -A 1 -B 1 "^Section: base" /var/lib/dpkg/available |
          grep -A 2 "^Priority: required" |grep "^Installed-Size" |cut -d : -f 2
          `; do size=$(($size+$i)); done $ echo $size
          47762

7

Beaucoup d'intrusions ne sont faites que pour avoir accès aux ressources pour effectuer des activités illégales (attaques de déni de service, envoi d'indésirables, serveurs FTP illicites, pollution de DNS, etc.) plus que pour obtenir des données confidentielles du système compromis.

8

Vous pouvez créer (sur un autre système) un paquet bidon avec equivs.

9

Debian Security Advisories (DSA).

10

Depuis Etch.

11

Bien que les bibliothèques aient été supprimées du système de fichiers, aucun inœud ne sera nettoyé tant qu'un programme a encore un descripteur de fichier pointant dessus.

12

En fonction de la version de lsof, vous pourriez avoir besoin de remplacer $9 par $8.

13

Cela s'est produit, par exemple, dans la mise à jour de la libc6 2.2.x à la 2.3.x à cause de problèmes d'authentification NSS, consultez http://lists.debian.org/debian-glibc/2003/debian-glibc-200303/msg00276.html.

14

Sauf si vous avez installé un métapaquet de noyau comme linux-image-2.6-686 qui va toujours tirer la dernière révision mineure de noyau pour une version de noyau et une architecture donnée.

15

Un exemple d'un tel script appelé testnet est disponible dans l'article Remotely rebooting Debian GNU/Linux machines. Un script de test de connectivité réseau plus élaboré est disponible dans l'article Testing network connectivity.

16

Configurer une console série est en dehors du cadre de ce document, pour plus d'informations, veuillez consulter le Serial HOWTO et le Remote Serial Console HOWTO.

17

Le fichier /etc/securetty est un fichier de configuration qui appartient au paquet login.

18

Ou ttyvX pour GNU/FreeBSD et ttyE0 pour GNU/KNetBSD.

19

Ou comX pour GNU/Hurd, cuaaX pour GNU/FreeBSD et ttyXX pour GNU/KNetBSD.

20

La configuration par défaut dans Woody inclut 12 consoles locales tty et vc, ainsi que le périphérique console, mais ne permet pas les connexions distantes. Dans Sarge, la configuration par défaut fournit 64 consoles pour les consoles tty et vc. Vous pouvez les supprimer en toute sécurité si vous n'en utilisez pas tant.

21

Recherchez les appels getty.

22

Cela inclut le gestionnaire de paquet dpkg car les scripts d'installation (pre et post) et de suppression (pre et post) sont en /var/lib/dpkg/ et aussi Smartlist.

23

Cependant, cette dépendance n'est pas fixe. Veuillez consulter le bogue nº 112965.

24

libpam-chroot n'a pas encore été testé en profondeur, il fonctionne pour login, mais il est possible qu'il ne soit pas facile de mettre en place l'environnement pour d'autres programmes.

25

Configurer HISTSIZE à une très grande valeur peut poser des problèmes avec certains interpréteur de commandes car l'historique est gardé en mémoire pour la session de chaque utilisateur. Il peut être plus prudent de positionner cela à une valeur assez élevée et de sauvegarder les fichiers d'historique des utilisateurs (si vous avez besoin de tout l'historique de l'utilisateur pour une raison ou une autre).

26

Sans l'attribut append-only les utilisateurs seraient capables de vider le contenu du fichier des historiques avec > .bash_history.

27

Les ttys sont créées pour les connexions locales et à distance par SSH et TELNET.

28

Tel que défini dans /etc/adduser.conf (USERGROUPS=yes). Vous pouvez modifier ce comportement en configurant cette valeur à « no », bien que ce ne soit pas recommandé.

29

chpasswd ne sait pas gérer la génération de mots de passe MD5, il faut donc lui donner le mot de passe sous sa forme chiffrée avant de l'utiliser avec l'option -e.

30

Pour les anciennes versions de Debian, vous pourriez devoir utiliser :

          $ apt-cache showpkg libwrap0 | egrep '^[[:space:]]' | sort -u | \ sed
          's/,libwrap0$//;s/^[[:space:]]\+//'

31

Assurez-vous d'utiliser des majuscules sinon spawn ne fonctionnera pas.

32

Il y a un très bon article sur celui-ci écrit par Lance Spitzner.

33

Notez que ce correctif entre en conflit avec des correctifs déjà inclus dans le paquet de source du noyau Debian. Vous devrez utiliser le noyau d'origine (sans correctifs Debian). Vous pouvez faire cela en suivant les étapes suivantes :

     # apt-get install
             kernel-source-2.4.22 kernel-patch-debian-2.4.22 # tar xjf
             /usr/src/kernel-source-2.4.22.tar.bz2 # cd kernel-source-2.4.22 #
             /usr/src/kernel-patches/all/2.4.22/unpatch/debian

Pour plus d'informations, consultez les bogues nº 194225, nº 199519, nº 206458, nº 203759, nº 204424, nº 210762, nº 211213 et la discussion sur debian-devel.

34

Si commune, en fait, qu'elles ont été la base de 20 % des failles de sécurité signalés cette année, d'après les statistiques de la base de données des failles de l'ICAT.

35

Dans les versions précédentes, checksecurity était intégré dans cron et le fichier était /etc/cron.daily/standard.

36

Dans Debian, les paquets kernel-source-version copient les sources sous /usr/src/kernel-source-version.tar.bz2, remplacez simplement version par la version des sources du noyau installé.

37

Pour reproduire cela (exemple fourni par Felix von Leitner sur la liste de diffusion Bugtraq) :

           hôte a (eth0 connecté sur l'eth0 de l'hôte b) : ifconfig eth0 10.0.0.1
           ifconfig eth1 23.0.0.1 tcpserver -RHl localhost 23.0.0.1 8000 echo
           fnord hôte b : ifconfig eth0 10.0.0.2 route add 23.0.0.1 gw 10.0.0.1
           telnet 23.0.0.1 8000

Cela semble, cependant, ne pas fonctionner avec les services liés à 127.0.0.1, vous pourriez devoir écrire des tests utilisant des sockets bruts.

38

Le fait que ce comportement puisse être changé par le routage a été décrit par Matthew G. Marsh dans l'enfilade sur Bugtraq :

     eth0 =
              1.1.1.1/24 eth1 = 2.2.2.2/24 ip rule add from 1.1.1.1/32 dev lo
              table 1 prio 15000 ip rule add from 2.2.2.2/32 dev lo table 2 prio
              16000 ip route add default dev eth0 table 1 ip route add default
              dev eth1 table 2

39

Il existe des correctifs disponibles pour ce comportement comme décrit dans l'enfilade sur Bugtraq à http://www.linuxvirtualserver.org/~julian/#hidden et http://www.fefe.de/linux-eth-forwarding.diff.

40

Un attaquant peut avoir beaucoup de problèmes à transférer un accès après une configuration de l'adresse IP s'il n'est pas le domaine de broadcast (même réseau) que l'hôte attaqué. Si l'attaque passe par un routeur, il peut être assez difficile pour les réponses de retourner quelque part.

41

GDM n'ajoutera pas -nolisten tcp s'il trouve -query ou -indirect sur la ligne de commande car cela ne pourrait pas fonctionner.

42

Pour récupérer la liste des démons de courrier disponibles dans Debian, essayez :

     $ apt-cache search mail-transport-agent

La liste n'inclura pas qmail, qui est distribué seulement comme code source dans le paquet qmail-src.

43

Une liste des serveurs et démons prenant ces protocoles en charge dans Debian peut être récupérée avec :

     $ apt-cache search
           pop3-server $ apt-cache search imap-server

44

Notez que selon la version de BIND, l'option -g risque de ne pas être disponible, en particulier si vous utilisez bind9 avec Sarge (version 9.2.4).

45

Cette configuration n'a pas encore été essayée pour les nouvelles versions de BIND.

46

Sauf si vous utilisez l'option instdir lors de l'appel à dpkg mais alors la prison chroot peut être un petit peu plus complexe.

47

Elle essaie de les faire fonctionner avec le minimum de droits, y compris exécuter les démons avec leur propre utilisateur au lieu de les exécuter en tant que superutilisateur.

48

Disponible depuis le noyau 2.4 (qui était le noyau par défaut de Debian 3.0). Les versions de noyau précédentes (2.2, disponibles dans les versions encore plus anciennes de Debian) utilisaient ipchains. La principale différence entre ipchains et iptables est que ce dernier est basé sur une inspection des paquets en fonction de l'état (stateful packet inspection) qui fournit des configurations de filtrage plus sécurisées (et plus faciles à construire). Les distributions Debian plus anciennes (qui ne sont plus prises en charge) utilisant un noyau 2.0 ont besoin du correctif de noyau correspondant.

49

À la différence des pare-feu personnels d'autres systèmes d'exploitation, Debian GNU/Linux ne fournit pas (encore) d'interface de génération de pare-feu qui puisse créer des règles les limitant par processus ou par utilisateur. Cependant, le code iptables peut être configuré pour faire cela (consultez le module propriétaire (owner) dans la page de manuel iptables(8)).

50

Des traductions sont disponibles jusqu'en dix langues.

51

Le questionnaire de compétence complet est disponible au CVE.

52

Certains systèmes d'exploitation ont déjà été touchés par des problèmes de mises à jour automatiques comme la faille de mises à jour de logiciels de Mac OS X.

FIXME : la faille d'Internet Explorer sur la gestion des chaînes de certificat a probablement eu un impact sur les mises à jour de sécurité de Microsoft Windows.

53

Les versions plus anciennes, comme Debian 3.1 Sarge peuvent utiliser cette fonctionnalité en utilisant les versions rétroportées de cet outil de gestion de paquets.

54

Jusqu'à ce qu'un mécanisme automatique ne soit développé.

55

D'un point de vue technique, c'est une signature ASCII-armored détachée.

56

Ou ayant empoisonné le DNS, ou usurpant le serveur, ou ayant remplacé le fichier sur le miroir utilisé, etc.

57

« ziyi » est le nom de l'outil utilisé pour signer sur les serveurs Debian, le nom vient du nom d'une actrice chinoise.

58

Toutes les clefs de dépôt apt ne sont pas encore signées par une autre clef. Peut-être que la personne qui a mis en place le dépôt n'a pas d'autre clef, ou peut-être que ça ne lui plaît pas de signer une telle clef de rôle avec sa clef principale. Pour des renseignements au sujet de la mise en place d'une clef de dépôt, consultez Vérification de distribution pour les sources non Debian, Section 7.5.4.

59

Soit parce que vous utilisez la version stable Sarge ou une version plus ancienne, soit parce que vous ne voulez pas utiliser la dernière version d'apt, bien que nous apprécierions qu'elle soit testée

60

Certains d'entre eux sont fournis en installant le paquet harden-remoteaudit.

61

Si vous utilisez ce dernier paquet et que vous utilisez une Debian officielle, la base de données ne sera pas mise à jour avec les mises à jour de sécurité. Vous devrez soit utiliser clamav-getfiles du paquet clamav-freshclam pour générer de nouveaux clamav-data ou mettre à jour depuis le dépôt des responsables :

      deb
             http://people.debian.org/~zugschlus/clamav-data/ / deb-src
             http://people.debian.org/~zugschlus/clamav-data/
             /

62

Un paquet nommé f-prot-installer est en fait un programme d'installation qui téléchargera le logiciel F-prot pour l'installer sur le système. F-prot lui-même n'est pas libre, mais il est gratuit pour l'utilisation personnelle.

63

Pour plus d'exemples sur la façon de configurer gnupg, consultez /usr/share/doc/mutt/examples/gpg.rc.

64

Plusieurs discussions à propos de ces inconvénients ont déjà eu lieu comme http://lists.debian.org/debian-mentors/2004/10/msg00338.html et http://lists.debian.org/debian-devel/2004/05/msg01156.html.

65

Cela pourrait éventuellement être introduit en tant que dh_adduser dans debhelper. Consultez les bogues nº 81967, nº 291177 et nº 118787.

66

Vous pouvez même fournir une politique SELinux pour cela.

67

Vous pourriez aussi utiliser l'option --quiet (-q) pour réduire la sortie d'apt-get, ce qui évitera la génération de message si aucun paquet n'est installé.

68

Remarquez que certains paquets pourraient ne pas utiliser debconf et les mises à jour seront bloquées car les paquets attendront une réponse de l'administrateur pendant la configuration.

69

C'est un problème courant car beaucoup d'utilisateurs veulent conserver un système stable tout en mettant à jour certains paquets avec unstable pour obtenir les dernières fonctionnalités. Ce besoin provient de l'évolution plus rapide de certains projets que le temps mis par Debian pour publier une nouvelle version stable de sa distribution.

70

Une façon aisée de faire cela est d'utiliser un CD autonome (Live CD), comme Knoppix Std contenant à la fois les outils d'intégrité de fichier et la base de donnée du système.

71

28 fonctionnalités existent, y compris : CAP_BSET, CAP_CHOWN, CAP_FOWNER, CAP_FSETID, CAP_FS_MASK, CAP_FULL_SET, CAP_INIT_EFF_SET, CAP_INIT_INH_SET, CAP_IPC_LOCK, CAP_IPC_OWNER, CAP_KILL, CAP_LEASE, CAP_LINUX_IMMUTABLE, CAP_MKNOD, CAP_NET_ADMIN, CAP_NET_BIND_SERVICE, CAP_NET_RAW, CAP_SETGID, CAP_SETPCAP, CAP_SETUID, CAP_SYS_ADMIN, CAP_SYS_BOOT, CAP_SYS_CHROOT, CAP_SYS_MODULE, CAP_SYS_NICE, CAP_SYS_PACCT, CAP_SYS_PTRACE, CAP_SYS_RAWIO, CAP_SYS_RESOURCE, CAP_SYS_TIME et CAP_SYS_TTY_CONFIG. Elles peuvent être toutes désactivées pour renforcer le noyau.

72

Vous n'avez pas besoin d'installer lcap pour faire cela, mais c'est plus facile que de configurer /proc/sys/kernel/cap-bound soi-même.

73

Vous utiliserez généralement un pare-feu pont pour que le pare-feu lui-même ne soit pas détectable, consultez Configuration d'un pare-feu pont, Annexe D.

74

Si vous êtes aventureux, vous pouvez vous connecter au système et sauver les informations sur tous les processus en fonctionnement (vous en aurez beaucoup dans /proc/nnn/). Il est possible d'avoir l'intégralité du code exécutable depuis la mémoire, même si l'attaquant a supprimé les fichiers exécutables du disque. Puis tirez sur le cordon d'alimentation.

75

En fait, c'est l'outil utilisé pour construire les CD pour le projet Gibraltar (un pare-feu sur un CD autonome basé sur la distribution Debian).

76

Voici une liste de quelques CERT. Pour la liste complète, consultez le FIRST Member Team information (FIRST est le Forum of Incident Response and Security Teams) : AusCERT (Australie), UNAM-CERT (Mexique) CERT-Funet (Finlande), DFN-CERT (Allemagne), RUS-CERT (Allemagne), CERT-IT (Italie), JPCERT/CC (Japon), UNINETT CERT (Norvège), HR-CERT (Croatie) CERT Polska (Pologne), RU-CERT (Russie), SI-CERT (Slovénie) IRIS-CERT (Espagne), SWITCH-CERT (Suisse), TWCERT/CC (Taïwan) et CERT/CC (États-Unis).

77

Faites très attention si vous utilisez chroot, car si le programme utilise une faille de sécurité au niveau du noyau afin d'accroître ses droits, il pourrait tout de même réussir à compromettre le système.

78

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 Pourquoi des logiciels libres ? Regardez les chiffres ! de David A. Wheeler.

79

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.

80

Notez que c'est de la « sécurité par l'obscurité » et ne vaudra probablement pas l'effort à long terme.

81

Prenez garde, car cela parcourt tout le système. Si vous avez beaucoup de disques et partitions, vous pourriez réduire sa portée.

82

La publication des archives de la liste debian-private a cependant été votée en 2005, ce qui pourrait rendre certains messages publiques à l'avenir.

83

Typiquement les paquets nécessaires seront installés par l'intermédiaire des dépendances.

84

Il est aussi disponible au téléchargement depuis http://www.cert.org/kb/acid/, http://acidlab.sourceforge.net et http://www.andrew.cmu.edu/~rdanyliw/snort/.

85


Depuis la version 9.2.1-5. C'est-à-dire depuis Debian Sarge.

86

Par exemple knockd. Sinon, il est possible d'ouvrir une autre console et forcer le système à confirmer que quelqu'un est présent de l'autre côté, et réinitialiser la chaîne de pare-feu en absence de confirmation. Le script de test suivant pourrait servir :

     #!/bin/bash while true; do read -n 1 -p "Y a-t-il
         quelqu'un ? " -t 30 ayt if [ -z "$ayt" ] ; then break fi done #
         Réinitialiser la chaîne de pare-feu, l'utilisateur n'est pas disponible
         echo echo "Réinitialisation de la chaîne de pare-feu" iptables -F
         iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT
         ACCEPT exit 1

Bien sûr, toutes les portes dérobées devraient être désactivées avant de placer le système en production.

87

L'option debug permet d'envoyer la progression du module à la facilité authpriv.notice.

88

Vous pouvez créer un environnement bash très limité avc les définitions Python suivante pour makejail, en créant simplement le répertoire /var/chroots/users/truc et un fichier bash.py avec le contenu suivant :

     chroot="/var/chroots/users/truc" cleanJailFirst=1
              testCommandsInsideJail=["bash ls"]

Exécuter ensuite makejail bash.py pour créer l'environnement de l'utilisateur en /var/chroots/users/truc. Pour tester l'environnement, exécuter :

     # chroot
              /var/chroots/users/truc/ ls bin dev etc lib proc sbin
              usr

.

89

Dans certains cas, les périphériques /dev/ptmx et /dev/pty* et le sous-répertoire /dev/pts/. Exécuter MAKEDEV dans le répertoire /dev de l'environnement chrooté devrait suffire pour les créer s'ils n'existent pas. Avec les noyaux (version 2.6) qui créent dynamiquement les fichiers de périphérique, vous devrez créer les fichiers /dev/pts/ vous-même et leur attribuer les droits nécessaires.

90

Si vous utilisez un noyau implémentant le contrôle d'accès obligatoire (« Mandatory Access Control » ou MAC) (RSBAC/SElinux), vous pouvez éviter de changer cette configuration en autorisant simplement l'utilisateur sshd à exécuter l'appel système chroot().

91

Remarquez qu'il n'y a pas de fichiers SETUID. Cela rend plus difficile pour les utilisateurs distants de s'échapper de l'environnement de chroot. Cependant, il empêche également les utilisateurs de changer leurs mots de passe, car le programme passwd ne peut pas modifier les fichiers /etc/passwd ou /etc/shadow.


Securing Debian Manual

Version: 3.13, Sun, 08 Apr 2012 02:48:09 +0000

Javier Fernández-Sanguino Peña jfs@debian.org
Auteurs, Section 1.1