Vous êtes sur la page 1sur 250

Manuel de scurisation de Debian

Javier Fernndez-Sanguino Pea <jfs@debian.org> Auteurs de la prsente page Version franaise par Simon Valiquette (traducteur actuel) Frdric Bothamy, Pierre Machard et Arnaud Assad (anciens traducteurs) et les membres de la liste <debian-l10n-french@lists.debian.org>

Version : 3.4, Sun, 09 Oct 2011 13 :15 :12 +0000

Rsum
Ce document dcrit la scurit dans le projet Debian ainsi que dans le systme dexploitation Debian. Il commence par la scurisation et le renforcement de linstallation standard dune distribution Debian GNU/Linux. Il couvre quelques tches courantes telles que la scurisation dun rseau utilisant Debian GNU/Linux et il donne galement des informations complmentaires sur les outils de scurisation disponibles ainsi que sur le travail accompli au sein du projet Debian par lquipe en charge de la scurit et par lquipe daudit.

Copyright
Copyright 2002-2008 Javier Fernndez-Sanguino Pea Copyright 2001 Alexander Reelsen, Javier Fernndez-Sanguino Pea Copyright 2000 Alexander Reelsen Some sections are copyright their respective authors, for details please refer to Remerciements page 24. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 (http://www.gnu.org/copyleft/gpl.html) or any later version published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. Permission is granted to make and distribute verbatim copies of this document provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modied versions of this document under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this document into another language, under the above conditions for modied versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English. NdT : ce jour (novembre 2008), il nexiste pas de traduction de la GPL en franais approuve par la Free Software Foundation et il ny en aura probablement jamais an dviter des problmes lgaux dinterprtation. Cette notice de copyright est donc intentionnellement laisse en anglais.

Table des matires


1 Introduction 1.1 1.2 1.3 1.4 1.5 1.6 Auteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O rcuprer ce manuel (et formats disponibles) . . . . . . . . . . . . . . . . . . . Avis et ractions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Connaissances requises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lments restant crire (FIXME/TODO) . . . . . . . . . . . . . . . . . . . . . . . Journal des changements et historique . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 Version 3.14 (novembre 2008) . . . . . . . . . . . . . . . . . . . . . . . . . . Version 3.13 (fvrier 2008) . . . . . . . . . . . . . . . . . . . . . . . . . . . . Version 3.12 (aot 2007) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Version 3.11 (janvier 2007) . . . . . . . . . . . . . . . . . . . . . . . . . . . . Version 3.10 (novembre 2006) . . . . . . . . . . . . . . . . . . . . . . . . . . Version 3.9 (octobre 2006) . . . . . . . . . . . . . . . . . . . . . . . . . . . . Version 3.8 (juillet 2006) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Version 3.7 (avril 2006) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Version 3.6 (mars 2006) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 3 3 3 6 6 6 6 6 7 8 8 8 8 9

1.6.10 Version 3.5 (novembre 2005) . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.6.11 Version 3.4 (aot-septembre 2005) . . . . . . . . . . . . . . . . . . . . . . . 10 1.6.12 Version 3.3 (juin 2005) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.6.13 Version 3.2 (mars 2005) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.6.14 Version 3.1 (janvier 2005) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.6.15 Version 3.0 (dcembre 2004) . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.6.16 Version 2.99 (mars 2004) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

TABLE DES MATIRES

ii

1.6.17 Version 2.98 (dcembre 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.6.18 Version 2.97 (septembre 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.6.19 Version 2.96 (aot 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.6.20 Version 2.95 (juin 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.6.21 Version 2.94 (avril 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.6.22 Version 2.93 (mars 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.6.23 Version 2.92 (fvrier 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.6.24 Version 2.91 (janvier/fvrier 2003) . . . . . . . . . . . . . . . . . . . . . . . 14 1.6.25 Version 2.9 (dcembre 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.6.26 Version 2.8 (novembre 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.6.27 Version 2.7 (octobre 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.6.28 Version 2.6 (septembre 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.29 Version 2.5 (septembre 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.30 Version 2.5 (aot 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.31 Version 2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.6.32 Version 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.6.33 Version 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.6.34 Version 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.6.35 Version 2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.6.36 Version 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.6.37 Version 1.99 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.6.38 Version 1.98 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.6.39 Version 1.97 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.6.40 Version 1.96 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.6.41 Version 1.95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.6.42 Version 1.94 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.6.43 Version 1.93 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.6.44 Version 1.92 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 1.6.45 Version 1.91 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 1.6.46 Version 1.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 1.6.47 Version 1.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

TABLE DES MATIRES

iii

1.6.48 Version 1.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.6.49 Version 1.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.6.50 Version 1.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.6.51 Version 1.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.6.52 Version 1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.6.53 Version 1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.6.54 Version 1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.6.55 Version 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.7 2 Remerciements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 25

Avant de commencer 2.1 2.2 2.3

Que voulez-vous faire de votre systme ? . . . . . . . . . . . . . . . . . . . . . . . 25 tre conscient des problmes de scurit . . . . . . . . . . . . . . . . . . . . . . . . 25 Comment Debian gre la scurit ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 29

Avant et pendant linstallation 3.1 3.2

Choisir un mot de passe pour le BIOS . . . . . . . . . . . . . . . . . . . . . . . . . 29 Partitionner le systme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.2.1 Choisir un schma de partitionnement intelligent . . . . . . . . . . . . . . 29

3.3 3.4 3.5 3.6

Ne pas se connecter lInternet tant que tout nest pas prt . . . . . . . . . . . . . 31 Dnir un mot de passe root . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Activer les mots de passe masqus et les mots de passe MD5 . . . . . . . . . . . . 32 Administrer le nombre minimum de services ncessaires . . . . . . . . . . . . . . 33 3.6.1 3.6.2 Dsactivation de services dmon . . . . . . . . . . . . . . . . . . . . . . . . 33 Dsactivation dinetd ou de ses services . . . . . . . . . . . . . . . . . . . . 35

3.7

Installer le minimum de logiciels ncessaires . . . . . . . . . . . . . . . . . . . . . 35 3.7.1 Supprimer Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.8 4

Lire les listes de discussions Debian sur la scurit . . . . . . . . . . . . . . . . . . 38 39

Aprs linstallation 4.1 4.2

Sabonner la liste de diffusion Debian Security Announce . . . . . . . . . . . . . 39 Faire une mise jour de scurit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

TABLE DES MATIRES

iv

4.2.1 4.2.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9

Mise jour de scurit des bibliothques . . . . . . . . . . . . . . . . . . . 41 Mise jour de scurit du noyau . . . . . . . . . . . . . . . . . . . . . . . . 42

Changer le BIOS ( nouveau) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Attribuer un mot de passe LILO ou GRUB . . . . . . . . . . . . . . . . . . . . . . 43 Enlever le prompt root du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Interdire le dmarrage sur disquette . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Restreindre les accs aux consoles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Restreindre les redmarrages systme depuis la console . . . . . . . . . . . . . . . 47 Monter correctement les partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.9.1 4.9.2 Paramtrer /tmp en noexec . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Paramtrer /usr en lecture seule . . . . . . . . . . . . . . . . . . . . . . . . 49

4.10 Fournir des accs scuriss aux utilisateurs . . . . . . . . . . . . . . . . . . . . . . 49 4.10.1 Authentication utilisateur : PAM . . . . . . . . . . . . . . . . . . . . . . . 49 4.10.2 Restreindre lutilisation des ressources : le chier limits.conf . . . . . 52 4.10.3 Actions de connexion de lutilisateur : diter /etc/login.defs . . . . . 54 4.10.4 Restreindre le ftp : diter /etc/ftpusers . . . . . . . . . . . . . . . . . . 55 4.10.5 Utilisation de su . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.10.6 Utilisation de sudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.10.7 Dsactiver des accs dadministration distance . . . . . . . . . . . . . . . 56 4.10.8 Restriction des utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.10.9 Audit dutilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.10.10 Inspection des prols utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . 59 4.10.11 Positionner des umasks aux utilisateurs . . . . . . . . . . . . . . . . . . . . 59 4.10.12 Limiter ce que les utilisateurs peuvent voir et accder . . . . . . . . . . . . 60 4.10.13 Gnrer des mots de passe utilisateur . . . . . . . . . . . . . . . . . . . . . 61 4.10.14 Vrier les mots de passe utilisateur . . . . . . . . . . . . . . . . . . . . . . 62 4.10.15 Dconnecter les utilisateurs inactifs (idle) . . . . . . . . . . . . . . . . . . . 62 4.11 Utilisation de tcpwrappers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.12 Limportance des logs et des alertes . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.12.1 Utiliser et personnaliser logcheck . . . . . . . . . . . . . . . . . . . . . . . . 65 4.12.2 Congurer lendroit o les alertes sont envoyes . . . . . . . . . . . . . . . 66

TABLE DES MATIRES

4.12.3 Utilisation dun hte darchivage (loghost) . . . . . . . . . . . . . . . . . . 66 4.12.4 Permissions du chier darchivage . . . . . . . . . . . . . . . . . . . . . . . 67 4.13 Les utilitaires pour ajouter des rustines au noyau . . . . . . . . . . . . . . . . . . . 68 4.14 Se protger contre les dpassements de tampon . . . . . . . . . . . . . . . . . . . 70 4.14.1 Correctif du noyau de protection pour les dpassements de tampon . . . 71 4.14.2 Protection Libsafe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.14.3 Tester des programmes pour les dpassements . . . . . . . . . . . . . . . . 71 4.15 Scurisation des transferts de chiers . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.16 Limites et contrle des systmes de chiers . . . . . . . . . . . . . . . . . . . . . . 72 4.16.1 Utilisation de quotas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.16.2 Les attributs spciques du systme de chiers ext2 (chattr/lsattr) . . . . 73 4.16.3 Vrier lintgrit des systmes de chiers . . . . . . . . . . . . . . . . . . 74 4.16.4 Mise en place de la vrication setuid . . . . . . . . . . . . . . . . . . . . . 75 4.17 Scurisations des accs rseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.17.1 Conguration des options rseaux du noyau . . . . . . . . . . . . . . . . . 76 4.17.2 Congurer syncookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.17.3 Scurisation du rseau pendant lamorage . . . . . . . . . . . . . . . . . . 77 4.17.4 Conguration des fonctionnalits de pare-feu . . . . . . . . . . . . . . . . 81 4.17.5 Dsactiver les problmes dhtes weak-end . . . . . . . . . . . . . . . . . . 81 4.17.6 Protger contre les attaques ARP . . . . . . . . . . . . . . . . . . . . . . . . 83 4.18 Prendre un instantan (snapshot) du systme . . . . . . . . . . . . . . . . . . . . . 83 4.19 Autres recommandations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.19.1 Nutilisez pas de logiciels dpendant de svgalib . . . . . . . . . . . . . . . 85 5 Scuriser les services de votre systme 5.1 87

Scurisation de ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 5.1.1 5.1.2 5.1.3 Chrooter ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Clients ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Interdire les transferts de chiers . . . . . . . . . . . . . . . . . . . . . . . . 90

5.2 5.3

Scurisation de Squid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Scurisation FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

TABLE DES MATIRES

vi

5.4

Scurisation de laccs X Window System . . . . . . . . . . . . . . . . . . . . . . 92 5.4.1 Vriez votre gestionnaire dafchage . . . . . . . . . . . . . . . . . . . . . 94

5.5 5.6

Scurisation de laccs limpression (Le problme lpd et lprng) . . . . . . . . . . 94 Scurisation du dmon mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 5.6.1 5.6.2 5.6.3 Congurer un Nullmailer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Fournir un accs scuris aux botes lettres . . . . . . . . . . . . . . . . . 97 Rception du courrier dune manire sre. . . . . . . . . . . . . . . . . . . 98

5.7

Scurisation de BIND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 5.7.1 5.7.2 5.7.3 Conguration de Bind pour viter de mauvaises utilisations . . . . . . . . 99 Changer lutilisateur de BIND . . . . . . . . . . . . . . . . . . . . . . . . . 101 Chrooter le serveur de domaine . . . . . . . . . . . . . . . . . . . . . . . . 103

5.8

Scurisation dApache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 5.8.1 5.8.2 5.8.3 Dsactiver la publication de contenu sur le web par les utilisateurs . . . . 106 Permissions des chiers de log . . . . . . . . . . . . . . . . . . . . . . . . . 106 Fichiers web publis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

5.9

Scurisation de nger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

5.10 Paranoa gnralise du suid et du chroot . . . . . . . . . . . . . . . . . . . . . . . 107 5.10.1 Crer des environnements chroot automatiquement . . . . . . . . . . . . 108 5.11 Paranoa gnralise du mot de passe en texte clair . . . . . . . . . . . . . . . . . 109 5.12 Dsactivation du NIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 5.13 Scurisation des services RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 5.13.1 Dsactivation des services RPC . . . . . . . . . . . . . . . . . . . . . . . . . 110 5.13.2 Limiter laccs aux services RPC . . . . . . . . . . . . . . . . . . . . . . . . 110 5.14 Ajouter des capacits au pare-feu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 5.14.1 Firewaller le systme local . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 5.14.2 Utiliser un pare-feu pour protger dautres systmes . . . . . . . . . . . . 112 5.14.3 Mettre en place un pare-feu . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 6 Scurisation automatique dun systme Debian 6.1 6.2 121

Harden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Bastille Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

TABLE DES MATIRES

vii

Infrastructure de scurit Debian 7.1 7.2

125

Lquipe de scurit Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Alertes de scurit Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 7.2.1 7.2.2 Rfrences croises des failles . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Compatibilit CVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

7.3

Infrastructure de construction de scurit Debian . . . . . . . . . . . . . . . . . . . 128 7.3.1 Le guide du dveloppeur aux mises jour de scurit . . . . . . . . . . . . 129

7.4

La signature de paquet dans Debian . . . . . . . . . . . . . . . . . . . . . . . . . . 132 7.4.1 7.4.2 7.4.3 7.4.4 Le schma propos pour la vrication de paquet . . . . . . . . . . . . . . 132 Apt-secure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Schma alternatif de signature par paquet . . . . . . . . . . . . . . . . . . . 134 Alternative la vrication des versions de distribution . . . . . . . . . . 134 143

Outils de scurit dans Debian 8.1 8.2 8.3 8.4 8.5

Outils dvaluation des vulnrabilits distances . . . . . . . . . . . . . . . . . . 143 Outils pour parcourir le rseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Audits internes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Contrle du code source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Rseaux Privs Virtuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 8.5.1 Le tunnel point point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

8.6 8.7 8.8 8.9 9

Infrastructure de cls publiques (PKI) . . . . . . . . . . . . . . . . . . . . . . . . . 147 Infrastructure SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Outils antivirus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Agent GPG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 151

Avant la compromission 9.1

Maintenez votre systme scuris . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 9.1.1 9.1.2 9.1.3 9.1.4 9.1.5 Surveillance des failles de scurit . . . . . . . . . . . . . . . . . . . . . . . 151 Mettre jour le systme en permanence . . . . . . . . . . . . . . . . . . . . 152 vitez dutiliser la branche unstable . . . . . . . . . . . . . . . . . . . . . . 156 Support de la scurit pour la branche testing . . . . . . . . . . . . . . . . 156 Mises jour automatiques dans un systme Debian GNU/Linux . . . . . 157

TABLE DES MATIRES

viii

9.2 9.3

Faites des tests dintgrit priodiques . . . . . . . . . . . . . . . . . . . . . . . . . 158 Mise en place dun systme de dtection dintrusion . . . . . . . . . . . . . . . . . 159 9.3.1 9.3.2 Dtection dintrusion provenant du rseau . . . . . . . . . . . . . . . . . . 159 La dtection dintrusion fonde sur lhte . . . . . . . . . . . . . . . . . . . 160

9.4

viter les rootkits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 9.4.1 9.4.2 Loadable Kernel Modules (LKM) . . . . . . . . . . . . . . . . . . . . . . . . 160 Dtection des rootkits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

9.5

Ides gniales/paranoaques ce que vous pourriez faire . . . . . . . . . . . . . 162 9.5.1 Construction dun pot de miel . . . . . . . . . . . . . . . . . . . . . . . . . 164 165

10 Aprs la compromission (la rponse lincident)

10.1 Comportement gnral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 10.2 Copies de sauvegarde du systme . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 10.3 Contacter votre CERT local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 10.4 Analyse post mortem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 10.4.1 Analyse des programmes malveillants (malware) . . . . . . . . . . . . . . 168 11 Foire Aux Questions (FAQ) 171

11.1 La scurit dans le systme dexploitation Debian . . . . . . . . . . . . . . . . . . 171 11.1.1 Debian est-elle plus sre que X ? . . . . . . . . . . . . . . . . . . . . . . . . 171 11.1.2 De nombreux bogues Debian sont lists dans bugtraq, cela le rend il plus vulnrable ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 11.1.3 Debian possde-t-elle une certication touchant la scurit ? . . . . . . . 173 11.1.4 Existe-t-il un programme de durcissement pour Debian ? . . . . . . . . . . 173 11.1.5 Je veux fournir le service XYZ, lequel dois-je choisir ? . . . . . . . . . . . . 173 11.1.6 Comment scuriser davantage un service XYZ dans la Debian ? . . . . . . 174 11.1.7 Comment supprimer toutes les informations de version pour les services ? 174 11.1.8 Les paquets Debian sont-ils tous srs ? . . . . . . . . . . . . . . . . . . . . 174 11.1.9 Pourquoi certains chiers journaux/chiers de conguration sont-ils lisibles par tous les utilisateurs, est-ce que cest sr ? . . . . . . . . . . . . . 175 11.1.10 Pourquoi est-ce que /root/ (ou UserX) a 755 comme permissions ? . . . . 175 11.1.11 Aprs linstallation de grsec/dun pare-feu, jai commenc recevoir beaucoup de messages de console ! Comment est-ce que je les supprimer ? 175

TABLE DES MATIRES

ix

11.1.12 Les utilisateurs et les groupes du systme dexploitation . . . . . . . . . . 176 11.1.13 Pourquoi y a-t-il un nouveau groupe quand jajoute un nouvel utilisateur ? (ou pourquoi Debian attribue-t-elle un groupe chaque utilisateur ?)179 11.1.14 Question concernant les services et les ports ouverts . . . . . . . . . . . . . 180 11.1.15 Problmes courants de scurit . . . . . . . . . . . . . . . . . . . . . . . . . 182 11.1.16 Comment puis-je mettre en place un service pour mes utilisateurs sans leur donner un compte shell ? . . . . . . . . . . . . . . . . . . . . . . . . . . 183 11.2 Mon systme est vulnrable ! (En tes-vous certain ?) . . . . . . . . . . . . . . . . 184 11.2.1 Le scanneur X de vrication des failles indique que mon systme Debian est vulnrable ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 11.2.2 Jai vu une attaque dans les chiers journaux de mon systme. Est-ce que mon systme est compromis ? . . . . . . . . . . . . . . . . . . . . . . . . . . 184 11.2.3 Jai trouv dtranges lignes MARK dans mes journaux : est-ce que mon systme est compromis ? . . . . . . . . . . . . . . . . . . . . . . . . . . 184 11.2.4 Jai trouv des utilisateurs utilisant su dans mes journaux : mon systme est-il compromis ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 11.2.5 Jai trouv un possible SYN ooding dans mes journaux : mon systme est-il attaqu ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 11.2.6 Jai trouv des sessions root tranges dans mes journaux : mon systme est-il compromis ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 11.2.7 Jai souffert dune intrusion, que dois-je faire ? . . . . . . . . . . . . . . . . 186 11.2.8 Comment puis-je pister une attaque ? . . . . . . . . . . . . . . . . . . . . . 186 11.2.9 Le programme X dans Debian est vulnrable, que dois-je faire ? . . . . . . 187 11.2.10 Le numro de version pour un paquet indique que jutilise toujours une version vulnrable ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 11.2.11 Logiciels spciques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 11.3 Questions concernant lquipe de scurit Debian . . . . . . . . . . . . . . . . . . 187 11.3.1 Quest ce quune alerte de scurit Debian (Debian Security Advisory, DSA) ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 11.3.2 La signature des alertes Debian ne se vrie pas correctement ! . . . . . . 188 11.3.3 Comment la scurit est-elle gre chez Debian ? . . . . . . . . . . . . . . . 188 11.3.4 Pourquoi vous embtez-vous avec une vieille version de tel paquet ? . . . 188 11.3.5 Quelle est la rgle pour quun paquet x apparaisse sur security.debian.org ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

TABLE DES MATIRES

11.3.6 Le numro de version pour un paquet indique que jutilise toujours une version vulnrable ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 11.3.7 Comment est assure la scurit pour les versions testing et unstable ? . . 189 11.3.8 Je possde un ancienne version de Debian, est-elle supporte par lquipe de scurit Debian ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 11.3.9 Pourquoi ny a-t-il pas de miroirs ofciels de security.debian.org ? . . . . . 190 11.3.10 Jai vu la DSA 100 et la DSA 102, que sest-il pass avec la DSA 101 ? . . . 190 11.3.11 Comment joindre lquipe de scurit ? . . . . . . . . . . . . . . . . . . . . 190 11.3.12 Quelles diffrence existe-t-il entre security@debian.org et debiansecurity@lists.debian.org ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 11.3.13 Comment puis-je aider lquipe de scurit Debian ? . . . . . . . . . . . . 191 11.3.14 Qui compose lquipe de scurit ? . . . . . . . . . . . . . . . . . . . . . . . 191 11.3.15 Lquipe de scurit Debian vrie-t-elle chaque nouveau paquet dans Debian ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 11.3.16 Combien de temps faudra-t-il debian pour rsoudre la vulnrabilit XXXX ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 A La procdure de durcissement tape par tape B Liste des contrles de conguration. C Paramtrer un IDS autonome D Conguration dun pare-feu pont 193 197 201 205

D.1 Un pont fournissant des fonctionnalits de translations dadresse (NAT) et de pare-feu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 D.2 Un pont fournissant des fonctionnalits de pare-feu . . . . . . . . . . . . . . . . . 207 D.3 Rgles de base dIPtables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 E Exemple de script pour changer linstallation par dfaut de Bind. F Mise jour de scurit protge par un pare-feu G Environnement de chroot pour SSH 209 215 217

G.1 Utiliser libpam_chroot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 G.2 Crer lenvironnement automatiquement (la manire simple) . . . . . . . . . . . . 218

TABLE DES MATIRES

xi

G.3 Modier SSH pour activer la fonctionnalit de chroot . . . . . . . . . . . . . . . . 223 G.4 Environnement cr manuellement (la manire difcile) . . . . . . . . . . . . . . . 225 H Environnement de chroot pour Apache 231

H.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 H.1.1 Licence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 H.2 Installer le serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 H.3 Voir galement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236

TABLE DES MATIRES

xii

Chapitre 1

Introduction
Lune des choses les plus difciles dans lcriture de documents lis la scurit est que chaque cas est unique. Il faut prter attention deux choses : la menace que constitue lenvironnement et les besoins de scurit lis un site individuel, une machine ou un rseau. Par exemple, les exigences que lon a pour une utilisation familiale nont rien de comparable aux exigences que lon retrouve dans le rseau dune banque. Alors que dans le premier cas, lutilisateur aura affronter de simples scripts dattaque, le rseau dune banque sera, lui, sous la menace dattaques directes. De plus, la banque se doit de protger lexactitude des donnes de leurs clients. Il faudra donc que chaque utilisateur trouve le bon compromis entre la facilit dutilisation et la scurit pousse lextrme. Prenez conscience que cet ouvrage traite uniquement des questions lies aux logiciels. Le meilleur programme du monde ne pourra pas vous protger contre quelquun qui aura un accs physique la machine. Vous pouvez mettre votre machine sous votre bureau ou dans un bunker protg par une arme. Pourtant, un ordinateur de bureau avec une bonne conguration sera beaucoup plus sr (dun point de vue logiciel) quun ordinateur protg physiquement si son disque dur est truff de logiciels connus pour avoir des failles de scurit. Bien entendu, vous devez prendre en compte les deux aspects. Ce document donne simplement un aperu de ce quil est possible de faire pour accrotre la scurit de votre systme Debian GNU/Linux. Si vous avez dj lu des ouvrages traitant de la scurit sous Linux, vous trouverez des similitudes avec ce document. Ce manuel ne prtend pas tre lultime source dinformations laquelle vous devez vous rfrer. Il essaye seulement dadapter ces informations pour le systme Debian GNU/Linux. Dautres distributions procdent de manire diffrente pour certaines questions (le dmarrage de dmons est un exemple courant) ; vous trouverez dans cet ouvrage les lments propres aux procdures et aux outils de Debian.

1.1

Auteurs

Le responsable actuel de ce document est Javier Fernndez-Sanguino Pea (mailto:jfs@ debian.org). Veuillez lui envoyer vos commentaires, ajouts et suggestions et ils seront exa-

Chapitre 1. Introduction

mins pour une possible inclusion dans les prochaines versions de ce manuel. Ce manuel a t lanc en tant que HOWTO par Alexander Reelsen (mailto:ar@rhwd.de). Aprs sa publication sur lInternet, Javier Fernndez-Sanguino Pea (mailto:jfs@debian. org) la incorpor dans le Projet de Documentation Debian (http://www.debian.org/ doc). Un certain nombre de personnes ont contribu ce manuel (toutes les contributions sont listes dans le chier changelog), mais les personnes suivantes mritent une mention spciale car elles ont fourni des contributions signicatives (des sections, chapitres ou annexes complets) : Stefano Canepa Era Eriksson Carlo Perassi Alexandre Ratti Jaime Robles Yotam Rubin Frederic Schutz Pedro Zorzenon Neto Oohara Yuuma Davor Ocelic

1.2

O rcuprer ce manuel (et formats disponibles)

Vous pouvez tlcharger ou lire la dernire version du manuel de scurisation Debian sur le site du projet de documentation de Debian (http://www.debian.org/doc/manuals/ securing-debian-howto/). Si vous lisez une copie depuis un autre site, veuillez vrier la version dorigine au cas o elle fournirait des informations plus rcentes. Si vous lisez une traduction, veuillez vrier que la version laquelle se rfre cette traduction est la dernire version disponible. Si vous notez que la version est en retard, veuillez utiliser la version dorigine ou consultez le Journal des changements et historique page 6 pour voir ce qui a chang. Si vous dsirez obtenir une copie complte de ce manuel, vous pouvez tlcharger le document au format texte (http://www.debian.org/doc/manuals/securing-debian-howto/ securing-debian-howto.fr.txt) ou au format PDF (http://www.debian.org/doc/ manuals/securing-debian-howto/securing-debian-howto.fr.pdf) depuis le site du projet de documentation Debian. Ces versions peuvent tre plus utiles si vous avez lintention de copier le document vers un machine portable pour lecture hors ligne ou si vous voulez limprimer. Soyez prvenu que le manuel fait plus de deux cents pages et que certains des fragments de code, cause des outils de formatage utiliss, ne sont pas coups dans la version PDF et peuvent donc simprimer de faon incomplte. Le document est galement fourni aux formats texte, HTML et PDF dans le paquet harden-doc (http://packages.debian.org/harden-doc). Cependant, notez que le paquet peut ne pas tre tout fait jour par rapport au document fourni sur le site Debian (mais vous pouvez toujours utiliser le paquet source pour construire vous-mme une version jour). Vous pouvez galement vrier les changements introduits dans le document en consul-

Chapitre 1. Introduction

tant le gestionnaire de versions Subversion (http://svn.debian.org/viewsvn/ddp/ manuals/trunk/securing-howto/) de Debian.

1.3

Avis et ractions

Maintenant, la partie ofcielle. Pour linstant, cest moi (Alexander Reelsen) qui ai crit la plupart des paragraphes de ce manuel mais, mon avis, il ne faudrait pas que cela reste ainsi. Jai grandi et vcu avec les logiciels libres, cest une part de ma vie de tous les jours et, jespre, de la vtre aussi. Jencourage chacun menvoyer ses ractions, astuces, ajouts ou suggestions. Si vous pensez que vous pouvez vous occuper dune partie en particulier ou dun paragraphe, crivez au responsable du document. Cela sera apprci ! En particulier, si vous trouvez une section estampille FIXME , qui signie que les auteurs nont pas eu le temps ou les connaissances requises pour sen occuper, envoyez-leur un courrier immdiatement. Le thme de ce manuel fait clairement comprendre quil est important de tenir ce manuel jour ; vous pouvez apporter votre pierre ldice. Sil vous plat, aidez-nous.

1.4

Connaissances requises

Linstallation de Debian GNU/Linux nest pas trs difcile et vous avez sans doute t capable de linstaller. Si vous disposez dj de connaissances concernant Linux ou dautres systmes Unix et si vous tes quelque peu familier avec les problmes lmentaires de scurit, il vous sera plus facile de comprendre ce manuel, car ce document ne peut pas entrer dans tous les petits dtails (sans quoi cela aurait t un livre plutt quun manuel). Si vous ntes pas si familier que cela avec ces systmes, vous pouvez consulter tre conscient des problmes de scurit page 25 pour savoir o trouver des informations plus approfondies sur le sujet.

1.5

lments restant crire (FIXME/TODO)

Cette section dcrit toutes les choses corriger dans ce manuel. Certains paragraphes incluent des marques FIXME ou TODO dcrivant quel contenu est manquant (ou quel type de travail doit tre ralis). Le but de cette section est de dcrire toutes les choses qui devraient tre incluses lavenir dans le manuel ou les amliorations faire (ou quil serait intressant dajouter). Si vous pensez que vous pouvez apporter une contribution au contenu en corrigeant tout lment de cette liste (ou des annotations dans le texte lui-mme), veuillez contacter lauteur principal (Auteurs page 1). Dvelopper les informations sur la rponse aux incidents, peut-tre ajouter quelques ides drives du Guide de la scurit de Red Hat au chapitre sur la rponse aux incidents (http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/ security-guide/ch-response.html).

Chapitre 1. Introduction

crire sur les outils de surveillance distance (pour vrier la disponibilit du systme) tels que monit, daemontools et mon. Voir http://linux.oreillynet.com/pub/a/ linux/2002/05/09/sysadminguide.html. Envisager la rdaction dune section sur la construction dapplications orientes rseau pour Debian (avec des informations telles que le systme de base, equivs et FAI). Vrier si http://www.giac.org/practical/gsec/Chris_Koutras_GSEC.pdf na pas dinformations pertinentes non traites ici. Ajouter des informations sur la manire de congurer un portable avec Debian http:// www.giac.org/practical/gcux/Stephanie_Thomas_GCUX.pdf. Comment mettre en place un pare-feu en utilisant Debian GNU/Linux. La section sur les pare-feux concerne actuellement un systme isol (pas de protection dautres machines,. . .). Comment tester la conguration. Paramtrage dun serveur mandataire pare-feu avec Debian GNU/Linux et faire un tat des lieux des paquets fournissant des services proxy (tels que xfwp, ftp-proxy, redir, smtpd, dnrd, jftpgw, oops, pdnsd, perdition, transproxy, tsocks). Renvoi au manuel pour toute autre information. Considrer galement que zorp est maintenant disponible comme paquet Debian et quil sagit dun mandataire pare-feu (il existe galement des paquets Debian fournis par les auteurs). Informations sur la conguration des services avec le-rc. Vrier toutes les URLs et supprimer ou corriger celles qui ne sont plus disponibles. Ajouter des informations sur les substituts de serveurs typiques (disponibles dans Debian) qui fournissent des fonctionnalits restreintes. Par exemple : lpr local par CUPS (paquet) ? ; lrp distant par lpr ; Bind par dnrd/maradns ; Apache par dhttpd/thttpd/wn (tux ?) ; Exim/Sendmail par ssmtpd/smtpd/postx ; Squid par tinyproxy ; ftpd par oftpd/vsftpd ; etc. De plus amples informations concernant les rustines spcialises dans la scurit du noyau dans Debian, incluant celles montres ci-dessus et ajouter des informations spciques sur la faon dactiver ces rustines dans un systme Debian. Linux Intrusion Detection (kernel-patch-2.4-lids) ; Linux Trustees (paquet trustees) ; NSA Enhanced Linux (http://wiki.debian.org/SELinux) ; linux-patch-openswan. Prcisions sur larrt de certains services rseaux non ncessaires (outre inetd) ; ceci est en partie dans la procdure de consolidation mais pourrait tre largi un petit peu. Informations sur le renouvellement des mots de passe ; cest troitement li la politique mise en place. Politique de scurit et formation des utilisateurs. Davantage propos de tcpwrappers, et des wrappers en gnral ? hosts.equiv et dautres trous de scurit majeurs. Problmes avec les serveurs de partage de chiers tels que Samba et NFS ? suidmanager/dpkg-statoverrides.

Chapitre 1. Introduction

lpr et lprng. Dsactiver les outils GNOME qui utilisent IP. Parler de pam_chroot (voir http://lists.debian.org/debian-security/2002/ debian-security-200205/msg00011.html) et de son utilit pour restreindre les utilisateurs. Introduire les informations relatives http://online.securityfocus.com/ infocus/1575. Pdmenu, par exemple, est disponible dans Debian (alors que ash ne lest pas). Parler des services chroots , plus dinformations sur http://www.linuxfocus.org/ English/January2002/article225.shtml, http://www.nuclearelephant. com/papers/chroot.html et http://www.linuxsecurity.com/feature_ stories/feature_story-99.html. Parler des programmes pour faire des prisons chroot. compartment et chrootuid sont en attente dans incoming. Dautres (makejail, jailer) pourraient aussi tre prsents. Plus dinformations concernant les logiciels danalyse de journaux (i.e. logcheck, logwatch et logcolorise). Routage avanc (la politique de trac concerne la scurit). Restreindre ssh pour quil puisse uniquement excuter certaines commandes. Utilisation de dpkg-statoverride. Moyens srs de partager un graveur de CD parmi les utilisateurs. Moyens srs de fournir du son en rseau en plus des possibilits dafchage en rseau (pour que le son des clients X soit envoy sur le priphrique de son du serveur X). Scurisation des navigateurs Web. Congurer ftp au travers de ssh. Utilisation des systmes de chiers loopback chiffrs (crypts ?). Chiffrement entier du systme de chiers. Outils stganographiques. Congurer une autorit de cls publiques (PKA) pour une organisation. Utiliser LDAP pour grer les utilisateurs. Il y a un HOWTO sur ldap+kerberos pour Debian crit par Turbo Fredrikson et disponible http://www.bayour.com/LDAPv3-HOWTO. html. Comment enlever des informations non-essentielles sur les systmes de production tels que /usr/share/doc, /usr/share/man (oui, scurit par obscurit). Plus dinformations sur lcap bas sur le chier README des paquet (pas encore tout fait prsent, voir Bug #169465 (http://bugs.debian.org/cgi-bin/bugreport.cgi? bug=169465)) et partir de larticle de LWN : Kernel development (http://lwn.net/ 1999/1202/kernel.php3). Ajouter larticle de Colin sur la faon de congurer un environnement chroot pour un systme Sid complet (http://people.debian.org/~walters/chroot.html) Ajouter des informations sur lexcution de plusieurs senseurs snort dans un systme donn (vrier les rapports de bogues envoys snort). Ajouter des informations sur la mise en place dun pot de miel (honeypot) via le paquet honeyd). Dcrire la situation relativement FreeSwan (abandonn) et OpenSwan. La section VPN a besoin dtre rcrite. Ajouter une section spcique propos des bases de donnes, linstallation par dfaut et sur la faon de scuriser les accs.

Chapitre 1. Introduction

Ajouter une section sur lutilit des serveurs virtuels (Xen, Vserver, etc.) Expliquer comment utiliser plusieurs vricateurs dintgrit tel que aide, integrit ou samhain. La base est trs simple expliquer et permet de personnaliser la conguration par dfaut.

1.6
1.6.1

Journal des changements et historique


Version 3.14 (novembre 2008)

Changements par Javier Fernndez-Sanguino Pea Modier la section indiquant comment choisir un systme de chiers. ext3 est maintenant le systme de chiers par dfaut.

1.6.2

Version 3.13 (fvrier 2008)

Changements par Javier Fernndez-Sanguino Pea. Changement de lurl pointant sur Bastille Linux car le domaine a t achet par un cybersquatter (http://www.bastille-unix.org/press-release-newname.html). Correction des liens sur les vers Linux dnomms Ramen et Lion. Utilisation de linux-image dans les exemples la place de lancien paquet kernel-image. Corrections typographiques indiques par Francesco Poli.

1.6.3

Version 3.12 (aot 2007)

Changements par Javier Fernndez-Sanguino Pea. Mise jour des informations aux sujet des mises jour de scurit. Abandon du texte parlant de Tiger. Inclusion dinformations sur les outils update-notifier et adept (pour les stations) ainsi que debsecan. Ajout de quelques liens vers dautres outils disponibles. Diviser les applications coupe-feu selon les utilisateurs cibles et ajout de reier la liste des applications de coupe-feux pour postes de travail. Retrait des rfrences libsafe, un paquet retir du dpt de Debian en janvier 2006. Correction de lemplacement du chier de conguration de syslog. Remerciements John Talbut.

1.6.4

Version 3.11 (janvier 2007)

Changements par Javier Fernndez-Sanguino Pea. Merci Francesco Poli pour sa rvision tendue du document. Retrait de la plupart des rfrences la version Woody car elle nest plus disponible dans le dpt principal et que le support de scurit nest plus disponible pour celle-ci.

Chapitre 1. Introduction

Dcrire comment restreindre les utilisateurs pour quils ne puissent faire que des transferts de chiers. Ajout dune note au sujet de la dcision de dclassication de debian-private. Mise jour du lien sur les guides de gestion des incidents. Ajout dune note indiquant que les outils de dveloppement (compilateurs, etc.) ne sont plus installs par dfaut dans Etch. Correction des rfrences sur le serveur matre de scurit. Ajout de rfrences vers de la doc additionnelle pour APT-secure. Amlioration de la description des signatures APT. Mise en commentaire de points qui ne sont pas encore naliss au sujet des clefs publiques des miroirs ofciels. Correction du nom de lquipe de scurit Debian Testing (Debian Testing Security Team). Retrait dune rfrence Sarge dans un exemple. Mise jour de la section sur les antivirus : clamav est maintenant disponible depuis Etch. Mention de linstallateur pour f-prot. Retrait de toutes les rfrences freeswan, car il est dsuet. Description des problmes lis aux changements des rgles de rewall distance et quelques conseils en notes de bas de page. Mise jour des informations sur linstallation dIDS, mentionner BASE et la ncessit de mettre en place une base de donnes daudit. Rcriture de la section lancer bind par un utilisateur non root car ceci ne sapplique plus Bind9. Retrait de la rfrence au script init.d car les congurations doivent tre faites via /etc/default/. Retrait de la mthode dsute de mise en places des rgles diptables, car Woody nest plus maintenu. Retrait du conseil propos de LOG_UNKFAIL_ENAB. Il devrait tre positionn no (la valeur par dfaut). Ajout de plus dinformations au sujet de la mise jour du systme avec les outils de station de travail (y compris update-notier) et description de lutilisation daptitude pour mettre le systme jour. Noter aussi que dselect est dprci. Mise jour du contenu de la FAQ et retrait de paragraphes redondants. Relecture et mis jour de la section sur les analyses post mortem de malwares. Retrait ou correction de quelques liens morts. Corriger de nombreuses erreurs typographiques et grammaticales mentionnes par Francesco Poli.

1.6.5

Version 3.10 (novembre 2006)

Changements par Javier Fernndez-Sanguino Pea Ajout dexemples dutilisation de loption rdepends dapt-cache tel que suggr par Ozer Sarilar. Corriger lemplacement du manuel de lutilisateur de Squid aprs quOskar Pearson (son responsable) nous ait inform de son dplacement. Correction de linformation au sujet dumask. Cest dans logins.defs (et non pas limits.conf) que ceci peut tre congur pour toutes les connections. Prciser les valeurs par dfaut de

Chapitre 1. Introduction

Debian et suggrer des valeurs plus restrictive pour les utilisateurs et le superutilisateur. Merci Reinhard Tartler pour avoir dtect cette erreur.

1.6.6

Version 3.9 (octobre 2006)

Changements par Javier Fernndez-Sanguino Pea Ajout dinformations sur le suivi des vulnrabilits de scurit et ajout de rfrences propos du Debian Testing Security Tracker. . Ajout dinformations sur le support de la scurit pour Debian testing. Fixer un grand nombre derreurs typographiques partir de correctifs fournis par Simon Brandmair. Ajout dune section rdige par Max Attems sur comment dsactiver la console root avec initramfs. Retrait des rfrences queso. Signaler dans lintroduction que testing est maintenant supporte par lquipe de scurit de Debian.

1.6.7

Version 3.8 (juillet 2006)

Changements par Javier Fernndez-Sanguino Pea Rcriture de la mise en place de prisons (chroot) ssh pour clarier les diffrentes options disponibles. Merci Bruce Park avoir fait remarquer diverses erreurs dans cette annexe. Correction des appels de lsof tel que suggr par Christophe Sahut. Inclusion des correctifs dUwe Hermann corrigeant plusieurs erreurs typographiques. Correction dune erreur typographique souligne par Moritz Naumann dans une rfrence.

1.6.8

Version 3.7 (avril 2006)

Changements par Javier Fernndez-Sanguino Pea Ajout dune section sur les meilleures techniques de scurit recommandes par les dveloppeurs de Debian. Ajout de commentaires au script dun pare-feu par WhiteGhost.

1.6.9

Version 3.6 (mars 2006)

Changements par Javier Fernndez-Sanguino Pea Inclusion de correctifs de Thomas Sjgren qui expliquent que noexec fonctionne avec les nouveau noyaux. Ajout dinformations propos de la gestion des chiers temporaires ainsi que des liens vers de la documentation externe.

Chapitre 1. Introduction

Ajout dun lien vers le site de Dan Farmer et Wietse Venema sur lanalyse post mortem, tel que suggr par Freek Dijkstra. Ajout de quelques liens additionnels sur lanalyse post mortem. Correction de lURL du site italien du CERT. Merci Christoph Auer. Rutilisation des informations du wiki de Joey Hess sur secure apt et linsrer dans la section sur les infrastructures. Rvision des sections rfrant danciennes versions (Woody ou Potato). Correction de quelques problmes esthtiques avec les correctifs proposs par Simon Brandmair. Inclusion des correctifs de Carlo Perassi : les extraits de code sur les ACL sont dsuts, les rustines pour Openwall sont galement dsutes. Retrait des notes FIXME propos des noyaux 2.2 et 2.4, hap est dsuet (et absent du WNPP), retrait des rfrences Immunix (StackGuard appartient maintenant Novell) et rsolution dun FIXME propos de lutilisation de bsign et elfsign. Mise jour des rfrences au site Internet de SELinux an quelles pointent vers le wiki (prsentement la source dinformations la plus jour). Ajout de balises de chiers et faire une utilisation plus constante de lexpression somme MD5 avec un correctif de Jens Seidel. Correctifs de Joost van Baal amliorant les informations dans la section sur les pare-feux (lien vers le wiki au lieu de lister tous les paquets disponibles sur les pare-feux). Ferme le bogue #339865. Rvision de la FAQ sur les statistiques sur les vulnrabilits. Merci Carlos Galisteo de Cabo pour mentionner que linformation ntait plus jour. Citation dextraits du Contrat social Debian 1.1 au lieu de 1.0, tel que suggr par Francesco Poli.

1.6.10

Version 3.5 (novembre 2005)

Changements par Javier Fernndez-Sanguino Pea Note sur la section SSH que le chroot ne fonctionnera pas si vous utilisez loption nodev dans la partition et indication des derniers paquets ssh avec le correctif chroot, merci Lutz Broedel davoir signal ces problmes. Correction de typo remarque par Marcos Roberto Greiner (md5sum devrait tre sha1sum dans lextrait de code) Inclusion du correctif de Jens Seidel corrigeant un certain nombre de noms de paquets et de typos. Lgre mise jour de la section doutils, suppression des outils plus disponibles et ajout de nouveaux outils. Rcriture de parties de la section lie lendroit o trouver ce document et quels formats sont disponibles (le site web fournit une version PDF). Note galement sur le fait que les copies sur dautres sites et les traductions peuvent tre dsutes (la plupart des liens fournis par Google pour le manuel sur dautres sites sont vraiment obsoltes).

Chapitre 1. Introduction

10

1.6.11

Version 3.4 (aot-septembre 2005)

Changements par Javier Fernndez-Sanguino Pea Amlioration des renforcements de scurit post-installation lis la conguration du noyau pour la protection au niveau rseau avec un chier sysctl.conf fourni par Will Moy. Amlioration de la section gdm, grce Simon Brandmair. Corrections de typo de Frdric Bothamy et Simon Brandmair. Amliorations des sections post-installation lies la faon de gnrer les sommes MD5 (ou SHA-1) des binaires pour vrication priodique. Mise jour des sections post-installation concernant la conguration checksecurity (qui tait obsolte).

1.6.12

Version 3.3 (juin 2005)

Changements par Javier Fernndez-Sanguino Pea Ajout dun extrait de code pour utiliser grep-available pour gnrer la liste des paquets dpendant de Perl. Comme demand dans #302470. Rcriture de la section sur les services rseau (quels sont les services installs et comment les dsactiver). Ajout de plus dinformations sur la section de dploiement des pots de miel mentionnant des paquets Debian utiles.

1.6.13

Version 3.2 (mars 2005)

Changements par Javier Fernndez-Sanguino Pea Extension de la section sur les limites de la conguration de PAM. Ajout dinformations sur la faon dutiliser pam_chroot pour openssh (bas sur le README de pam_chroot). Correction de problmes mineurs signals par Dan Jacobson. Mise jour des informations sur les correctifs du noyau bases sur un correctif de Carlo Perassi et galement en ajoutant des notes sur les programmes obsoltes et les nouveaux correctifs de noyau disponibles (Adamantix). Inclusion dun correctif de Simon Brandmair qui corrige une phrase lie aux checs de connexion dans un terminal. Ajout de Mozilla/Thunderbird aux agents GPG valides comme suggr par Kapolnai Richard. Expansion de la section sur les mises jour de scurit en mentionnant les mises jour de bibliothques et de noyau et sur la faon de dtecter quand les services doivent tre redmarrs. Rcriture de la section sur les pare-feu, dplacement vers le bas des informations qui sappliquent Woody et expansion des autres sections incluant des informations sur la faon de mettre en place manuellement le pare-feu (avec un exemple de script) et sur la faon de tester la conguration du pare-feu.

Chapitre 1. Introduction

11

Ajout dinformations prparatoires pour la version 3.1 de Debian. Ajout dinformations plus dtailles sur les mises jour du noyau, particulirement destines ceux qui ont utilis lancien systme dinstallation. Ajout dune petite section sur la version 0.6 dapt exprimentale qui fournit des vrications de signature de paquets. Dplacement de lancien contenu dans la section et galement ajout dun pointeur vers les changements raliss dans aptitude. Corrections de typos signals par Frdric Bothamy.

1.6.14

Version 3.1 (janvier 2005)

Changements par Javier Fernndez-Sanguino Pea Ajout de clarication sur /usr en lecture seule avec un correctif de Joost van Baal Application dun correctif de Jens Seidel corrigeant plusieurs typos. FreeSWAN est mort, longue vie OpenSWAN. Ajout dinformations sur la restrictions daccs aux services RPC (quand ils ne peuvent pas tre dsactivs), galement inclusion dun correctif fourni par Aarre Laakso. Mise jour du script apt-check-sigs daj. Application du correctif de Carlo Perassi corrigeant des URL. Application du correctif de Davor Ocelic corrigeant beaucoup derreurs, de typos, URL, erreurs de grammaire et FIXME. Ajout galement de plusieurs informations supplmentaires pour certaines sections. Rcriture de la section sur laudit utilisateur, mise en vidence de lutilisation de script qui na pas certains des problmes associs lhistorique du shell.

1.6.15

Version 3.0 (dcembre 2004)

Modications par Javier Fernndez-Sanguino Pea Rcriture des informations sur laudit utilisateur et inclusion dexemples sur la faon dutiliser script.

1.6.16

Version 2.99 (mars 2004)

Modications par Javier Fernndez-Sanguino Pea Ajout dinformations sur des rfrences dans la compatibilit entre DSA et CVE. Ajout dinformations sur apt 0.6 (apt-secure intgr dans experimental) Correction de lemplacement du HOWTO Chroot des dmons comme suggr par Shuying Wang. Modication de la ligne APACHECTL dans lexemple de chroot Apache (mme si elle nest pas du tout utilis) comme suggr par Leonard Norrgard. Ajout dune note concernant les attaques de liens durs ( hardlink ) si les partitions ne sont pas mises en place correctement.

Chapitre 1. Introduction

12

Ajout de certaines tapes manquantes pour excuter bind comme named ainsi que fourni par Jeffrey Prosa. Ajout de notes propos de lobsolescence de Nessus et de Snort dans Woody et disponibilit de paquets rtroports. Ajout dun chapitre concernant des vrications de test dintgrit priodiques. Clarication de ltat de testing concernant les mises jour de scurit. (bogue Debian n 233955) Ajout dinformations concernant les contenus attendus dans securetty (comme cest spcique au noyau). Ajout de pointeur pour snoopylogger (bogue Debian n 179409) Ajout dune rfrence sur guarddog (bogue Debian n 170710) apt-ftparchive est dans apt-utils, pas dans apt (merci Emmanuel Chantreau pour lavoir signal). Suppression de jvirus de la liste des antivirus.

1.6.17

Version 2.98 (dcembre 2003)

Modications par Javier Fernndez-Sanguino Pea Correction de lURL comme suggr par Frank Lichtenheld. Correction dune typo PermitRootLogin comme suggr par Stefan Lindenau.

1.6.18

Version 2.97 (septembre 2003)

Modications par Javier Fernndez-Sanguino Pea Ajout des personnes qui ont contribu signicativement ce manuel (merci de menvoyer un message si vous pensez que vous devriez tre dans la liste et que vous ny tes pas). Ajout de quelques bla-bla propos des FIXME/TODOs Dplacement des informations sur les mises jour de scurit au dbut de la section comme suggr par Elliott Mitchell. Ajout de grsecurity la liste des kernel-patches pour la scurit, mais ajout dune note sur les problmes actuels avec celui-ci comme suggr par Elliott Mitchell. Suppression de loops (echo to all) dans le script de scurit rseau du noyau comme suggr par Elliott Mitchell. Ajout de plus dinformations ( jour) dans la section antivirus. Rcriture de la section de protection des dpassements de tampon et ajout de plus dinformations sur les correctifs pour le compilateur pour activer ce type de protection.

1.6.19

Version 2.96 (aot 2003)

Modications par Javier Fernndez-Sanguino Pea Suppression (et nouvel ajout) de lannexe sur Apache dans un chroot. Lannexe est maintenant sous une double licence.

Chapitre 1. Introduction

13

1.6.20

Version 2.95 (juin 2003)

Modications de Javier Fernndez-Sanguino Pea Corrections de fautes signales par Leonard Norrgard. Ajout dune section sur comment contacter le CERT pour la gestion dincident (#after-compromise) Plus dinformations sur la mise en place dun serveur mandataire ( proxy ) Squid Ajout dun pointeur et suppression dun FIXME grce Helge H. F. Correction dune faute (save_inactive) signale par Philippe Faes. Corrections de plusieurs fautes signales par Jaime Robles.

1.6.21

Version 2.94 (avril 2003)

Modications de Javier Fernndez-Sanguino Pea Selon les suggestions de Maciej Stachura, jai dvelopp la section sur les limitations pour les utilisateurs. Correction dune faute signale par Wolfgang Nolte. Correction de liens avec un correctif fourni par Ruben Leote Mendes. Ajout dun lien vers lexcellent document de David Wheeler dans la note sur le dcompte des failles de scurit.

1.6.22

Version 2.93 (mars 2003)

Modications de Frdric Schtz. Rcriture complte de la section sur les attributs ext2 (lsattr/chattr).

1.6.23

Version 2.92 (fvrier 2003)

Modications de Javier Fernndez-Sanguino Pea et Frdric Schtz. Fusion de la section 9.3 ( rustines noyau utiles ) dans la section 4.13 ( Ajouter des rustines noyau ) et ajout dun peu de contenu. Ajout de quelques TODOs supplmentaires Ajout dinformations sur la faon de vrier manuellement les mises jour et galement sur cron-apt. Ainsi Tiger nest plus vu comme le seul moyen de faire des vrications de mises jour automatiques. Lgre r-criture de la section sur lexcution des mises jour de scurit grce aux commentaires de Jean-Marc Ranger. Ajout dune note sur linstallation de Debian (qui suggrera lutilisateur une mise jour de scurit juste aprs linstallation)

Chapitre 1. Introduction

14

1.6.24

Version 2.91 (janvier/fvrier 2003)

Modications de Javier Fernndez-Sanguino Pea (moi). Ajout dune rustine propose par Frdric Schtz. Ajout de quelques rfrences supplmentaires sur les capacits grce Frdric. Modications lgres sur la section bind par lajout dune rfrence la documentation en ligne de BIND 9 et des rfrences corrections dans la premire zone (Hello Pedro !) Correction de la date du changelog nouvelle anne :-) Ajout dune rfrence aux articles de Colin pour les TODOs. Suppression de la rfrence danciennes rustines ssh+chroot. Rustines additionnelles de Carlo Perassi. Corrections de fautes (rcursif dans Bind est rcursion) signales par Maik Holtkamp.

1.6.25

Version 2.9 (dcembre 2002)

Modications de Javier Fernndez-Sanguino Pea (moi). Rorganisation des informations sur chroot (fusion de deux sections, cela navait pas de sens de les garder spares) Ajout de notes sur le chroot dApache fournies par Alexandre Ratti. Application de correctifs proposs par Guillermo Jover.

1.6.26

Version 2.8 (novembre 2002)

Modications de Javier Fernndez-Sanguino Pea (moi). Application des rustines de Carlo Perassi, corrections incluant : modication de la longueur de lignes, correction dURL, et correction de certains FIXMES ; Mise jour du contenu de la FAQ de lquipe en charge de la scurit de Debian ; Ajout dun lien vers la FAQ de lquipe en charge de la scurit de Debian et la rfrence du dveloppeur Debian, les sections dupliques pourraient (juste pourraient) tre supprimes lavenir ; Correction de la section daudit manuel avec les commentaires de Michal Zielinski ; Ajout dun lien vers des dictionnaires (contribution de Carlo Perassi).

1.6.27

Version 2.7 (octobre 2002)

Modications de Javier Fernndez-Sanguino Pea (moi). Note : jai encore beaucoup de modications qui sont stockes dans ma bote de rception (ce qui reprsente en ce moment environ 5 Mo) intgrer. Correction de quelques fautes qui ont t signales par Tuyen Dinh, Bartek Golenko et Daniel K. Gebhart ; Note concernant les rootkits utilisant /dev/kmem suggre par Laurent Bonnaud ; Correction de fautes et de FIXMEs par Carlo Perassi.

Chapitre 1. Introduction

15

1.6.28

Version 2.6 (septembre 2002)

Modications de Chris Tillman, tillman@voicetrak.com. Modications pour amliorer la grammaire/lorthographe ; s/host.deny/hosts.deny/ (1 endroit) ; Application de la rustine de Larry Holish (assez grosse, corrige de nombreux FIXMEs).

1.6.29

Version 2.5 (septembre 2002)

Modications de Javier Fernndez-Sanguino Pea (moi). Corrections de quelques fautes signales par Thiemo Nagel ; Ajout dune note de bas de page sur les conseils de Thiemo Nagel ; Corrige un lien URL.

1.6.30

Version 2.5 (aot 2002)

Modications de Javier Fernndez-Sanguino Pea (moi). Il y avait beaucoup de choses en attente dans ma bote de rception (depuis fvrier), je vais donc appeler ceci la version retour de lune de miel :) Application dune rustine fournie par Philipe Gaspar concernant Squid qui supprime aussi un FIXME ; Encore une autre FAQ concernant les bannires de services provenant de la liste de diffusion debian-security (discussion Telnet information dmarre le 26 juillet 2002) ; Ajout dune note concernant lutilisation des rfrences croises CVE dans llment de la FAQ En combien de temps lquipe en charge de la scurit de Debian. . . ; Ajout dune nouvelle section concernant les attaques ARP fournie par Arnaud Arhuman Assad ; Nouvelle FAQ concernant dmesg et le dmarrage en mode console par le noyau ; Petites parcelles dinformations sur les problmes de vrication de signature dans les paquets (il semble quils naient pas pass le stade de la version bta) ; Nouvelle FAQ concernant les faux positifs des outils dvaluation de vulnrabilit ; Ajout de nouvelles sections au chapitre qui contient des informations sur les signatures de paquet et rorganisation en un nouveau chapitre Infrastructure de scurit Debian ; Nouvel lment de FAQ concernant Debian et les autres distributions Linux ; Nouvelle section sur les clients de mail avec des fonctionnalits GPG/PGP dans le chapitre outils de scurit ; Clarication sur la manire dactiver les mots de passe MD5 dans Woody, ajout dun lien vers PAM ainsi quune note concernant la dnition de max dans PAM ; Ajout dune nouvelle annexe sur la faon de crer des environnements chroot (aprs avoir jou un peu avec makejail et avoir aussi corrig quelques-uns de ces bogues), intgration des informations dupliques dans toutes les annexes ;

Chapitre 1. Introduction

16

Ajout dinformations complmentaires concernant le chrootage de SSH et de son impact sur les transferts scuriss de chiers. Certaines informations ont t rcupres de la liste de diffusion debian-security (juin 2002 discussion :Secure le transfers) ; Nouvelles sections sur la mise jour automatique des systmes Debian ainsi que les dangers dutiliser la distribution testing ou la distribution unstable du point de vue des mises jour de scurit ; Nouvelle section, concernant la manire de rester jour avec la mise en place de rustines de scurit, dans la section avant la compromission ainsi quune nouvelle section sur la liste de diffusion debian-security-announce ; Ajouts dinformations sur la manire de gnrer automatiquement des mots de passe srs ; Nouvelle section relative la connexion des utilisateurs oisifs (idle) ; Rorganisation de la section scurisation du serveur de mail suite la discussion Secure/hardened/minimal Debian (ou Why is the base system the way it is ?) sur la liste de diffusion debian-security (mai 2002) ; Rorganisation de la section sur les paramtres rseaux du noyau, avec les informations fournies par la liste de diffusion debian-security (mai 2002, discussion syn ood attacked ?) et ajout dun nouvel lment de FAQ ; Nouvelle section sur la manire de vrier les mots de passe des utilisateurs et quels paquets utiliser pour cela ; Nouvelle section sur le chiffrement PPTP avec les clients Microsoft discut sur la liste de diffusion debian-security (avril 2002) ; Ajout dune nouvelle section dcrivant les problmes qui peuvent survenir lorsque lon attribue une adresse IP spcique pour chaque service, cette information a t crite daprs dune discussion qui sest tenue sur de la liste de diffusion de Bugtraq : Linux kernel 2.4 weak end host issue (discut prcdemment sur debian-security sous le titre arp problem ) (dmarr le 9 mai 2002 par Felix von Leitner) ; Ajout dinformations sur le protocole ssh version 2 ; Ajout de deux sous-sections relatives la conguration scurise dApache (cest--dire, les lments spciques Debian) ; Ajout dune nouvelle FAQ traitant des raw sockets , une relative /root, une partie traitant des groupes dutilisateurs et une autre traitant des permissions des journaux et des permission des chiers de conguration ; Ajout dun lien vers un bogue dans libpam-cracklib qui pourrait encore tre prsent. . . (besoin de vrier) ; Ajout de plus dinformations sur lanalyse avance (en attente de plus dinformation sur les outils dinspection de paquet tels que tcpflow) ; Transformation de Que dois-je faire concernant la compromission en une srie dnumrations et en y ajoutant plus dlments ; Ajout dinformations sur la conguration de Xscreensaver pour verrouiller lcran automatiquement aprs une dure donne ; Ajout dune note sur les utilitaires que vous ne devriez pas installer sur un systme. Inclusion dune note concernant Perl et pourquoi il ne peut pas tre retir facilement de la Debian. Lide vient de la lecture des documents dIntersect concernant le renforcement de Linux ; Ajout dinformations sur lvm et les systmes de chiers journaliss, ext3 est prconis. Les informations pourraient cependant y tre trop gnriques ; Ajout dune lien sur la version texte disponible en ligne ( vrier) ;

Chapitre 1. Introduction

17

Ajout dinformations additionnelles sur la protection par pare-feu dun systme local, faisant suite un commentaire dHubert Chan sur la liste de diffusion ; Ajout dinformations sur les limites de PAM et de liens vers les documents de Kurt Seifried (relatifs un de ses messages sur Bugtraq le 4 avril 2002 rpondant une personne qui dcouvrit une vulnrabilit dans Debian GNU/Linux relative linsufsance de ressources) ; Comme suggr par Julin Muoz, ajout de plus dinformation sur lumask par dfaut de la Debian et ce quoi un utilisateur peut accder si on lui a donn un shell sur le systme (effrayant, hein ?) ; Inclusion dune note dans la section du mot de passe BIOS suite un commentaire dAndreas Wohlfeld ; Inclusion des rustines fournies par Alfred E. Heggestad corrigeant beaucoup de fautes encore prsentes dans le document ; Ajout dun lien vers le changelog dans la section des remerciements comme beaucoup des personnes qui ont contribu sont listes ici (et pas l bas) ; Ajout de quelques notes complmentaires dans la section de chattr et dune nouvelle section aprs linstallation qui parle des images systmes. Les deux ides sont la contribution de Kurt Pomeroy ; Ajout dune nouvelle section aprs linstallation juste pour rappeler aux utilisateurs de changer la squence de dmarrage ; Ajout dlments restant faire (TODO) fournis par Korn Andras ; Ajout dun lien vers les recommandations du NIST sur la manire de scuriser un DNS. Cette contribution nous est fournie par Daniel Quinlan ; Ajout dun petit paragraphe concernant linfrastructure des certicats SSL de Debian ; Ajout des suggestions de Daniel Quinlan concernant lauthentication ssh et la conguration dexim en relai ; Ajout de plus dinformations concernant la scurisation de bind incluant les modications suggres par Daniel Quinlan et une annexe avec un script pour faire quelques uns des changements comments dans cette section ; Ajout dun lien vers un autre lment concernant le chrootage de Bind (a besoin dtre fusionn) ; Ajout dun une ligne de Cristian Ionescu-Idbohrn pour rcuprer les paquets avec support des tcpwrappers ; Ajout dun peu plus dinformations sur la conguration PAM par dfaut de la Debian ; Inclusion dune question dans la FAQ au sujet de lutilisation de PAM pour fournir des services sans comptes shell ; Dplacement de deux lments de la FAQ dans une autre section et ajout dune nouvelle FAQ concernant la dtection des attaques (et des systmes corrompus) ; Inclusion dinformations la conguration dun pont pare-feu (incluant une annexe dexemple). Merci Franois Bayart qui ma envoy a en mars ; Ajout dune FAQ concernant les MARK dheartbeat dans le syslogd daprs une question laquelle Noah Meyerhans et Alain Tesio ont rpondu en dcembre 2001 ; Inclusion dinformations sur la protection contre les dbordements de tampons ainsi que quelques informations sur les rustines du noyau ; Ajout dinformations supplmentaires (et rorganisation) de la section pare-feu. Mise jour des informations concernant le paquet iptables et les gnrateurs de pare-feu disponibles ; Rorganisation des informations concernant la vrication des journaux, dplacement des

Chapitre 1. Introduction

18

informations de logcheck sur la dtection dintrusion machine vers cette section ; Ajout dinformations sur la manire de prparer un paquet statique pour bind dans loptique dun chrootage (non test) ; Ajout dun lment de FAQ concernant certains serveurs/services spciques (pourrait tre dvelopp avec quelques unes des recommandations de la liste de diffusion debiansecurity) ; Ajout dinformations sur les services RPC (et quand ils sont ncessaires) ; Ajout de plus dinformations sur les possibilit damlioration (et ce que fait lcap). Y a-til une bonne documentation sur ce sujet ? Je nai trouv aucune documentation sur mon noyau 2.4 ; Correction de fautes.

1.6.31

Version 2.4

Modications de Javier Fernndez-Sanguino Pea. Rcriture dune partie de la section BIOS.

1.6.32

Version 2.3

Modications de Javier Fernndez-Sanguino Pea. Encadrement de la plupart des emplacements de chiers par la balise le ; Correction de fautes rapportes par Edi Stojicevi ; Lgre modication de la section des outils daudit distant ; Ajout dlments faire (todo) ; Ajout dinformations concernant les imprimantes et du chier de conguration de cups (tir dune discussion sur debian-security) ; Ajout dune rustine soumise par Jesus Climent concernant laccs dutilisateurs valides du systme proftpd quand il est congur en serveur anonyme ; Petite modication aux schmas de partitionnement dans le cas particulier des serveurs de mails ; Ajout du livre Hacking Linux Exposed la section des livres ; Correction dune faute de frappe sur un rpertoire rapporte par Eduardo Prez Ureta ; Correction dune coquille dans /etc/ssh dans la liste de contrle signale par Edi Stojicevi.

1.6.33

Version 2.3

Modications de Javier Fernndez-Sanguino Pea. Correction de lemplacement du chier de conguration de dpkg ; Suppression dAlexander des informations sur les contacts ; Ajout dune autre adresse mail ; Correction de ladresse mail dAlexander (mme si elle est commente) ; Correction de lemplacement des cls de versions (merci Pedro Zorzenon pour avoir relev cette erreur).

Chapitre 1. Introduction

19

1.6.34

Version 2.2

Modications de Javier Fernndez-Sanguino Pea. Corrections de fautes, merci Jamin W. Collins pour ces corrections ; Ajout dune rfrence la page de manuel dapt-extracttemplate (documentation sur la conguration de APT : :ExtractTemplate) ; Ajout dune section concernant la limitation de SSH. Informations bases sur celles qui ont t postes par Mark Janssen, Christian G. Warden et Emmanuel Lacour sur la liste de diffusion debian-security ; Ajout dinformations sur les logiciels antivirus. Ajout dune FAQ : journaux de su provenant du fait que cron fonctionne en tant que root.

1.6.35

Version 2.1

Modications de Javier Fernndez-Sanguino Pea. Modications du FIXME de lshell, merci Oohara Yuuma ; Ajout dun paquet sXid et retrait du commentaire tant donn quil est disponible ; De nombreuses fautes releves par Oohara Yuuma ont t corriges ; ACID est maintenant disponible dans Debian (dans le paquet acidlab) ; Liens de LinuxSecurity corrigs (merci Dave Wreski de nous lavoir signal).

1.6.36

Version 2.0

Modications de Javier Fernndez-Sanguino Pea. Je voulais passer 2.0 quand tous les FIXME auraient t supprims mais jai manqu de numro dans la srie 1.9X :( Transformation du HOWTO en Manuel (maintenant je peux dire RTFM !) ; Ajout dinformations concernant les tcp wrappers et Debian (maintenant plusieurs services sont compils avec le support adquat ; ainsi ceci nest plus un problme dinetd) ; Clarication des informations sur la dsactivation des services pour la rendre plus cohrente (les infos sur rpc se rfrent toujours update-rc.d) ; Ajout dune petite note sur lprn ; Ajout de quelques infos sur les serveurs corrompus (toujours trs approximatif) ; Corrections des fautes signales par Mark Bucciarelli ; Ajout dtapes supplmentaires sur la rcupration des mots de passe lorsque ladministrateur a paramtr paranoid-mode=on ; Ajout dinformations pour paramtrer paranoid-mode=on lorsque lon se connecte en mode console ; Nouveau paragraphe pour prsenter la conguration des services ; Rorganisation de la section Aprs linstallation an de permettre une lecture plus aise du document ; Informations sur la manire de paramtrer des pare-feux avec linstallation standard de Debian 3.0 (paquet iptables) ;

Chapitre 1. Introduction

20

Petit paragraphe dtaillant pourquoi linstallation par le rseau nest pas une bonne ide et comment on peut lviter en utilisant les outils Debian ; Petit paragraphe sur un article de lIEEE qui souligne limportance dune application rapide des rustines ; Annexe sur la manire de paramtrer une machine snort Debian, bas sur ce que Vladimir a envoy la liste de diffusion debian-security (le 3 septembre 2001) ; Information sur la manire dont est congure logcheck dans Debian et comment il peut tre utilis pour paramtrer HIDS ; Informations sur les comptes utilisateurs et sur les analyses de prols ; Inclusion de la conguration de apt.conf pour un /usr en lecture seule ; copi partir du courrier dOlaf Meeuwissen envoy la liste de diffusion debian-security ; Nouvelle section sur le VPN qui contient quelques liens ainsi que les paquets disponibles dans Debian (besoin de contenu concernant linstallation de VPN et les problmes spciques Debian) bas sur les courriers de Jaroslaw Tabor et Samuli Suonpaa posts sur la liste de diffusion debian-security ; Petite note concernant quelques programmes pour construire automatiquement des prisons chrootes ; Nouveau sujet de FAQ concernant identd daprs une discussion sur la liste de diffusion debian-security (fvrier 2002, commenc par Johannes Weiss) ; Nouveau sujet de FAQ concernant inetd daprs une discussion sur la liste de diffusion debian-security (fvrier 2002) ; Note dintroduction sur rcconf dans la section dsactivation de services ; Diverses approches concernant le LKM. Remerciements Philipe Gaspar ; Ajouts de liens vers les documents du CERT et les ressources Couterpane.

1.6.37

Version 1.99

Modications de Javier Fernndez-Sanguino Pea. Ajout dun nouveau sujet de FAQ concernant le temps de raction avoir pour corriger les failles de scurit ; Rorganisation des sections de la FAQ ; Dbut dune section concernant les pare-feux dans Debian GNU/Linux (pourrait tre un peu largi) ; Corrections de fautes signales par Matt Kraai ; Correction sur les informations DNS ; Ajout dinformations sur whisker et nbtscan la section audit ; Correction dURL errones.

1.6.38

Version 1.98

Modications de Javier Fernndez-Sanguino Pea. Ajout dune nouvelle section concernant lutilisation de la Debian GNU/Linux pour raliser des audits ;

Chapitre 1. Introduction

21

Ajout dinfos concernant le dmon nger depuis la liste de diffusion debian-security.

1.6.39

Version 1.97

Modications de Javier Fernndez-Sanguino Pea. Correction du lien pour Linux Trustees ; Correction de fautes (rustines dOohara Yuuma et Pedro Zorzenon).

1.6.40

Version 1.96

Modications de Javier Fernndez-Sanguino Pea. Rorganisation de la section installation et suppression de services et ajout de nouvelles notes ; Ajout de quelques notes concernant lutilisation doutils tels que les outils de dtection dintrusion ; Ajout dun chapitre concernant la signature de paquets.

1.6.41

Version 1.95

Modications de Javier Fernndez-Sanguino Pea. Ajout de notes concernant la scurit de Squid envoyes par Philipe Gaspar ; Correction de liens rootkit. Merci Philipe Gaspar.

1.6.42

Version 1.94

Modications de Javier Fernndez-Sanguino Pea. Ajout de quelques notes concernant Apache et Lpr/lpng ; Ajout dinformations concernant les partitions noexec et readonly ; Rcriture de la manire dont les utilisateurs peuvent aider aux problmes lis la scurit Debian (sujet dune FAQ).

1.6.43

Version 1.93

Modications de Javier Fernndez-Sanguino Pea. Correction de lemplacement du programme mail ; Ajout de nouveaux sujets la FAQ.

Chapitre 1. Introduction

22

1.6.44

Version 1.92

Modications de Javier Fernndez-Sanguino Pea. Ajout dune petite section sur la manire dont Debian soccupe de la scurit ; Clarication sur les mots de passe MD5 (merci rocky ) ; Ajout dinformations concernant le renforcement de X par Stephen van Egmond ; Ajout de nouveaux sujets la FAQ.

1.6.45

Version 1.91

Modications de Javier Fernndez-Sanguino Pea. Ajout dinformations dtailles envoyes par Yotam Rubin ; Ajout de renseignements sur la manire de mettre en place un honeynet en utilisant Debian GNU/Linux ; Ajout de TODOS supplmentaires ; Correction de nouvelles fautes (merci Yotam !).

1.6.46

Version 1.9

Modications de Javier Fernndez-Sanguino Pea. Ajout dune rustine pour corriger des fautes dorthographe et nouvelles informations (contributions de Yotam Rubin) ; Ajout de liens vers dautres documents en ligne (et hors ligne) tous deux gurant dans la section (voir tre conscient des problmes de scurit page 25) ; Ajout dinformations sur la conguration doptions de Bind pour restreindre laccs au serveur DNS ; Ajout dinformations sur la consolidation automatique dun systme Debian (par rfrence aux paquets harden et bastille) ; Suppression de quelques TODOs termins et ajout de nouveaux.

1.6.47

Version 1.8

Modications de Javier Fernndez-Sanguino Pea. Ajout de la liste des utilisateurs et des groupes standard, donne par Joey Hess la liste de discussion debian-security ; Ajout dinformations sur les rootkits LKM (Loadable Kernel Modules (LKM) page 160) avec la contribution de Philipe Gaspar ; Ajout dinformations sur Proftp avec la contribution dEmmanuel Lacour ; Rajout de lannexe pense-bte dEra Eriksson ; Ajout de nouveaux TODOs et retrait de ceux termins ; Ajout manuel des rustines dEra car elles nont pas t incluses dans la version prcdente.

Chapitre 1. Introduction

23

1.6.48

Version 1.7

Modications dEra Eriksson. Fautes de frappes et changements de formulation Modications de Javier Fernndez-Sanguino Pea. Changements mineurs de balises : supprimer les balises tt et les remplacer par les balises prgn/package.

1.6.49

Version 1.6

Modications de Javier Fernndez-Sanguino Pea. Ajout dun lien sur le document publi dans le DDP (devrait terme remplacer loriginal) ; Dmarrage dune mini-FAQ (qui devrait tre largie) avec quelques questions rcupres depuis ma boite de rception ; Ajout dinformations gnrales concernant la scurisation ; Ajout dun paragraphe au sujet de la distribution de courriers locaux ; Ajout de quelques liens vers dautres sources dinformations ; Ajout dinformations sur le service dimpression ; Ajout dune liste de tches sur le renforcement de la scurit ; Rorganisation des informations sur NIS et RPC ; Ajout de quelques notes lors de la lecture de ce document sur mon nouveau Visor :) Correction de certaines lignes mal formattes ; Fautes de frappes corriges ; Ajout dune ide Gniale/Paranoaque avec la contribution de Gaby Schilders.

1.6.50

Version 1.5

Modications de Josip Rodin et Javier Fernndez-Sanguino Pea. Ajout de paragraphes concernant BIND et quelques FIXMEs.

1.6.51

Version 1.4

Petit paragraphe sur la vrication des setuid Diffrents nettoyages mineurs ; Dcouverte sur la manire dutiliser sgml2txt -f pour la version txt.

1.6.52

Version 1.3

Ajout de mise jour de scurit aprs le paragraphe aprs installation ; Ajout dun paragraphe proftpd ;

Chapitre 1. Introduction

24

Cette fois, quelque chose concernant XDM a rellement t crit. Dsol pour la dernire fois.

1.6.53

Version 1.2

Beaucoup de corrections grammaticales de James Treacy, nouveau paragraphe XDM.

1.6.54

Version 1.1

Corrections de fautes de frappes, divers ajouts.

1.6.55

Version 1.0

Premire publication.

1.7

Remerciements

Alexander Reelsen qui a crit le document original. Javier Fernndez-Sanguino qui a ajout des informations au document original. Robert van der Meulen pour les paragraphes sur les quotas ainsi que de nombreuses bonnes ides. Ethan Benson qui a corrig le paragraphe sur PAM et qui a eu quelques ides de qualit. Dariusz Puchalak qui a contribu aux informations de plusieurs chapitres. Gaby Schilders qui a eu une ide Gniale/Paranoaque sympathique. Era Eriksson qui a limin les fautes de langage et qui a contribu lannexe pense-bte . Philipe Gaspar qui a crit les informations concernant LKM. Yotam Rubin qui a contribu des correctifs pour de nombreuses fautes de frappe ainsi que les informations lies aux versions de Bind et aux mots de passe MD5. >Franois Bayart pour lannexe dcrivant la mise en place dun pont pare-feu. Joey Hess qui rdigea la section dcrivant comment Secure Apt fonctionne dans le wiki de Debian (http://wiki.debian.org/SecureApt). Martin F. Krafft qui ajouta quelques informations dans son blog propos de la vrication des empreintes digitales (ngerprint) et qui furent rutilises dans la section sur Secure Apt. Francesco Poli qui t une rvision approfondie du manuel et fournit un grand nombre de rapports de bogue et de correctifs typographiques qui ont amlior et aid mettre jour le document. Toutes les personnes qui mont suggr des amliorations qui furent ventuellement incluses ici (voir Journal des changements et historique page 6). Tous ceux qui mont encourag (Alexander) crire ce HOWTO (qui devint plus tard ce manuel). Tout le projet Debian.

25

Chapitre 2

Avant de commencer
2.1 Que voulez-vous faire de votre systme ?

Scuriser un systme Debian nest pas diffrent de la scurisation dun autre systme. An de procder correctement, vous devez tout dabord dcider quelle en sera lutilisation. Ensuite, vous devez penser aux tches prendre en compte si vous dsirez rellement scuriser votre systme. Vous constaterez que ce manuel va du dbut la n, c.--d. que vous trouverez des informations sur les tches raliser avant, pendant et aprs linstallation de votre systme Debian. Les tches peuvent tre dcoupes comme ceci : Dcider quels sont les services dont vous avez besoin et vous limiter ceux-l. Ceci inclut la dsactivation ou la dsinstallation des services indsirables et lajout de ltres de type pare-feu ou de tcpwrappers. Limiter les utilisateurs et les permissions sur votre systme. Consolider les services disponibles ; ainsi, mme en cas dintrusion, limpact sur votre systme sera minimis. Utiliser des outils appropris pour garantir quune utilisation non autorise sera dtecte et que vous pourrez prendre des mesures adquates.

2.2

tre conscient des problmes de scurit

Ce manuel nexplique pas pourquoi certains problmes sont considrs comme des risques pour la scurit. Toutefois, vous pourriez dsirer avoir une meilleure vision de la scurit sur les systmes Unix et plus particulirement le systme Linux. Prenez le temps de lire les documentations relatives la scurit an que, confront diffrents choix, vous puissiez prendre des dcisions claires. Debian GNU/Linux est base sur le noyau Linux ; aussi, la plupart des informations concernant Linux, venant dautres distributions ou dUNIX en gnral, peuvent tre appliques (mme si les outils utiliss ou les programmes disponibles diffrent). Quelques documents pratiques :

Chapitre 2. Avant de commencer

26

Le Linux Security HOWTO (http://www.tldp.org/HOWTO/Security-HOWTO.html) (aussi disponible sur LinuxSecurity (http://www.linuxsecurity.com/docs/LDP/ Security-HOWTO.html)) est une des meilleures rfrences concernant la scurit Linux. Le Security Quick-Start HOWTO for Linux (http://www.linuxsecurity.com/docs/ LDP/Security-Quickstart-HOWTO/) est galement une trs bonne base pour les utilisateurs nophytes (aussi bien de Linux quen matire de scurit). Le Linux Security Administrators Guide (http://seifried.org/lasg/) est un guide complet qui englobe tous les problmes de scurit Linux, de la scurit du noyau jusquaux VPN. Veuillez noter quil na pas t mis jour depuis 2001, mais certaines informations peuvent encore tre pertinentes. 1 Dans Securing and Optimizing Linux : RedHat Edition (http://www.tldp.org/links/ p_books.html#securing_linux) vous pouvez trouver un document similaire ce manuel, mais destin Red Hat ; certaines questions ne sont pas spciques cette distribution et peuvent sappliquer Debian. Un autre document reli Red Hat est EAL3 Evaluated Conguration Guide for Red Hat Enterprise (http://ltp.sourceforge.net/docs/ RHEL-EAL3-Configuration-Guide.pdf). IntersectAlliance a publi des documents qui peuvent tre utiliss comme ches de rfrence sur la manire de consolider les serveurs Linux (et leurs services) ; ils sont disponibles sur leur site (http://www.intersectalliance.com/projects/index.html). Pour les administrateurs rseaux, une bonne rfrence pour btir un rseau scuris est le Securing your Domain HOWTO (http://www.linuxsecurity.com/docs/LDP/ Securing-Domain-HOWTO/). Si vous voulez valuer le programme que vous allez utiliser (ou en crer de nouveaux) vous devriez lire le Secure Programs HOWTO (http://www.tldp.org/HOWTO/ Secure-Programs-HOWTO.html) (le document de rfrence est disponible http:// www.dwheeler.com/secure-programs/, il inclut des prsentations et des confrences de lauteur, David Wheeler). Si vous pensez installer un pare-feu, vous devriez lire le Firewall HOWTO (http://www. tldp.org/HOWTO/Firewall-HOWTO.html) et le IPCHAINS HOWTO (http://www. tldp.org/HOWTO/IPCHAINS-HOWTO.html) (pour les noyaux antrieurs au 2.4). Finalement, une bonne che de rfrence avoir sous la main est le Linux Security ReferenceCard (http://www.linuxsecurity.com/docs/QuickRefCard.pdf). Dans tous les cas, vous trouverez plus dinformations concernant les services expliqus ici (NFS, NIS, SMB. . .) dans les nombreux HOWTO du Projet de Documentation Linux (http: //www.tldp.org/). Certains dentre eux discutent de la scurit dun service donn, donc noubliez pas de jeter un il l-dessus galement. Les documents HOWTO du Projet de documentation Linux sont disponibles dans Debian GNU/Linux via linstallation des paquets doc-linux-text (version texte) ou doc-linux-html (version HTML). Aprs linstallation, ces documents seront respectivement disponibles dans les rpertoires /usr/share/doc/HOWTO/en-txt et /usr/share /doc/HOWTO/en-html.
1 Il a t remplac un moment donn par le Linux Security Knowledge Base . Cette documentation est galement disponible dans Debian via le paquet lksb. Il est nouveau de retour en tant que le Lasg.

Chapitre 2. Avant de commencer

27

Autres livres Linux recommands : Maximum Linux Security : A Hackers Guide to Protecting Your Linux Server and Network. Anonymous. Paperback - 829 pages. Sams Publishing. ISBN : 0672313413. July 1999. Linux Security By John S. Flowers. New Riders ; ISBN : 0735700354 March 1999. Hacking Linux Exposed (http://www.linux.org/books/ISBN_0072127732.html) par Brian Hatch. McGraw-Hill Higher Education. ISBN 0072127732. April, 2001 Livres divers (qui se rapportent des questions gnrales concernant UNIX et la scurit, pas spciques Linux) : Practical Unix and Internet Security (3rd Edition) (http://www.oreilly.com/ catalog/9780596003234/) Garnkel, Simpson, et Schwartz ; OReilly Associates ; ISBN13 : 978-0-596-00323-4 ; 986pp ; 2003. Firewalls and Internet Security Cheswick, William R. and Bellovin, Steven M. ; AddisonWesley ; 1994 ; ISBN 0-201-63357-4 ; 320pp. Quelques sites Web utiles pour se tenir inform des questions de scurit : NIST Security Guidelines (http://csrc.nist.gov/fasp/index.html). Security Focus (http://www.securityfocus.com), le serveur qui hberge la base de donnes des vulnrabilits Bugtraq ainsi que ses listes de discussions. Il fournit galement des informations gnrales sur la scurit ainsi que des actualits et des rapports. Linux Security (http://www.linuxsecurity.com/). Informations gnrales concernant la scurit Linux (outils, actualits, etc.). Le plus utile est la page de documentation principale (http://www.linuxsecurity.com/resources/documentation-1.html). Linux rewall and security site (http://www.linux-firewall-tools.com/linux/). Informations gnrales concernant les pare-feu Linux et les outils pour les contrler et les administrer.

2.3

Comment Debian gre la scurit ?

Tout comme vous avez une vue gnrale de la scurit dans Debian GNU/Linux, vous devez connatre les diffrents problmes auxquels Debian sattaque an de fournir un systme scuris : Les problmes Debian sont toujours traits ouvertement, mme ceux lis la scurit. Les problmes de scurit sont abords ouvertement sur la liste de discussions debian-security. Les bulletins de scurit Debian (DSA - Debian Security Advisories) sont envoys sur des listes de discussions publiques (internes et externes) et publis sur des serveurs publics. Tel que dclar dans le Contrat social Debian (http://www.debian.org/social_ contract) : Nous ne dissimuleront pas les problmes. Nous garderons la totalit de notre base de donnes des rapports de bogues ouverte au public en tout temps. Les rapports que les utilisateurs remplissent en ligne seront rapidement rendu visibles aux autres. Debian suit les problmes de scurit de trs prs. Lquipe de la scurit consulte les sources lies la scurit, la plus importante tant Bugtraq (http://www.securityfocus.com/

Chapitre 2. Avant de commencer

28

cgi-bin/vulns.pl), la recherche de paquets possdant des problmes de scurit et qui pourraient tre inclus dans Debian. Les mises jour lies la scurit sont la premire priorit. Lorsquun problme survient dans un paquet Debian, la mise jour est ralise aussi vite que possible et elle est intgre dans nos versions stable, testing et unstable pour toutes les architectures. Les informations concernant la scurit sont centralises en un point unique, http:// security.debian.org/. Debian essaie toujours damliorer la scurit globale de la distribution en lanant de nouveaux projets, comme les vrications automatiques des signatures de paquets. Debian fournit de nombreux outils lis la scurit pour ladministration systme et la surveillance. Les dveloppeurs essayent de lier troitement ces outils la distribution de faon crer une suite doutils destine rendre effectives les rgles locales de scurit. Les outils disponibles sont : vricateurs dintgrit, outils daudit, outils de consolidation, outils pour pare-feu, outils de dtection dintrusion, etc. Les responsables de paquets sont avertis des problmes de scurit. Ceci conduit de nombreuses installations de service scuris par dfaut ; cela peut parfois imposer certaines restrictions une utilisation normale. Toutefois, Debian essaie dquilibrer les problmes de scurit et la facilit dadministration : par exemple, les programmes ne sont pas installs en mode dsactiv (comme cest le cas avec la famille des systmes dexploitation BSD). Dans tous les cas, quelques problmes spciaux, tels les programmes setuid, sont abords par la Charte Debian (http://www.debian.org/doc/debian-policy/).

En publiant des informations de scurit spciques Debian et en compltant dautres documents dinformations sur la scurit relatifs Debian (voir tre conscient des problmes de scurit page 25), ce document a pour but de favoriser des installations de systmes beaucoup mieux scurises.

29

Chapitre 3

Avant et pendant linstallation


3.1 Choisir un mot de passe pour le BIOS

Avant dinstaller un systme dexploitation sur votre ordinateur, crez un mot de passe pour le BIOS. Aprs linstallation (une fois que vous avez rendu possible un dmarrage partir du disque dur), retournez dans le BIOS et changez la squence de dmarrage an de rendre impossible le dmarrage partir dune disquette, dun cdrom ou de tout autre priphrique. Sinon un pirate na besoin que dun accs physique et dune disquette de dmarrage pour accder au systme complet. Dsactiver le dmarrage sans mot de passe est une solution encore meilleure. Ceci peut tre trs efcace pour un serveur car il nest pas redmarr trs souvent. Linconvnient de cette mthode est que le redmarrage ncessite lintervention dune personne, ce qui peut poser des problmes si la machine nest pas facilement accessible. Remarque : certains BIOS ont des mots de passe par dfaut bien connus et des applications existent galement pour rcuprer les mots de passe du BIOS. Corollaire : ne dpendez pas de cette mesure pour scuriser laccs console du systme.

3.2
3.2.1

Partitionner le systme
Choisir un schma de partitionnement intelligent

Un schma de partitionnement intelligent dpend de lutilisation de la machine. Une bonne rgle est dtre assez large avec vos partitions et de faire attention aux facteurs suivants : Une arborescence de rpertoires modiables par un utilisateur, telles que /home, /tmp et /var/tmp, doit tre sur une partition distincte. Cela rduit le risque quun dni de service provoqu par un utilisateur ne remplisse votre point de montage / rendant ainsi votre systme inutilisable (Note : ce nest pas strictement vrai car il existe toujours un espace rserv lutilisateur root quun utilisateur normal ne pourra pas remplir) et cela empche les

Chapitre 3. Avant et pendant linstallation

30

attaques de liens durs (hardlinks). 1 Toute partition qui peut uctuer, par exemple /var (surtout /var/log) devrait tre galement sur une partition distincte. Sur un systme Debian, vous devriez crer /var un petit peu plus grand que la normale car les paquets tlchargs (le cache dapt) sont stocks dans /var/cache/apt/archives. Toute partition o vous voulez installer des logiciels ne faisant pas partie de la distribution devrait tre sur une partition distincte. Selon le standard sur la hirarchie des chiers (FHS), cest /opt ou /usr/local. Si ce sont des partitions distinctes, elles ne seront pas effaces si vous devez rinstaller Debian. Dun point de vue scurit, il est bien dessayer de mettre les donnes statiques sur une partition et de monter celle-ci en lecture seule. Encore mieux, mettre les donnes sur un priphrique en lecture seule. Voir ci-dessous pour plus dinformations. Dans le cas dun serveur de courriers, il est important davoir une partition spare pour le rpertoire des courriers (spool). Les utilisateurs distants (soit consciemment, soit inconsciemment) peuvent remplir le rpertoire des courriers (/var/mail ou /var/spool/mail). Si le rpertoire est sur une partition spare, cette situation ne rendra pas le systme inutilisable. Sinon (si le rpertoire est sur la mme partition que /var), le systme pourrait avoir dimportants problmes : les entres des journaux ne seront pas cres, aucun paquet ne pourra plus tre install et certains programmes pourraient mme avoir des problmes tre excuts (sils utilisent /var/run). Pour les partitions pour lesquelles vous ne pouvez pas tre certain de la place ncessaire, installez Logical Volume Manager (lvm-common et les binaires ncessaires pour votre noyau qui peuvent tre soit lvm10, soit lvm6 ou encore lvm5). En utilisant lvm, vous pouvez crer des groupes de volumes rpartis sur plusieurs volumes physiques. Choisir les systmes de chiers appropris Pendant le partitionnement du systme, vous devez galement dcider du systme de chiers utiliser. Le systme de chiers choisi par dfaut pendant linstallation de Debian pour les partitions Linux est ext2. Cependant, il vous est recommand de choisir un systme de chiers journalis comme ext3, reiserfs, jfs ou xfs pour rduire les problmes dcoulant dun plantage systme dans les cas suivants : pour les portables pour tous les systmes de chiers installs. Ainsi, si votre batterie est vide inopinment ou si le systme se gle cause dun problme matriel (comme pour la conguration de X, ce qui est assez courant), vous tes moins susceptible de perdre des donnes pendant le redmarrage matriel.
1 Un trs bon exemple de ce type dattaque utilisant /tmp est dtaill dans Le programme mystrieusement exploitable de faon persistente (concours) (http://www.hackinglinuxexposed.com/articles/ 20031111.html) et Lexplication du programme mystrieusement exploitable de faon persistente (http:// www.hackinglinuxexposed.com/articles/20031214.html) (Notez que lincident est li Debian). Cest de manire basique une attaque dans laquel un utilisateur local cache profondment une application setuid vulnrable en faisant un lien dur sur celle-ci, vitant de manire efcace toute mise jour (ou suppression) du binaire lui-mme ralis par ladministrateur du systme. Dpkg a t rcemment corrig pour empcher cela (voir 225692 (http://bugs.debian.org/225692)), mais dautres binaires setuid (non contrls par le gestionnaire de paquets) sont risqus si les partitions ne sont pas mises en place correctement.

Chapitre 3. Avant et pendant linstallation

31

pour les systmes de production qui stockent des quantits importantes de donnes (comme les serveurs de courriers, les serveurs FTP, les systmes de chiers en rseau, etc.), cela est recommand pour ces partitions. Ainsi, en cas de plantage du systme, le serveur ncessitera moins de temps pour rcuprer et vrier le systme de chiers et une perte de donnes est moins probable. En laissant de ct les problmes de performance concernant les systmes de chiers journaliss (ceci pouvant parfois tourner la guerre de religion), il est habituellement mieux dutiliser le systme de chiers ext3. La raison pour cela est quil est rtro-compatible avec ext2, donc sil y a un quelconque problme avec la journalisation, vous pouvez la dsactiver et toujours avoir un systme de chiers fonctionnel. galement, si vous avez besoin de rcuprer le systme avec une disquette damorage (ou un cdrom), vous navez pas besoin dun noyau personnalis. Si le noyau est en version 2.4, le support ext3 est dj disponible, sil sagit dun noyau 2.2, vous pourrez amorcer le systme de chiers mme si vous naurez plus la capacit de journalisation. Si vous utilisez dautres systmes de chiers, vous trouverez que vous ne pourrez pas effectuer de rcupration moins davoir un noyau 2.4 avec les modules ncessaires inclus dans le noyau. Si vous tes bloqu avec un noyau 2.2 sur la disquette de sauvegarde, cela pourrait mme tre encore plus difcile daccder des partitions reiserfs ou xfs. Dans tous les cas, il est possible que lintgrit des donnes soit meilleure avec ext3 car il fait de la journalisation des donnes par chier alors que les autres ne font que de la journalisation par mta-donnes, voir http://lwn.net/2001/0802/a/ext3-modes.php3.

3.3

Ne pas se connecter lInternet tant que tout nest pas prt

Le systme ne devrait pas tre connect lInternet pendant linstallation. Ceci peut paratre stupide mais il faut savoir que linstallation par le rseau est une mthode dinstallation habituelle. tant donn que le systme va installer et activer les services immdiatement, si le systme est connect Internet et que les services ne sont pas congurs correctement, vous les exposez des attaques. Il faut noter galement que certains services peuvent avoir des trous de scurit qui nont pas encore t corrigs dans les paquets que vous utilisez pour linstallation. Cest gnralement vrai si vous installez depuis de vieux mdias (comme des cdroms). Dans ce cas, il se peut que votre systme soit compromis avant mme la n de linstallation ! tant donn que linstallation et les mises jours peuvent tre faites par Internet, vous pourriez penser que cest une bonne ide dutiliser cette caractristique lors de linstallation. Si le systme va tre connect directement lInternet (et pas protg par un pare-feu ou un NAT), il est plus judicieux de linstaller sans connexion Internet et dutiliser un miroir local de paquets contenant la fois les paquets sources et les mises jour de scurit. Vous pouvez mettre en place des miroirs de paquets en utilisant un autre systme connect lInternet et des outils spciques Debian (si cest un systme Debian) tels que apt-move ou apt-proxy ou tout autre outil de miroir pour fournir larchive aux systmes installs. Si vous ne pouvez pas faire cela, vous pouvez mettre en place des rgles de pare-feu pour limiter laccs au systme pendant la mise jour (voir Mise jour de scurit protge par un pare-feu page 215).

Chapitre 3. Avant et pendant linstallation

32

3.4

Dnir un mot de passe root

Dnir un bon mot de passe est la condition de base pour avoir un systme scuris. Consultez passwd(1) pour quelques conseils pour crer de bons mots de passe. Vous pouvez galement utiliser un gnrateur automatique de mots de passe pour faire cela pour vous (voir Gnrer des mots de passe utilisateur page 61). Beaucoup dinformations sur le choix de bons mots de passe peuvent tre trouves sur lInternet ; deux URL qui fournissent un bon rsum et une argumentation sont les How to : Pick a Safe Password (http://wolfram.org/writing/howto/password. html) de Eric Wolfram et Unix Password Security (http://www.ja.net/CERT/Belgers/ UNIX-password-security.html) de Walter Belgers.

3.5

Activer les mots de passe masqus et les mots de passe MD5

la n de linstallation, il vous sera demand si les mots de passe masqus doivent tre activs. Rpondez oui cette question ; ainsi les mots de passe seront stocks dans le chier /etc /shadow. Seul lutilisateur root et le groupe shadow peuvent lire ce chier, ainsi aucun utilisateur ne sera en mesure de rcuprer une copie de ce chier an de le passer par un programme craqueur de mots de passe. Vous pouvez basculer entre les mots de passe masqus et les mots de passes normaux nimporte quel moment en utilisant shadowconfig. Vous pouvez en lire davantage sur les mots de passes masqus dans le Shadow Password (http://www.linuxdoc.org/HOWTO/Shadow-Password-HOWTO.html) (/usr/share /doc/HOWTO/en-txt/Shadow-Password.txt.gz). De plus, linstallation utilise des mots de passe hachs avec MD5 par dfaut. Cest gnralement une bonne ide tant donn que cela permet des mots de passe plus longs et un meilleur chiffrement. MD5 permet des mots de passe de plus de 8 caractres. Cela peut, si cest utilis bon escient, rendre plus difciles les attaques par la force brute sur les mots de passe systme. Concernant les mots de passe MD5, il sagit de loption par dfaut quand vous installez le paquet passwd. Vous pouvez reconnatre les mots de passe MD5 dans le chier /etc/shadow par leur prxe $1$. Cela modie tous les chiers sous /etc/pam.d en modiant la ligne password en insrant md5 dans celle-ci : password required pam_unix.so md5 nullok obscure min=6 max=16

Si max nest pas positionn plus de 8, la modication ne sera pas utile du tout. Pour plus dinformations sur cela, lisez Authentication utilisateur : PAM page 49. Remarque : mme quand les mots de passe MD5 sont activs, la conguration par dfaut dans Debian ne modie pas la valeur prcdemment positionne de max.

Chapitre 3. Avant et pendant linstallation

33

3.6

Administrer le nombre minimum de services ncessaires

Les services sont des programmes tels que les serveurs ftp et les serveurs web. Puisquils doivent couter les connexions entrantes qui demandent le service, des ordinateurs externes peuvent se connecter au vtre. Les services sont parfois vulnrables (entendez par l quils peuvent tre compromis par certaines attaques) : ils crent des risques pour la scurit. Vous ne devriez pas installer les services dont vous navez pas besoin sur votre machine. Chaque service install peut introduire de nouveaux trous de scurit, peu vidents ou inconnus, sur votre ordinateur. Comme vous le savez sans doute dj, lorsque vous installez un service, le comportement par dfaut est de lactiver. Dans une installation Debian par dfaut, sans services installs, le nombre de services actifs est assez faible et il est mme plus faible quand on parle de services rseau. Dans une installation standard de Debian 3.1, les seuls services activs par dfaut sont OpenSSH, Exim (selon la faon dont vous lavez congur) et le portmapper RPC comme services rseau2 . Si vous navez pas choisi linstallation standard, mais que vous avez slectionn lintallation en mode expert, vous obtiendrez une installation avec aucun service rseau actif. Le portmapper RPC est install par dfaut car il est ncessaire pour beaucoup de services, par exemple NFS. Cependant, il peut facilement tre retir, voir Scurisation des services RPC page 109 pour plus dinformations sur la faon de scuriser ou de dsactiver les services RPC. Lorsque vous installez un nouveau service rseau (dmon) sur votre systme Debian GNU/Linux, il peut tre activ de deux faons : via le super dmon inetd (une ligne sera ajoute /etc/inetd.conf) ou via un programme qui sattache lui-mme aux interfaces rseaux. Ces programmes sont contrls via les chiers /etc/init.d qui sont appels lors du dmarrage au moyen du mcanisme System V (ou un autre) en utilisant des liens symboliques dans /etc/rc ?.d/* (pour plus dinformations sur la manire dont cela est fait, lire /usr /share/doc/sysvinit/README.runlevels.gz). Si vous voulez garder certains services tout en les utilisant rarement, utilisez les commandes update, par exemple update-inetd et update-rc.d pour les supprimer du processus de dmarrage. Pour plus dinformation sur la faon de dsactiver des services rseau, veuillez lire Dsactivation de services dmon de la prsente page. Si vous voulez changer le comportement par dfaut de dmarrage des services linstallation de leur paquet associ3 , utilisez policy-rc.d, veuillez lire /usr/share/doc/sysv-rcREADME.policy-rc.d.gz pour plus dinformations.

3.6.1

Dsactivation de services dmon

La dsactivation dun service dmon est relativement simple. Vous pouvez soit supprimer le paquet fournissant le programme pour ce service, soit supprimer ou renommer les liens de dmarrage sous /etc/rc${runlevel}.d/. Si vous les renommez, assurez-vous quils ne
Lempreinte dans Debian 3.0 et les versions prcdentes ntait pas aussi rduire car certains services inetd taient activs par dfaut. Les installations standard de Debian 2.2 installaient galement le serveur NFS ainsi que le serveur telnet 3 Cela est dsirable si vous mettez en placer un chroot de dveloppement, par exemple
2

Chapitre 3. Avant et pendant linstallation

34

commencent pas avec un S pour quils ne soient pas dmarrs par /etc/init.d/rc. Ne supprimez pas tous les liens disponibles ou le systme de gestion des paquets les rgnrera lors des mises jour du paquet, assurez-vous de laisser au moins un lien (typiquement, un lien K , kill ). Vous pouvez supprimer ces liens manuellement ou en utilisant update-rc.d (voir update-rc.d(8)). Vous pouvez, par exemple, dsactiver un service pour les niveaux dexcution multi-utilisateurs en faisant : update-rc.d stop nom_service XX 2 3 4 5 . Avec XX un nombre qui dtermine quand laction darrt pour ce service sera excute. Veuillez noter que, si vous nutilisez pas file-rc, update-rc.d -f service remove ne fonctionnera pas correctement car tous les liens sont supprims, lors dune rinstallation ou dune mise jour du paquet, ces liens seront rgnrs (ce qui nest probablement pas ce que vous voulez). Si vous pensez que cela nest pas intuitif, vous avez probablement raison (voir le bogue 67095 (http://bugs.debian.org/67095)). Daprs les pages de manuel : Quand des fichiers /etc/rcrunlevel.d/[SK]??nom existent dj, alors update-rc.d ne fait rien. Cest ainsi fait pour que ladministrateur systme puisse rarranger les liens -- condition quil en reste au moins un -- sans que sa configuration ne soit rcrite. Si vous utilisez file-rc, toutes les informations concernant le dmarrage des services sont gres par un chier de conguration commun et sont conserves mme si les paquets sont retirs du systme. Vous pouvez utiliser linterface texte (TUI, Text User Interface) fournie par sysv-rc-conf pour faire tous ces changements facilement (sysv-rc-conf fonctionne pour file-rc ainsi que pour les niveaux dexcution normaux de type System V). Vous pouvez galement trouver des interfaces graphiques similaires pour les systmes de bureau. Dautres mthodes (non recommandes) pour dsactiver les services sont : dplacer le chier script (/etc/init.d/nom_service) vers un autre nom (par exemple /etc/init.d/OFF.nom_service) ou le supprimer. Cependant, cela laissera des liens symboliques invalides sous /etc/rc${runlevel}.d/ et gnrera des messages derreur au dmarrage. supprimer le droit dexcution du chier /etc/init.d/nom_service. Cela gnrera galement des messages derreur au dmarrage. diter le script /etc/init.d/nom_service pour quil sarrte immdiatement lorsquil est excut (en ajoutant une ligne exit 0 au dbut ou en commentant la partie start-stop-daemon dans celui-ci). Cependant, les chiers sous /etc/init.d sont des chiers de conguration et ne devraient pas tre crass lors des mises jour de paquet si vous y avez fait des modications locales.

Chapitre 3. Avant et pendant linstallation

35

Contrairement dautres systmes dexploitation (UNIX), les services dans Debian ne peuvent pas tre dsactivs en modiant les chiers dans /etc/default/nom_service. FIXME : Ajouter des informations sur la gestion des dmons par le-rc

3.6.2

Dsactivation dinetd ou de ses services

Vous devriez vrier si vous avez vraiment besoin du dmon inetd de nos jours. Inetd a toujours t un moyen de compenser des dciences du noyau, mais celles-ci ont t corrigs dans les noyaux Linux modernes. Des possibilits de dni de service existent avec inetd (qui peut augmenter normment la charge de la machine) et de nombreuses personnes prfrent utiliser des dmons indpendants au lieu dappeler des services via inetd. Si vous voulez toujours excuter un service du genre dinetd, tournez-vous plutt vers un dmon inetd plus congurable comme xinetd, rlinetd ou openbsd-inetd. Vous devriez arrter tous les services Inetd non ncessaires sur votre systme, comme echo, chargen, discard, daytime, time, talk, ntalk et les r-services (services distance) (rsh, rlogin et rcp) qui sont considrs comme EXTRMEMENT dangereux (utilisez ssh la place). Vous pouvez dsactiver les services en modiant directement /etc/inetd.conf, mais Debian offre un meilleur moyen : update-inetd (qui commente les services de manire ce quils puissent tre facilement ractivs). Vous pouvez supprimer le dmon telnet en excutant cette commande pour changer le chier de conguration et redmarrer le dmon (dans ce cas le service est dsactiv) : /usr/sbin/update-inetd --disable telnet Si vous dsirez des services en attente, mais qui ncoutent pas toutes les adresses IP de votre hte, vous voudrez peut-tre utiliser des fonctions non documentes de inetd (remplacez des noms de service avec la syntaxe service@ip) ou utilisez un autre dmon tel que xinetd.

3.7

Installer le minimum de logiciels ncessaires

Debian est fournie avec une grande quantit de logiciels, par exemple, Debian 3.0 Woody inclut 6 ou 7 (selon les architectures) cdroms de logiciels et des milliers de paquets et la version 3.1 fournit environ 13 cdroms de logiciels. Avec autant de logiciels et mme si linstallation du systme de base est assez rduite 4 vous pourriez vous laisser entraner et installer plus de logiciels quil nest vraiment ncessaire sur votre systme.
4

Par exemple, dans Debian Woody, elle est denviron 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

Chapitre 3. Avant et pendant linstallation

36

Comme vous connaissez dj lutilit de votre systme (nest-ce pas ?), vous ne devez installer que les logiciels qui sont vraiment ncessaires pour quil fonctionne. Tout outil non ncessaire qui est install pourrait tre utilis par un utilisateur qui voudrait compromettre le systme ou par un intrus externe qui aurait obtenu un accs shell (ou par excution de code distance grce un service exploitable). La prsence, par exemple, doutils de dveloppement (un compilateur C) ou de langages interprts (comme perl mais voir ci-dessous , python, tcl, etc.) pourrait aider un attaquant compromettre le systme un peu plus : lui permettre de faire une escalade de privilge. Il est plus facile, par exemple, dexcuter des exploits locaux dans le systme si un dbogueur et un compilateur sont prts les compiler et les tester ! fournir des outils qui pourraient aider lattaquant utiliser le systme compromis comme une base dattaque contre dautres systmes 5 Bien sr, un intrus ayant un accs shell local peut tlcharger son propre jeu doutils et les excuter et le shell lui-mme peut tre utilis pour crer des programmes complexes. Supprimer les logiciels non ncessaires ne va pas aider prvenir le problme, mais cela rendra la tche un peu plus difcile pour un attaquant (et certains pourraient abandonner dans cette situation et aller chercher des cibles plus faciles). Ainsi, si vous laissez des outils sur un systme de production qui peuvent tre utiliss pour attaquer des systmes distance (voir Outils dvaluation des vulnrabilits distances page 143), vous pouvez vous attendre ce quun intrus les utilise galement sils sont disponibles. Veuillez noter quune installation par dfaut de Debian Sarge (i.e. une installation pour laquelle aucun paquet individuel nest slectionn) installera un certain nombre doutils de dveloppement qui ne sont habituellement pas ncessaires. Ceci rsulte du fait que certains paquets de dveloppement sont de priorit Standard. Si vous ne comptez pas faire de dveloppement, vous pouvez supprimer ces paquets de votre systme sans inquitude, ce qui devrait galement aider librer de la place : Paquet Taille ------------------------+-------gdb 2,766,822 gcc-3.3 1,570,284 dpkg-dev 166,800 libc6-dev 2,531,564 cpp-3.3 1,391,346 manpages-dev 1,081,408 flex 257,678 g++ 1,384 (Note : paquet virtuel) linux-kernel-headers 1,377,022 bin86 82,090
Beaucoup dintrusions ne sont faites que pour avoir accs aux ressources pour effectuer des activits illgales (attaques de dni de service, envoi de spams, serveurs FTP illicites, pollution de DNS, etc.) plus que pour obtenir des donnes condentielles du systme compromis.
5

Chapitre 3. Avant et pendant linstallation

37

cpp gcc g++-3.3 bison make libstdc++5-3.3-dev

29,446 4,896 (Note : paquet virtuel) 1,778,880 702,830 366,138 774,982

Ce problme sera probablement corrig dans les versions aprs Sarge, voir le bogue n301273 (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=301273) et le bogue n301138 (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=301138) pour consulter ltat actuel de ce problme. cause dun bogue dans le systme dinstallation, cela ne se produisait pas lors de linstallation de Debian 3.0 Woody.

3.7.1

Supprimer Perl

Vous devez prendre en compte quenlever perl peut ne pas tre trs simple (en fait, cela peut tre assez difcile) sur un systme Debian car il est utilis par beaucoup doutils systme. Le paquet perl-base est galement Priority : required (ce qui veut tout dire). Cest tout de mme faisable, mais vous ne pourrez pas excuter dapplications perl sur le systme ; vous devrez galement tromper le systme de gestion des paquets pour lui faire croire que le paquet perl-base est install mme si ce nest pas le cas. 6 Quels outils utilisent perl ? Vous pouvez vous en rendre compte vous-mme : $ for i in /bin/* /sbin/* /usr/bin/* /usr/sbin/*; do [ -f $i ] && { type=file $i | grep -il perl; [ -n "$type" ] && echo $i; }; done Ceux-ci incluent les outils suivants des paquets de priorit requis ou important : /usr/bin/chkdupexe du paquet util-linux. /usr/bin/replay du paquet bsdutils. /usr/sbin/cleanup-info du paquet dpkg. /usr/sbin/dpkg-divert du paquet dpkg. /usr/sbin/dpkg-statoverride du paquet dpkg. /usr/sbin/install-info du paquet dpkg. /usr/sbin/update-alternatives du paquet dpkg. /usr/sbin/update-rc.d du paquet sysvinit. /usr/bin/grog du paquet groff-base. /usr/sbin/adduser du paquet adduser. /usr/sbin/debconf-show du paquet debconf. /usr/sbin/deluser du paquet adduser. /usr/sbin/dpkg-preconfigure du paquet debconf. /usr/sbin/dpkg-reconfigure du paquet debconf. /usr/sbin/exigrep du paquet exim.
6

Vous pouvez crer (sur un autre systme) un paquet bidon avec equivs

Chapitre 3. Avant et pendant linstallation

38

/usr/sbin/eximconfig du paquet exim. /usr/sbin/eximstats du paquet exim. /usr/sbin/exim-upgrade-to-r3 du paquet exim. /usr/sbin/exiqsumm du paquet exim. /usr/sbin/keytab-lilo du paquet lilo. /usr/sbin/liloconfig du paquet lilo. /usr/sbin/lilo_find_mbr du paquet lilo. /usr/sbin/syslogd-listfiles du paquet sysklogd. /usr/sbin/syslog-facility du paquet sysklogd. /usr/sbin/update-inetd du paquet netbase.

Donc, sans Perl et moins que vous ne rcriviez ces outils en script shell, vous ne pourrez probablement pas grer de paquets (vous ne pourrez donc pas mettre jour le systme, ce qui nest pas une Bonne Chose). Si vous tes dtermin enlever Perl du systme de base Debian et si vous avez du temps libre, crez des rapports de bogue sur les paquets prcdents en incluant un remplacement (sous forme de correctif) crit en script shell aux outils ci-dessus. Si vous dsirez vrier quels paquets Debian dpendent de Perl, vous pouvez utiliser : $ grep-available -s Package,Priority -F Depends perl

3.8

Lire les listes de discussions Debian sur la scurit

Cela ne fait pas de mal de jeter un il la liste de discussion debian-security-announce, o des alertes et des solutions pour les paquets sont annoncs par lquipe scurit de Debian, ou sur la liste mailto:debian-security@lists.debian.org, o vous pouvez participer aux discussions propos de diffrentes choses lies la scurit Debian. De faon recevoir les alertes importantes concernant les mises jour lies la scurit, envoyez un courriel debian-security-announce-request@lists.debian.org (mailto: debian-security-announce-request@lists.debian.org) avec le mot subscribe dans le sujet du courrier. Vous pouvez galement vous inscrire cette liste via la page web sur http://www.debian.org/MailingLists/subscribe Cette liste de discussion a trs peu de trac, et en vous inscrivant vous serez tenu au courant des mises jour pour la distribution Debian. Cela vous permet de tlcharger rapidement les nouveaux paquets sans les bogues, ce qui est relativement important dans le maintien dun systme scuris. (Voir Faire une mise jour de scurit page 40 pour les dtails.)

39

Chapitre 4

Aprs linstallation
Une fois que le systme est install, vous pouvez encore en faire plus pour scuriser le systme ; certaines des tapes dcrites ci-dessous peuvent tre effectues. Bien sr, cela dpend vraiment de votre conguration, mais pour prvenir un accs physique, vous devriez lire Changer le BIOS ( nouveau) page 43, Attribuer un mot de passe LILO ou GRUB page 43, Enlever le prompt root du noyau page 44, Interdire le dmarrage sur disquette page 45, Restreindre les accs aux consoles page 46 et Restreindre les redmarrages systme depuis la console page 47. Avant de vous connecter tout rseau, particulirement sil sagit dun rseau public, vous devriez, au minimum, faire une mise jour de scurit (voir Faire une mise jour de scurit page suivante). Vous pouvez optionnellement faire un instantan de votre systme (voir Prendre un instantan (snapshot) du systme page 83).

4.1

Sabonner la liste de diffusion Debian Security Announce

Pour recevoir des informations sur les mises jour de scurit disponibles, vous devriez vous abonner la liste de diffusion debian-security-announce pour recevoir les bulletins de scurit de Debian1 . Voir Lquipe de scurit Debian page 125 pour plus dinformations sur la faon dont fonctionne lquipe de scurit Debian. Pour des informations sur linscription aux listes de diffusion Debian, lisez http://lists.debian.org. Les DSA sont signes par la signature de lquipe de scurit Debian qui peut tre rcupre sur http://security.debian.org. Vous devriez galement envisager de vous abonner la liste de diffusion debian-security (http://lists.debian.org/debian-security) pour des discussions gnrales sur les problmes de scurit dans le systme dexploitation Debian. Vous pourrez entrer en contact avec dautres administrateurs systme ainsi quavec des dveloppeurs Debian et des dveloppeurs amont doutils de scurit qui pourront rpondre vos questions et proposer leurs conseils.
1

Debian Security Advisories (DSA)

Chapitre 4. Aprs linstallation

40

FIXME : ajouter la cl ici galement ?

4.2

Faire une mise jour de scurit

Ds que de nouveaux bogues de scurit sont dcels dans les paquets, les responsables Debian et les auteurs amont les corrigent gnralement dans les journes ou les heures suivantes. Une fois le bogue rsolu, un nouveau paquet est fourni sur http://security.debian.org. Si vous installez une version de Debian, vous devez prendre en compte le fait quil a pu y avoir des mises jour de scurit depuis la parution, chaque fois aprs quun paquet a t dcouvert comme vulnrable. Ainsi, il a pu y avoir des rvisions mineures (il y en a eu sept dans la version Debian 2.2 Potato) incluant ces mises jour de paquets. Vous devez noter la date laquelle votre support amovible (si vous en utilisez un) a t cr et vrier le site de scurit pour savoir sil y a eu des mises jour de scurit. Sil y en a eu et que vous ne pouvez pas tlcharger les paquets du site de scurit sur un autre systme (vous ntes pas encore connect lInternet, nest-ce pas ?) avant de vous connecter au rseau, vous devriez envisager (si vous ntes pas protg par un pare-feu par exemple) dajouter des rgles de pare-feu pour que votre systme ne puisse se connecter qu security.debian.org et ensuite raliser la mise jour. Une conguration exemple est donne dans Mise jour de scurit protge par un pare-feu page 215. Remarque : Depuis Debian Woody 3.0, aprs linstallation, il vous est donn la possibilit dajouter les mises jour de scurit au systme. Si vous rpondez oui (yes) cette question, le systme dinstallation fera les dmarches ncessaires pour ajouter la source pour les mises jour de scurit aux sources de paquets et votre systme, si vous tes connect lInternet, tlchargera et installera toutes les mises jour de scurit qui auront pu tre produites depuis la cration de votre support. Si vous mettez niveau depuis une version prcdente de Debian ou si vous demandez au systme de ne pas faire cela, vous devriez suivre les tapes dcrites ici. Pour mettre jour manuellement le systme, insrez la ligne suivante dans votre sources.list et vous recevrez les mises jour de scurit automatiquement quand vous mettrez jour votre systme.

deb http://security.debian.org/debian-security stable/updates main contrib n Une fois ceci fait, vous pouvez utiliser soit apt, soit dselect pour les mises jour : Si vous voulez utiliser apt, excutez simplement (en tant que superutilisateur) : # apt-get update # apt-get upgrade Si vous voulez utiliser dselect, choisissez tout dabord [M]ise jour ([U]pdate), puis [I]nstaller ([I]nstall) et enn [C]ongurer ([C]ongure) pour mettre jour et installer les paquets.

Chapitre 4. Aprs linstallation

41

Si vous voulez, vous pouvez ajouter galement les lignes deb-src /etc/apt /sources.list. Voir apt(8) pour plus de dtails. Remarque : vous navez pas besoin dajouter la ligne suivante :

deb http://security.debian.org/debian-non-US stable/non-US main contrib non-

car security.debian.org est hberg un emplacement hors des tats-Unis et na donc pas darchive non-US spare.

4.2.1

Mise jour de scurit des bibliothques

Une fois que vous avez excut une mise jour de scurit, il se peut que vous deviez redmarrer certains des services systme. Si vous ne faites pas cela, certains services pourraient encore tre vulnrables aprs une mise jour de scurit. La raison pour cela est que les dmons qui fonctionnent avec une mise jour peuvent encore utiliser les anciennes bibliothques aprs la mise jour2 . Pour dtecter quels dmons peuvent devoir tre redmarrs, vous pouvez utiliser le programme checkrestart (disponible dans le paquet debian-goodies) ou utiliser cette ligne de commande (en tant que superutilisateur) :

# lsof | grep dpkg- | awk {print $1, $8} | sort +0

Certains paquets (comme libc6) feront cette vrication dans la phase de postinstallation pour un nombre limit de services, en particulier car une mise jour de bibliothques essentielles peut casser certaines applications (avant leur redmarrage)3 . Faire passer le systme en niveau dexcution 1 (utilisateur seul), puis ensuite au niveau dexcution 3 (multiutilisateur) devrait entraner le redmarrage de la plupart (si ce nest tous) des services systme. Mais cela nest pas une possibilit si vous excutez la mise jour de scurit depuis une connexion distante (comme ssh) car celle-ci serait alors interrompue. Apportez le plus grand soin lors des mises jour de scurit si vous les ralisez depuis une connexion distance comme ssh. Une procdure suggre pour une mise jour de scurit qui implique un redmarrage de services est de redmarrer le dmon SSH, puis immdiatement de tenter une nouvelle connexion ssh sans interrompre la prcdente. Si la connexion choue, annulez la mise jour et analysez le problme.
Bien que les bibliothques aient t supprimes du systme de chiers, aucun i-node ne sera nettoy tant quun programme a encore un descripteur de chier pointant dessus 3 Ceci sest produit, par exemple, dans la mise jour de la libc6 2.2.x la 2.3.x cause de problmes dauthentication NSS, voir http://lists.debian.org/debian-glibc/2003/debian-glibc-200303/msg00276. html.
2

Chapitre 4. Aprs linstallation

42

4.2.2

Mise jour de scurit du noyau

Assurez-vous tout dabord que votre noyau est gr par le systme de gestion des paquets. Si vous lavez install en utilisant le systme dinstallation de Debian 3.0 ou de versions prcdentes, votre noyau nest pas intgr dans le systme de gestion des paquets et pourrait tre obsolte. Vous pouvez facilement conrmer cela en excutant : $ dpkg -S readlink -f /vmlinuz kernel-image-2.4.27-2-686: /boot/vmlinuz-2.4.27-2-686 Si votre noyau nest pas gr, vous verrez un message indiquant que le gestionnaire de paquets na pas trouv le chier associ un paquet au lieu du message ci-dessus, qui dit que le chier associ au noyau actuellement en fonctionnement est fourni par le paquet kernel-image-2.4.27-2-686. Dans le premier cas, vous devrez installer manuellement un paquet dimage de noyau. Limage exacte du noyau que vous devez installer dpend de votre architecture et de votre version de noyau prfre. Une fois ceci fait, vous pourrez grer les mises jour de scurit du noyau comme pour tout autre paquet. Dans tous les cas, notez que les mises jour du noyau ne seront faites que pour la mme version du noyau que celui que vous utilisez, cest--dire que apt ne va pas mettre jour automatiquement votre noyau de la version 2.4 la version 2.6 (ou de la version 2.4.26 la version 2.4.274 ). Le systme dinstallation de la version 3.1 de Debian grera le noyau slectionn (2.4 ou 2.6) comme partie du systme de gestion des paquets. Vous pouvez vrier quels noyaux sont installs en excutant : $ COLUMNS=150 dpkg -l kernel-image* | awk $1 ~ /ii/ { print $0 } Pour voir si votre noyau doit tre mis jour, excutez : $ kernfile=readlink -f /vmlinuz $ kernel=dpkg -S $kernfile | awk -F : {print $1} $ apt-cache policy $kernel kernel-image-2.4.27-2-686: Installed: 2.4.27-9 Candidate: 2.4.27-9 Version Table: *** 2.4.27-9 0 (...) Si vous effectuez une mise jour de scurit incluant limage du noyau, vous devez redmarrer le systme pour que la mise jour de scurit soit utile. Sinon, vous utiliserez encore lancienne image de noyau (vulnrable).
4 Sauf si vous avez install un mtapaquet de noyau comme kernel-image-2.4-686 qui va toujours tirer la dernire rvision mineure de noyau pour une version de noyau et une architecture donne

Chapitre 4. Aprs linstallation

43

Si vous devez effectuer un redmarrage du systme ( cause dune mise jour du noyau), vous devriez vous assurer que le noyau dmarrera correctement et que la connectivit rseau sera restaure, particulirement si la mise jour de scurit est ralise depuis une connexion distance comme ssh. Pour le premier point, vous pouvez congurer le chargeur damorage pour redmarrer lancien noyau en cas dchec (pour des informations plus dtailles, veuillez lire (en anglais) Remotely rebooting Debian GNU/Linux machines (http: //www.debian-administration.org/?article=70)). Pour le second point, vous devez introduire un script de test de connectivit rseau qui vriera si le noyau a lanc le soussystme rseau correctement et qui redmarrera le systme si ce nest pas le cas5 . Ceci devrait viter des surprises dsagrables comme une mise jour du noyau en ralisant aprs un redmarrage quil na pas dtect ou congur le matriel rseau correctement et que vous devez parcourir une longue distance pour relancer nouveau le systme. Bien sr, avoir la console srie6 du systme connecte une console ou un serveur de terminal devrait galement aider dboguer distance les problmes de redmarrage.

4.3

Changer le BIOS ( nouveau)

Vous vous souvenez de Choisir un mot de passe pour le BIOS page 29 ? Et bien, vous devriez maintenant, une fois que vous navez plus besoin de dmarrer partir dun support amovible, changer la conguration par dfaut du BIOS pour quil ne puisse dmarrer que depuis le disque dur. Assurez-vous de ne pas perdre le mot de passe BIOS, sinon, en cas de dfaillance du disque dur, vous ne pourrez pas retourner dans le BIOS et modier la conguration pour le rcuprer en utilisant, par exemple, un cdrom. Un autre moyen moins scuris, mais plus pratique est de changer la conguration pour que le systme samorce depuis le disque dur et, si cela choue, dessayer un support amovible. propos, cest ainsi fait parce que la plupart des personnes nutilisent pas le mot de passe BIOS trs souvent ; il est facilement oubli.

4.4

Attribuer un mot de passe LILO ou GRUB

Nimporte qui peut obtenir facilement un shell root et changer vos mots de passe en entrant au prompt de boot <nom-de-votre-image-de-boot> init=/bin/sh. Aprs le changement du mot de passe et le redmarrage du systme, la personne a un accs root illimit et peut faire tout ce quelle veut sur le systme. Aprs ceci, vous naurez plus daccs root sur votre machine, tant donn que vous ne connatrez pas le mot de passe.
Un exemple dun tel script appel testnet (http://www.debian-administration.org/articles/ 70/testnet) est disponible dans larticle Remotely rebooting Debian GNU/Linux machines (http://www. debian-administration.org/?article=70). Un script de test de connectivit rseau plus labor est disponible dans larticle Testing network connectivity (http://www.debian-administration.org/?article= 128). 6 Congurer une console srie est en dehors du cadre de ce document, pour plus dinformations, veuillez lire le Serial HOWTO (http://www.tldp.org/HOWTO/Serial-HOWTO.html) et le Remote Serial Console HOWTO (http://www.tldp.org/HOWTO/Remote-Serial-Console-HOWTO/index.html).
5

Chapitre 4. Aprs linstallation

44

Pour tre sr que cela ne puisse pas se produire, vous devriez attribuer un mot de passe au dmarrage. Vous avez le choix entre un mot de passe global et un mot de passe pour une image donne. Pour LILO, vous avez besoin dditer le chier /etc/lilo.conf et ajouter les lignes password ainsi que restricted comme dans lexemple suivant. image=/boot/2.2.14-vmlinuz label=Linux read-only password=piratemoi restricted Puis, assurez-vous que le chier de conguration nest pas lisible par tout le monde pour empcher des utilisateurs locaux de lire le mot de passe. Une fois termin, relancez lilo. Omettre la ligne restricted entrane une attente de mot de passe, en dpit des paramtres passs LILO. Les permissions par dfaut pour le chier /etc/lilo.conf accordent root les droits de lecture et dcriture et permettent un accs en lecture seule pour le groupe de conguration de lilo.conf, savoir root. Si vous utilisez GRUB plutt que LILO, ditez /boot/grub/menu.lst et ajoutez les deux lignes suivantes en dbut (en remplaant, bien sr, piratemoi par le mot de passe dsir). Ceci empche les utilisateurs dditer les options de dmarrage. timeout 3 indique un dlai de 3 secondes avant que grub dmarre loption par dfaut. timeout 3 password piratemoi Pour aller plus loin dans le durcissement de lintgrit du mot de passe, vous pourriez entreposer le mot de passe sous une forme crypte. Lutilitaire grub-md5-crypt gnre un hachage de mot de passe qui est compatible avec lalgorithme du mot de passe grub (md5). Pour spcier grub quun mot de passe sous le format md5 va tre utilis, utilisez la directive suivante : timeout 3 password --md5 $1$bw0ez$tljnxxKLfMzmnDVaQWgjP0 Le paramtre md5 a t ajout pour informer grub deffectuer la procdure dauthentication md5. Le mot de passe fourni est la version md5 crypte de piratemoi. Lutilisation de la mthode md5 pour le mot de passe est prfrable la mthode prcdente dont le mot de passe est en clair. Plus dinformation concernant les mots de passe grub se trouvent dans le paquet grub-doc.

4.5

Enlever le prompt root du noyau

Note : Cela ne sapplique pas aux noyaux fournis par Debian 3.1.

Chapitre 4. Aprs linstallation

45

Les noyaux Linux 2.4 fournissent un moyen daccder un shell root lors de lamorage et qui sera prsent juste aprs le chargement du systme de chiers cramfs. Un message apparatra pour permettre ladministrateur dentrer un shell excutable avec des permissions root, ce shell peut tre utilis pour charger manuellement des modules quand la dtection automatique choue. Ce comportement est celui par dfaut pour linuxrc de linitrd. Le message suivant apparatra : Press ENTER to obtain a shell (waits 5 seconds) Pour supprimer ce comportement, vous devez changer /etc/mkinitrd/mkinitrd.conf et positionner : # DELAY Le nombre de secondes que le script linuxrc doit attendre # pour permettre lutilisateur de linterrompre avant que le # systme soit lanc DELAY=0 Puis, rgnrez votre image de ramdisk. Vous pouvez faire cela ainsi, par exemple : # cd /boot # mkinitrd -o initrd.img-2.4.18-k7 /lib/modules/2.4.18-k7 ou (de prfrence) : # dpkg-reconfigure -plow kernel-image-2.4.x-yz Notez que Debian 3.0 Woody permet aux utilisateurs dinstaller des noyaux 2.4 (en slectionnant des saveurs), cependant le noyau par dfaut est un 2.2 (except pour certaines architectures pour lesquelles le noyau 2.2 na pas t port). Si vous pensez que cela est un bogue, veuillez consulter le bogue n145244 (http://bugs.debian.org/145244) avant denvoyer un rapport de bogue.

4.6

Interdire le dmarrage sur disquette

Le MBR par dfaut dans Debian avant la version 2.2 ne fonctionnait pas comme le master boot record habituel et laissait un moyen facile de pntrer un systme : Appuyez sur shift lors du dmarrage et le prompt du MBR apparat Ensuite appuyez sur F, et votre systme dmarrera partir dune disquette de dmarrage. Ceci peut tre utilis pour obtenir un accs root au systme. Ce comportement peut tre modi en entrant :

Chapitre 4. Aprs linstallation

46

lilo -b /dev/hda Maintenant LILO est mis dans le MBR. Ceci peut tre fait galement en ajoutant boot=/dev/hda au chier lilo.conf. Il y a encore une autre solution qui dsactivera compltement le prompt MBR : install-mbr -i n /dev/hda Dun autre ct, cette porte drobe , dont de nombreuses personnes ne sont pas au courant, peut aussi bien vous sauver la peau si vous rencontrez de gros problmes, quelque soient les raisons, avec votre installation. FIXME vrier si cela touche rellement la 2.2 ou seulement la 2.1 ? INFO : Les disques de dmarrage de la 2.2 ninstalle pas le mbr, mais seulement LILO.

4.7

Restreindre les accs aux consoles

Certaines rgles de scurit peuvent forcer les administrateurs se connecter au systme via une console avec leur identiant/mot de passe puis devenir super utilisateur (avec su ou sudo). Cette rgle est applique sous Debian en ditant les chiers /etc/login.defs ou /etc/securetty lors de lutilisation de PAM. Dans : login.defs, ditez la variable CONSOLE qui dnit un chier ou une liste de terminaux sur lesquels la connexion de root est autorise ; securetty7 en ajoutant/supprimant les terminaux depuis lesquels les accs root seront autoriss. Si vous voulez nautoriser que les accs locaux en console, vous avez alors besoin de console, ttyX8 et vc/X (si vous utilisez des priphriques devfs), vous pouvez vouloir ajouter galement ttySX9 si vous utilisez une console srie pour laccs local (o X est un nombre entier, vous pouvez vouloir avoir plusieurs instances10 selon le nombre de consoles virtuelles que vous avez actives dans /etc/inittab11 ). Pour plus dinformations sur les priphriques de terminal, veuillez consulter le HOWTO Terminal Texte pour Linux (http://tldp.org/HOWTO/Text-Terminal-HOWTO-6.html) (ou la version franaise (http://www.traduc.org/docs/HOWTO/vf/Text-Terminal-HOWTO.html)). En cas dutilisation de PAM dautres changements au processus de login, qui peuvent inclure des restrictions aux utilisateurs et groupes certains moments, peuvent tre congurs dans /etc/pam.d/login. Une fonctionnalit intressante qui peut tre dsactive est la possibilit de se connecter avec des mots de passe nuls (vides). Cette fonctionnalit peut tre limite en enlevant nullok de la ligne :
Le chier /etc/securetty est un chier de conguration qui appartient au paquet login. Ou ttyvX pour GNU/FreeBSD et ttyE0 pour GNU/KNetBSD. 9 Ou comX pour GNU/Hurd, cuaaX pour GNU/FreeBSD et ttyXX pour GNU/KNetBSD. 10 La conguration par dfaut dans Woody inclut 12 consoles locales tty et vc, ainsi que le priphrique console, mais ne permet pas les connexions distantes. Dans Sarge, la conguration par dfaut fournit 64 consoles pour les consoles tty et vc. Vous pouvez les supprimer en toute scurit si vous nen utilisez pas tant. 11 Recherchez les appels getty.
8 7

Chapitre 4. Aprs linstallation

47

auth

required

pam_unix.so nullok

4.8

Restreindre les redmarrages systme depuis la console

Si votre systme dispose dun clavier attach, nimporte qui (oui, vraiment nimporte qui) peut redmarrer le systme avec celui-ci sans se connecter au systme. Cela peut en conformit ou non avec vos rgles de scurit. Si vous dsirez restreindre cela, vous devez vrier le chier /etc/inittab pour que la ligne incluant ctrlaltdel appelle shutdown avec le paramtre -a (rappelez-vous dexcuter init q aprs avoir fait un changement ce chier. La valeur par dfaut dans Debian inclut ce paramtre : ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now Puis, pour permettre certains utilisateurs darrter le systme, comme dcrit dans la page de manuel shutdown(8), vous devez crer le chier /etc/shutdown.allow et inclure le nom des utilisateurs qui peuvent amorcer ( ?) le systme. Quand le salut trois doigts (ou ctrl+alt+del) est excut, le programme va vrier si lun des utilisateurs de ce chier est connect. Si aucun dentre eux ne lest, shutdown ne va pas redmarrer le systme.

4.9

Monter correctement les partitions

Lorsque vous montez une partition ext2, vous avez diffrentes options additionnelles pour lappel mount ou pour le chier /etc/fstab. Par exemple, ceci est mon entre pour la partition /tmp : /dev/hda7 /tmp ext2 defaults,nosuid,noexec,nodev 0 2

Vous voyez la diffrence dans la section des options. Loption nosuid ignore compltement les bits setuid et setgid, tandis que noexec interdit lexcution de tout programme sur ce point de montage et nodev ignore les priphriques. Ceci semble bon mais cela ne sapplique uniquement quau systme de chiers ext2, peut tre contourn facilement. Loption noexec vite aux binaires dtre excuts directement mais cela est facilement contournable : alex@joker:/tmp# mount | grep tmp /dev/hda7 on /tmp type ext2 (rw,noexec,nosuid,nodev) alex@joker:/tmp# ./date bash: ./date: Permission denied alex@joker:/tmp# /lib/ld-linux.so.2 ./date Sun Dec 3 17:49:23 CET 2000

Chapitre 4. Aprs linstallation

48

Toutefois, de nombreux script kiddies utilisent des exploits qui essayent de crer et dexcuter des chiers dans /tmp. Sils ne sont pas futs, ils tomberont sur un ppin. En dautres termes, un utilisateur ne peut tre abus en excutant un binaire compromis (genre cheval de troie) dans /tmp lorsquil a accidentellement ajout /tmp dans son PATH. Soyez aussi vigilant, certains scripts peuvent dpendre du fait que /tmp devienne excutable. Notamment Debconf qui a (avait ?) quelques problmes concernant cela, pour plus dinformation voir le bogue 116448 (http://bugs.debian.org/116448). Ce qui suit est un exemple un plus peu pouss. Prenez note que, bien que /var peut tre mis noexec, certains logiciels12 conservent leurs programmes dans /var. Les mmes conditions peuvent tre appliques loption nosuid. /dev/sda6 /dev/sda12 /dev/sda7 /dev/sda8 /dev/sda9 /dev/sda10 /dev/sda11 /dev/sda13 /dev/fd0 /dev/fd0 /dev/hda /usr /usr/share /var /tmp /var/tmp /var/log /var/account /home /mnt/fd0 /mnt/floppy /mnt/cdrom ext2 ext2 ext2 ext2 ext2 ext2 ext2 ext2 ext2 vfat iso9660

defaults,ro,nodev 0 2 defaults,ro,nodev,nosuid 0 2 defaults,nodev,usrquota,grpquota 0 2 defaults,nodev,nosuid,noexec,usrquota,grpquo defaults,nodev,nosuid,noexec,usrquota,grpquo defaults,nodev,nosuid,noexec 0 2 defaults,nodev,nosuid,noexec 0 2 rw,nosuid,nodev,exec,auto,nouser,async,usrqu defaults,users,nodev,nosuid,noexec 0 defaults,users,nodev,nosuid,noexec 0 ro,users,nodev,nosuid,noexec 0

4.9.1

Paramtrer /tmp en noexec

Soyez vigilant si vous mettez /tmp en noexec et que vous voulez installer de nouveaux logiciels tant donn que certains peuvent lutiliser pendant linstallation. Apt est un programme de ce genre (voir http://bugs.debian.org/116448) si APT::ExtractTemplates::TempDir nest pas congur correctement (voir apt-extracttemplates(1)). Vous pouvez paramtrer cette variable dans le chier /etc/apt/apt.conf vers un autre rpertoire que /tmp et qui aura les privilges exec. Concernant noexec, prenez conscience quil peut ne pas offrir le niveau de scurit dsir. Observons ceci : $ cp /bin/date /tmp $ /tmp/date (nest pas excut pas cause de noexec) $/lib/ld-linux.so.2 /tmp/date (fonctionne correctement car date nest pas excut directement)
12 Cela inclut le gestionnaire de paquet dpkg car les scripts dinstallation (pre et pos) et de suppression (pre et post) sont /var/lib/dpkg/ et aussi Smartlit

Chapitre 4. Aprs linstallation

49

4.9.2

Paramtrer /usr en lecture seule

Si vous mettez /usr en lecture seule, vous serez dans lincapacit dinstaller de nouveaux paquets sur votre systme Debian GNU/Linux. Vous devrez, avant tout la remonter en lecturecriture, puis installer les nouveaux paquets et enn la remonter en lecture seule. La dernire version dapt (dans Debian 3.0 Woody ) peut tre congure pour lancer des commandes avant et aprs linstallation de paquets, ainsi vous pouvez avoir envie de le congurer correctement. Pour raliser ceci, modiez le chier /etc/apt/apt.conf et ajoutez : DPkg { Pre-Invoke { "mount /usr -o remount,rw" }; Post-Invoke { "mount /usr -o remount,ro" }; }; Notez que le Post-invoke peut chouer avec un message derreur /usr busy. Ceci survient principalement lorsque vous utilisez des chiers lors de la mise jour et que ces chiers sont justement mis jour. Vous pouvez trouver ces programmes en excutant # lsof +L1 Arrtez ou relancez ces programmes et excutez la commande de Post-Invoke manuellement. Attention ! Cela veut dire que vous devrez probablement redmarrez votre session X (si vous en faites fonctionner une) chaque fois que vous faites une mise jour majeure de votre systme. Vous pouvez vouloir reconsidrer si un /usr en lecture seule est convenable pour votre systme. Voir galement cette discussion sur debian-devel propos de /usr en lecture seule (http://lists.debian.org/debian-devel/2001/11/threads.html#00212).

4.10
4.10.1

Fournir des accs scuriss aux utilisateurs


Authentication utilisateur : PAM

PAM (Pluggable Authentication Modules) permet aux administrateurs systmes de choisir comment les applications authentient les utilisateurs. Il est noter que PAM ne peut rien faire tant quune application na pas t compile avec le support pour PAM. La plupart des applications livres dans la Debian 2.2 ont ce support dinclus. Par ailleurs, Debian navait pas le support de PAM avant la 2.2. La conguration actuelle par dfaut pour tout service activ avec PAM est dmuler lauthentication UNIX (lisez /usr/share/doc/libpam0g /Debian-PAM-MiniPolicy.gz pour plus dinformations sur la faon dont les services devraient fonctionner dans Debian). Chaque application avec le support PAM fournit un chier de conguration dans /etc/pam.d qui peut tre utilis pour modier son comportement :

Chapitre 4. Aprs linstallation

50

quelle fonction de base est utilise pour lauthentication ; quelle fonction de base est utilise pour les sessions ; comment les vrications de mots de passe se comportent. La description qui suit est loin dtre complte, pour plus dinformations vous pouvez regarder le The Linux-PAM System Administrators Guide (http://www.kernel.org/pub/ linux/libs/pam/Linux-PAM-html/pam.html) (sur le site primaire de distribution de PAM (http://www.kernel.org/pub/linux/libs/pam/)). Ce document est galement fourni dans le paquet Debian libpam-doc. PAM vous offre la possibilit de passer en revue plusieurs tapes dauthentication en une seule fois, linsu de lutilisateur. Vous pouvez vous authentier une base de donnes Berkeley et un chier passwd normal, ainsi lutilisateur pourra se connecter seulement si lauthentication est correcte des deux cts. Vous pouvez restreindre beaucoup de choses avec PAM comme vous pouvez laisser libre accs votre systme. Donc soyez prudent. Une ligne de conguration typique a un champ de contrle comme deuxime lment. Gnralement, il devrait tre paramtrer sur requisite qui retourne un chec de connexion si un module choue. La premire chose que jaime faire est dajouter le support MD5 aux applications PAM, tant donn que ceci protge le systme contre les tentatives dattaques par dictionnaire (les mots de passes peuvent tre plus long en utilisant MD5). Les deux lignes suivantes devraient tre ajoutes toutes les lignes dans /etc/pam.d/ qui alloue laccs la machine, tel login et ssh.

# Vrifier que libpam-cracklib soit install avant sinon vous ne # pourrez pas vous connecter. password required pam_cracklib.so retry=3 minlen=12 difok=3 password required pam_unix.so use_authtok nullok md5

Que fait cette formule magique ? La premire ligne charge le module PAM cracklib qui fournit la vrication de la longueur des mots de passe, attend un nouveau mot de passe avec au minimum 12 caractres, une diffrence dau-moins 3 caractres par rapport lancien et autorise 3 essais. Cracklib dpend dune liste de mots (comme wenglish, wspanish, wbritish, etc.), assurez-vous donc den avoir install une adapte votre langue, sinon, cela peut ne pas vous tre du tout utile. 13 La seconde ligne introduit le module dauthentication standard avec MD5 et autorise un mot de passe nul. La directive use_authok est ncessaire pour passer le mot de passe du module prcdent. An dtre sr que lutilisateur root peut se connecter uniquement partir des terminaux locaux, la ligne suivante doit tre active dans /etc/pam.d/login : auth requisite pam_securetty.so

13 Cependant, cette dpendance nest pas xe. Veuillez lire le Bogue 112965 (http://bugs.debian.org/ 112965).

Chapitre 4. Aprs linstallation

51

Puis, vous devez modier la liste des terminaux sur lesquels la connexion de root est autorise dans le chier /etc/securetty. Vous pouvez sinon activer le module pam_access et modier /etc/security/access.conf qui permet un contrle plus gnral et afn, mais qui il manque (malheureusement) des messages de journalisation dcents (la journalisation dans PAM nest pas standard et est un problme particulirement peu gratiant traiter). Nous reviendrons au chier access.conf un peu plus tard. Enn, mais pas le moindre, la ligne suivante devrait tre active dans /etc/pam.d/login pour mettre en place des limites de ressource utilisateur. session required pam_limits.so

Ceci restreint les ressources du systme auxquelles les utilisateurs sont autorises (voir cidessous Restreindre lutilisation des ressources : le chier limits.conf page suivante). Par exemple, vous pouvez restreindre le nombre de connexions (dun groupe dutilisateurs donn ou tout le systme), le nombre de processus, la taille de la mmoire, etc. Maintenant, ditez /etc/pam.d/passwd et changez la premire ligne. Vous devriez ajouter loption md5 pour utiliser les mots de passe MD5, modiez la longueur minimale du mot de passe de 4 6 (ou plus) et xez une longueur maximale si vous le dsirez. La ligne devrait ressembler quelque chose comme ceci : password required pam_unix.so nullok obscure min=6 max=11 md5

Si vous voulez protger su, pour que seuls quelques personnes puissent lutiliser pour devenir root sur votre systme, vous avez besoin de crer un nouveau groupe wheel (cest la meilleure faon, tant donn quaucun chier na ces permissions dattribues). Ajoutez root et les autres utilisateurs, qui auront la possibilit dutiliser su pour devenir root, ce groupe. Ensuite, ajoutez la ligne suivante dans /etc/pam.d/su : auth requisite pam_wheel.so group=wheel debug

Ceci permet dtre sr quuniquement les personnes du groupe wheel pourront utiliser su pour devenir root. Les autres utilisateurs ne seront pas capable de le devenir. En fait, ils recevront un message de refus sils essayent de devenir root. Si vous dsirez que seulement certains utilisateurs sauthentient un service PAM, il suft de faire cela en utilisant les chiers o sont stocks les utilisateurs autoriss (ou pas) se connecter. Imaginons que vous ne vouliez autoriser que lutilisateur ref se connecter via ssh. Vous le mettez dans /etc/sshusers-allowed et crivez ce qui suit dans /etc/pam.d/ssh : auth required

pam_listfile.so item=user sense=allow file=/etc/sshu

La dernire tape, mais pas la moindre, est de crer le chier /etc/pam.d/other et dajouter les lignes suivantes :

Chapitre 4. Aprs linstallation

52

auth auth auth auth account account account password password password session session session

required required required required required required required required required required required required required

pam_securetty.so pam_unix_auth.so pam_warn.so pam_deny.so pam_unix_acct.so pam_warn.so pam_deny.so pam_unix_passwd.so pam_warn.so pam_deny.so pam_unix_session.so pam_warn.so pam_deny.so

Ces lignes vont fournir une bonne conguration par dfaut pour toutes les applications qui supportent PAM (accs refus par dfaut).

4.10.2

Restreindre lutilisation des ressources : le chier limits.conf

Vous devriez vraiment jeter un srieux il ce chier. Vous pouvez dnir dans celui-ci les limites des ressources par utilisateur. Dans danciennes versions, ce chier de conguration tait /etc/limits.conf, mais dans les nouvelles versions (avec PAM), le chier de conguration utiliser devrait tre /etc/security/limits.conf. Si vous ne dsirez pas restreindre lutilisation des ressources, nimporte quel utilisateur ayant un shell valide sur votre systme (ou mme un intrus qui aurait compromis le systme par un service ou un dmon devenu fou) pourra utiliser autant de CPU, de mmoire, de pile, etc. que le systme pourra fournir. Ce problme dpuisement de ressources peut tre rgl par lutilisation de PAM. Il existe un moyen dajouter des limites de ressources pour certains shells (par exemple, bash a ulimit, voir bash(1)), mais comme ils ne fournissent pas tous les mmes limites et comme lutilisateur peut changer de shell (voir chsh(1)), il est prfrable de placer ces limites dans les modules PAM ainsi elles sappliqueront quel que soit le shell utilis et galement aux modules PAM qui ne sont pas orients shell. Les limites de ressources sont imposes par le noyau, mais elles doivent tre congures par le chier limits.conf et la conguration PAM des diffrents services doit charger le module PAM appropri. Vous pouvez vrier quels services imposent des limites en excutant : $ find /etc/pam.d/ \! -name "*.dpkg*" | xargs -- grep limits |grep -v ":#" Habituellement, login, ssh et les gestionnaires de session graphique (gdm, kdm ou xdm) devraient imposer des limites aux utilisateurs, mais vous pouvez vouloir faire cela dans dautres chiers de conguration de PAM, comme cron, pour empcher les dmons systme daccaparer toutes les ressources systme..

Chapitre 4. Aprs linstallation

53

Les paramtres de limites spciques que vous pouvez vouloir imposer dpend des ressources de votre systme, cest lune des principales raisons pour lesquelles aucune limite nest impose dans linstallation par dfaut. Par exemple, lexemple de conguration ci-desous impose une limite de 100 processus pour chaque utilisateur (pour empcher les bombe de fork) ainsi quune limite de 10 Mo de mmoire par processus et une limite de 10 connexions simultanes. Les utilisateurs du groupe adm ont des limites suprieures et peuvent crer des chiers core sils le dsirent (cest simplement une limite douce (soft)). * * * * * * * * @adm @adm @adm @adm @adm @adm soft hard hard hard hard hard hard hard hard soft hard hard core core rss memlock nproc maxlogins data fsize core rss nproc nproc fsize maxlogins 0 0 1000 1000 100 1 102400 2048 100000 100000 2000 3000 100000 10

Voici les limites quun utilisateur standard (y compris les dmons systme) aurait : $ ulimit -a core file size (blocks, -c) data seg size (kbytes, -d) file size (blocks, -f) max locked memory (kbytes, -l) max memory size (kbytes, -m) open files (-n) pipe size (512 bytes, -p) stack size (kbytes, -s) cpu time (seconds, -t) max user processes (-u) virtual memory (kbytes, -v) Et voici les limites dun utilisateur administratif : $ ulimit -a core file size data seg size

0 102400 2048 10000 10000 1024 8 8192 unlimited 100 unlimited

(blocks, -c) 0 (kbytes, -d) 102400

Chapitre 4. Aprs linstallation

54

file size (blocks, -f) max locked memory (kbytes, -l) max memory size (kbytes, -m) open files (-n) pipe size (512 bytes, -p) stack size (kbytes, -s) cpu time (seconds, -t) max user processes (-u) virtual memory (kbytes, -v) Pour plus dinformations, lisez :

100000 100000 100000 1024 8 8192 unlimited 2000 unlimited

le guide de rfrence PAM pour les modules disponibles (http://www.kernel.org/ pub/linux/libs/pam/Linux-PAM-html/pam-6.html), larticle de conguration de PAM (http://www.samag.com/documents/s=1161/ sam0009a/0009a.htm), larticle Seifrieds Securing Linux Step by Step (http://seifried.org/security/os/ linux/20020324-securing-linux-step-by-step.html) pour la section Limiting users overview, le LASG (http://seifried.org/lasg/users/) pour la section Limiting and monitoring users.

4.10.3

Actions de connexion de lutilisateur : diter /etc/login.defs

La prochaine tape est dditer la conguration et action de base sur la connexion de lutilisateur. Notez que ce chier ne fait pas parti de la conguration PAM, cest un chier de conguration qui est pris en compte par les programmes login et su, il nest pas logique de ladapter aux cas pour lesquels ni lun, ni lautre des programme nest appel au moins indirectement (le programme getty qui gre les console et offre le prompt de connexion initial appelle bien login). FAIL_DELAY 10

Cette variable devrait tre xe une valeur sufsamment grande de faon rendre plus difcile les tentatives de connexion en utilisant la manire forte. Si un mauvais mot de passe est fourni, le pirate potentiel (ou le simple utilisateur !) doit attendre 10 secondes avant dobtenir un nouveau prompt de connexion, ce qui prend pas mal de temps quand vous testez des mots de passe. Veuillez noter que ce paramtre est inoprant si vous utilisez un programme autre que getty, comme par exemple mingetty. FAILLOG_ENAB yes

Si vous activez cette variable, les connexions choues seront enregistres dans un journal. Il est important den garder une trace pour quelquun qui tente une attaque par la manire forte.

Chapitre 4. Aprs linstallation

55

LOG_UNKFAIL_ENAB

yes

Si vous mettez la variable FAILLOG_ENAB yes, alors il faudra mettre cette variable galement yes. Ceci sauvegardera les noms dutilisateurs inconnus si la connexion choue. Si vous faites cela, assurez-vous que les journaux de connexion ont les bonnes permissions (640 par exemple avec un groupe adquat comme adm), car souvent les utilisateurs entrent accidentellement leur mot de passe au lieu du nom dutilisateur et vous ne voulez pas permettre aux autres utilisateurs de le voir. SYSLOG_SU_ENAB yes

Ceci va activer lcriture dans les journaux de syslog des tentatives de su. Plutt important sur des machines srieuses, mais notez que ceci peut aussi bien tre la base de problmes de respect de la vie prive. SYSLOG_SG_ENAB yes

La mme chose que SYSLOG_SU_ENAB, mais sapplique au programme sg. MD5_CRYPT_ENAB yes

Comme mentionn ci-dessus, les mots de passe MD5 rduit considrablement le problme des attaques par dictionnaire tant donn que vous pouvez utiliser des mots de passe plus longs. Si vous utilisez slink, lisez les documentations avant dactiver le MD5. Sinon, cela est paramtr dans PAM. PASS_MAX_LEN 50

Si les mots de passe MD5 sont activs dans votre conguration PAM, alors cette variable devrait avoir la mme valeur que dans celle-ci.

4.10.4

Restreindre le ftp : diter /etc/ftpusers

Ce chier contient une liste dutilisateurs qui ne sont pas autoriss se connecter lhte en utilisant ftp. Utilisez uniquement ce chier si vous voulez rellement autoriser le ftp (qui nest, en gnral, pas recommand car il utilise des mots de passe en clair). Si votre dmon supporte PAM, celui-ci peut tre utilis pour permettre ou refuser certains services aux utilisateurs. FIXME (BUG) : Est-ce un bogue que le chier par dfaut ftpusers dans Debian ne contient pas tous les utilisateurs dadministration (dans base-passwd).

Chapitre 4. Aprs linstallation

56

4.10.5

Utilisation de su

Si vous avez rellement besoin que des utilisateurs deviennent super utilisateur sur votre systme, par exemple pour installer des paquets ou ajouter des utilisateurs, vous pouvez utiliser la commande su pour changer didentit. Vous devriez essayer dviter toute connexion en tant que root et dutiliser la place su. En ralit, la meilleure solution est de supprimer su et de changer pour le mcanisme sudo qui a une logique plus large et plus de fonctionnalits que su. Cependant, su est plus commun tant donn quil est utilis sur beaucoup dautres Unices.

4.10.6

Utilisation de sudo

sudo autorise lutilisateur excuter des commandes dnies sous lidentit dun autre utilisateur, mme en tant que root. Si lutilisateur est ajout /etc/sudoers et est authenti correctement, il est capable de lancer des commandes qui ont t dnies dans /etc/sudoers. Les infractions, telles que les mots de passe incorrects ou les tentatives de lancement dun programme pour lequel vous navez pas les permissions, sont loggues et envoyes au root.

4.10.7

Dsactiver des accs dadministration distance

Vous devriez galement modier /etc/security/access.conf pour dsactiver la connexion dadministration distance. Ainsi, les utilisateurs doivent excuter su (ou sudo) pour utiliser des pouvoirs administratifs et ainsi la trace daudit approprie sera toujours gnre. Vous devez ajouter la ligne suivante /etc/security/access.conf, le chier de conguration par dfaut Debian contient une ligne exemple commente : -:wheel:ALL EXCEPT LOCAL Rappelez-vous dactiver le module pam_access pour chaque service (ou conguration par dfaut) dans /etc/pam.d/ si vous voulez que vos modications dans /etc/security /access.conf soient pris en compte.

4.10.8

Restriction des utilisateurs

Parfois, vous pensez avoir besoin dutilisateurs crs dans votre systme local de faon fournir un service donn (service courrier pop3 ou ftp). Avant tout, rappelez-vous que limplmentation PAM dans Debian GNU/Linux vous autorise valider les utilisateurs avec une grande varit de rpertoires de services externes (radius, ldap, etc.) fournis par les paquets libpam. Si des utilisateurs doivent tre crs et que le systme est accessible distance, prenez en compte que des utilisateurs pourront se connecter au systme. Ceci peut tre corrig en donnant aux utilisateurs un shell null (/dev/null) (il devra tre list dans /etc/shells). Si

Chapitre 4. Aprs linstallation

57

vous voulez autoriser les utilisateurs accder au systme mais limiter leurs mouvements, vous pouvez utiliser le chier /bin/rbash, ce qui est quivalent lajout de loption -r dans bash (RESTRICTED SHELL voir bash(1)). Veuillez noter que mme avec un shell restreint, un utilisateur ayant accs un programme interactif (qui peut permettre lexcution dun sousshell) peut tre capable de passer outre les limites du shell. Debian fournit actuellement dans la version unstable le module pam_chroot (dans le paquet libpam-chroot) (et il pourrait tre inclus dans les prochaines versions stables). Une alternative celui-ci est de chrooter le service qui fournit la connexion distance (ssh, telnet).
14

Si vous voulez restreindre quand les utilisateurs peuvent accder au systme, vous devrez personnaliser /etc/security/access.conf en fonction de vos besoins. Des informations sur comment chrooter des utilisateurs accdant au systme par le service ssh sont dcrites dans Environnement de chroot pour SSH page 217.

4.10.9

Audit dutilisateur

Si vous tes vraiment paranoaque, il se peut que vous vouliez congurer pour le systme un chier de conguration qui congure lenvironnement pour auditer ce que les utilisateurs font sur votre systme. Cette section prsente quelques conseils avec diffrents utilitaires que vous pouvez utiliser. Audit dentre et sortie avec script Vous pouvez utiliser la commande script pour auditer la fois ce que les utilisateurs excutent et quels sont les rsultats de leurs commandes. Vous ne pouvez congurer script comme un shell (mme si vous lajoutez /etc/shells). Mais vous pouvez faire en sorte que le chier dinitialisation su shell excute les commandes suivantes : umask 077 exec script -q -a "/var/log/sessions/$USER" Bien sr, si vous faites cela pour tout le systme, cela veut dire que le shell ne continuerait pas lire les chiers dinitialisation personnels (car le shell sera cras par script). Une alternative est de faire cela dans les chiers dinitialisation de lutilisateur (mais alorslutilisateur pourrait lenlever, voir les commentaires sur cela ci-dessous). Vous devez galement congurer les chiers dans le rpertoire daudit (dans lexemple /var /log/sessions/) pour que les utilisateurs puissent y crire, mais pas supprimer le chier. Cela pourrait tre fait, par exemple, en crant les chiers de session dutilisateur en avance et en leur positionnant le drapeau ajout-seulement ( append-only ) en utilisant chattr.
14 Libpam-chroot na pas encore t test en profondeur, il fonctionne pour login, mais il est possible quil ne soit pas facile de mettre en place lenvironnement pour dautres programmes

Chapitre 4. Aprs linstallation

58

Une alternative utile pour les administrateurs systme, qui inclut des informations de date, serait : umask 077 exec script -q -a "/var/log/sessions/$USER-date +%Y%m%d" Utiliser le chier dhistorique du shell Si vous voulez passer en revue ce que les utilisateurs entrent dans le shell (mais pas voir le rsultat), vous pouvez congurer un /etc/profile pour tout le systme qui congure lenvironnement pour que toutes les commandes soient sauves dans le chier dhistorique. La conguration pour tout le systme doit tre ralise de telle faon que les utilisateurs ne puissent pas enlever les capacits daudit de leur shell. Cela est plutt spcique au shell, donc assurez-vous que tous les utilisateurs utilisent un shell qui le gre. Par exemple, pour bash, le chier /etc/profile pourrait tre paramtr ainsi 15 : HISTFILE=~/.bash_history HISTSIZE=10000 HISTFILESIZE=999999 # Empche les utilisateurs dentrer des commandes qui seraient # ignores dans le fichier dhistorique HISTIGNORE="" HISTCONTROL="" readonly HISTFILE readonly HISTSIZE readonly HISTFILESIZE readonly HISTIGNORE readonly HISTCONTROL export HISTFILE HISTSIZE HISTFILESIZE HISTIGNORE HISTCONTROL An que cela fonctionne, lutilisateur doit tre seulement capable dajouter des informations au chier .bash_history. Vous devez aussi positionner lattribut ajout-uniquement en utilisant le programme chattr sur .bash_history pour tous les utilisateurs. 16 Notez que vous pouvez introduire la conguration ci-dessus dans le chier utilisateur .profile. Mais alors vous devriez congurer les permissions correctement de faon empcher lutilisateur de modier ce chier. Cela inclut : les rpertoires personnels de lutilisateur ne doivent pas appartenir lutilisateur (sinon, il pourrait supprimer le chier), mais en mme temps lui permettre de lire le chier de conguration .profile et dcrire
15 Congurer HISTSIZE une trs grande valeur peut poser des problmes sous certains shells car lhistorique est gard en mmoire pour la session de chaque utilisateur. Il peut tre plus prudent de positionner cela une valeur assez leve et de sauvergarder les chiers dhistoriques des utilisateurs (si vous avez besoin de tout lhistorique de lutilisateur pour une raison ou une autre) 16 Sans lattribut ajout-uniquement les utilisateurs seraient capables de vider le contenu du chier des historiques avec > .bash_history.

Chapitre 4. Aprs linstallation

59

dans .bash_history. Il serait bien de congurer lattribut immuable (galement en utilisant chattr) pour le .profile aussi si vous procdez ainsi. Audit utilisateur complet avec utilitaires de comptabilit Lexemple prcdent est une manire simple de congurer laudit utilisateur, mais qui peut ne pas tre utile pour des systmes complexes ou pour ceux dans lesquels les utilisateurs ne peuvent pas excuter de shell du tout (ou exclusivement). Si cest votre cas, vous devrez examiner acct, les utilitaires de comptabilit. Ces utilitaires archiveront toutes les commandes excutes par les utilisateurs ou processus du systme au dtriment de lespace disque. Lors de lactivation de la comptabilit, toutes les informations sur les processus et utilisateurs sont conserves dans /var/account/, plus spciquement dans le chier pacct. Le paquet de comptabilit inclut certains outils (sa et ac) an danalyser ces donnes. Autres mthodes daudit utilisateur Si vous tes compltement paranoaque et que vous voulez auditer toutes les commandes des utilisateurs, vous pouvez prendre les codes sources du bash, les diter et rcuprer dans un chier toutes les commandes que lutilisateur tape. Ou avoir ttysnoop constamment en attente de nouveaux ttys 17 et reverser toutes les sorties dans un chier. Un autre programme utile est snoopy (voir galement la page du projet (http://sourceforge.net/ projects/snoopylogger/)) qui est un programme transparent pour lutilisateur qui se positionne comme une librairie fournissant une encapsulation des appels execve(), toute commande excute est logue par syslogd en utilisant la facilit authpriv (gnralement stock dans /var/log/auth.log).

4.10.10

Inspection des prols utilisateurs

Si vous dsirez voir ce que font vraiment les utilisateurs, comme lheure laquelle ils se connectent, vous pouvez utiliser la base de donnes wtmp qui contient toutes les informations concernant les connexions. Ce chier peut tre employ avec plusieurs utilitaires, parmi eux sac qui peut sortir un prol de chaque utilisateur montrant dans quel crneau horaire ils se connectent au systme habituellement. Dans le cas o vous avez la comptabilit active, vous pouvez galement utiliser les outils quelle fournit pour dterminer quand les utilisateurs accdent au systme et ce quils excutent.

4.10.11

Positionner des umasks aux utilisateurs

Selon vos rgles dutilisation, vous pouvez vouloir changer comment les utilisateurs peuvent partager des informations, cest--dire, quelles sont les permissions par dfaut des chiers nou17

Les ttys sont cres pour les connexions locales et distance par ssh et telnet

Chapitre 4. Aprs linstallation

60

vellements crs par les utilisateurs. Ce changement est effectu en dnissant un paramtre umask correct pour tous les utilisateurs. Vous pouvez changer le paramtre UMASK dans /etc/limits.conf, /etc/profile, /etc/csh.cshrc, /etc/csh.login, /etc/zshrc et probablement dans dautres chiers (selon les shells que vous avez install sur votre systme). Parmi ceux-ci, le dernier tre charg prendra prcdence sur les autres. Lordre est : le limits.conf de PAM, la conguration systme par dfaut du shell de lutilisateur, le shell de lutilisateur (son ~/.profile, ~/.bash_profile, etc.). Le paramtre umask par dfaut de Debian est 022, ceci veut dire que les chiers (et les rpertoires) peuvent tre lus et accds par le groupe de lutilisateur et par tout autre utilisateur du systme. Si cela est trop permissif pour votre systme, vous devrez changer ce paramtre umask pour tous les shells (et pour PAM). Noubliez pas de modier les chiers sous /etc /skel/ car ce seront les valeurs par dfaut dun nouvel utilisateur quand il sera cr par la commande adduser. Notez, cependant, que les utilisateurs peuvent modier leur propre paramtre umask sils le dsirent, le rendant plus permissif ou plus restrictif.

4.10.12

Limiter ce que les utilisateurs peuvent voir et accder

FIXME : Besoin de contenu. Indiquer les consquences de changement des permissions des paquets lors dune mise jour (et un administrateur aussi paranoaque que cela devrait chrooter ses utilisateurs). Si vous avez besoin daccorder aux utilisateurs un accs au systme avec un shell, rchissezy trs soigneusement. Un utilisateur peut, par dfaut moins dtre dans un environnement extrmement restreint (comme une prison chroot), rcuprer un assez grand nombre dinformations concernant votre systme, y compris : certains chiers de conguration dans /etc. Cependant, les permissions par dfaut de Debian pour certains chiers sensible (qui peuvent, par exemple, contenir des mots de passe) empcheront laccs des informations critiques. Pour voir quels chiers ne sont accessibles que par lutilisateur root par exemple find /etc -type f -a -perm 600 -a -uid 0 en tant que super-utilisateur. vos paquets installs, soit en consultant la base de donnes des paquets, soit dans le rpertoire /usr/share/doc, soit en devinant en regardant les binaires et bibliothques installs sur votre systme. certains chiers journaux dans /var/log. Notez galement que quelques chiers journaux ne sont accessibles que par root et le groupe adm (essayez find /var/log -type f -a -perm 640) et certains ne sont mme disponibles que pour lutilisateur root (essayez find /var/log -type f -a -perm 600 -a -uid 0). Que peut voir un utilisateur dans votre systme ? Probablement un assez grand nombre de choses, essayez ceci (prenez une profonde respiration) : find / -type f -a -perm +006 2>/dev/null find / -type d -a -perm +007 2>/dev/null

Chapitre 4. Aprs linstallation

61

La liste des chiers quun utilisateur peut voir et des rpertoires auxquels il a accs est afche. Limiter laccs aux informations dautres utilisateurs Si vous accordez toujours un accs shell aux utilisateurs, vous pouvez vouloir limiter les informations quils peuvent voir des autres utilisateurs. Les utilisateurs ayant un accs shell ont tendance crer un grand nombre de chiers dans leur rpertoire $HOME : botes lettres, documents personnels, conguration des applications X/GNOME/KDE, etc. Sous Debian, chaque utilisateur est cr avec un groupe associ et aucun utilisateur nappartient au groupe dun autre utilisateur. Il sagit du comportement par dfaut : quand un compte dutilisateur est cr, un groupe du mme nom est cr et lutilisateur lui est assign. Ceci vite le concept dun groupe users qui peut rendre plus difcile pour les utilisateurs de cacher des informations aux autres utilisateurs. Cependant, les rpertoires $HOME des utilisateurs sont crs avec les permissions 0755 (lisible par le groupe et par tout le monde). Les permissions de groupe ne sont pas un problme car seul lutilisateur appartient au groupe, cependant les permissions pour les autres peut tre (ou non) un problme selon vos rgles locales. Vous pouvez changer ce comportement pour la cration de lutilisateur fournisse des permissions sur $HOME diffrentes. Pour changer ce comportement pour les nouveaux utilisateurs quand il seront crs, changez DIR_MODE dans le chier de conguration /etc /adduser.conf 0750 (pas daccs en lecture pour tout le monde). Les utilisateurs peuvent toujours partager des informations, mais directement dans leur rpertoire $HOME moins quils change les permissions de celui-ci. Notez que dsactiver les rpertoires utilisateur lisibles par tout le monde empchera les utilisateurs de crer leurs pages personnelles dans le rpertoire ~/public_html car le serveur web ne pourra pas lire un composant du chemin leur rpertoire $HOME. Si vous voulez permettre aux utilisateurs de publier des pages HTML dans leur ~/public_html, changez DIR_MODE en 0751. Ceci permettra au serveur web daccder ce rpertoire (qui devrait luimme avoir le mode 0755) et de fournir le contenu publi par les utilisateurs. Bien sr, nous ne parlons ici que dune conguration par dfaut ; les utilisateurs peuvent gnralement ajuster les permissions de leurs chiers comme ils le dsirent, ou vous pouvez conserver le contenu destin au web dans un emplacement spar qui nest pas un sous-rpertoire du rpertoire $HOME de chaque utilisateur.

4.10.13

Gnrer des mots de passe utilisateur

Il y a plusieurs cas dans lesquels un utilisateur a besoin de crer un grand nombre de comptes utilisateur et de fournir des mots de passe pour tous ceux-ci. Bien sr, ladministrateur peut facilement positionner le mot de passer pour tre le mme que le nom du compte utilisateur, mais ceci nest pas trs conseill sur le plan de la scurit. Une meilleure approche est dutiliser un programme de gnration de mots de passe. Debian fournit les paquets makepasswd, apg et pwgen qui contiennent des programmes (dont le nom est le mme que celui du paquet) qui

Chapitre 4. Aprs linstallation

62

peuvent tre utiliss dans ce but. Makepasswd gnre des mots de passe vraiment alatoires avec un accent sur la scurit plus que la prononabilit tandis que pwgen essaie de crer des mots de passe sans signication, mais prononables (bien sr, cela dpend de votre langue maternelle). Apg dispose dalgorithmes pour les deux (il y a une version client/serveur pour ce programme, mais elle nest pas incluse dans le paquet Debian). Passwd ne permet pas une assignation non interactive des mots de passe (car il utilise un accs direct au terminal tty). Si vous dsirez changer des mots de passe lors de la cration dun grand nombre dutilisateurs, vous pouvez les crer en utilisant adduser avec loption --disabled-login, puis utiliser usermod ou chpasswd 18 (tous les deux dans le paquet passwd, vous les avez donc dj dinstalls). Si vous voulez utilisez un chier avec toutes les informations pour crer les utilisateurs comme un processus batch, il sera probablement prfrable dutiliser newusers.

4.10.14

Vrier les mots de passe utilisateur

Les mots de passe des utilisateurs peuvent parfois devenir le maillon faible de la scurit dun systme donn. Cela provient du fait que quelques utilisateurs choisissent des mots de passe faibles pour leur compte (et plus il y a dutilisateurs, plus sont grandes les chances que cela se produise). Mme si vous mettez en place des vrications avec le module PAM cracklib et les limitations sur les mots de passe comme dcrites dans Authentication utilisateur : PAM page 49, les utilisateurs pourront toujours utiliser des mots de passe faibles. Comme laccs utilisateur peut inclure un accs un shell distance (on espre, par ssh), il est important de rendre les mots de passe aussi difcile deviner que possible pour les attaquants distance, particulirement sils ont pu rcuprer des informations importantes comme les noms dutilisateur ou mme les chiers passwd et shadow eux-mmes. Un administrateur systme doit, pour un nombre dutilisateurs donns, vrier si les mots de passe sont cohrents avec la rgle locale de scurit. Comment vrier ? Essayez de les cracker comme le ferait un attaquant sil avait accs aux mots de passe hachs (le chier /etc /shadow). Un administrateur peut utiliser john ou crack (tous deux utilisent la force brute pour cracker) ensemble avec une liste de mots appropris pour vrier les mots de passe utilisateurs et prendre des mesures appropries si un mot de passe faible est dtect. Vous pouvez rechercher des paquets Debian contenant des listes de mots en utilisant apt-cache search wordlist ou vous pouvez galement visiter des sites de listes de mots sur lInternet classique comme ftp://ftp.ox.ac.uk/pub/wordlists ou ftp://ftp.cerias.purdue.edu/ pub/dict.

4.10.15

Dconnecter les utilisateurs inactifs (idle)

Linactivit des utilisateurs pose habituellement un problme de scurit, un utilisateur peut tre inactif parce quil est parti djeuner ou parce quune connexion distance sest bloque
18 Chpasswd ne sait pas grer la gnration de mots de passe MD5, il faut donc lui donner le mot de passe sous sa forme crypte avant de lutiliser avec loption -e.

Chapitre 4. Aprs linstallation

63

et na pas t rtablie. Quelquen soit la raison, les utilisateurs inactifs peuvent amener une compromission : car la console de lutilisateur peut tre debloque et peut tre accde par un intrus, car un attaquant peut tre capable de se r-attacher lui-mme une connexion rseau ferme et envoyer des commandes au shell distant (cela est assez facile si le shell distant nest pas encrypt comme dans le cas telnet). Certains systmes distance ont mme t compromis travers un screen inactif (et dtach) . La dconnexion automatique des utilisateurs inactifs est habituellement une partie qui doit tre impose par les rgles de scurit locales. Il y a plusieurs moyens de faire cela : Si bash est le shell de lutilisateur, un administrateur systme peut positionner une valeur TMOUT par dfaut (voir bash(1)) qui entranera la dconnexion automatique des utilisateurs distants inactifs. Notez que ceci doit tre position avec loption -o ou les utilisateurs pourront la changer (ou la dsactiver). Installer timeoutd et congurer /etc/timeouts selon vos rgles de scurit locales. Le dmon regardera les utilisateurs inactifs et mettra un terme leur shell en fonction. Installer autolog et congurer-le pour enlever les utilisateurs inactifs. Les dmons timeoutd et autolog sont les mthodes prfres car, aprs tout, les utilisateurs peuvent changer leur shell par dfaut ou il peuvent aprs avoir excuter leus shell par dfaut, basculer sur un autre shell (non contrl).

4.11

Utilisation de tcpwrappers

Les TCP wrappers ont t dvelopps quand il ny avait pas de rels ltres de paquets de disponible et que les contrles daccs taient ncessaires. Toutefois, ils sont toujours trs intressants et utiles. Les TCP wrappers vous permettent dautoriser ou de refuser un service un hte ou un domaine et de dnir une rgle par dfaut pour les autorisations et les refus (toutes ralises au niveau applicatif). Pour plus de dtails, jetez un il hosts_access(5). De nombreux services installs dans Debian sont soit : lancs via la service tcpwrapper (tcpd) compils avec le support libwrapper. Dun ct, pour des services congurs dans /etc/inetd.conf, ceci incluant telnet, ftp, netbios, swat et finger), vous observerez que le chier de conguration excute avant tout /usr/sbin/tcpd. Dun autre ct, mme si un service nest pas lanc par le super dmon inetd, il peut tre compil avec le support pour les rgles des tcp wrappers. Les services compils avec support tcp wrappers dans Debian incluent ssh, portmap, in.talk, rpc.statd, rpc.mountd, gdm, oaf (le dmon dactivation GNOME), nessus et beaucoup dautres. Pour voir quels paquets utilisent tcpwrappers, essayez ceci : $ apt-cache showpkg libwrap0 | egrep ^[[:space:]] | sort -u | \ sed s/,libwrap0$//;s/^[[:space:]]\+//

Chapitre 4. Aprs linstallation

64

Tenez compte de ceci quand vous utilisez tcpdchk (un vricateur trs utile de rgles et syntaxe de chier de conguration de TCP wrappers). Quand vous pouvez ajouter des services indpendants (qui sont lis la bibliothque du wrapper) dans les chiers host.deny et hosts.allow, tcpdchk vous informera quil ne peut pas trouver les services mentionns tant donn quil les cherche dans /etc/inetd.conf (la page de manuel nest pas totalement prcise ici). prsent, voici une petite astuce et probablement le plus petit systme de dtection dintrusions disponible. Gnralement, vous devriez disposer dune politique correcte concernant le pare-feu en premire ligne, puis disposer de tcp wrappers en seconde ligne de dfense. Un petit truc est de mettre en place une commande SPAWN 19 dans /etc/hosts.deny qui enverra un courrier root quand un dclencheur wrapper pour service dni est rencontr : ALL: ALL: SPAWN ( \ echo -e "\n\ TCP Wrappers\: Connection refused\n\ By\: $(uname -n)\n\ Process\: %d (pid %p)\n\ User\: %u\n\ Host\: %c\n\ Date\: $(date)\n\ " | /usr/bin/mail -s "Connection to %d blocked" root) & Attention : Lexemple ci-dessus peut-tre facilement sujet une attaque par dni de service en soumettant normment de connexions dans une priode trs courte. De nombreux courriers signient de nombreuses E/S en envoyant uniquement quelques paquets.

4.12

Limportance des logs et des alertes

Il est facile de voir que le traitement de logs et alertes est un problme srieux sur un systme scuris. Supposons quun systme est parfaitement congur et scuris 99%. Si lattaque reprsentant le 1% vient arriver et quil ny a pas de mesures de scurit mises en place pour, dans un premier temps, dtecter ceci et dans un deuxime temps, lancer lalerte, le systme nest pas scuris du tout. Debian GNU/Linux fournit quelques outils pour effectuer des analyses de logs, notamment swatch20 , logcheck ou log-analysis (tous ont besoin dtre personnaliss pour enlever les choses non ncessaires des comptes-rendus). Il peut tre galement utile, si le systme est proche, davoir les logs du systme dafchs sur une console virtuelle. Ceci est utile car vous pouvez (depuis une distance) voir si le systme se comporte correctement. Le chier /etc /syslog.conf de Debian est fourni avec une conguration commente par dfaut ; pour lactiver, dcommenter les lignes et redmarrez syslogd (/etc/init.d/syslogd restart) :
19 20

assurez-vous dutiliser des majuscules car spawn ne fonctionnera pas il y a un trs bon article sur celui-ci crit par Lance Spitzner (http://www.spitzner.net/swatch.html)

Chapitre 4. Aprs linstallation

65

daemon,mail.*;\ news.=crit;news.=err;news.=notice;\ *.=debug;*.=info;\ /dev/tty8 *.=notice;*.=warn Pour colorer les journaux, vous pouvez jeter un il colorize, ccze ou glark. Il y a une grande partie sur lanalyse des log qui ne peut pas tre couverte ici, une bonne ressource dinformation est le site web Log Analysis (http://www.loganalysis.org/). Dans tous les cas, mme des outils automatiques ne peuvent rivaliser avec le meilleur outil danalyse : votre cerveau.

4.12.1

Utiliser et personnaliser logcheck

Le paquet logcheck dans Debian est divis en trois paquets logcheck (le programme principal), logcheck-database (une base de donnes dexpressions rationnelles pour le programme) et logtail (afche les lignes de log qui nont pas encore t lues). Le comportement par dfaut sous Debian (dans /etc/cron.d/logcheck) est que logcheck est excut toutes les heures et une fois aprs le dmarrage. Cet outil peut tre assez utile sil est personnalis correctement pour alerter ladministrateur dvnements systme inhabituels. logcheck peut tre compltement personnalis pour envoyer des courriers selon les vnements rcuprs des logs et qui sont dignes dattention. Linstallation par dfaut inclut des prols pour des vnements ignors et des violations de rgles pour trois congurations diffrentes (station de travail, serveur et paranoaque). Le paquet Debian inclut un chier de conguration /etc/logcheck /logcheck.conf, sourc par le programme, qui dnit quel utilisateur sont envoys les vrications. Il fournit galement un moyen pour les paquets qui fournissent des services pour implmenter de nouvelles rgles dans les rpertoires : /etc/logcheck/cracking.d /_packagename_, /etc/logcheck/violations.d/_packagename_, /etc/logcheck /violations.ignore.d/_packagename_, /etc/logcheck/ignore.d.paranoid /_packagename_, /etc/logcheck/ignore.d.server/_packagename_ et /etc /logcheck/ignore.d.workstation/_packagename_. Cependant, peu de paquets le font actuellement. Si vous avez une rgle qui peut tre utile dautres utilisateurs, veuillez lenvoyer comme un rapport de bogue sur le paquet appropri (comme un bogue de gravit wishlist). Pour plus dinformations, veuillez lire /usr/share/doc/logcheck /README.Debian. Le meilleur moyen de congurer logcheck est dditer son chier de conguration principal /etc/logcheck/logcheck.conf aprs lavoir install. Modiez lutilisateur par dfaut (root) qui seront envoys par courrier les comptes-rendus. Vous devriez galement y positionner le niveau de compte-rendu. logcheck-database a trois niveaux de compte-rendu de verbosit croissante : station de travail, serveur, paranoaque. serveur tant le niveau par dfaut, paranoaque nest recommand que pour les machines de haute scurit ne faisant fonctionner quaussi peu de services que possible et station de travail est pour

Chapitre 4. Aprs linstallation

66

les machines relativement protgs et non critiques. Si vous dsirez ajouter de nouveaux chiers journaux, ajoutez-les simplement /etc/logcheck/logcheck.logfiles. Celui-ci est congur pour une installation de syslog par dfaut. Une fois ceci fait, vous pouvez vouloir vrier les courriers envoys, pour les quelques premiers jours/semaines/mois. Si vous trouvez que vous recevez des messages que vous ne voulez pas recevoir, ajoutez simplement lexpression rationnalle (voir regex(7) et egrep(1)) qui correspond ces messages au chier /etc/logcheck /ignore.d.reportlevel/local. Essayez de faire correspondre la ligne de log entire. Des dtails sur lcriture des rgles sont expliques dans /usr/share/doc /logcheck-database/README.logcheck-database.gz. Cest un processus dafnement perptuel ; une fois que les messages qui sont envoys sont toujours pertinents, vous pouvez considrer que lafnement est termin. Notez que si logcheck ne trouve rien de pertinent dans votre systme, il ne vous enverra pas de courrier mme sil fonctionne (donc, vous pouvez ne recevoir de courrier quune fois par semaine si vous tes chanceux).

4.12.2

Congurer lendroit o les alertes sont envoyes

Debian livre une conguration standard de syslog (dans /etc/syslog.conf) qui archive les messages dans les chiers appropris dpendant de la facilit du systme. Vous devriez tre familier avec ceci ; jetez un il au chier syslog.conf et la documentation si vous ne ltes pas. Si vous avez lintention de maintenir un systme scuris, vous devriez tre conscient de lendroit o les logs sont envoyes ainsi ils ne sont pas perdus dans la nature. Par exemple, envoyer des messages la console est galement utile pour de nombreux systmes de production. Mais pour de nombreux systmes semblables il est galement important dajouter une nouvelle machine qui servira de serveur de log (il reoit les logs de tous les autres systmes). Le courrier de root devrait tre pris en considration galement, de nombreux contrles de scurit (tel snort) envoient des alertes dans la bote aux lettres de root. Celle-ci pointe gnralement sur le premier utilisateur cr sur le systme (vriez /etc/aliases). Prenez garde envoyer le courrier du root un endroit o il sera lu (soit localement soit distance). Il y a dautres comptes et alias rles sur votre systme. Sur un petit systme, cest probablement le plus simple de sassurer que tous ces alias pointent vers le compte root, et que ce mail pour root est retransmis vers la bote aux lettres personnelle de ladministrateur systme. FIXME : Il serait intressant de dire comment un systme Debian peut envoyer/recevoir des messages SNMP relatifs des problmes de scurit (jfs). Voir : snmptragfmt, snmp et snmpd.

4.12.3

Utilisation dun hte darchivage (loghost)

Un loghost est un hte qui recueille les donnes des syslog travers le rseau. Si lune de vos machines est pirate, lintrus nest pas capable de dissimuler ses traces, moins quil ne pirate galement le loghost. Par consquent, le loghost devrait tre particulirement scuris. Faire dune machine un loghost est simple. Il suft juste de dmarrer le syslogd avec syslogd

Chapitre 4. Aprs linstallation

67

-r et un nouveau loghost est n. De faon rendre cela permanent dans Debian, ditez /etc /init.d/sysklogd et changez la ligne SYSLOGD="" par SYSLOGD="-r" Ensuite, congurez les autres machines an quelles envoient les donnes au loghost. Ajoutez une entre comme celle qui suit dans /etc/syslog.conf : facilit.niveau @votre_loghost

Voyez la documentation pour savoir ce quon peut utiliser la place de facilit et niveau (ils ne devraient pas tre mot pour mot comme ceci). Si vous voulez tout archiver distance, il suft dcrire : *.* @votre_loghost

dans votre syslog.conf. Archiver distance ainsi que localement est la meilleure solution (le pirate peut estimer avoir couvert ses traces aprs la suppression des chiers de logs locaux). Voir les pages de manuel syslog(3), syslogd(8) et syslog.conf(5) pour toutes informations complmentaires.

4.12.4

Permissions du chier darchivage

Il est important de dcider non seulement comment les alertes sont utilises, mais aussi qui y accde, i.e. qui peut lire ou modier les chiers de log (si on nutilise pas un hte darchivage). Les alertes de scurit que lattaquant peut changer ou dsactiver sont de peu de valeur en cas dintrusion. Vous devez galement tenir compte que les chiers de log peuvent rvler un grand nombre dinformations propos de votre systme un intrus sil y a accs. Certaines permissions de chiers de log ne sont pas parfaites aprs linstallation (mais, bien sr, cela dpend vraiment de vos rgles de scurit locales). Premirement /var/log/lastlog et /var/log/faillog nont pas besoin dtre lisibles par les utilisateurs normaux. Dans le lastlog, vous pouvez voir qui sest connect rcemment, et dans le faillog, vous voyez un rsum des connexions qui ont choues. Lauteur recommande de un chmod 660 sur les deux chiers. Faites un tour rapide de vos chiers de log et dcidez avec beaucoup dattention quels chiers de log vous rendez lisible/modiable par un utilisateur avec un UID diffrent de 0 et un groupe autre que adm ou root . Vous pouvez facilement vrier ceci sur votre systme avec :

Chapitre 4. Aprs linstallation

68

# find /var/log -type f -exec ls -l {} \; | cut -c 17-35 |sort -u (voir quels utilisateurs appartiennent les fichiers de /var/log) # find /var/log -type f -exec ls -l {} \; | cut -c 26-34 |sort -u (voir quels groups appartiennent les fichiers de /var/log) # find /var/log -perm +004 (fichiers lisibles par tout utilisateur) # find /var/log \! -group root \! -group adm -exec ls -ld {} \; (fichiers appartenant des groupes autres que root ou adm) Pour personnaliser comment les chiers de log sont crs, vous devez probablement personnaliser le programme qui les gnre. Cependant, si le chier de log est archiv, vous pouvez personnaliser le comportement de la cration et de larchivage.

4.13

Les utilitaires pour ajouter des rustines au noyau

FIXME : Cette section a besoin de couvrir la manire dinstaller ces rustines spciques sur Debian en utilisant les paquets kernel-2.x.x-patch-XXX. Debian GNU/Linux fournit quelques rustines pour le noyau Linux qui amliorent sa scurit du systme. En voici quelques-unes : LIDS Linux Intrusion Detection (http://www.lids.org) fourni dans le paquet kernel-patch-2.4-lids. Cette rustine du noyau rend le processus de renforcement dun systme Linux plus facile en vous permettant de restreindre, cacher et protger des processus, mme par rapport au root. Elle implmente des fonctionnalits de contrle daccs obligatoire ( Mandatory Access Control ). POSIX Access Control Lists (http://acl.bestbits.at/) (ACL) pour Linux fourni dans le paquet kernel-patch-acl. Cette rustine du noyau ajoute les listes de contrle daccs, une mthode avance pour restreindre laccs aux chiers, par le noyau linux. Cela vous permet de contrler nement laccs aux chiers et rpertoires. Linux Trustees (http://trustees.sourceforge.net/) fourni dans le paquet trustees. Cette rustine ajoute un systme avanc dcent de gestion des permissions votre noyau Linux. Des objets spciaux (les trustees) sont associs chaque chier ou rpertoire et ils sont stocks dans la mmoire noyau, ce qui permet un accs rapide pour toutes les permissions. NSA Enhanced Linux (du paquet selinux, galement disponible depuis le site web du dveloppeur (http://www.coker.com.au/selinux/)) Le correctif exec-shield (http://people.redhat.com/mingo/exec-shield/) fourni dans le paquet kernel-patch-exec-shield. Ce correctif fournit une protection contre plusieurs dpassements de tampon (attaques par crasement de pile). Le correctif Grsecurity (http://www.grsecurity.net/) fourni par les paquets kernel-patch-2.4-grsecurity et kernel-patch-grsecurity2 21 implmentent le
21 Notez que ce correctif entre en conit avec des correctifs dj inclus dans le paquet de source du noyau Debian. Vous devrez utiliser le noyau dorigine (sans correctifs Debian). Vous pouvez faire cela en suivant les tapes

Chapitre 4. Aprs linstallation

69

contrle daccs obligatoire (Mandatory Access Control) grce RBAC, fournissent une protection de dpassement de tampon grce PaX, des ACL, un caractre alatoire du rseau (pour rendre la reconnaissance de systme dexploitation plus difcile) et beaucoup dautres fonctionnalits (http://www.grsecurity.net/features.php). Le kernel-patch-adamantix fournit les correctifs dvelopps pour Adamantix (http: //www.adamantix.org/), une distribution base sur Debian. Le correctif noyau pour les versions 2.4.x du noyau introduit des fonctionnalits de scurit comme une pile non excutable grce lutilisation de PaX (http://pageexec.virtualave.net/) et du contrle daccs obligatoire bas sur RSBAC (http://www.rsbac.org/). Parmi les autres fonctionnalits, on trouve : le correctif PID alatoire (http://www.vanheusden.com/Linux/ sp/), le priphrique loop chiffr AES, le support MPPE et un rtroportage 2.6 dIPSEC. cryptoloop-source. Ce correctif vous permet dutiliser les fonctions de lAPI de cryptage du noyau pour crer des systmes de chiers crypts en utilisant le priphrique loopback . Support IPSEC du noyau (du paquet kernel-patch-freeswan). Si vous voulez utiliser le protocole IPSec avec Linux, vous avez besoin de cette rustine. Vous pouvez ainsi crer des VPNs trs facilement, mme vers les machines Windows, puisque IPSec est un standard courant. Des fonctionnalits IPsec ont t ajoutes au noyau de dveloppement 2.5, cette fonctionnalit sera donc prsente par dfaut dans le futur noyau Linux 2.6. Site Internet : http://www.freeswan.org. Note : lutilisation de FreeSwan a t rendue obsolte en faveur dOpenSwan. FIXME : les derniers noyaux 2.4 fournis dans Debian incluent un rtroportage du code IPSEC du noyau 2.5. Commentaire sur cela. Les correctifs de scurit du noyau suivants ne sont disponibles que pour danciennes versions du noyau dans Woody et ils sont obsoltes : Openwall (http://www.openwall.com/linux/) par Solar Designer, fourni dans le paquet kernel-patch-2.2.18-openwall. Cest un ensemble utile de restrictions pour le noyau, comme la restriction de liens, FIFOs dans /tmp, une restriction de /proc, une gestion de descripeur de chiers spciaux, une pile de lutilisateur non excutable et bien plus. Note : ce paquet sapplique la version 2.2, aucun paquet nest disponible pour les correctifs de la version 2.4 fournie par Solar. kernel-patch-int. Cette rustine vous permet galement dajouter des fonctionnalits de cryptographie au noyau Linux et elle tait utile pour les versions de Debian jusqu Potato. Elle ne fonctionne pas avec Woody et si vous utilisez Sarge ou une version plus rcente, vous devriez utiliser un noyau plus rcent qui inclut dj ces fonctionnalits. Cependant, certaines rustines ne sont pas encore fournies dans Debian. Si vous croyez que certaines devraient tre incluses, veuillez le demander sur la page des paquets en souffrance et paquets prospectifs (http://www.debian.org/wnpp). Certains dentre eux sont :
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 dinformations, consultez #194225 (http://bugs.debian.org/194225), #199519 (http: //bugs.debian.org/199519), #206458 (http://bugs.debian.org/206458), #203759 (http: //bugs.debian.org/203759), #204424 (http://bugs.debian.org/204424), #210762 (http: //bugs.debian.org/210762), #211213 (http://bugs.debian.org/211213) et la discussion sur debiandevel (http://lists.debian.org/debian-devel/2003/debian-devel-200309/msg01133.html)

Chapitre 4. Aprs linstallation

70

rustine HAP (http://www.theaimsgroup.com/~hlein/hap-linux/) (HAP veut dire Hank Approved Paranoid Linux). Une collection de correctifs de scurit pour les noyaux 2.2.

4.14

Se protger contre les dpassements de tampon

Dpassement de tampon est le nom dune attaque courante sur un logiciel22 qui utilise insufsamment des vrications de limites (une erreur de programmation courante, le plus communment dans le langage C) pour excuter du code machine par des entres de programme. Ces attaques, contre des logiciels serveurs qui attendent des connexions distantes et contre des logiciels locaux qui autorisent des privilges levs aux utilisateurs (setuid ou setgid) peuvent rsulter en la compromission de tout systme donn. Il y a dans lensemble quatre mthodes pour se protger contre les dpassement de tampon : appliquer une rustine au noyau pour empcher lexcution de la pile. Vous pouvez utiliser soit Exec-shield, OpenWall ou PaX (incluant les correctifs Grsecurity et Adamantix) ; utiliser une bibliothque, comme libsafe (http://www.research.avayalabs.com/ project/libsafe/), pour r-crire des fonctions vulnrables et introduire une vrication correcte (pour des informations sur linstallation de libsafe, veuillez lire ceci (http: //www.Linux-Sec.net/harden/libsafe.uhow2.txt)) ; corriger le code source en utilisant des outils pour trouver des fragments qui pourraient introduire cette faille ; recompiler le code pour introduire des vrications corrections qui empchent les dpassements en utilisant, par exemple, StackGuard (http://www.immunix.org/stackguard. html) (qui est utilis par Immunix (http://www.immunix.org)) ou le correctif pour GCC Stack Smashing Protector (SSP) (http://www.research.ibm.com/trl/projects/ security/ssp/) (qui est utilis par Adamantix (http://www.adamantix.org)). Debian GNU/Linux, dans sa version 3.0, fournit des logiciels pour implmenter toutes ces mthodes lexception de la protection de la compilation du code source (mais ceci a t demand dans le bogue n213994 (http://bugs.debian.org/213994)). Notez que mme si Debian fournissait un compilateur qui fournit cette fonction de protection de dpassement de tampon/pile, tous les paquets auraient besoin dtre recompils pour introduire cette fonctionnalit. Cest, en fait, ce que fait Adamantix (entre autres fonctionnalits). Leffet de cette nouvelle fonctionnalit sur la stabilit des logiciels doit encore tre dtermine (certains programmes ou architectures de processeur pourraient tre casss cause delle). Dans tous les cas, soyez conscient que mme ces contournement peuvent ne pas prvenir les dpassements de tampon cas il existe des moyens de circonvenir ceux-ci, comme dcrit dans ldition 58 (http://packetstorm.linuxsecurity.com/mag/phrack/ phrack58.tar.gz) du magazine phrack ou dans lalerte du CORE Failles multiples dans les technologies de protection dcrasement de la pile (http://online.securityfocus. com/archive/1/269246).
Si commune, en fait, quelles ont t la base de 20 % des failles de scurit rapports cette anne, comme dtermin par les statistiques de la base de donnes des failles de lICAT (http://icat.nist.gov/icat.cfm? function=statistics)
22

Chapitre 4. Aprs linstallation

71

Si vous voulez tester votre protection contre les dpassements de tampon, une fois que vous avez mis une en place (quelque que soit la mthode), vous pouvez vouloir installer le paxtest et excuter les tests quil fournit.

4.14.1

Correctif du noyau de protection pour les dpassements de tampon

Des correctifs du noyau lis aux dpassements de tampon incluant le correctif Openwall fournissent une protection contre les dpassements de tampon dans les noyaux Linux 2.2. Pour les noyaux 2.4 et plus rcents, vous devrez utiliser limplmentation Exec-shield ou limplmentation PaX (fourni dans le correctif grsecurity, kernel-patch-2.4-grsecurity et dans le correctif Adamantix, kernel-patch-adamantix). Pour plus dinformations sur lutilisation de ces correctifs, veuillez lire la section Les utilitaires pour ajouter des rustines au noyau page 68.

4.14.2

Protection Libsafe

Protger un systme Debian GNU/Linux avec libsafe est plutt facile. Installez simplement le paquet et rpondez Yes pour avoir la bibliothque prcharge globalement. Soyez attentif, cependant, car cela peut casser des logiciels (notamment, des programmes lis avec lancienne libc5), donc assurez-vous de lire les rapports de bogue rapports (http://bugs.debian. org/libsafe) en premier et testez dabord les programmes les plus critiques dans votre logiciel avec le programme denveloppement libsafe. Note importante : la protection Libsafe peut ne pas tre actuellement effective comme dcrit dans 173227 (http://bugs.debian.org/173227). Considrez de le tester de manire approfondie avant de lutiliser dans un environnement de production et ne dpendez pas exclusivement dessus pour protger votre systme.

4.14.3

Tester des programmes pour les dpassements

Lutilisation doutils pour dtecter des dpassements de tampon ncessitent dans tous les cas une exprience de programmation pour corriger (et recompiler) le code. Debian fournit par exemple : bfbtester (un testeur de dpassement de tampon qui brutalise des binaires par la force par des dpassements de ligne de commande et denvironnement). Dautres paquets intressants pourraient aussi tre rats, pscan, flawfinder et splint.

4.15

Scurisation des transferts de chiers

Pendant ladministration normale du systme, il est habituellement ncessaire de transfrer des chiers partir et vers le systme install. La copie des chiers de faon scurise dun hte vers un autre peut tre effectue en utilisant le paquet serveur ssh. Une autre possibilit est dutiliser ftpd-ssl, un serveur FTP qui utilise Secure Socket Layer pour encrypter les transmissions.

Chapitre 4. Aprs linstallation

72

Toutes ces mthodes ncessitent des clients spciques. Debian fournit des clients logiciels, comme scp du paquet ssh, qui fonctionne comme rcp, mais est compltement encrypt, donc les mchants ne peuvent mme pas savoir CE QUE vous copiez. Il existe galement un paquet client ftp-ssl pour le serveur quivalent. Vous pouvez trouver des clients pour ces logiciels, mme pour dautres systmes dexploitation (non-UNIX), putty et winscp fournissent des implmentations de copie scurise pour toutes les versions des systmes dexploitation de Microsoft. Notez quutiliser scp fournit un accs pour tous les utilisateurs tout le systme de chiers moins de faire un chroot comme dcrit dans Chrooter ssh page 89. Laccs FTP peut tre chroot, ceci est probablement plus facile selon le dmon que vous choisissez, comme dcrit dans Scurisation FTP page 92. Si vous vous inquitez dutilisateurs locaux pouvant parcourir vos chiers locaux et que vous voulez avoir une communication encrypte, vous pouvez utiliser soit un dmon FTP avec support SSL ou combiner un FTP sans cryptage avec une conguration VPN (voir Rseaux Privs Virtuels page 145).

4.16
4.16.1

Limites et contrle des systmes de chiers


Utilisation de quotas

Avoir une bonne politique relative aux quotas est important, vu quelle empche les utilisateurs de remplir le(s) disque(s) dur(s). Vous pouvez utiliser deux systmes de quotas diffrents : les quotas utilisateur et les quotas groupe. Comme vous lavez probablement devin, les quotas utilisateur limitent la quantit despace quun utilisateur peut avoir, les quotas groupe quant eux font la mme chose pour les groupes. Retenez ceci quand vous calculerez les tailles des quotas. Il y a quelques points importants auxquels il faut penser dans la mise en place dun systme de quotas : Garder les quotas sufsamment petits, ainsi les utilisateurs ne dvoreront pas votre espace disque. Garder les quotas sufsamment grands, ainsi les utilisateurs ne se plaindront pas et leur quota de courrier leur permettra daccepter des courriers pendant une longue priode. Utilisez des quotas sur tous les espaces accessibles en criture par les utilisateurs, /home aussi bien que /tmp. Tous les rpertoires et partitions auxquels les utilisateurs ont accs en criture complet devraient avoir les quotas dactivs. Recherchez ces partitions et rpertoires et calculez une taille adapte qui combine disponibilit et scurit. Bon, maintenant vous dsirez utiliser les quotas. Avant tout, vous avez besoin de vrier si vous avez activ le support du quota dans votre noyau. Si non, vous devrez le recompiler. Aprs cela, contrlez si le paquet quota est install. Si non, vous en aurez galement besoin. Lactivation des quotas pour des systmes de chiers diffrents est aussi facile que la modication du paramtre defaults en defaults,usrquota dans votre chier /etc

Chapitre 4. Aprs linstallation

73

/fstab. Si vous avez besoin des quotas par groupe, remplacez usrquota par grpquota. Vous pouvez galement utiliser les deux. Ensuite, crez des chiers vides quota.user et quota.group la racine du systme de chiers sur lequel vous voulez utiliser les quotas (touch /home/quota.user /home/quota.group pour un systme de chiers /home). Redmarrez quota en faisant /etc/init.d/quota stop;/etc/init.d/quota start. Maintenant les quotas devraient tre en fonction et leurs tailles peuvent tre congures. Ldition de quotas pour un utilisateur spcique peut tre ralise en faisant edquota -u <user>. Les quotas par groupes peuvent tre modis avec edquota -g <group>. Ensuite, paramtrez les quotas soft et hard et/ou les quotas pour inodes selon vos besoins. Pour plus dinformations concernant les quotas, voir la page de manuel de la commande quota et le quota mini-howto (/usr/share/doc/HOWTO/en-html/mini/Quota.html). Vous pouvez galement vouloir tudier pam_limits.so. Vous pouvez apprcier ou non lshell, puisque il transgresse le FHS. Aussi prenez note que pam_limits.so peut vous fournir la mme fonctionnalit et lshell est actuellement orphelin (http://bugs.debian.org/93894)

4.16.2

Les attributs spciques du systme de chiers ext2 (chattr/lsattr)

En plus des permissions standard Unix, les systmes de chiers ext2 et ext3 vous offrent un ensemble dattributs spciques qui vous donne plus de contrle sur les chiers de votre systme. la diffrence des persmissions de base, ces attributs ne sont pas afchs par la commande standard ls -l, ni changs par la commande chmod et vous avez besoin de deux autres utilitaires, lsattr et chattr (du paquet e2fsprogs) pour les grer. Notez que ceci veut dire que ces attributs ne sont habituellement pas sauvs quand vous sauvegardez le systme, donc si vous changez lun dentre eux, il peux tre utile de sauver les commandes chattr successives dans un script pour pouvoir les repositionner plus tard si vous avez rcuprer une sauvegarde. Parmi tous les attributs disponibles, les deux plus importants pour amliorer la scurit sont rfrencs par les lettres i et a et ils ne peuvent tre positionns (ou enlevs) que le super-utilisateur : Lattribut i (inchangeable, immutable ) : un chier ayant cet attribut ne peut-tre ni modi ni effac ou encore renomm et aucun lien ne peut le rfrencer, mme par le superutilisateur. Lattribut a (ajout, append ) : cet attribut a le mme effet que lattribut immutable , except que vous pouvez encore ouvrir le chier en mode ajout. Ceci veut dire que vous pouvez encore ajouter plus de contenu au chier, mais quil est impossible de modier un contenu prcdent. Cet attribut est particulirement utile pour les chiers de log stocks dans /var/log/, bien que vous devez considrer quils sont parfois dplacs cause des scripts darchivage. Ces attributs peuvent galement tre positionns pour les rpertoires, dans ce cas, le droit de modier le contenu de la liste dun rpertoire est refus (par exemple, renommer ou suppri-

Chapitre 4. Aprs linstallation

74

mer un chier, etc.). Quand il est appliqu un rpertoire, lattribut dajout ne permet que la cration de chiers. Il est ais de voir que lattribut a amliore la scurit, en donnant aux programmes qui ne fonctionnent pas en tant que super-utilisateur, la possibilit dajouter des donnes un chier sans pouvoir modier son prcdent contenu. Dun autre ct, lattribut i semble moins intressant : aprs tout, le super-utilisateur peut dj utiliser les permissions standards Unix pour restreindre laccs un chier et un intrus qui aurait accs au compte super-utilisateur peut toujours utiliser le programme chattr pour supprimer lattribut. Un tel intrus peut tout dabord tre perplexe quand il se rendra compte quil ne peut pas supprimer un chier, mais vous ne devriez pas supposer quil est aveugle aprs tout, il est entr dans votre systme ! Certains manuels (y compris une prcdente version de ce document) suggrent de supprimer simplement les programmes chattr et lsattr du systme pour amliorer la scurit, mais ce genre de stratgie, aussi connu comme scurit par lobscurit , doit tre absolument vite, car elle donne un sentiment trompeur de scurit. Une faon sre de rsoudre ce problme est dutiliser les fonctionnalits du noyau Linux, comme dcrit dans Dfense proactive page 161. La fonctionnalit intressante est appele ici CAP_LINUX_IMMUTABLE : si vous la supprimez de lensemble des fonctionnalits (en utilisant par exemple la commande lcap CAP_LINUX_IMMUTABLE), il ne sera plus possible nimporte quel attribut a ou i sur votre systme, mme par le super-utilisateur ! Une stratgie complte serait alors la suivante : 1 Positionner les attributs a et i sur tous les chiers que vous dsirez ; 2 Ajouter la commande lcap CAP_LINUX_IMMUTABLE (ainsi que lcap CAP_SYS_MODULE, comme suggr dans Dfense proactive page 161) lun des scripts de dmarrage ; 3 Positionner lattribut i sur ce script et dautres chiers de dmarrage ainsi que sur le binaire lcap lui-mme ; 4 Excuter la commande ci-dessus manuellement (ou r-amorcer le systme pour vous assurer que tout fonctionner comme prvu). Maintenant que la fonctionnalit a t enleve de votre systme, un intrus ne peut plus changer aucun attribut des chiers protgs et donc, il ne peut pas changer ou supprimer les chiers. Sil force la machine redmarrer (ce qui est la seule faon de rcuprer le jeu de fonctionnalits ), cela sera facile dtecter et la fonctionnalit sera de toute faon enleve nouveau ds que le redmarrage du systme. La seule faon de changer un chier protg serait de r-amorcer le systme en mode utiliseur seul (single-user mode) ou dutiliser une autre image damorage, deux oprations qui ncessitent un accs physique la machine !

4.16.3

Vrier lintgrit des systmes de chiers

tes-vous sr que le /bin/login prsent sur votre disque dur soit le mme que celui que vous aviez install il y a de cela quelques mois ? Que faire si cest une version pirate, qui enregistre les mots de passe entrs dans un chier cach ou les envoie en clair travers lInternet ?

Chapitre 4. Aprs linstallation

75

La seule mthode pour avoir un semblant de protection est de vrier vos chiers tous les heures/jours/mois (je prfre quotidiennement) en comparant lactuel et lancien md5sum de ce chier. Deux chiers ne peuvent avoir le mme md5sum (le MD5 est bas sur 128 bits, ainsi la chance que deux chiers diffrents aient le mme md5sum est approximativement de un sur 3.4e3803), donc de ce ct tout est ok, moins que quelquun ait pirat galement lalgorithme qui cre les md5sums sur cette machine. Ceci est extrmement difcile et trs improbable. Vous devriez vraiment prendre en compte que la vrication de vos binaires est trs importante tant donn que ceci est un moyen facile de reconnatre des changements sur vos binaires. Les outils couramment utiliss pour ceci sont sxid, aide (Advanced Intrusion Detection Environment), tripwire, integrit et samhain. Installer debsums vous aidera galement vrier lintgrit du systme de chiers en comparant le md5sum de chaque chier avec celui utilis dans larchive des paquets Debian. Mais faites attention : ces chiers peuvent facilement tre modis par un attaquant et tous les paquets ne fournissent pas de listes de md5sum pour les binaires quils fournissent. Pour plus dinformations, veuillez lire Faites des tests dintgrit priodiques page 158 et Prendre un instantan (snapshot) du systme page 83. Vous pouvez vouloir utiliser locate pour indexer le systme de chiers en entier ; si vous faites cela, envisagez les implications de cette action. Le paquet findutils de Debian contient locate qui sexcute en tant quutilisateur nobody, ainsi, il indexe les chiers qui sont visibles tous les utilisateurs. Cependant, si vous changez son comportement, vous rendrez les emplacements de tous les chiers visibles tous les utilisateurs. Si vous voulez indexer tout le systme de chiers (pas les parties que lutilisateur nobody peut voir), vous pouvez remplacer locate par slocate. slocate est tiquet comme une version amliore au niveau scurit de GNU locate, mais il fournit en fait une fonctionnalit de localisation de chier supplmentaire. Quand il utilise slocate, lutilisateur ne peut voir que les chiers auxquels il a vraiment accs et vous pouvez exclure tout chier ou rpertoire du systme. Le paquet slocate excute le processus de mise jour avec des privilges augments par rapport locate et il indexe tous les chiers. Les utilisateurs peuvent alors rechercher rapidement tout chier quils peuvent voir. slocate ne leur laisse pas voir les nouveaux chiers ; il ltre la sortie selon votre UID FIXME : mentionner les binaires signs utilisant bsign ou elfsign

4.16.4

Mise en place de la vrication setuid

Le paquet Debian checksecurity fournit une tche cron qui sexcute tous les jours dans /etc/cron.daily/checksecurity 23 . Cette tche cron excutera le script /usr/sbin/checksecurity qui sauvegardera linformation sur les changements. Le comportement par dfaut est de ne pas envoyer cette information au superutilisateur mais la place de garder une copie journalire des changements dans /var/log/setuid.changes. Vous devrez positionner la variable MAILTO (dans /etc /checksecurity.conf) root pour que cette information lui soit envoye. Voir checksecurity(8) pour plus dinformations sur la conguration.
23 Dans les versions prcdentes, checksecurity tait intgr dans cron et le chier tait /etc/cron.daily /standard

Chapitre 4. Aprs linstallation

76

4.17

Scurisations des accs rseau

FIXME. Besoin de plus de contenu (spcique Debian)

4.17.1

Conguration des options rseaux du noyau

Beaucoup de fonctionnalits du noyau peuvent tre modies en cours de fonctionnement en envoyant quelque chose (via la commande echo) dans le systme de chiers /proc ou en utilisant sysctl. En entrant sysctl -A, vous pouvez voir ce que vous pouvez congurer et quelles sont les options, elles peuvent tre modies en excutant /sbin/sysctl -w variable=valeur (voir sysctl(8)). Vous aurez seulement en de rares occasions diter quelque chose ici, mais vous pouvez augmenter la scurit de cette manire aussi. Par exemple : net/ipv4/icmp_echo_ignore_broadcasts = 1 Cest un mulateur Windows parce que a agit comme Windows sur les ping de broadcast si celui-ci est positionn 1. Cest--dire que les requtes ICMP_ECHO envoyes ladresse broadcast seront ignores. Sinon, cela ne fait rien. Si vous voulez empcher votre systme de rpondre aux requtes decho ICMP, activez cette option de conguration : net/ipv4/icmp_echo_ignore_all = 1 Pour enregistrer les paquets avec des adresses impossibles ( cause de routes errones) sur votre rseau, utilisez : /proc/sys/net/ipv4/conf/all/log_martians = 1 Pour plus dinformations sur ce qui peut tre fait avec /proc/sys/net/ipv4/*, lisez /usr/src/linux/Documentation/filesystems/proc.txt. Toutes les options sont dcrites de faon complte sous /usr/src/linux/Documentation/networking /ip-sysctl.txt 24 .

4.17.2

Congurer syncookies

Cette option est double tranchant. Dun ct, elle protge votre systme contre le syn packet ooding ; dun autre ct, elle viole les standards dnis (RFCs).
Dans Debian, les paquets kernel-source-version copient les sources sous /usr/src /kernel-source-version.tar.bz2, remplacez simplement version par la version de noyau des sources ques vous avez installs
24

Chapitre 4. Aprs linstallation

77

net/ipv4/tcp_syncookies = 1 Si vous voulez changer cette option chaque fois que le noyau fonctionne, vous devez le faire dans /etc/network/options en positionnant syncookies=yes. Ceci prendra effet chaque fois que /etc/init.d/networking est excut (ce qui est habituellement fait lors du dmarrage) tandis que la commande suivante aura un effet unique jusquau prochain redmarrage : echo 1 > /proc/sys/net/ipv4/tcp_syncookies Cette option nest dispobile que si vous avez compil le noyau avec CONFIG_SYNCOOKIES. Tous les noyaux Debian sont compils avec cette option incluse, mais vous pouvez le vrier en excutant : $ sysctl -A |grep syncookies net/ipv4/tcp_syncookies = 1 Pour plus dinformations sur les syncookies TCP, lisez http://cr.yp.to/syncookies. html.

4.17.3

Scurisation du rseau pendant lamorage

Quand vous positionnez des options de conguration de rseau du noyau, vous devez le congurer pour que ce soit charg chaque fois que le systme est redmarr. Lexemple suivant active un grand nombre des options prcdentes ainsi que dautres options utiles. Il y a en fait deux faons de congurer votre rseau au dmarrage. Vous pouvez congurer /etc/sysctl.conf (voir : sysctl.conf(5)) ou introduire un script qui est appel quand linterface est active. La premire option sera applique toutes les interfaces alors que la seconde option vous permettra de congurer cela interface par interface. Un exemple de chier de conguration /etc/sysctl.conf qui scurisera quelques options de rseau au niveau du noyau est prsent ci-dessous. Notez les commentaires dans ce chier, /etc/network/options peut forcer certaines options si elles sont en contradiction avec celles de ce chier lors de lexcution de /etc/init.d/networking (ce qui a lieu aprs procps dans la squence de dmarrage) : # # # # # # #

/etc/sysctl.conf - Fichier de configuration pour positionner les variables systme Voir sysctl.conf (5) pour plus dinformations. Voir galement les fichiers sous Documentation/sysctl/, Documentation/filesystems/proc.txt et Documentation/networking/ip-sysctl.txt dans les sources du noyau (/usr/src/kernel-$version si vous avez install un paquet de noyau)

Chapitre 4. Aprs linstallation

78

# pour plus dinformations sur les valeurs qui peuvent tre dfinies ici. # # Attention : /etc/init.d/procps est excut pour positionner les # variables suivantes. Cependant, aprs cela, /etc/init.d/networking # positionne certaines options rseau avec des valeurs intrinsques. Ces # valeurs peuvent tre forces en utilisant /etc/network/options. # #kernel.domainname = example.com

# Paramtres supplmentaires - adapt du script fourni # par Dariusz Puchala (voir ci-dessous) # Ignorer les broadcasts ICMP net/ipv4/icmp_echo_ignore_broadcasts = 1 # # Ignorer les erreurs ICMP bogus net/ipv4/icmp_ignore_bogus_error_responses = 1 # # Ne pas accepter les redirections ICMP (empche les attaques MITM) net/ipv4/conf/all/accept_redirects = 0 # _ou_ # Accepter les redirections ICMP uniquement pour les passerelles listes # dans notre liste de passerelles par dfaut (activ par dfaut) # net/ipv4/conf/all/secure_redirects = 1 # # Ne pas accepter les redirections ICMP (nous ne sommes pas un routeur) net/ipv4/conf/all/send_redirects = 0 # # Ne pas faire suivre les paquets IP (nous ne sommes pas un routeur) # Note : Assurez-vous que /etc/network/options contient ip_forward=no net/ipv4/conf/all/forwarding = 0 # # Activer les TCP Syn Cookies # Note : Assurez-vous que /etc/network/options contient syncookies=yes net/ipv4/tcp_syncookies = 1 # # Enregistrer les paquets martiens net/ipv4/conf/all/log_martians = 1 # # Activer la vrification dadresse source pour toutes les interfaces # pour empcher certaines attaques par usurpation # Note : Assurez-vous que /etc/network/options contient spoofprotect=yes net/ipv4/conf/all/rp_filter = 1 # # Ne pas accepter les paquets de routage source IP (nous ne sommes pas un rout net/ipv4/conf/all/accept_source_route = 0

Chapitre 4. Aprs linstallation

79

Pour utiliser le script, vous devez tout dabord le crer, par exemple, dans /etc/network /interface-secure (le nom est donn comme exemple) et lappeler partir de /etc /network/interfaces comme ceci : auto eth0 iface eth0 inet static address xxx.xxx.xxx.xxx netmask 255.255.255.xxx broadcast xxx.xxx.xxx.xxx gateway xxx.xxx.xxx.xxx pre-up /etc/network/interface-secure Dans cet exemple, avant que linterface eth0 ne soit active, le script sera appel pour scuriser toutes les interfaces rseau comme montr ci-dessous. #!/bin/sh -e # Nom du script : /etc/network/interface-secure # Modifie plusieurs comportements par dfaut pour scuriser contre # certaines attaques et usurpations IP pour toutes les interfaces # # Fourni par Dariusz Puchalak # # Active la protection broadcast echo echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # Dsactive lip forwarding echo 0 > /proc/sys/net/ipv4/conf/all/forwarding # Active la protection TCP syn cookie echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# Enregistre les paquets avec des adresses impossibles # (cela inclut les paquets usurps (spoofed), les paquets routs # source, les paquets redirigs), mais faites attention ceci # sur les serveurs web trs chargs echo 1 >/proc/sys/net/ipv4/conf/all/log_martians # Active la protection sur les mauvais messages derreur echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

# Maintenant la protection ip spoofing echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter

Chapitre 4. Aprs linstallation

80

# Et enfin, encore dautres choses # Dsactive lacceptation Redirect ICMP echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects # Dsactive Source Routed echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route exit 0 Remarquez que vous pouvez en fait avoir des scripts par interface qui activeront diffrentes options rseau pour diffrentes interfaces (si vous en avez plus dune), il vous suft de changer la ligne pre-up en : pre-up /etc/network/interface-secure $IFACE et utiliser un script qui napplique les changements qu une interface spcique et non toutes les interfaces disponibles. Notez cependant que certaines options rseau ne peuvent tre appliques que globalement. Un exemple de script est celui-ci : #!/bin/sh -e # Nom du script : /etc/network/interface-secure # Modifie plusieurs comportements par dfaut pour scuriser contre # certaines attaques et usurpations TCP/IP pour une interface donne # # Fourni par Dariusz Puchalak # IFACE=$1 if [ -z "$IFACE" ] ; then echo "$0: Must give an interface name as argument!" echo "Usage: $0 <interface>" exit 1 fi

if [ ! -e /proc/sys/net/ipv4/conf/$IFACE/ ]; then echo "$0: Interface $IFACE does not exist (cannot find /proc/sys/net/ipv4/c exit 1 fi # Dsactive lip forwarding echo 0 > /proc/sys/net/ipv4/conf/$IFACE/forwarding # Enregistre les paquets avec des adresses impossibles

Chapitre 4. Aprs linstallation

81

# (cela inclut les paquets usurps (spoofed), les paquets routs # source, les paquets redirigs), mais faites attention ceci # sur les serveurs web trs chargs echo 1 >/proc/sys/net/ipv4/conf/$IFACE/log_martians # Maintenant la protection ip spoofing echo 1 > /proc/sys/net/ipv4/conf/$IFACE/rp_filter # Et enfin, encore dautres choses # Dsactive lacceptation Redirect ICMP echo 0 > /proc/sys/net/ipv4/conf/$IFACE/accept_redirects echo 0 > /proc/sys/net/ipv4/conf/$IFACE/send_redirects # Dsactive les paquets de routage source echo 0 > /proc/sys/net/ipv4/conf/$IFACE/accept_source_route exit 0 Vous pouvez galement crer un script init.d et le faire excuter au dmarrage (en utilisant update-rc.d pour crer les liens rc.d appropris).

4.17.4

Conguration des fonctionnalits de pare-feu

De faon avoir des privilges de pare-feux, soit pour protger le systme local ou dautres derrire lui, le noyau doit tre compil avec les options correspondant aux pare-feu. Le noyau standard 2.2 de la Debian (galement 2.2) fournit ipchains qui est un pare-feu pour ltrer les paquets, le noyau standard de la Debian 3.0 (noyau 2.4) fournit lui le pare-feu iptables (netlter). Les anciennes distributions Debian auront besoin de rustines appropries pour le noyau (Debian 2.1 utilise le noyau 2.0.34). Dans tous les cas, il est relativement facile dutiliser un noyau diffrent de celui fourni par Debian. Vous pouvez trouver des noyaux pr-compils sous forme de paquets que vous pouvez facilement installer sur le systme Debian. Vous pouvez galement tlcharger les sources du noyau en utilisant kernel-source-X et construire des paquets de noyau personnalis en utilisant make-kpkg du paquet kernel-package. La mise en place de pare-feu dans Debian est aborde plus en dtail dans Ajouter des capacits au pare-feu page 111.

4.17.5

Dsactiver les problmes dhtes weak-end

Les systmes avec plus dune interface sur diffrents rseaux peuvent avoir des services congurs pour quils ne puissent sassocier qu une adresse IP donne. Ceci prvient habituellement les accs aux services quand ils sont interrogs par une adresse donne. Cependant, cela

Chapitre 4. Aprs linstallation

82

ne veut pas dire (bien quil sagisse dune erreur de conception commune que jai moi aussi faite) que le service est li une adresse matrielle donne (carte interface). 25 Ceci nest pas un problme ARP et ce nest pas une violation de RFC (cest ce que lon appelle le weak end host dans la RFC1122 (ftp://ftp.isi.edu/in-notes/rfc1122.txt), section 3.3.4.2). Rappelez-vous que les adresses IP nont rien voir avec les interfaces physiques. Sur les noyaux 2.2 (et antrieurs), ceci peut tre corrig avec : # echo 1 > /proc/sys/net/ipv4/conf/all/hidden # echo 1 > /proc/sys/net/ipv4/conf/eth0/hidden # echo 1 > /proc/sys/net/ipv4/conf/eth1/hidden .....

Sur des noyaux postrieurs, ceci peut tre corrig avec : des rgles iptables, un routage correctement congur 26 , des correctifs du noyau 27 Tout au long de ce texte, il y aura plusieurs occasions pour lesquelles ils est afch comment congurer certains services (serveur sshd, apache, service dimpression, etc.) pour les avoir en attente sur une adresse donne, le lecteur devra prendre en compte que, sans les correctifs donnes ici, le correctif nempchera pas les accs depuis le mme rseau (local). 28 FIXME : commentaires sur bugtraq indiquant quil existe une mthode spcique Linux pour associer une interface donne. FIXME : Crer un bogue sur netbase pour que le correctif de routage soit le comportement standard dans Debian ?
25

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

hte a (eth0 connect sur leth0 de lhte b) : ifconfig eth0 10.0.0.1 ifconfig eth1 23.0.0.1 tcpserver -RHl localhost 23.0.0.1 8000 echo fnord hte 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 lis 127.0.0.1, vous pourriez devoir crire des tests utilisant des sockets raw. 26 Le fait que ce comportement puisse tre chang par le routage a t dcrit par Matthew G. Marsh dans lenlade 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
27 Il existe des correctifs disponibles pour ce comportement comme dcrit dans lenlade sur bugtraq http://www.linuxvirtualserver.org/~julian/#hidden et http://www.fefe.de/ linux-eth-forwarding.diff. 28 Un attaquant peut avoir beaucoup de problmes transfrer un accs aprs une conguration de ladresse IP sil nest pas le domaine de broadcast (mme rseau) que lhte attaqu. Si lattaque passe par un routeur, il peut tre assez difcile pour les rponses de retourner quelque part.

Chapitre 4. Aprs linstallation

83

4.17.6

Protger contre les attaques ARP

Quand vous ne faites pas conance aux autres machines de votre rseau (ce qui devrait toujours tre le cas parce que cest lattitude la plus sre), vous devriez vous protger contre les diffrentes attaques ARP existantes. Comme vous le savez, le protocole ARP est utilis pour lier des adresses IP des adresses MAC (voir la RFC826 (ftp://ftp.isi.edu/in-notes/rfc826.txt) pour tous les dtails). chaque fois que vous envoyez un paquet une adresse IP, une rsolution arp est effectue (en regardant en premier dans le cache local ARP, puis si ladresse IP nest pas prsente dans le cache, en diffusant une requte arp) pour trouver ladresse matrielle de la cible. Toutes les attaques ARP ont pour but damener votre machine crore que ladresse IP de la machine B est associe ladresse MAC de la machine de lintrus ; puis tous les paquets que vous voudrez envoyer ladresse IP associe la machine B seront envoye la machine de lintrus, etc. Ces attaques (empoisonnement du cache, falsication ARP, etc.) permettent lattaquant de renier le trac mme sur des rseaux switchs, pour pirater facilement des connexions, pour dconnecter tout hte du rseau, etc. Les attaques arp sont puissantes et simples implmenter et plusieurs outils existent comme arpspoof du paquet dsniff ou arpoison (http://arpoison.sourceforge.net/). Cependant, il existe toujours une solution : Utiliser un cache statique arp. Vous pouvez mettre en place des entres statiques dans votre cache arp avec : arp -s host_name hdwr_addr En plaant des entres statiques pour chaque hte important de votre rseau, vous garantissez que personne ne pourra crer ou modier une entre (dissimule) pour ces htes (les entres statiques nexpirent pas et elles ne peuvent pas tre modies) et les rponses arp falsies seront ignores. Dtecter le trac ARP suspect. Vous pouvez utiliser arpwatch, karpski ou des IDS plus gnrales qui peuvent galement dtecter le trac arp suspect (snort, prelude (http:// www.prelude-ids.org), etc.). Implmenter un ltrage de trac IP validant ladresse MAC.

4.18

Prendre un instantan (snapshot) du systme

Avant de mettre le systme en production, vous pouvez prendre un instantan de votre systme entier. Cet instantan pourrait tre utilis en cas de compromis (see Aprs la compromission (la rponse lincident) page 165). Vous devriez refaire cette mise jour chaque fois que le systme est mis jour, particulirement si vous mettez jour vers une nouvelle version de Debian. Pour cela, vous pouvez utiliser un support inscriptible et amovible qui peut tre positionn en lecture seule, ce peut tre une disquette (en lecture seule aprs utilisation), un CD dune unit de CD-ROM (vous pourriez utiliser un CD-ROM r-inscriptible, ainsi vous pourriez mme

Chapitre 4. Aprs linstallation

84

garder des sauvegardes des md5sums diffrentes dates), ou un disque USB ou une carte MMC (si votre systme peut accder ceux-ci et quils peuvent tre protgs en criture). Le script suivant cre un tel instantan :

#!/bin/bash /bin/mount /dev/fd0 /mnt/floppy if [ ! -f /usr/bin/md5sum ] ; then echo "Impossible de trouver md5sum. chec." exit 1 fi /bin/cp /usr/bin/md5sum /mnt/floppy echo "Calcul de la base de donnes md5" >/mnt/floppy/md5checksums.txt for dir in /bin/ /sbin/ /usr/bin/ /usr/sbin/ /lib/ /usr/lib/ do find $dir -type f | xargs /usr/bin/md5sum >>/mnt/floppy/md5checksums-lib.tx done echo "Base de donnes md5 de post-installation calcule" if [ ! -f /usr/bin/sha1sum ] ; then echo "Impossible de trouver sha1sum" else /bin/cp /usr/bin/sha1sum /mnt/floppy echo "Calcul de la base de donnes SHA-1" >/mnt/floppy/sha1checksums.txt for dir in /bin/ /sbin/ /usr/bin/ /usr/sbin/ /lib/ /usr/lib/ do find $dir -type f | xargs /usr/bin/sha1sum >>/mnt/floppy/sha1checksums-lib.txt done echo "Base de donnes sha1 de post-installation calcule" fi /bin/umount /dev/fd0 exit 0

Notez que le binaire md5sum (et le binaire sha1sum, sil est disponible) est plac sur la disquette pour pouvoir tre utilis plus tard pour vrier les binaires du systme (juste au cas o il serait aussi corrompu). Cependant, si vous voulez vous asurer que vous excutez bien un binaire lgitime, vous pouvez vouloir, soit compiler une copie statique du binaire md5sum et utiliser celui-ci (pour empcher une bibliothque libc corrompue dinterfrer avec le binaire), soit utiliser des instantans de md5sums depuis un environnement propre exclusivement comme un cdrom de rcupration ou un cdrom autonome (pour empcher un noyau corrompu dinterfrer). Je ne peux insister assez sur ce point : si vous tes sur un systme compromis, vous ne pouvez pas faire conance ce qui safche, voir Aprs la compromission (la rponse lincident) page 165.

Chapitre 4. Aprs linstallation

85

Linstantan ninclut pas les chiers sous /var/lib/dpkg/info qui incluent les hashes md5 des paquets installs (dans les chiers se terminant par .md5sums). Vous pourriez galement y copier cette information, cependant il faut que vous remarquiez que : les chiers md5sums incluent les md5sums de tous les chiers fournis par les paquets Debian, pas seulement les binaires systme. Par consquent, la base de donnes est plus importante (5 Mo contre 600 ko dans un systme Debian GNU/Linux avec un systme graphique et environ 2,5 Go de logiciels installs) et elle ne tiendra sur un petit support amovible (comme une disquette). tous les paquets Debian ne fournissent pas les md5sums pour les chiers install car ce nest pas (actuellement) impos par la Charte. Notez, cependant, que vous pouvez gnrer les md5sums pour tous les paquets en utilisant debsums aprs avoir ni linstallation du systme : # debsums --generate=missing,keep Une fois que linstantan est fait, vous devriez vous assurer de placer le support en lecture seule. Vous pouvez ensuite le stocker pour archivage ou le placer dans le lecteur et utiliser une vrication cron toutes les nuits en comparant les md5sums dorigine avec ceux de linstantan.

4.19
4.19.1

Autres recommandations
Nutilisez pas de logiciels dpendant de svgalib

SVGAlib est trs bien pour les amoureux de la console comme moi mais dans le pass il a t prouv plusieurs fois quelle est trs peu sre. Des exploits contre zgv ont t diffuss et il tait facile de devenir root. Essayez dviter lutilisation de programmes utilisant la SVGAlib chaque fois que cest possible.

Chapitre 4. Aprs linstallation

86

87

Chapitre 5

Scuriser les services de votre systme


Les services prsents sur un systme peuvent tre scuriss de deux faons : Les rendre accessibles uniquement aux points daccs (interfaces). Les congurer correctement ainsi seuls les utilisateurs habilits pourront les utiliser. Restreindre les services pour quils soient accessibles que depuis un endroit bien spcique peut tre fait au niveau du noyau (pare-feu), congurez les services pour couter uniquement sur une interface dnie (certains services ne fournissent peut-tre pas cette fonctionnalit) ou utilisez tout autre mthode, par exemple la rustine vserver pour linux (pour 2.4.16) peut tre utilise pour forcer les processus nutiliser quune interface. Concernant les services lancs par inetd (telnet, ftp, finger, pop3, etc.), il est noter que inetd peut tre congur pour que les services ncoutent que sur une interface prcise (en utilisant la syntaxe service@ip), mais cest une fonctionnalit non documente. Lun de ses remplaants, le mta-dmon xinetd, inclut une option bind pour faire cela. Voir xinetd.conf(5). service nntp { socket_type = stream protocol = tcp wait = no user = news group = news server = /usr/bin/env server_args = POSTING_OK=1 PATH=/usr/sbin/:/usr/bin:/sbin/:/bin +/usr/sbin/snntpd logger -p news.info bind = 127.0.0.1 } Les paragraphes suivants dtaillent comment dterminer les services qui peuvent tre congurs correctement sappuyant sur une utilisation dnie.

Chapitre 5. Scuriser les services de votre systme

88

5.1

Scurisation de ssh

Si vous utilisez toujours telnet au lieu de ssh, vous devriez prendre une pause dans la lecture de ce manuel pour remdier cela. Ssh devrait tre utilis pour toutes les connexions distantes la place de telnet. une poque o il est facile de scruter le trac Internet et dobtenir les mots de passe en clair, vous devriez utiliser uniquement les protocoles qui utilisent la cryptographie. Par consquent, effectuez maintenant un apt-get install ssh sur votre systme. Encourager tous les utilisateurs de votre systme utiliser ssh au lieu de telnet, ou mieux encore, dsinstallez telnet/telnetd. De plus, vous devriez viter de vous connecter au systme en utilisant ssh en tant que root et prfrer lutilisation de mthodes alternatives pour devenir root tel su ou sudo. Enn, le chier sshd_config, dans /etc/ssh, devrait tre modi ainsi pour accrotre la scurit : ListenAddress 192.168.0.1 Ne fates couter ssh que sur une interface donne, juste au cas o vous en avez plus dune (et ne voulez pas que ssh y soit disponible) ou si vous ajoutez, dans le futur, une nouvelle carte rseau (et ne voulez pas de connexions ssh dessus). PermitRootLogin no Essayez autant que possible de ne pas autoriser de connexion en tant que root. Si quelquun veut devenir root via ssh, deux logins sont maintenant ncessaires et le mot de passe root ne peut tre attaqu par la force brute via SSH. Port 666 ou ListenAddress 192.168.0.1:666 Change le port dcoute, ainsi lintrus ne peut tre compltement sr de lexcution dun dmon sshd (soyez prvenus, cest de la scurit par lobscurit). PermitEmptyPasswords no Les mots de passe vides sont un affront au systme de scurit. AllowUsers alex ref Autorise seulement certains utilisateurs avoir accs via ssh cette machine. user@host peut galement tre utilis pour nautoriser laccs qu un utilisateur donn depuis un hte donn. AllowGroups wheel admin Autorise seulement certains membres de groupes avoir accs via ssh cette machine. AllowGroups et AllowUsers ont des directives quivalentes pour interdire laccs la machine. Sans surprise elles sappellent DenyUsers et DenyGroups . PasswordAuthentication yes Il vous appartient compltement de dcider ce que vous voulez faire. Il est plus sr dautoriser laccs la machine uniquement aux utilisateurs avec des cls ssh places dans le chier ~/.ssh/authorized_keys. Si cest ce que vous voulez, positionnez cette option no. Dsactiver toute forme dautorisation dont vous navez pas rellement besoin si vous nutilisez pas, par exemple, RhostsRSAAuthentication, HostbasedAuthentication, KerberosAuthentication ou RhostsAuthentication, vous devriez les dsactiver mme sils le sont dj par dfaut (voir la page de manuel sshd_config(5)). Protocole 2 Dsactiver le protocole version 1, car il a des dfauts de conception qui facilite le crack de mots de passe. Pour plus dinformations, lisez un article concernant les problmes du

Chapitre 5. Scuriser les services de votre systme

89

protocole ssh (http://earthops.net/ssh-timing.pdf) ou le bulletin dalerte Xforce (http://xforce.iss.net/static/6449.php). Bannire /etc/un_fichier Ajouter une bannire (elle sera rcupre du chier) pour les utilisateurs se connectant au serveur ssh. Dans certains pays, envoyer un avertissement avant laccs un systme donn avertissant des accs non autoriss ou du suivi des utilisateurs devrait tre ajout pour avoir une protection lgale. Vous pouvez galement restreindre laccs au serveur ssh en utilisant pam_listfile ou pam_wheel dans le chier de contrle 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=

Pour nir, soyez conscient que ces directives proviennent dun chier de conguration OpenSSH. Actuellement, il y a 3 dmons ssh couramment utiliss, ssh1, ssh2, et OpenSSH par les gens dOpenBSD. Ssh1 tait le premier dmon ssh disponible et est toujours le plus couramment utilis (il y a des rumeurs quil y aurait mme un portage pour Windows). Ssh2 a beaucoup davantages par rapport ssh1 except quil est diffus sous une licence non libre. OpenSSH est un dmon ssh compltement libre, qui supporte la fois ssh1 et ssh2. OpenSSH est la version installe sur Debian quand le paquet ssh est choisi. Vous pouvez obtenir plus dinformations concernant la mise en place de SSH avec le support PAM dans les archives de la liste de discussion scurit (http://lists.debian.org/ debian-security/2001/debian-security-200111/msg00395.html).

5.1.1

Chrooter ssh

OpenSSH ne fournit pas de moyen lheure actuelle pour chrooter automatiquement les utilisateurs lors de la connexion (la version commerciale fournit cette fonctionnalit). Cependant, il existe un projet ayant pour but de fournir cette fonctionnalit pour OpenSSH galement, voir http://chrootssh.sourceforge.net, il nest cependant pas empaquet pour Debian actuellement. Vous pourriez cependant utiliser le module pam_chroot module comme dcrit dans Restriction des utilisateurs page 56. Dans Environnement de chroot pour SSH page 217, vous pouvez trouver plusieurs options pour crer des environnements chroot pour SSH.

5.1.2

Clients ssh

Si vous utilisez un client SSH contre ( ?) le serveur SSH, vous devez vous assurer quils supportent les mmes protocoles qui sont en application sur le serveur. Par exemple, si vous utilisez le paquet mindterm, il ne supporte que le protocole version 1. Cependant, le serveur sshd est, par dfaut, congur pour naccepter que la version 2 (pour des raisons de scurit).

Chapitre 5. Scuriser les services de votre systme

90

5.1.3

Interdire les transferts de chiers

Si vous ne voulez pas que les utilisateurs transfrent des chiers depuis et vers le serveur ssh, vous devez restreindre laccs au sftp-server et laccs scp. Vous pouvez restreindre sftp-server en congurant le bon Subsystem dans /etc/ssh/sshd_config. Cependant, pour restreindre laccs scp, vous devez : soit interdire les connexions dutilisateurs au serveur ssh (comme dcrit ci-dessus par le chier de conguration ou par la conguration PAM), soit ne pas donner de shells valides aux utilisateurs qui ne sont pas autoriss faire des transferts scurits. Cependant, les shells fournis devraient tre des programmes qui justieraient la connexion au serveur ssh par eux-mme, comme des programmes de menus (ala BBS). Sinon, loption prcdente est prfre.

5.2

Scurisation de Squid

Squid est lun des plus populaires serveurs mandataire ( proxy ) et cache et certains problmes de scurit sont prendre en compte. Le chier de conguration par dfaut de Squid refuse toutes les requtes dutilisateurs. Cependant, le paquet Debian permet laccs depuis localhost , il est simplement ncessaire de congurer votre navigateur correctement. Vous devriez congurer Squid pour permettre laccs aux utilisateurs, htes ou rseaux de conance en dnissant une Liste de Contrle dAccs (ACL) dans /etc/squid/squid.conf. Voir le Guide dutilisateur de Squid (http://squid-docs.sourceforge.net/latest/html/ book1.htm) pour plus dinformations propos des rgles ACL. Veuillez noter que Debian fournit une conguration minimale pour Squi qui empche tout, lexception de la connexion de localhost au serveur mandataire (qui fonctionnera sur le port par dfaut 3128). Vous devrez personnaliser votre chier/etc/squid/squid.conf comme ncessaire. La conguration recommande minimum (fournie avec le paquet) est indique ci-dessous : acl acl acl acl acl acl acl acl acl acl acl acl acl acl acl acl all src 0.0.0.0/0.0.0.0 manager proto cache_object localhost src 127.0.0.1/255.255.255.255 SSL_ports port 443 563 Safe_ports port 80 # http Safe_ports port 21 # ftp Safe_ports port 443 563 # https, snews Safe_ports port 70 # gopher Safe_ports port 210 # wais Safe_ports port 1025-65535 # unregistered ports Safe_ports port 280 # http-mgmt Safe_ports port 488 # gss-http Safe_ports port 591 # filemaker Safe_ports port 777 # multiling http Safe_ports port 901 # SWAT purge method PURGE

Chapitre 5. Scuriser les services de votre systme

91

acl CONNECT method CONNECT (...) # Ne permet laccs cachemgr que depuis localhost http_access allow manager localhost http_access deny manager # Ne permet des requtes de purge que depuis localhost http_access allow purge localhost http_access deny purge # Interdit les requtes sur des ports inconnus http_access deny !Safe_ports # Interdit CONNECT sur tout autre port que SSL http_access deny CONNECT !SSL_ports # # INSRER VOTRE (VOS) PROPRE(S) RGLES ICI POUR PERMETTRE LACCS # DEPUIS VOS CLIENTS # http_access allow localhost # En enfin, interdit tout autre accs ce mandataire http_access deny all # Par dfaut : # icp_access deny all # # Permet les requtes ICP depuis tout le monde icp_access allow all Vous pouvez galement congurer Squid selon vos ressources systme, en incluant la mmoire cache (option cache_mem), lemplacement de vos chiers du cache et la quantit despace quils prendront sur disque (option cache_dir). Notez que, sil nest pas congur correctement, nimporte qui peut relayer un message par lintermdiaire de Squid, puisque les protocoles HTTP et SMTP sont conus de faon similaire. Le chier de conguration par dfaut interdit laccs au port 25. Si vous voulez autoriser les connexions sur ce port, il vous faudra lajouter dans la liste des Safe_ports (ports autoriss). Cependant, ce nest PAS recommand. Installer et congurer le serveur mandataire/cache correctement reprsente seulement une partie de la scurisation de votre site. Une autre tche ncessaire consiste dans lanalyse des logs de Squid pour assurer que tout fonctionne comme il se doit. Il y a quelques paquets dans Debian GNU/Linux qui peuvent aider ladministrateur dans cette tche. Les paquets suivant sont disponibles dans Debian 3.0 et les versions ultrieures : calamaris - Analyseur de log pour chiers de Squid ou Oops proxy. modlogan - Un analyseur modulaire de chier logs. squidtaild - Programme de surveillance des logs Squid. Quand vous utilisez Squid en Accelerator Mode, il se comporte galement comme un serveur web. Activer cette option augmente la complexit du code, le rendant moins able. Par dfaut, Squid nest pas congur pour se comporter comme un serveur web, donc vous navez pas

Chapitre 5. Scuriser les services de votre systme

92

besoin de vous tracasser cause de cela. Notez que si vous dsirez utiliser cette fonctionnalit, assurez-vous quelle est vraiment ncessaire. Pour trouver plus dinformations propos de lAccelerator Mode de Squid, consultez le Guide de lutilisateur de Squid Chapitre 9 (http: //squid-docs.sourceforge.net/latest/html/c2416.html).

5.3

Scurisation FTP

Si vous avez rellement besoin dutiliser FTP (sans lemballer avec sslwrap ou lintrieur dun tunnel SSL ou SSH), vous devriez chrooter ftp dans le rpertoire personnel de lutilisateur, ainsi lutilisateur ne pourra rien voir dautre que ses propres rpertoires. Autrement, il pourrait parcourir votre systme comme sil avait un shell. Vous pouvez ajouter la ligne suivante dans votre proftpd.conf dans la section global pour activer ce chroot : DefaultRoot ~ Redmarrez proftpd par /etc/init.d/proftpd restart et vriez si vous pouvez sortir de votre propre rpertoire personnel. Pour prvenir Proftpd dattaques Dos avec lutilisation de ../../.., ajoutez la ligne suivante dans /etc/proftpd.conf : DenyFilter \*.*/ Rappelez-vous toujours que FTP envoie les identiants et les mots de passe dauthentication en clair (ceci nest pas un problme si vous fournissez un service public anonyme) et il existe de meilleures alternatives dans Debian pour cela. Par exemple, sftp (fourni par ssh). Il existe galement dautres implmentatations de SSH pour dautres systmes dexploitation : putty (http://www.chiark.greenend.org.uk/~sgtatham/putty/) et cygwin (http://www.cygwin.com) par exemple. Cependant, si vous maintenez encore le serveur FTP tout en donnant un accs par SSH aux utilisateurs, vous pouvez rencontrer un problme courant. Les utilisateurs accdant aux serveurs FTP en anonyme lintrieur des systmes scuriss par SSH peuvent essayer de se connecter dans le serveur FTP. Bien que laccs sera refus, le mot de passe sera tout de mme envoy en clair sur le rseau. Pour viter cela, le dveloppeur de ProFTPd, TJ Saunders, a cr un correctif pour empcher des utilisateurs de fournir au serveur FTP anonyme des comptes SSH valides. Plus dinformations et le correctif sont disponibles : Correctifs ProFTPD (http://www.castaglia.org/proftpd/#Patches). Ce correctif a t galement indiqu pour Debian, voir le bogue 145669 (http://bugs.debian.org/145669).

5.4

Scurisation de laccs X Window System

Actuellement, les terminaux X sont de plus en plus utiliss dans les entreprises o un seul serveur est ncessaire pour un grand nombre de stations de travail. Ceci peut tre dangereux car vous devez autoriser le serveur de chiers se connecter aux clients (le serveur X dun point de vue X. X intervertit la notion de client et de serveur). Si vous suivez les (trs mauvaises)

Chapitre 5. Scuriser les services de votre systme

93

suggestions de nombreuses documentations, vous tapez xhost + sur votre machine. Ceci autorise tout client X se connecter votre systme. Pour une scurit lgrement meilleure, vous pouvez utiliser la commande xhost +hostname la place, ce qui permet dautoriser uniquement les accs depuis des htes spciques. Une solution encore meilleure serait dutiliser un tunnel ssh pour X et dencrypter toute la session. Ceci est fait automatiquement lors de lutilisation de ssh pour se connecter sur une autre machine. Pour que cela fonctionne, vous devez congurer la fois le client ssh et le serveur ssh. Sur le client ssh, ForwardX11 doit tre positionn yes dans /etc/ssh/ssh_config. Sur le serveur ssh, X11Forwarding doit tre positionn yes dans /etc/ssh/sshd_config et le paquet xbase-clients doit tre install car le serveur ssh utilise /usr/X11R6/bin /xauth pour mettre en place le pseudo-afchage X. lheure de SSH, vous devriez abandonner compltement le contrle daccs bas sur xhost. Pour une scurit accrue, si vous navez pas besoin daccder X depuis dautres machines, dsactivez-le du port 6000 en tapant simplement : $ startx -- -nolisten tcp Ceci est le comportement par dfaut dans XFreenb 4.1.0 (le serveur X fourni dans Debian 3.0 et 3.1). Si vous utilisez XFree 3.3.6 (vous avez donc Debian 2.2 dinstalle), vous pouvez diter /etc/X11/xinit/xserverrc an davoir quelque chose ressemblant ceci : #!/bin/sh exec /usr/bin/X11/X -dpi 100 -nolisten tcp Si vous utilisez XDM, mettez /etc/X11/xdm/Xservers : :0 local /usr/bin/X11/X vt7 -dpi 100 -nolisten tcp. Si vous utilisez Gdm, assurez-vous que loption DisallowTCP=true est positionne dans /etc/gdm/gdm.conf (qui est par dfaut dans Debian). Cela va basiquement ajouter -nolisten tcp chaque ligne de commande X 1 . Vous pouvez galement positionner lexpiration de dlai systme par dfaut pour les blocages xscreensaver. Mme si lutilisateur peut annuler cela, vous devriez diter le chier de conguration /etc/X11/app-defaults/XScreenSaver et changer la ligne de blocage : *lock: (qui est par dfaut dans Debian) : *lock: True False

1 gdm najoutera pas -nolisten tcp sil trouve -query ou -indirect sur la ligne de commande car cela ne pourrait pas fonctionner.

Chapitre 5. Scuriser les services de votre systme

94

FIXME : ajouter des informations sur comment dsactiver les conomiseurs dcran qui afchent lcran de lutilisateur (qui peuvent avoir des informations sensibles). Plus dinfos sur la scurit X Window dans XWindow-User-HOWTO (http://www. linuxdoc.org/HOWTO/XWindow-User-HOWTO.html) (/usr/share/doc/HOWTO /en-txt/XWindow-User-HOWTO.txt.gz). FIXME : Ajouter des informations dune discussion de debian-security pour avoir les modications des chiers de conguration de XFree 3.3.6 pour faire cela.

5.4.1

Vriez votre gestionnaire dafchage

Si vous voulez seulement avoir un gestionnaire dafchage install pour une utilisation locale (en ayant un joli login graphique, cest tout), assurez-vous que le XDMCP (X Display Manager Control Protocol) est dsactiv. Dans XDM, vous pouvez faire cela avec cette ligne dans /etc/X11/xdm/xdm-config : DisplayManager.requestPort: 0

Pour GDM, il devrait y avoir dans votre chier gdm.conf : [xdmcp] Enable=false Normalement, tous les gestionnaires dafchages sont congurs par dfaut pour ne pas dmarrer les services XDMCP dans la Debian.

5.5

Scurisation de laccs limpression (Le problme lpd et lprng)

Imaginez, vous arrivez au travail et limprimante crache une quantit innie de papier car quelquun est en train de provoquer un dni de service sur votre dmon dimpression. Mchant, nest ce pas ? Dans toute architecture dimpression Unix, il y a un moyen de fournir les donnes du client vers le serveur dimpression de lhte. Dans les traditionnels lpr et lp, la commande du client copie ou cre un lien symbolique pour les donnes dans le rpertoire de spool (cest pour cela que ces programmes sont habituellement SUID ou SGID). Pour viter tout problme, vous devriez garder vos serveurs dimpression particulirement srs. Cela veut dire quil est ncessaire de congurer votre service dimpression pour quil autorise seulement les connexions dun ensemble de serveurs de conance. Pour ce faire, ajoutez les serveurs auxquels vous voulez autoriser limpression votre /etc/hosts.lpd. Cependant, mme si vous faites cela, le dmon lpr accepte les connexions entrantes sur le port 515 de nimporte quelle interface. Vous devriez rchir au ltrage par un pare-feu des

Chapitre 5. Scuriser les services de votre systme

95

connexions provenant de rseaux/htes qui ne sont pas autoriss imprimer (le dmon lpr ne peut tre limit pour couter seulement sur une adresse IP donne). Lprng doit tre prfr lpr car il peut tre congur pour faire du contrle daccs bas sur ladresse IP. Vous pouvez spcier linterface sur laquelle se lier (cependant dune manire un peu bizarre) Si vous utilisez une imprimante sur votre systme, mais seulement localement, vous ne voulez pas partager ce service sur le rseau. Vous pouvez considrer lutilisation dautres systmes dimpression, comme celui fournit par cups ou PDQ (http://pdq.sourceforge.net/) qui est bas sur les permissions utilisateurs du priphrique /dev/lp0. Dans cups, les donnes dimpression sont transfres vers le serveur via le protocole HTTP. Ceci veut dire que le programme client na pas besoin de privilges spciaux, mais cela ncessite que le serveur coute sur un port quelque part. Cependant, si vous voulez utiliser cups, mais seulement localement, vous pouvez le congurer pour se lier linterface de bouclage (loopback) en modiant /etc/cups/cupsd.conf :

Listen 127.0.0.1:631

Il y a plusieurs autres options de scurit comme autoriser ou interdire des rseaux et htes dans le chier de conguration. Cependant, si vous nen avez pas besoin, il peut tre prfrable de simplement limiter le port dcoute. Cups fournit galement la documentation par le port HTTP, si vous ne voulez pas dvoiler des informations potentiellement utiles aux attaquants extrieurs (et que le port est ouvert), ajoutez galement :

<Location /> Order Deny,Allow Deny From All Allow From 127.0.0.1 </Location>

Ce chier de conguration peut tre modi pour ajouter plus de fonctionnalits y compris des certicats SSL/TLS et du cryptage. Les manuels sont disponibles sur http ://localhost :631/ ou cups.org. FIXME : Ajouter plus de contenu (larticle sur Amateur Fortress Building (http://www. rootprompt.org) fournit certains points de vues trs intressants). FIXME : Vrier la disponibilit de PDG dans la Debian, et sil lest, le suggrer comme le systme dimpression prfr. FIXME : Vrier si Farmer/Wietse a une alternative pour le dmon dimprimante et si il est disponible dans la Debian.

Chapitre 5. Scuriser les services de votre systme

96

5.6

Scurisation du dmon mail

Si votre serveur nest pas un systme denvoi de mail, vous navez pas rellement besoin dun dmon mail coutant les connexions entrantes, mais vous pourriez vouloir que votre courrier local soit distribu pour, par exemple, recevoir le courrier pour lutilisateur root en provenance dun des systmes dalerte en place. Si vous avez exim, vous navez pas besoin que le dmon tourne pour le faire car la tche standard cron vide la le des messages. Voir Dsactivation de services dmon page 33 sur comment faire cela.

5.6.1

Congurer un Nullmailer

Vous pouvez vouloir avoir un dmon local de courrier pour quil puisse relayer les courriers envoys localement un autre systme. Ceci est courant quand vous avez administrer un certain nombre de systmes et que vous ne voulez pas vous connecter chacun dentre eux pour lire le courrier envoy localement. Tout comme loguer tout sur chaque systme individuel peut tre centralis en utilisant un serveur syslog central, les courriers peuvent tre envoys un serveur de courriers central. Un tel systme relai-seulement devrait tre congur correctement pour cela. Le dmon pourrait galement tre congur pour ncouter que sur ladresse de bouclage. Les tapes de conguration suivantes ne doivent tre suivies que si vous congurez le paquet exim dans la version 3.0 de Debian. Si vous utilisez une version ultrieure (comme la version 3.1 qui utilise exim4), le systme dinstallation a t amlior an que, si le MTA est congur pour ne dlivrer que des messages locaux, il ne va autoriser des connexions que depuis lhte local et interdire toute connexion distante. Sur un systme Debian 3.0 utilisant exim, vous devrez retirer le dmon smtp dinetd : $ update-inetd --disable smtp et congurer le dmon de courrier pour couter seulement sur linterface de bouclage. Dans exim (le MTA par dfaut) vous pouvez faire a en ditant le chier /etc/exim.conf et en ajoutant la ligne suivante : local_interfaces = "127.0.0.1" Redmarrez les deux dmons (inetd et exim) et vous aurez exim qui coutera sur la socket 127.0.0.1 :25 uniquement. Faites attention, et avant tout dsactivez inetd, sinon exim ne dmarrera pas tant donn que le dmon inetd est dj en attente de connexions entrantes. Pour postfix ditez /etc/postfix/main.conf : inet_interfaces = localhost

Chapitre 5. Scuriser les services de votre systme

97

Si vous voulez seulement le courrier local, cette approche est meilleure que lencapsulation du dmon mail par un tcp wrapper ou lajout de rgles pare-feu pour limiter les personnes qui y accdent. Cependant, si vous navez pas besoin dcouter sur dautres interfaces, vous pourriez envisager de le lancer partir dinetd et ajouter un tcp wrapper pour que les connexions entrantes soit vries par rapport /etc/hosts.allow et /etc/hosts.deny. De plus, vous serez au courant quand un accs non autoris est tent contre votre dmon de courrier, si vous mettez en place correctement le logging pour nimporte laquelle des mthodes dcrites plus haut. En tout cas, pour rejeter les tentatives de relai de courrier au niveau SMTP, vous pouvez changer /etc/exim/exim.conf pour inclure : receiver_verify = true Mme si votre serveur de courrier ne relaiera pas le message, ce genre de conguration est ncessaire au testeur de relai http://www.abuse.net/relay.html pour dterminer que votre serveur ne peut pas faire de relai. Si vous voulez une conguration relai-seulement, cependant, vous pouvez vouloir changer le dmon de courrier pour des programmes qui ne peuvent tre congurs que pour faire suivre le courrier un serveur de courrier distant. Debian fournit actuellement les paquets ssmtp et nullmailer dans ce but. En tout cas, vous pouvez valuer pour vous-mme lun de ces deux agents de transport de courrier 2 fournis par Debian et voir lequel correspond le mieux aux buts du systme.

5.6.2

Fournir un accs scuris aux botes lettres

Si vous dsirez donner un accs distance aux botes lettres, il y a un certain nombre de dmons POP3 et IMAP disponibles3 Cependant, si vous fournissez un accs IMAP, notez quil sagit dun protocole gnrique daccs aux chiers, il peut devenir lquivalent dun accs shell car les utilisateurs peuvent tre capable de rcuprer tout chier par celui-ci. Essayez, par exemple, de congurer comme chemin de votre bote de rception {server.com}/etc/passwd, si cela russit, votre dmon IMAP nest pas congur correctement pour empcher ce genre daccs. Parmi les serveurs IMAP dans Debian, le serveur cyrus (dans le paquet cyrus-imapd) contourne cela en ayant tous les accs sur une base de donnes dans une partie restreinte du systme de chiers. galement, uw-imapd (installez soit uw-imapd ou mieux, si votre
2

Pour rcuprer la liste des dmons de courrier disponibles dans Debian, essayez :

$ apt-cache search mail-transport-agent La liste ninclura pas qmail, qui est distribu seulement comme code source dans le paquet qmail-src. 3 Une liste des serveurs/dmons supportant ces protocoles dans Debian peut tre rcupre avec : $ apt-cache search pop3-server $ apt-cache search imap-server

Chapitre 5. Scuriser les services de votre systme

98

client IMAP le supporte, uw-imapd-ssl) peut tre congur pour chrooter les rpertoires de courrier des utilisateurs, mais ceci nest pas activ par dfaut. La documentation fournie donne plus dinformations sur la faon de le congurer. Vous pouvez galement vouloir faire fonctionner un serveur IMAP qui nait pas besoin que des utilisateurs valides soient crs sur le systme local (ce qui donnerait galement un accs shell), les paquets courier-imap (pour IMAP), courier-pop teapop (pour POP3) et cyrus-imapd (pour POP3 et IMAP) fournissent des serveurs avec des mthodes dauthentication en plus des comptes utilisateur locaux. cyrus peut utiliser toute mthode dauthentication qui peut tre congure par PAM tandis que teapop peut utiliser des bases de donnes (comme postgresql et mysql) pour lauthentication des utilisateurs. FIXME : Vrier : uw-imapd peut tre congur avec lauthentication utilisateur grce PAM galement.

5.6.3

Rception du courrier dune manire sre.

La lecture/rception du courrier est le plus courant des protocoles en texte clair. Si vous utilisez soit POP3 ou IMAP pour rcuprer votre courrier, vous envoyez votre mot de passe en clair travers le rseau, et donc presque tout le monde peut lire votre courrier partir de maintenant. la place, utilisez SSL (Secure Sockets Layer) pour recevoir votre courrier. Lautre alternative est SSH, si vous avez un compte shell sur la machine qui sert de serveur POP ou IMAP. Voici un fetchmailrc simple dcrivant cela : poll my-imap-mailserver.org via "localhost" with proto IMAP port 1236 user "ref" there with password "hackme" is alex here warnings 3600 folders .Mail/debian preconnect ssh -f -P -C -L 1236:my-imap-mailserver.org:143 -l ref my-imap-mailserver.org sleep 15 </dev/null > /dev/null Le preconnect est la ligne importante. Il lance une session ssh et cre le tunnel ncessaire, qui relaie automatiquement les connections au port local 1236 vers le port IMAP du serveur de mail, mais cryptes. Une autre possibilit serait dutiliser fetchmail avec la fonctionnalit ssl. si vous dsirez fournir des services de courrier comme POP et IMAP crypts, apt-get install stunnel et dmarrez vos dmons ainsi : stunnel -p /etc/ssl/certs/stunnel.pem -d pop3s -l /usr/sbin/popd Cette commande encapsule le dmon fourni (-l) au port (-d) et utilise le certicat ssl spci (-p).

Chapitre 5. Scuriser les services de votre systme

99

5.7

Scurisation de BIND

Il y a diffrents problmes qui peuvent tre traits pour scuriser le dmon de serveur de domaine ; problmes similaires ceux tudis quand on scurise nimporte quel service donn : congurer le dmon lui-mme pour quil ne puisse pas tre mal utilis de lextrieur (voir Conguration de Bind pour viter de mauvaises utilisations de la prsente page). Cela inclut limiter les requtes possibles pour les clients : transferts de zones et requtes rcursives. limiter laccs du dmon au serveur lui-mme, ainsi sil est utilis pour sintroduire, les dommages au systme sont limits. Cela inclut dexcuter le dmon en tant quutilisateur non privilgi (voir Changer lutilisateur de BIND page 101) et le chrooter (voir Chrooter le serveur de domaine page 103).

5.7.1

Conguration de Bind pour viter de mauvaises utilisations

Vous devriez restreindre certaines informations donnes par le serveur DNS aux clients extrieurs pour quil ne puisse pas tre utilis pour obtenir des informations de valeur sur votre organisation que vous ne voudriez pas divulguer. Cela inclut lajout des options suivantes : allow-transfer, allow-query, allow-recursive et version. Vous pouvez soit limiter cela dans la section globale (pour que cela sapplique toutes les zones servies) ou individuellement par zone. Cette information est documente dans le paquet bind-doc, lisez en plus ce sujet dans /usr /share/doc/bind/html/index.html une fois que le paquet est install. Imaginez que votre serveur (un serveur avec plusieurs adresses de base) est connect Internet et votre rseau interne (votre adresse IP interne est 192.168.1.2), vous ne voulez fournir aucun service Internet et vous voulez juste autoriser les consultations DNS partir de vos htes internes. Vous pourriez le restreindre en incluant dans /etc/bind/named.conf : options { allow-query { 192.168.1/24; } ; allow-transfer { none; } ; allow-recursion { 192.168.1/24; } ; listen-on { 192.168.1.2; } ; forward { only; } ; forwarders { A.B.C.D; } ; }; Loption listen-on lie uniquement le DNS linterface ayant une adresse interne, mais, mme si cette interface est la mme que linterface qui permet la connexion lInternet (par lutilisation de NAT, par exemple), les requtes ne seront acceptes que si celles-ci proviennent dhtes internes. Si le systme est constitu de plusieurs interfaces et que le listen-on nest pas prsent, seuls les utilisateurs internes pourront mettre des requtes, mais, puisque le port restera accessible des attaquants externes, ils pourront essayer de faire tomber (ou tenter une attaque dexploit de dbordement de tampon) le serveur DNS. Vous pouvez mme le mettre uniquement en coute sur ladresse 127.0.0.1 si vous ne dsirez pas offrir le service quelquun dautre qu vous mme.

Chapitre 5. Scuriser les services de votre systme

100

Lenregistrement version.bind dans la classe chaos contient la version du processus bind actuellement en cours dexcution. Cette information est souvent utilise par des scanners automatiss et des individus malveillants qui souhaitent dterminer si un bind est vulnrable une attaque spcique. En fournissant des informations fausses ou pas dinformations du tout, on limite la probabilit quun serveur soit attaqu sur la base de la version quil publie. Pour fournir votre propre version, utilisez la directive version de la manire suivante : options { ... diverses options ici ... version "Not available."; }; Changer lenregistrement version.bind ne fournit pas actuellement de protection contre les attaques, mais ceci devrait tre considr comme une protection utile. Un chier de conguration named.conf dexemple pourrait tre me suivant : acl internal { 127.0.0.1/32; 10.0.0.0/8; aa.bb.cc.dd; }; acl friendly { ee.ff.gg.hh; aa.bb.cc.dd; 127.0.0.1/32; 10.0.0.0/8; };

// localhost // interne // IP eth0

// // // //

DNS escalve IP eth0 localhost interne

options { directory "/var/cache/bind"; allow-query { internal; }; allow-recursion { internal; }; allow-transfer { none; }; }; // partir dici jusqu la zone mysite.bogus // est dans lensemble non modifi des valeurs par dfaut Debian logging { category lame-servers { null; }; category cname { null; }; }; zone "." { type hint;

Chapitre 5. Scuriser les services de votre systme

101

file "/etc/bind/db.root"; }; zone "localhost" { type master; file "/etc/bind/db.local"; }; zone "127.in-addr.arpa" { type master; file "/etc/bind/db.127"; }; zone "0.in-addr.arpa" { type master; file "/etc/bind/db.0"; }; zone "255.in-addr.arpa" { type master; file "/etc/bind/db.255"; }; // Zones ajoutes moi-mme zone "mysite.bogus" { type master; file "/etc/bind/named.mysite"; allow-query { any; }; allow-transfer { friendly; }; }; Veuillez (sil vous plait) vrier le systme de suivi des bogues (BTS), spciquement Bug #94760 (regarding ACLs on zone transfers) (http://bugs.debian.org/94760). Vous pouvez contribuer si vous le dsirez au rapport de bogue si vous pensez pouvoir ajouter des informations utiles.

5.7.2

Changer lutilisateur de BIND

Concernant la limitation des privilges de BIND vous devez tre conscient que si un utilisateur autre que root excute BIND, alors BIND ne peut pas dtecter de nouvelles interfaces automatiquement, par exemple, quand vous insrez une carte PCMCIA dans votre portable. Consultez le chier README.Debian dans votre rpertoire de documentation named (/usr /share/doc/bind/README.Debian) pour plus dinformation sur ce problme. Il y a eu rcemment de nombreux problmes de scurit concernant BIND, donc le changement dutilisateur est utile quand il est possible, cependant si vous dsirez le faire de faon automatique,

Chapitre 5. Scuriser les services de votre systme

102

vous pouvez essayer le script fourni dans Exemple de script pour changer linstallation par dfaut de Bind. page 209. Pour dmarrer BIND sous un autre utilisateur, tout dabord crez un utilisateur et un groupe spar (ce nest pas une bonne ide dutiliser nobody ou nogroup pour chaque service ne devant pas tourner en tant que root). Dans cette exemple, lutilisateur et le groupe named seront utiliss. Vous pouvez faire cela en tapant : addgroup named adduser --system --home /home/named --no-create-home --ingroup named \ --disabled-password --disabled-login named Notez que lutilisateur named sera trs restreint. Si vous dsirez, pout toute raison, avoir une conguration moins restrictive, utilisez : addgroup named adduser --system --ingroup named named Maintenant ditez, laide de votre diteur favori, /etc/init.d/bind et changez les lignes commenant par start-stop-daemon --start en4 start-stop-daemon --start --quiet --exec /usr/sbin/named -- -g named -u named Changez les permissions des chiers utiliss par Bind, y compris /etc/bind/rndc.key : -rw-r----1 root named 77 Jan 4 01:02 rndc.key

et lendroit o bind cre son chier pid en utilisant, par exemple /var/run/named au lieu de /var/run : $ mkdir /var/run/named $ chown named.named /var/run/named $ vi /etc/named.conf [ ... mettez le fichier de configuration jour en utilisant ce nouvel emplacement ...] options { ... pid-file "/var/run/named/named.pid"; }; [ ... ]
4 Notez que selon votre version de bind, il se peut que vous nayez pas loption -g, en particulier si vous utilisez Woody et que vous installez bind9 (9.2.1-2.woody).

Chapitre 5. Scuriser les services de votre systme

103

Pour viter galement dexcuter quoi que ce soit en tant que root, changez la ligne reload en commentant : reload) /usr/sbin/ndc reload Et changez cela en reload) $0 stop sleep 1 $0 start Note : Selon votre version de Debian, vous pouvez devoir changer la ligne restart galement. Ceci a t corrig dans la version 1:8.3.1-2 du bind de Debian. Tout ce dont vous avez besoin est de redmarrer bind laide de /etc/init.d/bind restart puis rechercher dans votre syslog les deux entres suivantes : Sep Sep 4 15:11:08 nexus named[13439]: group = named 4 15:11:08 nexus named[13439]: user = named

Voil ! Maintenant votre named ne sexcute plus en tant que root. Si vous voulez lire plus dinformations sur pourquoi BIND ne fonctionne pas en tant quutilisateur non root sur les systmes Debian, veuillez vrier le systme de suivi des bogues concernant Bind, spciquement Bug #50013 : bind should not run as root (http://bugs.debian.org/50013) et Bug #132582 : Default install is potentially insecure (http://bugs.debian.org/132582), Bug #53550 (http://bugs.debian.org/53550), Bug #52745 (http://bugs.debian.org/ 52745) et Bug #128129 (http://bugs.debian.org/128129). Vous pouvez contribuer ces rapports de bogue si vous le dsirez si vous pensez pouvoir ajouter des informations utiles.

5.7.3

Chrooter le serveur de domaine

Pour atteindre une scurit de BIND maximale, construisez maintenant une prison chroot (voir Paranoa gnralise du suid et du chroot page 107) autour de votre dmon. Il y a un moyen facile de faire cela : loption -t (voyez la page de manuel named(8) ou la page 100 de ladocumentation de Bind 9 (PDF) (http://www.nominum.com/content/documents/ bind9arm.pdf) ). Cela fera que Bind se chrootera lui-mme dans le rpertoire donn sans que vous ayez besoin de congurer une prison chroot et de vous inquiter au sujet des librairies dynamiques. Les seuls chiers qui doivent tre dans cette prison chroot : dev/null etc/bind/

- doit contenir named.conf et toutes les zones du serveur

Chapitre 5. Scuriser les services de votre systme

104

sbin/named-xfer - si vous faites du transfert de nom var/run/named/ - devrait contenir le pid et le cache du serveur de nom (sil existe), ce rpertoire doit tre inscriptible par lutilisateur named var/log/named - si vous configurez le log vers un fichier, doit tre inscriptible par lutilisateur named dev/log - syslogd devrait couter ici si named est configur pour loguer en lutilisant Pour que votre dmon Bind fonctionne correctement il a besoin de permissions dans les chiers named. Cest une tche facile car les chiers de conguration sont toujours dans /etc/named. Tenez compte quil ncessite seulement un accs en lecture seule aux chiers de zone, moins quil ne soit un serveur de nom secondaire ou serveur cache. Si cest votre cas vous aurez donner les permissions en lecture-criture aux zones ncessaires (pour que les transferts de zone partir du serveur primaire fonctionnent). De plus, vous pouvez trouver plus dinformations concernant le chrootage de Bind dans le Chroot-BIND-HOWTO (http://www.linuxdoc.org/HOWTO/Chroot-BIND-HOWTO. html) (au sujet de Bind 9) et Chroot-BIND8-HOWTO (http://www.linuxdoc.org/ HOWTO/Chroot-BIND8-HOWTO.html) (au sujet de Bind 8). Ces mmes documents devraient tre disponibles par linstallation de doc-linux-text (version texte) ou doc-linux-html (version html). Un autre document utile est http://web.archive.org/ web/20011024064030/http://www.psionic.com/papers/dns/dns-linux. Si vous congurez une vritable prison chroot (i.e. pas juste loption -t) pour Bind 8.2.3 dans la Debian (potato), assurez-vous quelle contient les chiers suivants : dev/log - syslogd devrait couter ici dev/null etc/bind/named.conf etc/localtime etc/group - avec une seule ligne: "named:x:GID:" etc/ld.so.cache - gnr avec ldconfig lib/ld-2.1.3.so lib/libc-2.1.3.so lib/ld-linux.so.2 - li symboliquement ld-2.1.3.so lib/libc.so.6 - li symboliquement libc-2.1.3.so sbin/ldconfig - pourra tre effac aprs la configuration du chroot sbin/named-xfer - si vous faites des transferts de nom var/run/ Et modiez galement syslogd coutant dans $CHROOT/dev/log pour que le serveur de nom puisse crire des entres syslog dans le log du systme local. Si vous voulez viter des problmes avec les bibliothques dynamiques, vous pouvez compiler bind statiquement. Vous pouvez utiliser apt-get pour cela avec loption source. Il peut

Chapitre 5. Scuriser les services de votre systme

105

mme rcuprer les paquets dont vous avez besoin pour le compiler correctement. Il vous faidrait faire quelque chose comme : $ apt-get source bind # apt-get build-dep bind $ cd bind-8.2.5-2 (diter src/port/linux/Makefile pour que CFLAGS inclut loption -static) $ dpkg-buildpackage -rfakeroot -uc -us $ cd .. # dpkg -i bind-8.2.5-2*deb Aprs linstallation, vous devrez dplacer des chiers dans la prison chroot5 vous pouvez conserver les scripts init.d dans /etc/init.d pour que le systme lance automatiquement le serveur de domaine, mais ditez les pour ajouter --chroot /location_of_chroot dans les appels start-stop-daemon dans ces scripts. Pour plus dinformations sur la mise en place de chroots, consultez Paranoa gnralise du suid et du chroot page 107. FIXME, inclure les informations provenant de http://people.debian.org/~pzn/ howto/chroot-bind.sh.txt, http://www.cryptio.net/~ferlatte/config/ (spcique Debian), http://web.archive.org/web/20021216104548/http: //www.psionic.com/papers/whitep01.html, http://csrc.nist.gov/fasp/ FASPDocs/NISTSecuringDNS.htm.

5.8

Scurisation dApache

FIXME. Ajout de contenu : modules fournis par linstallation normale dApache (sous /usr/lib/apache/X.X/mod_*) et modules qui peuvent tre installs sparment dans les paquets libapache-mod-XXX. Vous pouvez limiter laccs au serveur Apache si vous voulez uniquement lutiliser en interne (dans un but dessai, pour accder larchive doc-central , etc.) et si vous ne voulez pas que des intrus y accdent. Pour raliser cela, utilisez les directives Listen ou BindAddress dans /etc/apache/http.conf. En utilisant Listen : Listen 127.0.0.1:80 En utilisant BindAddress : BindAddress 127.0.0.1
5 sauf si vous utilisez loption instdir lors de lappel dpkg mais alors la prison chroot peut tre un petit peu plus complexe

Chapitre 5. Scuriser les services de votre systme

106

Ensuite, redmarrez apache avec /etc/init.d/apache restart et vous observerez quil coute uniquement linterface loopback. Dans tous les cas, si vous nutilisez pas toutes les fonctionnalits fournies par Apache, vous pouvez jeter un il aux autres serveurs web fournis dans Debian tel dhttpd. La Documentation Apache (http://httpd.apache.org/docs/misc/security_tips. html) fournit des informations concernant les mesures de scurit prendre pour les serveurs web Apache (ces mmes informations sont fournies dans Debian par le paquet apache-doc). Plus dinformations sur des restrictions supplmentaires dApache en mettant en place une prison chroot dans Environnement de chroot pour Apache page 231.

5.8.1

Dsactiver la publication de contenu sur le web par les utilisateurs

Linstallation par dfaut dApache dans Debian permet aux utilisateurs de publier du contenu dans leur rpertoire $HOME/public_html. Ce contenu peut tre rcupr distance en utilisant une URL comme : http ://your_apache_server/~user. Si vous ne voulez pas permettre cela, vous devez changer le chier de conguration /etc /apache/http.conf en commentant : LoadModule userdir_module /usr/lib/apache/1.3/mod_userdir.so Mais, si le module a t li statiquement (vous pouvez vrier cela en excutant apache -l), vous devez ajouter la ligne suivante la place : Userdir disabled Remarque : Le mot-cl disabled nest disponible que dans Apache 1.3 et suprieur. Si vous utilisez danciennes versions dApache, vous devez changer le chier de conguration et ajouter : <Directory /home/*/public_html> AllowOverride None Order deny,allow Deny from all </Directory> Un attaquant peut encore faire de lnumration dutilisateur, car la rponse du serveur web sera un 403 Permission Denied et non un 404 Not available.

5.8.2

Permissions des chiers de log

Les chiers de log dApache, depuis la version 1.3.22-1, ont pour propritaire lutilisateur root et pour groupe adm avec les permissions 640. Ces permissions sont changes aprs la rotation. Un intrus qui peut accder au systme par le serveur web ne pourra pas (sans escalade de privilge) enlever danciennes entres de chiers de log.

Chapitre 5. Scuriser les services de votre systme

107

5.8.3

Fichiers web publis

Les chiers dApache sont situs sous /var/www. Juste aprs linstallation, le chier par dfaut fournit quelques informations sur le systme (principalement quil sagit dun systme Debian excutant Apache). Les pages web par dfaut appartiennent lutilisateur root et au groupe root par dfaut alors que le processus Apache sexcutent avec lutilisateur www-data et le groupe www-data. Ceci devrait plus difcile aux attaquants qui compromettent le systme par le site web de dgurer le site. Vous devriez, bien sr, remplacer les pages web par dfaut (qui peuvent fournir des informations que vous ne voulez pas donner aux visiteurs) avec les vtres.

5.9

Scurisation de nger

Si vous dsirez utiliser le service nger, demandez-vous si vous en avez rellement besoin. Si oui, vous dcouvrirez que Debian fournit de nombreux dmons nger (sortie dun apt-cache search fingerd) : cngerd - Un dmon nger congurable. engerd - Un autre dmon nger pour Unix capable syntoniser prcisment votre sortie. fngerd - Un dmon nger scuris. ngerd - Un serveur distant pour informations dutilisateurs. xngerd - Dmon nger de type BSD avec le support qmail.

ffingerd est le dmon nger recommand si vous comptez lutiliser pour un service public. Dans tous les cas, vous tes encourag, lors de la mise en place via inetd, xinetd ou tcpserver : limiter le nombre de processus qui seront lancs en mme temps, limiter les accs au dmon nger depuis un nombre donn dhtes (en utilisant tcp wrappers) et de lavoir en coute uniquement sur une interface bien dnie.

5.10

Paranoa gnralise du suid et du chroot

chroot est lune des plus puissantes possibilits pour restreindre un dmon, un utilisateur ou un autre service. Imaginez simplement une prison autour de votre cible, de laquelle votre cible ne peut schapper (normalement, mais il y a encore beaucoup de conditions qui peuvent permettre de schapper dune telle prison). Si vous ne fait pas conance lutilisateur ou au service, vous pouvez crer un environnement racine modi ( root ) pour lui. Ceci peut utiliser pas mal despace disque car vous devez copier tous les excutables ncessaires, ainsi que des bibliothques, dans la prison. Mais alors, mme si lutilisateur fait quelque chose de malfaisant, ltendu des dommage est limite la prison. Un grand nombre de services fonctionnant comme dmons pourraient bncier de ce type darrangement. Les dmons que vous installez dans votre distribution Debian ne seront cependant pas fournis chroots6 par dfaut.
6

Elle essaie de les faire fonctionner avec le minimum de privilges, ce qui inclut de faire tourner les dmons avec

Chapitre 5. Scuriser les services de votre systme

108

Ceci inclut : serveurs de domaines (comme bind), serveurs web (comme apache), serveurs de courrier (comme sendmail) et serveurs ftp (comme wu-ftpd). Il est probablement juste de dire que la complexit de BIND est la raison pour laquelle il a t expos de nombreuses attaques ces dernires annes (voir Scurisation de BIND page 99). Cependant, Debian fournit des logiciels qui peuvent vous aider mettre en place des environnements chroot. Voir Crer des environnements chroot automatiquement de la prsente page. De toute faon, si vous excutez un quelconque service sur votre systme, vous devriez considrer de le faire fonctionner de la faon la plus scurise possible. Ceci inclut : rvoquer les privilges root, le faire fonctionner dans un environnement restreint (comme un prison chroot) ou le remplacer par un quivalent plus scuris. Cependant, soyez prvenu quune prison chroot peut tre casse si lutilisateur fonctionnant dedans est le super-utilisateur. Vous devez donc faire fonctionner le service avec un utilisateur non privilgi. En limitant son environnement, vous limitez les chiers lisibles et excutables par tout le monde que le service peut accder, vous limitez donc aussi les possibilits dune escalade de privilge par lutilisation de failles de scurit du systme local. Mme dans une situation o vous ne pouvez pas tre complrement certain quil ny a pas de moyen pour un attaquant intelligent de sortir de la prison dune manire ou dune autre. Utiliser seulement des programmes serveur ayant une rputation de scurit est une bonne mesure de scurit additionnelle. Mme des trous minuscules comme des descripteurs de chier peuvent tre utiliss par un attaquant dou pour sintroduire dans le systme. Aprs tout, chroot na pas t conu pour tre un outil de scurit, mais un outil de test.

5.10.1

Crer des environnements chroot automatiquement

Il existe plusieurs programmes pour chrooter automatiquement des serveurs et services. Debian fournit actuellement (accept en mai 2002) chrootuid de Wietse Venema dans le paquet chrootuid, ainsi que compartment et makejail. Ces programmes peuvent tre utiliss pour mettre en place un environnement restreint pour excuter tout programme (chrootuid vous permet mme de lexcuter avec un utilisateur restreint). Certains de ces outils peuvent tre utiliss pour mettre en place lenvironnement chroot facilement. Le programme makejail, par exemple, peut crer et mettre jour une prison chroot avec de petits chiers de conguration (il fournit des chiers de conguration exemple pour bind, apache, postgresql et mysql). Il tente de deviner et dinstaller dans la prison tous les chiers ncessaires requis par le dmon en utilisant strace, stat et les dpendances du paquet Debian. Plus dinformations http://www.floc.net/makejail/. Jailer est un outil semblable qui peut tre rcupr depuis http://www.balabit.hu/downloads/ jailer/ et il est galement disponible en tant que paquet Debian.
leurs propres utilisateurs au lieu de les excuter sous root.

Chapitre 5. Scuriser les services de votre systme

109

5.11

Paranoa gnralise du mot de passe en texte clair

Vous devriez essayer dviter tout service rseau qui envoie et reoit des mots de passe en texte clair par le net comme FTP/Telnet/NIS/RPC. Lauteur recommande lutilisation de ssh la place de telnet et ftp pour tout le monde. Gardez lesprit que la migration de telnet vers ssh, en conservant lutilisation dautres protocoles texte non chiffrs naugmente votre scurit en AUCUNE manire ! Le mieux serait de retirer ftp, telnet, pop, imap, http et de les remplacer par leurs services crypts respectifs. Vous devriez considrer la migration de ces services vers leurs versions SSL, ftp-ssl, telnet-ssl, pop-ssl, https, etc. La plupart des astuces ci-dessus sappliquent tout systme Unix (vous les trouverez dans des documents de durcissement lis Linux et autres Unix).

5.12

Dsactivation du NIS

Vous ne devriez pas utiliser NIS, le Service dInformation Rseau (Network Information Service), si possible car il autorise le partage de mot de passe. Ceci peut tre fortement dangereux si votre installation est casse. Si vous avez besoin de partager les mots de passe entre machines, pensez dautres alternatives. Par exemple, mettre en place un serveur LDAP et congurer PAM sur votre systme an de contacter le serveur LDAP pour lauthentication des utilisateurs. Une installation dtaille est disponible dans le LDAP-HOWTO (http://www.linuxdoc.org/HOWTO/ LDAP-HOWTO.html) (/usr/share/doc/HOWTO/en-txt/LDAP-HOWTO.txt.gz). Vous pouvez lire plus dinformations supplmentaires sur la scurit de NIS ladresse suivante NIS-HOWTO (http://www.linuxdoc.org/HOWTO/NIS-HOWTO.html) (/usr /share/doc/HOWTO/en-txt/NIS-HOWTO.txt.gz). FIXME (jfs) : Ajouter des infos sur comment congurer cela dans la Debian

5.13

Scurisation des services RPC

Vous devriez dsactiver RPC si vous nen avez pas besoin. Les appels de procdure distance ( Remote Procedure Call ou RPC) est un protocole que les programmes peuvent utiliser pour demander des services de la part dautres programmes lies sur diffrents ordinateurs. Le service portmap contrle les services RPC en convertissant les numros de programme RPC en numros de port du protocole DARPA ; il doit fonctionner pour pouvoir faire des appels RPC. Les services bass sur RPC ont eu un mauvaise historique de trous de scurit, bien que le portmapper lui-mme nen a pas (mais il fournit des informations un attaquant distant).

Chapitre 5. Scuriser les services de votre systme

110

Notez que certaines des attaques DDoS (dni de service distribu) utilisent des exploits RPC pour entrer dans le systme et agir en tant quun tel agent/gestionnaire. Vous navez besoin de RPC que si vous utiliser un service bas sur RPC. Les services bass sur RPC les plus communs sont NFS (Network File System) et NIS (Network Information System). Voir la section prcdente pour plus dinformations propos de NIS. Le File Alteration Monitor (FAM) fourni par le paquet fam est galement un service RPC et dpend donc de portmap. Les services NFS sont assez importants dans certains rseaux. Si cest le cas pour vous, vous aurez alors besoin de trouver un quilibre entre la scurit et lutilisabilit de votre rseau. (Vous pouvez en lire plus propos de la scurit NFS dans le NFSHOWTO (http://www.tldp.org/HOWTO/NFS-HOWTO.html) (/usr/share/doc/HOWTO /en-txt/NFS-HOWTO.txt.gz).)

5.13.1

Dsactivation des services RPC

La dsactivation de portmap est assez simple. Il y a diffrentes mthodes. La plus simple sur un systme Debian 3.0 et versions suprieures est de dsinstaller le paquet portmap. Si vous excutez une version plus ancienne, vous devrez dsactiver le service comme expliqu dans Dsactivation de services dmon page 33, cela est d au fait que le programme fait partie du paquet netbase (qui ne peut tre dsinstall sans endommager le systme). Notez que certains environnements de bureau (notamment, GNOME) utilisent des services RPC et ont besoin du portmapper pour certaines fonctionnalits de gestion de chiers. Si cest votre cas, vous pouvez limiter laccs aux services RPC comme dcrit ci-dessous.

5.13.2

Limiter laccs aux services RPC

Malheureusement, dans certains cas, supprimer les services RPC du systme nest pas une option. Certains services de bureau local (notamment fam de SGI) sont bass sur RPC et ont donc besoin dun portmapper local. Cela veut dire que dans certains circonstances, des utilisateurs installant un environnement de bureau (comme GNOME) installera galement le portmapper. Il y a diffrentes faons de limiter laccs au portmapper et aux services RPC : bloquer laccs aux ports utiliss par ces services avec un pare-feu local (voir Ajouter des capacits au pare-feu page ci-contre) ; bloquer laccs ces services en utilisant les tcp wrappers, car le portmapper (et certains services RPC) sont compils avec libwrap (voir Utilisation de tcpwrappers page 63). Cela veut dire que vous pouvez en bloquer laccs par la conguration des chiers hosts.allow et hosts.deny du tcp wrappers. depuis la version 5-5, le paquet portmap peut tre congur pour ncouter que sur linterface loopback. Pour faire cela, modiez /etc/default/portmap, dcommentez la ligne suivante : #OPTIONS=-i 127.0.0.1 et redmarrez le portmapper. Cela est sufsant pour autorisez les services locaux et en mme temps pour prvenir les systmes distants y accder (voir, cependant, Dsactiver les problmes dhtes weak-end page 81).

Chapitre 5. Scuriser les services de votre systme

111

5.14

Ajouter des capacits au pare-feu

Le systme dexploitation Debian GNU/Linux possde les capacits intgres fournies par le noyau Linux. Cela signie que si vous installez un systme Potato (Debian version 2.2, le noyau par dfaut est le 2.2) vous aurez la fonctionnalit pare-feu ipchains disponible dans le noyau, vous devez installer le paquet ipchains qui devrait dj tre install (de part sa priorit). Si vous installez un systme Debian version 3.0 (ou version 3.1) (le noyau par dfaut est le 2.4), vous aurez la fonctionnalit pare-feu iptables (neftlter) disponible. La principale diffrence entre ipchains et iptables est que ce dernier est bas sur une inspection des paquets en fonction de ltat (stateful packet inspection) qui fournit des congurations de ltrage plus scurises (et plus faciles construire).

5.14.1

Firewaller le systme local

Vous pouvez utiliser des rgles de pare-feu comme faon de scuriser laccs votre systme local et, mme, de limiter les connexions sortantes effectues par celui-ci. Des rgles de pare-feux peuvent tre galement utilises pour protger des processus qui ne peuvent tre proprement congurs pour ne pas fournir certains services certains rseaux, certaines adresses IP, etc. Toutefois, cette tape est prsente en dernier dans ce manuel car il est de beaucoup prfrable de ne pas dpendre exclusivement des capacits dun pare-feu de faon protger un systme donn. La scurit dans un systme est faites de couches, le ltrage devrait tre la dernire, une fois que tous les services ont t renforcs. Vous pouvez facilement imaginer une installation dans laquelle le systme est uniquement protg par le pare-feu et que ladministrateur enlve btement les rgles pour nimporte quelle raison (problmes avec linstallation, exaspration, erreur humaine, . . .), ce systme pourrait tre grand ouvert une attaque sil ny avait aucun autre renforcement dans le systme pour le protger. Dun autre ct, avoir des rgles de pare-feu sur le systme local prvient galement quelques mauvaises choses de se produire. Mme si les services fournis sont congurs avec scurit, un pare-feu peut protger des erreurs de conguration ou des services frachement installs qui nont pas encore t congurs correctement. Une conguration serre prviendra galement un cheval de Troie appelant la maison de fonctionner sauf si le code de pare-feu est enlev. Notez quun intrus na pas besoin de laccs super-utilisateur pour installer un cheval de Troie qui pourrait tre contrl distance (car louverture sur des ports est autorise si le port nest pas privilgi et si des capacits nont pas t supprimes). Une conguration correcte de pare-feu serait donc une rgle de refus par dfaut, cest dire : les connexions entrantes ne sont autoriss que pour des services locaux par des machines autorises ; les connexions sortantes ne sont autoriss que pour les services utiliss par votre systme (DNS, navigation web, pop, courrier, etc.)7 ;
la diffrence des pare-feux personnels dautres systmes dexploitation, Debian GNU/Linux ne fournit pas (encore) dinterface de gnration de pare-feu qui puisse crer des rgles les limitant par processus ou par utilisateur. Cependant, le code iptables peut tre congur pour faire cela (voir le module propritaire (owner) dans la page de manuel iptables(8))
7

Chapitre 5. Scuriser les services de votre systme

112

la rgle forward interdit tout ( moins que vous ne protgiez dautres systmes, voir cidessous) ; toutes les autres connexions entrantes et sortantes sont interdites.

5.14.2

Utiliser un pare-feu pour protger dautres systmes

Un pare-feu Debian peut aussi tre install de faon protger, selon des rgles de ltrage, laccs aux systmes derrire lui, limitant leur exposition Internet. Un pare-feu peut tre congur pour interdire laccs de systmes en dehors de votre rseau local des services internes (ports) qui ne sont pas publics. Par exemple, sur un serveur de messagerie, seul le port 25 (o le service de courrier est fourni) doit tre accessible depuis lextrieur. Un pare-feu peut tre congur pour, mme sil y a dautres services en plus des services publics, rejeter les paquets (ceci est connu sous le nom deltrage) dirigs vers eux. Vous pouvez mme installer une machine Debian GNU/Linux en tant que pont pare-feux, cest--dire un pare-feu ltrant compltement transparent pour le rseau qui est dpourvu dadresse IP et donc ne peut pas tre attaqu directement. Selon le noyau que vous avez install, vous pouvez avoir besoin dinstaller le correctif pare-feu pour pont, puis aller 802.1d Ethernet Bridging lors de la conguration du noyau et une nouvelle option netlter (rewalling) support. Voir Conguration dun pare-feu pont page 205 pour plus dinformations sur la faon de faire cela dans un systme Debian GNU/Linux.

5.14.3

Mettre en place un pare-feu

Linstallation Debian par dfaut, la diffrence dautres distributions Linux, ne fournit pas encore de moyen pour ladministrateur de mettre une conguration de pare-feu lors de linstallation, mais vous pouvez installer un certain nombre de paquets de conguration de pare-feu (voir Paquets pare-feu page ci-contre). Bien sr, la conguration du pare-feu dpend toujours du systme et du rseau. Un administrateur doit connatre auparavant quelle est la disposition du rseau, les systmes quil dsire protger et si dautres considrations rseau (comme le NAT ou le routage) doivent tre prises en compte ou non. Soyez prudent quand vous congurez votre pare-feu, comme le dit Laurence J. Lane dans son paquet iptables : Les outils peuvent facilement tre mal utiliss, entranant dnormes quantits de maux en paralysant compltement laccs au rseau pour un systme dordinateur. Il nest pas trs inhabituel pour un administrateur systme de se bloquer lui-mme en dehors du systme situ quelques centaines ou milliers de kilomtres de l. Il est mme possible de se bloquer en dehors dun ordinateur dont le clavier est sous ses doigts. Veuillez sil vous plat lutiliser avec prcaution. Rappelez-vous de cela : installer simplement le paquet iptables (ou lancien code de parefeu) ne vous fournit pas de protection, mais seulement les logiciels. Pour avoir un pare-feu, vous devez le congurer ! Si vous ne savez pas comment congurer les rgles de votre pare-feu manuellement, veuillez consulter le Packet Filtering HOWTO et le NAT HOWTO fournis par iptables pour une lecture

Chapitre 5. Scuriser les services de votre systme

113

hors ligne /usr/share/doc/iptables/html/. Si vous nen connaissez pas beaucoup sur les pare-feu, vous devriez commencer par lire le Firewalling and Proxy Server HOWTO (http://www.tldp.org/HOWTO/Firewall-HOWTO. html), installez le paquet doc-linux-text si vous voulez le lire hors ligne. Si vous dsirez poser des questions ou demander de laide pour congurer un pare-feu, vous pouvez utiliser la liste de diffusion debian-rewall, voir http://lists.debian.org/debian-firewall. Consultez galement tre conscient des problmes de scurit page 25 pour plus de pointeurs (gnraux) sur les pare-feu.

Paquets pare-feu Congurer manuellement un pare-feu peut tre compliqu pour un administrateur dbutant (et mme parfois pour un expert). Cependant, la communaut des logiciels libres a cr un certain nombre doutils pouvant tre utiliss pour congurer facilement un pare-feu local. Soyez prvenu que certains de ces outils sont plus orients vers de la protection locale seulement (galement connu sous le nom de pare-feu personnel) et dautres sont plus versatiles et peuvent tre utiliss pour congurer des rgles complexes pour protger des rseaux entiers. Il existe plusieurs logiciels qui peuvent tre utiliss pour congurer des rgles de pare-feu dans un systme Debian : firestarter, une application GNOME oriente vers les utilisateurs naux et incluant un assistant utile pour dnir rapidement des rgles de pare-feu. Lapplication inclut une interface utilisateur pour pouvoir surveiller quand une rgle de pare-feu bloque le trac. fwbuilder, une interface graphique oriente objet qui inclut des compilateurs de rgles pour diverses plates-formes de pare-feu incluant netlter de Linux, pf de BSD (utilis dans OpenBSD, NetBSD, FreeBSD et Mac OS X) ainsi que des listes daccs du routeur. La fonctionnalit de fwbuilder complte est galement disponible depuis la ligne de commande. shorewall, un outil de conguration de pare-feu qui fournit un support pour IPsec ainsi quun support limit pour le dimensionnement du trac (trafc shaping) et la dnition des rgles du pare-feu. La conguration est effectue par un simple jeu de chiers qui sont utiliss pour gnrer les rgles iptables. guarddog, un paquet de conguration de pare-feu bas sur KDE orient la fois vers les utilisateurs novices et avancs. knetfilter, une interface graphique KDE pour grer un pare-feu et des rgles NAT pour iptables (alternative/concurrent loutil guarddog bien que lgrement plus orient vers les utilisateurs avancs). bastille, lapplication de durcissement est dcrit dans Scurisation automatique dun systme Debian page 121. Lune des tapes de durcissement que ladministrateur peut congurer est une dnition du trac autoris et interdit qui est utilise pour gnrer un ensemble de rgles de pare-feu que le systme excutera au dmarrage. mason, une application qui peut suggrer des rgles de pare-feu bases sur le trac rseau que votre systme voit . ferm, lokkit ou gnome-lokkit.

Chapitre 5. Scuriser les services de votre systme

114

ipac-ng, aide congurer non pas des rgles de pare-feu traditionnel, mais des rgles de classement du trac rseau. filtergen fiaif hlfl kmyfirewall netscript-2.4 Remarquez que certains des paquets cits ci-dessus introduiront probablement des scripts de pare-feu excuter lors de lamorage du systme. Testez-les de manire exhaustive avant de redmarrer le systme ou vous pourriez vous retrouver bloqu en dehors de la machine. Si vous mlangez diffrents paquets de pare-feu, vous pouvez obtenir des effets indsirables. Habituellement, le script de pare-feu qui sexcute en dernier sera celui qui congurera le systme (qui peut ne pas tre ce que vous simulez). Consultez la documentation du paquet et utilisez lun dentre eux pour ces congurations. Comme mentionn prcdemment, certains programmes comme firestarter, guarddog knetfilter sont des interfaces graphiques pour ladministration qui utilisent soit GNOME, soit KDE (les deux derniers). Ces applications sont plus orientes utilisateur (cest--dire utilisation familiale ) tandis que certains des autres paquets de la liste sont plus orients administrateur. Certains des programmes mentionns auparavant (comme bastille) sont cibls sur la mise en place de rgles de pare-feu qui protgent lhte sur lequel ils fonctionnent, mais ils ne sont pas ncessairement conus pour mettre en place des rgles de pare-feu pour des htes de pare-feu qui protgent un rseau (comme shorewall ou fwbuilder). Il existe encore un autre type dapplication de pare-feu : les serveurs mandataires (proxy) applicatifs. Si vous cherchez mettre en place un tel serveur de niveau dentreprise qui effectue du ltrage de paquets et fournit un certain nombre de serveurs mandataires transparents qui peuvent faire une analyse ne du trac, vous devriez considrer lutilisation de zorp, qui fournit cela dans un seul programme. Vous pouvez galement mettre en place ce type de pare-feu manuellement en utilisant les serveurs mandataires disponibles dans Debian pour diffrents services comme pour le DNS en utilisant bind (correctement congur), dnsmasq, pdnsd ou totd pour le FTP en utilisant frox ou ftp-proxy, pour X11 en utilisant xfwp, pour IMAP en utilisant imapproxy, pour le courrier en utilisant smtpd, ou pour POP3 en utilisant p3scan. Pour dautres protocoles, vous devriez soit utiliser un serveur mandataire TCP gnrique comme simpleproxy ou un serveur mandataire SOCKS comme dante-server, tsocks ou socks4-server. Vous devrez galement typiquement utiliser un systme de cache web (comme squid) et un systme de ltrage web (comme squidguard ou dansguardian).

Conguration manuelle init.d Une autre possibilit est de congurer manuellement vos rgles de pare-feu par un script init.d qui excutera toutes les commandes iptables. Suivez les tapes ci-dessous : Lisez le script ci-dessous et adaptez-le vos besoins. Testez le script et vriez les messages de syslog pour voir quel trac est rejet. Si vous testez depuis le rseau, vous voudrez soit excuter lexemple de shell qui enlve le pare-feu

Chapitre 5. Scuriser les services de votre systme

115

(si vous ne tapez rien pendant 20 secondes), soit commenter les dnitions de rgle default deny (-P INPUT DROP et -P OUTPUT DROP) et vrier que le systme ne rejette pas de trac lgitime. Dplacez le script dans /etc/init.d/myfirewall Congurez le systme pour excuter le script avant que le rseau ne soit congur : #update-rc.d myfirewall start 40 S . stop 89 0 6 . Voici lexemple de script de pare-feu : #!/bin/sh # Exemple de configuration de pare-feu # # Dfauts : # - Cette configuration sapplique toutes les interfaces rseau. # Si vous voulez ne restreindre cela qu une interface donne, # utilisez -i INTERFACE dans les appels iptables. # - Laccs distance pour les services TCP/UDP est accord tout # hte, vous voudrez probablement restreindre cela en utilisant # --source # # chkconfig: 2345 9 91 # description: Active/Dsactive le pare-feu au dmarrage # # Vous pouvez tester ce script avant de lappliquer avec lextrait de # shell suivant, si vous ne tapez rien pendant 20 secondes, les # rgles de pare-feu seront effaces. #--------------------------------------------------------------# while true; do test=""; read -t 20 -p "OK? " test ; \ # [ -z "$test" ] && /etc/init.d/myfirewall clear ; done #--------------------------------------------------------------PATH=/bin:/sbin:/usr/bin:/usr/sbin # Services que le systmes offrira au rseau TCP_SERVICES="22" # ssh seulement UDP_SERVICES="" # Services que le systme utilisera du rseau REMOTE_TCP_SERVICES="80" # navigation web REMOTE_UDP_SERVICES="53" # DNS # Rseau qui sera utilis pour la gestion distance # (si non dfini, aucune rgle ne sera mise en place) # NETWORK_MGMT=192.168.0.0/24 if ! [ -x /sbin/iptables ]; then exit 0 fi

Chapitre 5. Scuriser les services de votre systme

116

fw_start () {

# Trafic dentre : /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Services if [ -n "$TCP_SERVICES" ] ; then for PORT in $TCP_SERVICES; do /sbin/iptables -A INPUT -p tcp --dport ${PORT} -j ACCEPT done fi if [ -n "$UDP_SERVICES" ] ; then for PORT in $UDP_SERVICES; do /sbin/iptables -A INPUT -p udp --dport ${PORT} -j ACCEPT done fi # Gestion distance if [ -n "$NETWORK_MGMT" ] ; then /sbin/iptables -A INPUT -p tcp --src ${NETWORK_MGMT} --dport ${SSH_PORT} else /sbin/iptables -A INPUT -p tcp --dport ${SSH_PORT} -j ACCEPT fi # Test distance /sbin/iptables -A INPUT -p icmp -j ACCEPT /sbin/iptables -A INPUT -i lo -j ACCEPT /sbin/iptables -P INPUT DROP /sbin/iptables -A INPUT -j LOG # Sortie : /sbin/iptables -A OUTPUT -j ACCEPT -o lo /sbin/iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # ICMP est permis /sbin/iptables -A OUTPUT -p icmp -j ACCEPT # Ainsi que les mises jour de scurit /sbin/iptables -A OUTPUT -p tcp -d security.debian.org --dport 80 -j ACCEPT # Ainsi que pour tous les services que nous avons dfinis if [ -n "$REMOTE_TCP_SERVICES" ] ; then for PORT in $REMOTE_TCP_SERVICES; do /sbin/iptables -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT done fi if [ -n "$REMOTE_UDP_SERVICES" ] ; then for PORT in $REMOTE_UDP_SERVICES; do /sbin/iptables -A OUTPUT -p udp --dport ${PORT} -j ACCEPT done fi

Chapitre 5. Scuriser les services de votre systme

117

# Toutes les autres connexions sont enregistres dans syslog /sbin/iptables -A OUTPUT -j LOG /sbin/iptables -A OUTPUT -j REJECT /sbin/iptables -P OUTPUT DROP # Autres protections rseau echo 1 > /proc/sys/net/ipv4/tcp_syncookies echo 0 > /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts echo 1 >/proc/sys/net/ipv4/conf/all/log_martians echo 1 > /proc/sys/net/ipv4/ip_always_defrag echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route } fw_stop () { /sbin/iptables /sbin/iptables /sbin/iptables /sbin/iptables /sbin/iptables /sbin/iptables } fw_clear () { /sbin/iptables /sbin/iptables /sbin/iptables /sbin/iptables /sbin/iptables /sbin/iptables }

-F -t -t -P -P -P

nat -F mangle -F INPUT DROP FORWARD DROP OUTPUT ACCEPT

-F -t -t -P -P -P

nat -F mangle -F INPUT ACCEPT FORWARD ACCEPT OUTPUT ACCEPT

case "$1" in start|restart) echo -n "Starting firewall.." fw_stop fw_start echo "done." ;; stop) echo -n "Stopping firewall.." fw_stop

Chapitre 5. Scuriser les services de votre systme

118

echo "done." ;; clear) echo -n "Clearing firewall rules.." fw_clear echo "done." ;; ) * echo "Usage: $0 {start|stop|restart|clear}" exit 1 ;; esac exit 0

Congurer les rgles du rseau par ifup Vous pouvez galement utiliser la conguration du rseau dans /etc/network /interfaces pour mettre en place vos rgles de pare-feu. Pour cela, vous devez : crer votre jeu de rgles de pare-feu appliquer quand linterface sera active, sauver votre jeu de rgles avec iptables-save dans un chier de /etc, par exemple /etc /iptables.up.rules, congurer etc/network/interfaces pour utiliser le jeu de rgles congures : iface eth0 inet static address x.x.x.x [.. configuration de linterface ..] pre-up iptables-restore < /etc/iptables.up.rules Optionnellement, vous pouvez mettre en place un jeu de rgles appliquer quand linterface est inactive en crant un jeu de rgles, en le sauvant dans /etc/iptables.down.rules et en ajoutant la directive suivante la conguration de linterface : post-down iptables-restore < /etc/iptables.down.rules Pour des scripts de conguration de pare-feu plus avancs avec ifupdown, vous pouvez utiliser les accroches (hooks) disponibles pour chaque interface dans les rpertoires *.d/ appels avec run-parts (voir run-parts(8)).

Le faire la manire (obsolte) Debian NOTE : Cette information ne sapplique qu iptables de Woody. Les versions ultrieures la version 1.2.7-8 nont plus le script init.d dcrit ici. Les utilisateurs des versions 3.1 et ultrieures de Debian devraient soit mettre en place les rgles de pare-feu manuellement, soit utiliser lun des programmes de gnration de pare-feu dcrits prcdemment.

Chapitre 5. Scuriser les services de votre systme

119

Si vous utilisez Debian 3.0, vous remarquerez que le paquet iptables est dj install. Il sagit du support pour limplmentation de netlter des noyaux 2.4.4 et plus. Comme, juste aprs linstallation, le systme ne peut pas connatre de rgles de pare-feu (toute rgle de parefeu est trop dpendante du systme), vous devez activer iptables. Cependant, les scripts ont t congurs pour que ladministrateur puisse congurer des rgles de pare-feu, puis que les scripts dinitialisation les apprennent et les utilisent toujours pour la conguration du pare-feu. Pour faire cela, vous devez : congurer le paquet pour quil se lance avec le systme. Sur les versions plus rcentes (depuis 1.2.6a-1), cela est demand quand le paquet est install. Vous pouvez le congurer par la suite avec dpkg-reconfigure -plow iptables. Note : sur les systmes plus anciens, cela tait fait par ldition du chier /etc/default/iptables pour que la variable enable_iptables_initd soit positionne true. crer une conguration de pare-feu en utilisant iptables, vous pouvez utiliser la ligne de commande (voir iptables(8)) ou certains des outils fournis par les paquets de pare-feu de Debian (voir Paquets pare-feu page 113). Vous devez crer un jeu de rgles de pare-feu utiliser quand le pare-feu est dans ltat actif et un autre utiliser quand le pare-feu est dans ltat inactif (celles-ci peuvent tre simplement des rgles vides). sauver les rgles que vous avez cr en utilisant /etc/init.d/iptables save active et /etc/init.d/iptables save inactive en excutant ces scripts avec les rgles de pare-feu que vous voulez actives. Une fois que ceci est fait, votre conguration de pare-feu est sauve dans le rpertoire /var /lib/iptables/ et elle sera excute lors de lamorage du systme (ou lors de lexcution du script dinitd avec les paramtres start et stop). Veuillez noter que les congurations Debian par dfaut lance le code de pare-feu dans les niveaux dexcution multi-utilisateurs (2 5) assez tt (10). Il est stopp dans le mode utilisateur seul (1), changez cela si cela ne correspond pas vos rgles locales. Veuillez lire les commentaires insrs dans le chier de conguration /etc/default /iptables pour plus dinformations concernant les problmes relatifs ce paquet.

Tester votre conguration de pare-feu Tester votre conguration de pare-feu est aussi facile et aussi dangereux que dexcuter simplement votre script de pare-feu (ou dactiver la conguration que vous avez dnie dans votre application de conguration de pare-feu). Cependant, si vous ntes pas assez prudent et que vous congurez le pare-feu distance (comme travers une connexion SSH), vous pourriez vous enfermer dehors. Il y a plusieurs moyens dempcher cela. Lun est dexcuter un script dans un terminal spar qui va enlever la conguration de pare-feu si vous ne faites pas dentre clavier. Un exemple de cela est : $ while true; do test=""; read -t 20 -p "OK? " test ; \ [ -z "$test" ] && /etc/init.d/firewall clear ; done

Chapitre 5. Scuriser les services de votre systme

120

Un autre moyen est dintroduire une porte drobe dans votre systme par un mcanisme alternatif qui vous permet soit denlever le systme de pare-feu, soit de percer un trou dedans si quelque chose draille. Pour cela, vous pouvez utiliser knockd et le congurer pour quune tentative de connexion sur un certain port enlve le pare-feu (ou ajoute une rgle temporaire). Bien que les paquets soient rejets par le pare-feu, comme knockd se lie linterface et les voit, vous pourrez contourner le problme. Tester un pare-feu qui protge un rseau interne est un problme diffrent, vous voudrez tudier certains des outils utiliss pour le test de failles distance (voir Outils dvaluation des vulnrabilits distances page 143) pour sonder le rseau depuis lextrieur (ou dans toute autre direction) pour tester lefcacit de la conguration du pare-feu.

121

Chapitre 6

Scurisation automatique dun systme Debian


Aprs la lecture de toutes les informations des prcdents chapitres, vous vous demanderez probablement : Il y a de nombreuses choses faire an de scuriser mon systme, mais tout cela ne peut-il pas tre automatis ? La rponse est oui, mais soyez prudent avec les outils automatiss. Certaines personnes croient quun outil de renforcement nlimine pas la ncessit dune bonne administration. Donc, ne pensez pas que vous pouvez automatiser toutes les procdures et que vous arriverez rsoudre tous les problmes. La scurit est un processus voluant constamment dans lequel ladministrateur doit participer et ne peut pas rester lcart et laisser les outils se dbrouiller tout seul avec toutes les implmentations des politiques de scurit, toutes les attaques et tous les environnements. Depuis Woody (Debian 3.0), il existe deux paquets spciques qui sont utiles pour le durcissement de la scurit. Le paquet harden qui base son approche sur les dpendances des paquets pour installer rapidement des paquets srs et retirer ceux avec des imperfections, la conguration devant tre faite par ladministrateur. Le paquet bastille implmente une politique de scurit donne pour le systme base sur une conguration antrieure de ladministrateur (la conguration peut tre faite laide de simples questions oui/non).

6.1

Harden

Le paquet harden essaie de rendre plus facile linstallation et ladministration dhtes qui ont besoin dune bonne scurit. Ce paquet devrait tre utilis par ceux qui veulent une aide rapide an damliorer la scurit de leur systme. Il installe automatiquement des outils pour accrotre la scurit : outils de dtection dintrusions, outils danalyse de scurit, etc. Harden installe les paquets virtuels suivants (i.e., pas de contenu, juste des dpendances ou des recommandations vers dautres paquets) : harden-tools : outils pour amliorer la scurit du systme (vricateur dintgrit, dtection dintrusions, rustines pour noyau, etc.),

Chapitre 6. Scurisation automatique dun systme Debian

122

harden-environment : aide congurer un durcissement denvironnement (actuellement vide), harden-servers : retire les serveurs considrs comme douteux pour certaines raisons, harden-clients : retire les clients considrs comme douteux pour certaines raisons, harden-remoteaudit : outils pour auditer un systme distance, harden-nids : outils pour installer un systme de dtection dintrusions, harden-surveillance : outils pour surveiller les rseaux et les services. Paquets utiles qui ne sont pas une dpendance : harden-doc : fournit ce mme manuel et dautres paquets de documentation lis la scurit, harden-development : outils de dveloppement pour crer des programmes plus scuriss. Prenez garde dans le cas o vous avez besoin dun logiciel (et que vous ne voulez pas dsinstaller) et quil soit en contradiction avec certains paquets ci-dessus, vous ne serez peut-tre pas capable dutiliser pleinement harden. Les paquets harden ne font rien directement. Cependant, ils entrent en conit avec des paquets reconnus comme tant risqus. De cette faon, le systme de paquets de Debian napprouvera pas automatiquement linstallation de ces paquets. Par exemple, si vous tentez dinstaller un serveur telnet alors que harden-servers est install, apt vous dira : # apt-get install telnetd Les paquets suivants seront ENLEVS : harden-servers Les NOUVEAUX paquets suivants seront installs : telnetd Souhaitez-vous continuer ? [O/n] Ceci devrait alerter ladministrateur, qui devrait reconsidrer ses actions.

6.2

Bastille Linux

Bastille Linux (http://www.bastille-unix.org) est un outil de durcissement automatique originellement orient vers les distributions Linux RedHat et Mandrake. Toutefois, le paquet bastille fourni dans Debian (depuis Woody) a t modi de faon fournir les mmes fonctionnalits pour le systme Debian GNU/Linux. Bastille peut tre utilis avec diffrentes interfaces (toutes sont documentes dans leur propre page de manuel dans le paquet Debian) qui permettent ladministrateur de : rpondre aux questions, tape par tape, concernant le niveau de scurit dsir de votre systme (en utilisant InteractiveBastille(8)), utiliser un paramtrage par dfaut pour la scurit (parmi trois : relache, modre ou paranoaque) dans une installation dnie (serveur ou poste de travail) et laisser Bastille dcider quelle politique de scurit appliquer (en utilisant BastilleChooser(8)),

Chapitre 6. Scurisation automatique dun systme Debian

123

prendre un chier de conguration prdni (qui peut tre fourni par Bastille ou cr par ladministrateur) et implmenter une politique de scurit donne (en utilisant AutomatedBastille(8)).

Chapitre 6. Scurisation automatique dun systme Debian

124

125

Chapitre 7

Infrastructure de scurit Debian


7.1 Lquipe de scurit Debian

Debian possde une quipe de scurit, compose de cinq membres et deux secrtaires, qui gre la scurit dans la distribution stable. Grer la scurit veut dire quils suivent les failles qui surviennent dans les logiciels (en surveillant des forums comme bugtraq ou vuln-dev) et ils dterminent si la distribution stable est touche par ces failles. Lquipe de scurit Debian est galement le point de contact pour les problmes qui sont coordonnes par les dveloppeurs amont ou des organisations comme le CERT (http://www. cert.org), qui peuvent toucher de multiples vendeurs. Cest--dire, quand les problmes ne sont pas spciques Debian. Il existe deux points de contact avec lquipe de scurit : team@security.debian.org (mailto:team@security.debian.org) qui nest lu que par les membres de lquipe de scurit. security@debian.org (mailto:security@debian.org) qui est lu par tous les dveloppeurs Debian (y compris lquipe de scurit). Les messages envoys sur cette liste ne sont pas publis sur lInternet (ce nest pas une liste publique). Les informations secrtes devraient tre envoyes la premire adresse et, dans certains cas, devraient tre cryptes avec la cl du contact de lquipe de scurit (key ID 363CCD95). Une fois quun problme probable est reu par lquipe de scurit, elle recherchera si la distribution stable est affecte et si cest le cas, un correctif sera cr pour la base de code source. Ce correctif inclura parfois un rtro-portage du correctif effectu en amont (qui est habituellement en avance de plusieurs version par rapport la version distribue par Debian). Aprs quun test du correctif ait t effectu, les nouveaux paquets sont prpars et publis sur le site security.debian.org pour pouvoir tre rcupr par apt (voir Faire une mise jour de scurit page 40). En mme temps, une alerte de scurit Debian (Debian Security Advisory ou DSA) est publie sur le site web et envoye aux listes de diffusion publiques y compris debiansecurity-announce (lists.debian.org/debian-security-announce) et bugtraq. Dautres questions souvent poses sur lquipe de scurit Debian peuvent tre trouves Questions concernant lquipe de scurit Debian page 187.

Chapitre 7. Infrastructure de scurit Debian

126

7.2

Alertes de scurit Debian

Les alertes de scurit Debian sont effectues chaque fois quune faille est dcouverte affectant un paquet Debian. Ces alertes, signes par lun des membres de lquipe de scurit, incluent des informations sur les versions touches ainsi que lemplacement des mises jour et leurs MD5sums. Ces informations sont : numro de version pour le correctif, type de problme, sil est exploitable distance ou localement, description courte du paquet, description du problme, description de lexploit, description du correctif.

Les DSA sont publies sur la page principale de Debian (http://www.debian.org/) et dans les pages de scurit Debian (http://www.debian.org/security/). Ceci ne se produit habituellement pas avant que le site web ne soit reconstruit (toutes les quatre heures), elles peuvent donc ne pas tre immdiatement prsentes, le canal prfr est la liste de diffusion debian-security-announce. Les utilisateurs intresses peuvent, cependant (et ceci est fait sur quelques portails relatifs Debian) utiliser le canal RDF pour tlcharger automatiquement les DSA sur leur bureau. Certaines applications, comme Evolution (un client de messagerie et assistant dinformations personnelles) et Multiticker (une applet GNOME) peuvent tre utiliss pour rcuprer les alertes automatiquement. Le canal RDF est disponible http://www.debian.org/ security/dsa.rdf. Les DSA publies sur le site web peuvent tre mises jour aprs avoir t envoyes sur les listes de diffusion publiques. Une mise jour courante est dajouter des rfrences croises vers les bases de donnes des failles de scurit. Les traductions 1 des DSA ne sont pas envoyes aux listes de diffusion de scurit, mais elles sont directement incluses sur le site web.

7.2.1

Rfrences croises des failles

Debian fournit une table de rfrences croises (http://www.debian.org/security/ crossreferences) complte comprenant toutes les rfrences disponibles pour toutes les alertes publies depuis 1998. Cette table est fournie en complment de la carte des rfrences disponible pour le CVE (http://cve.mitre.org/cve/refs/refmap/source-DEBIAN. html). Vous pourrez noter que cette table fournit des rfrences vers des bases de donnes de scurit comme Bugtraq (http://www.securityfocus.com/bid), les alertes CERT/CC (http://www.cert.org/advisories/) et la base de donnes des notes failles US-CERT (http://www.kb.cert.org/vuls) ainsi que les noms CVE (voir ci-dessous). Ces rfrences
1

Des traductions sont disponibles dans jusqu dix langues

Chapitre 7. Infrastructure de scurit Debian

127

sont fournis pour faciliter lutilisation, mais seules les rfrences CVE sont priodiquement vries et incluses. Cette fonctionnalit a t ajoute au site web en juin 2002. Lun des avantages dajouter les rfrences croises vers ces bases de donnes de failles est que : cela permet plus facilement aux utilisateurs de Debian de voir et de suivre quelles alertes gnrales (publies) ont dj t couvertes par Debian, les administrateurs systmes peuvent en apprendre plus sur la faille et ses impacts en suivant les rfrences croises, ces informations peuvent tre utilises pour vrier les sorties de scanneurs de failles qui incluent des rfrences CVE pour supprimer des faux positifs (voir Le scanneur X de vrication des failles indique que mon systme Debian est vulnrable ! page 184).

7.2.2

Compatibilit CVE

Les alertes de scurit Debian ont t dclares comme tant compatibles CVE (http://www. debian.org/security/CVE-certificate.jpg)2 le 24 fvrier 2004. Les dveloppeurs Debian comprennent la ncessit de fournir une information prcise et jour de ltat de scurit de la distribution Debian, permettant aux utilisateurs de grer le risque associ aux nouvelles failles de scurit. CVE nous permet de fournir des rfrences standardises qui permettent aux utilisateurs de dvelopper un processus de gestion de scurit avec CVE (http://www.cve.mitre.org/compatible/enterprise.html). Le projet Common Vulnerabilities and Exposures (CVE) (http://cve.mitre.org) est maintenu par la socit MITRE et fournit une liste des noms standardiss pour les failles et expositions de scurit. Debian croit que fournir aux utilisateurs des informations supplmentaires lies aux problmes de scurit qui touchent la distribution Debian est extrmement important. Linclusion des noms CVE dans les alertes aide les utilisateurs associer des failles gnriques avec les mises jour spciques de Debian, ce qui rduit le temps pass grer les failles qui concernent nos utilisateurs. Cela facilite galement la gestion du risque dans un environnement o sont dploys des outils de scurit grant CVE comme des systmes de dtection dintrusion dhte ou de rseau ou des outils de vrication de failles quils soient ou non bass sur la distribution Debian. Debian a commenc ajouter les noms CVE aux DSA en juin 2002 et fournit maintenant les noms CVA pour toutes les DSA publies depuis septembre 1998 aprs un processus de vrication commenc en aot 2002. Toutes les alertes peuvent tre rcupres sur le site web Debian et les annonces lies aux nouvelles failles incluent les noms CVS quand ils sont disponibles lors de leur publication. Les alertes lies un nom de CVE donn peuvent tre cherches directement avec le moteur de rechercher (http://search.debian.org/). Les utilisateurs dsirant chercher un nom particulier de CVE peuvent utiliser le moteur de recherche disponible sur debian.org pour rcuprer les alertes disponibles (en anglais
2 Le questionnaire de comptence (http://cve.mitre.org/compatible/phase2/SPI_Debian.html) complet est disponible au CVE

Chapitre 7. Infrastructure de scurit Debian

128

et traduites dans dautres langues) associes aux noms CVE. Une recherche peut tre faite avec un nom spcique (comme alerte CAN-2002-0001 (http://search.debian.org/?q= advisory+%22CAN-2002-0001%22ps=50o=1m=all)) ou pour des noms partiels (comme une recherche de tous les candidats 2002 inclus dans des alertes pour CAN-2002 (http: //search.debian.org/?q=advisory+%22CAN-2002%22ps=50o=1m=all)). Notez que vous devez entrer lie mot cl alerte ( advisory en anglais) avec le nom CVE pour ne rcuprer que les alertes de scurit. Dans certains cas, vous pouvez ne pas trouver un nom de CVE donn dans les alertes publies parce que : aucun produit Debian nest concern par cette faille, il ny a pas encore eu dalerte couvrant cette faille (le problme de scurit peut avoir t rapport comme un bogue de scurit (http://bugs.debian.org/cgi-bin/pkgreport. cgi?tag=security), mais aucune correction na encore t teste et envoye), une alerte a t publie avant quun nom CVE ait t attribu une faille donne (chercher une mise jour sur le site web).

7.3

Infrastructure de construction de scurit Debian

Comme Debian supporte actuellement un grand nombre darchitectures, les administrateurs se demandent parfois si une architecture donne pourrait prendre plus de temps pour recevoir des mises jour de scurit quune autre. En fait, lexception de rares circonstances, les mises jour sont disponibles pour toutes les architectures en mme temps. Alors que prcdemment la tche de construction des mises jour de scurit tait faite la main, ce nest plus actuellement le cas (comme le dcrit Anthony Towns dans un courriel (http://lists.debian.org/debian-devel-announce/ 2002/debian-devel-announce-200206/msg00002.html) envoy la liste de diffusion debian-devel-announce dat du 8 juin 2002). Les paquets envoys par lquipe de scurit ( security.debian.org:/org/ security.debian.org/queue/unchecked ou ftp://security.debian.org/pub/ SecurityUploadQueue) avec un correctif appropri voient leur signature vrie dans les quinze minutes aprs lenvoi, une fois ceci fait, ils sont ajouts la liste des autoconstructeurs (qui nest plus une excution darchive journalire). Les paquets sont donc automatiquement construits pour toutes les architectures trente minutes ou une heure aprs leur envoi. Cependant, les mises jour de scurit sont un petit peu diffrentes que les envois normaux par les responsables de paquets car, dans certains cas, avant dtre publies, elles doivent attendre de pouvoir tre plus testes, quune alerte soit rdige ou attendre une semaine ou plus pour viter de publier le dfaut jusqu ce que tous les vendeurs aient eu une chance raisonnable de le corriger. Larchive denvoi de scurit fonctionner donc de la faon suivante (dnomme AcceptedAutobuilding) : quelquun trouve un problme de scurit,

Chapitre 7. Infrastructure de scurit Debian

129

quelquun corrige le problme et fait un envoi vers lincoming de security.debian.org (ce quelquun est habituellement un membre de lquipe de scurit, mais ce peut aussi tre un responsable de paquet avec un correctif appropri qui a contact lquipe de scurit auparavant). Le Changelog inclut une cible de distribution testing-security ou stable-security, lenvoi est vri et trait par un systme Debian et dplac dans queue/accepted et les buildds sont notis. Les chiers cet endroit peuvent tre accds par lquipe de scurit et (de faon un peu indirecte) par les buildds, les buildds activs pour la scurit rcuprent le paquet source (en priorit par rapport aux constructions normales), le construisent et envoient les journaux lquipe de scurit, lquipe de scurit rpond aux journaux et les paquets nouvellement construits sont envoys vers queue/unchecked, o ils sont traits par un systme Debian et dplac dans queue/accepted, quand lquipe de scurit trouve les paquets acceptable (i.e., ils sont correctement construits pour toutes les architectures pertinentes et ils corrigent le trou de scurit et nintroduisent pas de nouveau problme par eux-mme), ils excutent un script qui : install le paquet dans larchive de scurit, met jour les chiers Packages, Sources et Release les de security.debian.org de la faon habituelle (dpkg-scanpackages, dpkg-scansources, etc.), met en place un modle dalerte que lquipe de scurit peut complter, (facultativement) fait suivre les paquets vers le proposed-updates appropri pour quil soit inclus dans larchive relle aussitt que possible. Cette procdure, auparavant fait la main, a t test et mise en place pendant ltape de gel de Debian 3.0 woody (juillet 2002). Grce cette architecture, lquipe de scurit a pu avoir des paquets mis jour pour les problmes dApache et dOpenSSH pour toutes les architectures supportes (presque vingt) en moins dun jour.

7.3.1

Le guide du dveloppeur aux mises jour de scurit

Ce message a t envoy par Wichert Akkerman la liste de diffusion debiandevel-announce (http://lists.debian.org/debian-devel-announce/2002/ debian-devel-announce-200206/msg00004.html) pour dcrire le comportement des dveloppeurs Debian pour la gestion des problmes de scurit dans leurs paquets. Il est publi ici la fois pour le bnce des dveloppeurs ainsi que pour que les utilisateurs comprennent mieux comment est gre la scurit dans Debian. Veuillez noter que la rfrence jour pour cette information est la rfrence du dveloppeur Debian (http://www.debian.org/doc/manuals/developers-reference/ ch-pkgs#bug-security), cette section sera supprime dans un avenir proche.

Se coordonner avec lquipe de scurit Si un dveloppeur apprend un problme de scurit soit dans son paquet ou dans celui de quelquun dautre, il devrait toujours contacter lquipe de scurit ( team@security.debian.org).

Chapitre 7. Infrastructure de scurit Debian

130

Il suivent les problmes de scurit existants, ils peuvent aider les responsables avec des problmes de scurit ou les corriger eux-mme, ils sont responsables de lenvoi des alertes de scurit et maintiennent security.debian.org. Veuillez noter que les alertes de scurit ne sont effectues que pour des distributions stables, pas pour testing, unstable (voir Comment est assure la scurit pour les versions testing et unstable ? page 189) ou danciennes distributions (voir Je possde un ancienne version de Debian, est-elle supporte par lquipe de scurit Debian ? page 190).

Prendre connaissance des problmes de scurit Il existe plusieurs faons pour un dveloppeur de prendre connaissance dun problme de scurit : il le remarque sur un forum public (liste de diffusion, site web, etc.), quelquun remplit un rapport de bogue, (la marque Security devrait tre utilise ou ajoute par le dveloppeur) quelquun linforme par courrier priv. Dans les deux premiers cas, linformation est publique et il est important davoir une solution le plus vite possible. Dans le dernier cas, cependant, ce nest peut-tre pas une information publique. Dans ce cas, il existe quelques options possibles pour traiter le problme : si le problme est trivial (comme des chiers temporaires non scuriss), il ny a pas besoin de garder le secret sur le problme et une correction devrait tre effectue et diffuse, si le problme est grave (exploitable distance, possibilit dobtenir les privilges root), il est prfrable de partager cette information avec dautres vendeurs et de coordonner une diffusion. Lquipe de scurit garde des contacts avec les diffrentes organisations et individus et peut prendre soin des actions mener. Dans tous les cas, si la personne qui indique le problme demande ce que linformation ne soit pas diffuse, cela devrait tre respect avec lvidente exception dinformer lquipe de scurit (le dveloppeur devrait sassurer de dire lquipe de scurit que linformation ne peut tre dvoile). Veuillez noter que si le secret est ncessaire, vous ne pourrez pas envoyer un correctif vers unstable (ou ailleurs) puisque les informations de changelog sont publiques. Il existe deux raisons pour diffuser linformation mme si le secret est demand : le problme est connu depuis un certain temps ou le problme est devenu public.

Construire le paquet La rgle la plus important lors de la construction dun nouveau paquet corrigeant un problme de scurit est de faire aussi peu de modications que possible. Les personnes sattendent un comportement identique dans une version lorsque celle-ci est diffuse, donc tout changement qui est fait est susceptible de casser le systme de quelquun. Ceci est spcialement vrai pour

Chapitre 7. Infrastructure de scurit Debian

131

les bibliothques : assurez-vous de ne jamais changer lAPI ou lABI, quelque minimal que soit le changement. Cela veut dire que passer une version amont suprieure nest pas une bonne solution. la place, les changements pertinents devraient tre rtroports. Habituellement, les dveloppeurs amont veulent bien aider. Sinon, lquipe de scurit Debian peut le faire. Dans certains cas, il nest pas possible de rtroporter un correctif de scurit, par exemple, quand de grandes quantits de code source doivent tre modies ou rcrites. Si cela se produit, il peut tre ncessaire de passer une nouvelle version amont, mais vous devez toujours coordonner cela avec lquipe de scurit au pralable. Il existe une autre rgle de conduite lie cela : les dveloppeurs doivent toujours tester leurs changements. Si une exploitation du problme existe, essayez-la et vriez quelle russit sur le paquet non corrig et choue sur le paquet corrig. Testez aussi les autres actions normales car parfois un correctif de scurit peut casser de manire subtile des fonctionnalits normales. Enn, quelques points techniques que les dveloppeurs doivent garder lesprit : Assurez-vous que vous avez pour cible la bonne distribution dans votre chier debian/changelog. Pour stable, il sagit de stable-security et pour testing, cest testing-security. Ne ciblez ni <nomdecode>-proposed-updates. Assurez-vous que le numro de version est correct. Il doit tre plus lev que celui du paquet actuel, mais moins que ceux des paquets des versions des distributions suivantes. Pour testing, il doit y avoir un numro de version suprieur dans unstable. Sil ny en a pas encore (par exemple, si testing et unstable ont la mme version), vous devez envoyer une nouvelle version vers unstable en premier. Ne faites pas denvoi de source seul si votre paquet possde un ou plusieurs paquets binaryall. Linfrastructure buildd ne construira pas ceux-ci. Assurez-vous de compiler sur un systme propre, dont tous les paquets appartiennent la distribution pour laquelle vous construisez le paquet. Si vous navez pas un tel systme, vous pouvez utiliser lune des machines de debian.org (voir http ://db.debian.org/machines.cgi) ou mettez en place un chroot (les paquets pbuilder et debootstrap peuvent savrer utiles dans ce cas).

Envoyer les correctifs de scurit Une fois que le dveloppeur a cr et test le nouveau paquet, il doit tre envoy pour tre install dans larchive. Pour les envois de scurit, ladresse denvoi est ftp ://security.debian.org/pub/SecurityUploadQueue/. Une fois que lenvoi vers la le dattente de scurit a t accept, le paquet sera automatiquement recompil pour toutes les architectures et stock pour vrication par lquipe de scurit. Les envois en attente dacceptation ou de vrication ne sont accessibles que par lquipe de scurit. Cest ncessaire car il pourrait y avoir des correctifs pour des problmes de scurit qui ne peuvent pas encore tre diffuss.

Chapitre 7. Infrastructure de scurit Debian

132

Si une personne de lquipe de scurit accepte un paquet, il sera install sur security.debian.org ainsi que dans le rpertoire <nomdecode>-proposed-updates qui convient sur ftp-master ou dans larchive non-US. Alertes de scurit Les alertes de scurit sont crites et envoyes par lquipe de scurit. Cependant, ils ne verront aucun inconvnient quun responsable fournisse (une partie) du texte pour eux. Les informations qui devraient tre prsentes dans une alerte sont dcrites dans Alertes de scurit Debian page 126.

7.4

La signature de paquet dans Debian

Ce chapitre pourrait galement tre intitul comment amliorer/actualiser srement votre systme Debian GNU/Linux et il mrite davoir son propre chapitre car cest une partie importante de linfrastructure de scurit. La signature des paquets est un point important car elle vite laltration de paquets distribus sur les miroirs et des tlchargements avec des attaques sur lhomme-du-milieu ( man-in-the-middle ). Les mises jour de logiciels automatiques sont une fonctionnalit importante, mais il est galement important denlever les menaces de scurit qui pourrait favoriser la propagation de chevaux de Troie et la compromission de systmes lors des mises jour 3 . ce jour (mai 2005), Debian ne fournit pas de paquets signs pour la distribution et les versions Woody (3.0) et Sarge (3.1) nintgrent pas cette fonctionnalit. Il existe une solution pour les paquets signs qui sera, esprons-le, fournie dans la prochaine version (Etch). Cette nouvelle fonctionnalit sera disponible dans apt 0.6 (actuellement disponible dans la distribution sid, voir Apt-secure page suivante). Ce problme est mieux dcrit dans le Strong Distribution HOWTO (http://www.cryptnet. net/fdp/crypto/strong_distro.html) par V. Alex Brennen.

7.4.1

Le schma propos pour la vrication de paquet

Le schma actuel pour la vrication de signatures de paquet en utilisant apt est : le chier Release inclut le md5sum de Packages.gz (qui contient les md5sums des paquets) et sera sign. La signature est celle dune source sre. Ce chier Release est tlcharg par apt-get update et stock sur le disque dur avec le Packages.gz. Quand un paquet est sur le point dtre install, il est premirement tlcharg, puis le md5sum est gnr.
Certains systmes dexploitation ont dj t touchs par des problmes de mises jour automatiques comme la faille de mises jour de logiciels de Mac OS X (http://www.cunap.com/~hardingr/projects/osx/ exploit.html). FIXME : la faille dInternet Explorer sur la gestion des chanes de certicat a probablement un impact sur les mises jour de scurit de Microsoft Windows.
3

Chapitre 7. Infrastructure de scurit Debian

133

Le chier Release sign est vri (signature ok) et il en est extrait le md5sum pour le chier Packages.gz, le checksum de Packages.gz est gnr et (si ok) le md5sum du paquet tlcharg en est extrait. Si le md5sum du paquet tlcharg est le mme que celui du chier Packages.gz le paquet sera install sinon ladministrateur sera averti et le paquet sera laiss dans le cache (ainsi ladministrateur dcidera sil linstalle ou non). Si le paquet nest pas dans Packages.gz et que ladministrateur a congur le systme pour installer uniquement les paquets vris il ne sera pas plus install. En suivant la chane de sommes MD5, apt est capable de vrier quun paquet est originaire dune version bien spcique. Ceci est moins souple que de signer chaque paquet un par un, mais peut tre combin galement avec ce schma suivant (voir ci-dessous). Actuellement, ce schma est compltement implment (http://lists.debian.org/ debian-devel/2003/debian-devel-200312/msg01986.html) dans apt 0.6 qui est maintenant disponible dans la distribution unstable ; pour plus dinformations, voir Aptsecure de la prsente page. Les paquets fournissant une interface apt doivent tre modis pour sadapter cette nouvelle fonctionnalit, cest le cas daptitude qui a t modi (http://lists.debian.org/debian-devel/2005/03/msg02641.html) pour tre adapt ce schma. Parmi les frontaux qui sont dj rfrencs comme fonctionnant correctement avec cette fonctionnalit, citons aptitude et synaptic. La signature de paquets a t aborde dans Debian depuis pas mal de temps dj, pour plus dinformations vous pouvez lire : http://www.debian.org/News/weekly/2001/8/ et http://www.debian.org/News/weekly/2000/11/.

7.4.2

Apt-secure

La version 0.6 dapt inclut apt-secure qui est un outil permettant ladministrateur systme de tester lintgrit des paquets tlchargs par le schma ci-dessus. Cette version inclut loutil apt-key pour ajouter de nouvelles cls au porte-cls dapt qui ninclut par dfaut que la cl actuelle de signature de larchive Debian. Ces changements sont bass sur un correctif pour apt (disponible dans le bogue n203741 (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=203741)) qui fournit cette implmentation. Cette fonctionnalit est encore en dveloppement, donc si vous croyez avoir trouv des bogues dans ce paquet, veuillez vrier en premier que vous utilisez la dernire version (car ce paquet peut beaucoup changer avant dtre diffus) et si vous utilisez la dernire version, crez un bogue sur le paquet apt. Notez que, lors de lutilisation de la version dapt, aucun effort supplmentaire ne devrait tre ncessaire de votre part sauf si vous utilisez des sources non-Debian, auquel cas une tape de conrmation supplmentaire sera impose par apt-get. Ceci est vit en fournissant les chiers Release et Release.gpg dans les sources non-Debian. Le chier Release peut tre gnr avec apt-ftparchive (disponible dans apt-utils 0.5.0 et ultrieur), le chier Release.gpg est simplement une signature dtache. Pour gnrer les deux chiers, suivez cette procdure simple :

Chapitre 7. Infrastructure de scurit Debian

134

$ rm -f dists/unstable/Release $ apt-ftparchive release dists/unstable > dists/unstable/Release $ gpg --sign -ba -o dists/unstable/Release.gpg dists/unstable/Release

7.4.3

Schma alternatif de signature par paquet

Le schma supplmentaire de signature de chacun des paquets permet aux paquets dtre vris quand ils ne sont plus rfrencs par un chier Packages existant, et galement pour les paquets de tierce partie quand aucun paquet na jamais exist pour ceux-ci qui puisse tre utilis dans Debian, mais ce ne sera pas le schma par dfaut. Ce schma de signature des paquets peut tre implment en utilisant debsig-verify et debsigs. Ces deux paquets peuvent signer et vrier des signatures incluses dans le .deb lui-mme. Debian a dj la capacit de faire cela actuellement, mais limplmentation de cette rgle et des outils ne commencera pas avant la sortie de Woody. Les dernires versions de dpkg ( partir de la version 1.9.21) incluent un correctif (http: //lists.debian.org/debian-dpkg/2001/debian-dpkg-200103/msg00024.html) qui fournit cette fonctionnalit ds que debsig-verify est install. Note : actuellement, /etc/dpkg/dpkg.cfg est livr avec no-debsig par dfaut. Note2 : les signatures des dveloppeurs sont actuellement enleves lors de lentre du paquet dans larchive car la mthode actuellement prfre est des vrications de version comme dcrit prcdemment.

7.4.4

Alternative la vrication des versions de distribution

Au cas o vous voudriez ajouter des vrications de scurit supplmentaires et que vous ne vouliez pas ou pouviez pas utiliser la plus rcente version dapt (bien que vous apprcierions quelle soit teste), vous pouvez utiliser le script ci-dessous fourni par Anthony Towns. Ce script peut automatiquement faire certaines nouvelles vrications de scurit qui permettent lutilisateur dtre sr que le logiciel quil tlcharge correspond celui de la distribution de logiciels Debian. Cela empche les dveloppeurs Debian dintgrer des nouveauts au systme de quelquun en outrepassant les responsabilits qui incombent au chargement vers larchive principale, ou encore cela empche une duplication similaire mais pas exactement identique, ou pour nir cela empche lutilisation de miroirs fournissant des copies anciennes de la version instable ou connaissant des problmes de scurit. Ce code exemple, renomm en apt-release-check, devrait tre utilis de la manire suivante : # apt-get update # apt-check-sigs (...rsultats...) # apt-get dist-upgrade

Chapitre 7. Infrastructure de scurit Debian

135

Avant tout, vous avez besoin de :

rcuprer les cls que les logiciels de larchive utilisent pour signer les chiers Release, http://ftp-master.debian.org/ziyi_key_2003.asc, et les ajouter ~/.gnupg /trustedkeys.gpg (ce qui est ce que gpgv utilise par dfaut). gpg --no-default-keyring --keyring trustedkeys.gpg --import ziyi_key_200 retirer toutes les lignes de /etc/apt/sources.list qui nutilisent pas la structure normale dists ou changer le script an quil fonctionne avec elles. tre prt ignorer le fait que les mises jour de scurit Debian nont pas de chiers Release signs et que les chiers Sources nont pas (encore) les sommes de contrle ( checksums ) appropries dans le chier Release. tre prt vrier que les sources appropries soient signes par les cls appropries. Ceci est le code exemple pour apt-check-sigs, la dernire version peut tre rcupre depuis http://people.debian.org/~ajt/apt-check-sigs. Ce code est actuellement en bta, pour plus dinformations, lisez http://lists.debian.org/debian-devel/2002/ debian-devel-200207/msg00421.html. #!/bin/bash # # # # # # # # # # # Copyright (c) 2001 Anthony Towns <ajt@debian.org> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

rm -rf /tmp/apt-release-check mkdir /tmp/apt-release-check || exit 1 cd /tmp/apt-release-check >OK >MISSING >NOCHECK >BAD arch=dpkg --print-installation-architecture am_root () { [ id -u -eq 0 ] }

Chapitre 7. Infrastructure de scurit Debian

136

get_md5sumsize () { cat "$1" | awk /^MD5Sum:/,/^SHA1:/ | MYARG="$2" perl -ne @f = split /\s+/; if ($f[3] eq $ENV{"MYARG"}) { print "$f[1] $f[2]\n"; exit(0); } } checkit () { local FILE="$1" local LOOKUP="$2" Y="get_md5sumsize Release "$LOOKUP"" Y="echo "$Y" | sed s/^ *//;s/ */ /g"

if [ ! -e "/var/lib/apt/lists/$FILE" ]; then if [ "$Y" = "" ]; then # No file, but not needed anyway echo "OK" return fi echo "$FILE" >>MISSING echo "MISSING $Y" return fi if [ "$Y" = "" ]; then echo "$FILE" >>NOCHECK echo "NOCHECK" return fi X="md5sum < /var/lib/apt/lists/$FILE | cut -d\ -f1 wc -c < /var/li /apt/lists/$FILE" X="echo "$X" | sed s/^ *//;s/ */ /g" if [ "$X" != "$Y" ]; then echo "$FILE" >>BAD echo "BAD" return fi echo "$FILE" >>OK echo "OK" }

echo echo "Checking sources in /etc/apt/sources.list:" echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" echo (echo "You should take care to ensure that the distributions youre downloadin "

Chapitre 7. Infrastructure de scurit Debian

137

echo "are the ones you think you are downloading, and that they are as up to" echo "date as you would expect (testing and unstable should be no more than" echo "two or three days out of date, stable-updates no more than a few weeks" echo "or a month)." ) | fmt echo cat /etc/apt/sources.list | sed s/^ *// | grep ^[^#] | while read ty url dist comps; do if [ "${url%%:*}" = "http" -o "${url%%:*}" = "ftp" ]; then baseurl="${url#*://}" else continue fi echo "Source: ${ty} ${url} ${dist} ${comps}" rm -f Release Release.gpg lynx -reload -dump "${url}/dists/${dist}/Release" >/dev/null 2>&1 wget -q -O Release "${url}/dists/${dist}/Release" if ! grep -q ^ Release; then echo " * NO TOP-LEVEL Release FILE" >Release else origline=sed -n s/^Origin: *//p Release | head -1 lablline=sed -n s/^Label: *//p Release | head -1 suitline=sed -n s/^Suite: *//p Release | head -1 codeline=sed -n s/^Codename: *//p Release | head -1 dateline=grep "^Date:" Release | head -1 dscrline=grep "^Description:" Release | head -1 echo " o Origin: $origline/$lablline" echo " o Suite: $suitline/$codeline" echo " o $dateline" echo " o $dscrline"

if [ "${dist%%/*}" != "$suitline" -a "${dist%%/*}" != "$codeli echo " * WARNING: asked for $dist, got $suitline/$cod fi

lynx -reload -dump "${url}/dists/${dist}/Release.gpg" >/dev/nu wget -q -O Release.gpg "${url}/dists/${dist}/Release.gpg" gpgv --status-fd 3 Release.gpg Release 3>&1 >/dev/null 2>&1 | if [ "$gpgcode" = "GOODSIG" ]; then

Chapitre 7. Infrastructure de scurit Debian

138

if [ "$err" != "" ]; then echo " * Signed by ${err# } key: ${rest#* }" else echo " o Signed by: ${rest#* }" okay=1 fi err="" elif [ "$gpgcode" = "BADSIG" ]; then echo " * BAD SIGNATURE BY: ${rest#* }" err="" elif [ "$gpgcode" = "ERRSIG" ]; then echo " * COULDNT CHECK SIGNATURE BY KEYID: ${res err="" elif [ "$gpgcode" = "SIGREVOKED" ]; then err="$err REVOKED" elif [ "$gpgcode" = "SIGEXPIRED" ]; then err="$err EXPIRED" fi done if [ "$okay" != 1 ]; then echo " * NO VALID SIGNATURE" >Release fi)

fi okaycomps="" for comp in $comps; do if [ "$ty" = "deb" ]; then X=$(checkit "echo "${baseurl}/dists/${dist}/${comp}/b Y=$(checkit "echo "${baseurl}/dists/${dist}/${comp}/b if [ "$X $Y" = "OK OK" ]; then okaycomps="$okaycomps $comp" else echo " * PROBLEMS WITH $comp ($X, $Y)" fi elif [ "$ty" = "deb-src" ]; then X=$(checkit "echo "${baseurl}/dists/${dist}/${comp}/s Y=$(checkit "echo "${baseurl}/dists/${dist}/${comp}/s if [ "$X $Y" = "OK OK" ]; then okaycomps="$okaycomps $comp" else echo " * PROBLEMS WITH component $comp ($X, $ fi fi done [ "$okaycomps" = "" ] || echo " o Okay:$okaycomps" echo

Chapitre 7. Infrastructure de scurit Debian

139

done echo "Results" echo "~~~~~~~" echo allokay=true

cd /tmp/apt-release-check diff <(cat BAD MISSING NOCHECK OK | sort) <(cd /var/lib/apt/lists && find . -t

cd /tmp/apt-release-check if grep -q ^ UNVALIDATED; then allokay=false (echo "The following files in /var/lib/apt/lists have not been validated." echo "This could turn out to be a harmless indication that this script" echo "is buggy or out of date, or it could let trojaned packages get onto" echo "your system." ) | fmt echo sed s/^/ / < UNVALIDATED echo fi

if grep -q ^ BAD; then allokay=false (echo "The contents of the following files in /var/lib/apt/lists does not" echo "match what was expected. This may mean these sources are out of date echo "that the archive is having problems, or that someone is actively" echo "using your mirror to distribute trojans." if am_root; then echo "The files have been renamed to have the extension .FAILED and" echo "will be ignored by apt." cat BAD | while read a; do mv /var/lib/apt/lists/$a /var/lib/apt/lists/${a}.FAILED done fi) | fmt echo sed s/^/ / < BAD echo fi if grep -q ^ MISSING; then allokay=false (echo "The following files from /var/lib/apt/lists were missing. This" echo "may cause you to miss out on updates to some vulnerable packages."

Chapitre 7. Infrastructure de scurit Debian

140

) | fmt echo sed s/^/ echo fi

/ < MISSING

if grep -q ^ NOCHECK; then allokay=false (echo "The contents of the following files in /var/lib/apt/lists could not echo "be validated due to the lack of a signed Release file, or the lack" echo "of an appropriate entry in a signed Release file. This probably" echo "means that the maintainers of these sources are slack, but may mean" echo "these sources are being actively used to distribute trojans." if am_root; then echo "The files have been renamed to have the extension .FAILED and" echo "will be ignored by apt." cat NOCHECK | while read a; do mv /var/lib/apt/lists/$a /var/lib/apt/lists/${a}.FAILED done fi) | fmt echo sed s/^/ / < NOCHECK echo fi if $allokay; then echo Everything seems okay! echo fi rm -rf /tmp/apt-release-check Il est possible que vous deviez ajouter le correctif suivant pour Sid car md5sum ajoute un - aprs la somme quand lentre est stdin : @@ -37,7 +37,7 @@ local LOOKUP="$2" Y="get_md5sumsize Release "$LOOKUP"" Y="echo "$Y" | sed s/^ *//;s/ */ /g" Y="echo "$Y" | sed s/-//;s/^ *//;s/ */ /g"

if [ ! -e "/var/lib/apt/lists/$FILE" ]; then if [ "$Y" = "" ]; then @@ -55,7 +55,7 @@

Chapitre 7. Infrastructure de scurit Debian

141

return fi X="md5sum < /var/lib/apt/lists/$FILE wc -c < /var/lib/apt/lists/$FI X="echo "$X" | sed s/^ *//;s/ */ /g" X="echo "$X" | sed s/-//;s/^ *//;s/ */ /g" if [ "$X" != "$Y" ]; then echo "$FILE" >>BAD echo "BAD"

Chapitre 7. Infrastructure de scurit Debian

142

143

Chapitre 8

Outils de scurit dans Debian


FIXME : Besoin de plus de contenu. Debian fournit un certain nombre doutils qui peuvent rendre votre systme Debian apte une utilisation dans le domaine de la scurit. Ce but inclut la protection des systmes dinformation au travers de pare-feux (qui agissent au niveau des paquets ou de la couche application), de systmes de dtection dintrusions (bass sur le rseau ou sur lhte), dvaluation des vulnrabilits, dantivirus, de rseaux privs, etc. Depuis Debian 3.0 (Woody), la distribution propose des logiciels de chiffrage intgrs dans la distribution principale (main). OpenSSH et GNU Privacy Guard sont inclus dans linstallation par dfaut et le chiffrage fort est maintenant prsent dans les navigateurs web, les serveurs web, les bases de donnes, etc. Une intgration plus pousse du chiffrage est prvue pour les versions ultrieures. Ces logiciels, cause de restrictions dexportation aux tats-Unis, ntaient pas distribus avec la distribution principale, mais inclus seulement dans les sites non-US1 .

8.1
2

Outils dvaluation des vulnrabilits distances

Les outils fournis dans Debian pour effectuer une valuation des vulnrabilits distance sont : nessus raccess nikto (en remplacement de whisker) De loin, loutil le plus complet et mis jour est nessus qui est compos dun client (nessus) utilis tel un GUI et un serveur (nessusd) qui lance les attaques programmes. Nessus inclut des vulnrabilits distance pour un grand nombre de systmes incluant les appareils
Heureusement, suite un relchement de la loi tats-unienne sur lexportation de produits cryptographiques sous license libre, linfrastructure des miroirs contenant la branche non-US lextrieur des tats-Unis nest plus ncessaire et nest plus utilise depuis la sortie de Debian 3.1 (Sarge). 2 Certains dentre eux sont fournis en installant le paquet harden-remoteaudit.
1

Chapitre 8. Outils de scurit dans Debian

144

rseaux, les serveurs FTP, les serveurs HTTP, etc. Les dernires versions sont mme capables de parcourir un site web et dessayer de dcouvrir les pages interactives qui sont susceptibles dtre attaques. Il existe galement des clients Java et Win32 (non inclus dans Debian) qui peuvent tre utiliss pour contacter le serveur de gestion. Nikto est un scanner pour valuer les vulnrabilits dun serveur HTTP et qui utilise des stratgies an de contrer les systmes de dtection dintrusions (IDS). Les IDS voluant galement, la plupart de ces techniques nissent par ne plus tre efcace titre danti-IDS). Cest tout de mme lun des meilleurs scanners disponible pour tester les CGI et il est capable de dtecter le serveur web utilis an de ne lancer que les attaques qui ont des chances de fonctionner. De plus, la base de donnes utilise pour scanner peut tre facilement modie an dajouter de nouveaux tests.

8.2

Outils pour parcourir le rseau

Debian fournit quelques outils pour parcourir des htes distants (toutefois en nexaminant pas les vulnrabilits). Ces outils sont, dans certains cas, utiliss tels des scanners de vulnrabilits. Ceci est le premier type d attaque lanc contre des htes distants an de tenter de dterminer les services disponibles. lheure actuelle, Debian fournit : nmap xprobe p0f knocker isic hping3 icmpush nbtscan (pour audits SMB /NetBIOS) fragrouter strobe (dans le paquet netdiag) irpas

Alors que xprobe ne permet que la dtection des systmes dexploitation (en utilisant des empreintes TCP/IP), nmap et knocker font les deux : la dtection du systme dexploitation et la dtection de ltat des ports sur un systme distant. Dun autre ct, hping3 et icmpush peuvent tre utiliss dans le cadre dattaques distance via ICMP. Conu spciquement pour les rseaux SMB, nbtscan peut tre utilis pour scanner les rseaux IP et obtenir des informations sur les noms des serveurs ayant activ le support NetBIOS. Ceci inclut ladresse IP, le nom NetBIOS de lordinateur, les noms des utilisateurs connects, les noms des rseaux, les adresses MAC, etc. Dun autre ct, fragrouter peut tre utilis pour tester des systmes de dtection dintrusion rseau et voir si le NIDS peut tre lud par des attaques par fragmentation (de paquets). FIXME : Vrier Bug #153117 (http://bugs.debian.org/153117) (ITP fragrouter) pour voir sil est inclus.

Chapitre 8. Outils de scurit dans Debian

145

FIXME : ajouter des informations bases sur Debian Linux Laptop for Road Warriors (http:// www.giac.org/practical/gcux/Stephanie_Thomas_GCUX.pdf) qui dcrit comment utiliser Debian et un ordinateur portable pour parcourir les rseaux sans l (803.1).

8.3

Audits internes

De nos jours, seul loutil tiger utilis dans Debian peut tre utilis pour effectuer un audit interne (galement appel bote blanche ( white box en anglais)) dhtes de faon dterminer si le systme de chiers est install correctement, quels processus sont lcoute sur lhte, etc.

8.4

Contrle du code source

Debian fournit plusieurs paquets qui peuvent tre utiliss an de contrler le code source de programmes crits en C/C++ et didentier des erreurs de programmation qui pourraient conduire des failles de scurit exploitables : flawfinder rats splint pscan

8.5

Rseaux Privs Virtuels

Un rseau priv virtuel (VPN) est un groupe de deux ordinateurs ou plus, habituellement relis un rseau priv offrant un accs rseau public limit, qui communiquent de faon scurise via un rseau public. Les VPN peuvent connecter un seul ordinateur un rseau priv (client-serveur) ou un rseau local (LAN) distant un rseau priv (serveur-serveur). Les VPN incluent souvent lutilisation du chiffrage, une authentication forte des utilisateurs ou htes distants et des mthodes pour cacher la topologie du rseau priv. Debian fournit un nombre assez important de paquets pour mettre en place des rseaux privs virtuels chiffrs : vtun tunnelv (section non-US) cipe-source, cipe-common tinc secvpn pptp openvpn openswan (http://www.openswan.org/)

Chapitre 8. Outils de scurit dans Debian

146

FIXME : Mettre jour cette information car elle a t crite en pensant FreeSWAN. Vrier le bogue #237764 et le Message-Id : <200412101215.04040.rmayr@debian.org>. Le paquet OpenSWAN est probablement le meilleur choix dans lensemble tant donn quil promet dtre fonctionnel avec tout matriel supportant le protocole de scurit dIP, IPsec (RFC 2411). Mais, les autres paquets peuvent vous aider obtenir un tunnel scuris rapidement. Le protocole de tunnel point point (PPTP) est le protocole propritaire Microsoft pour les VPN. Il est support sous Linux mais il est connu pour avoir de srieux problmes de scurit. Pour plus dinformations, lire le VPN Masquerade HOWTO (http://www.traduc. org/docs/HOWTO/vf/VPN-Masquerade-HOWTO.html) (couvre IPsec et PPTP), le VPN HOWTO (http://www.traduc.org/docs/HOWTO/vf/VPN-HOWTO.html) (couvre PPP travers SSH), le Cipe mini-HOWTO (http://www.linuxdoc.org/HOWTO/mini/Cipe+ Masq.html) et le PPP and SSH mini-HOWTO (http://www.linuxdoc.org/HOWTO/ mini/ppp-ssh/index.html). Cela vaut galement le coup de vrier Yavipin (http://yavipin.sourceforge.net/), mais aucun paquet Debian ne semble tre disponible pour linstant.

8.5.1

Le tunnel point point

Si vous dsirez fournir un serveur de tunnel pour un environnement mixte ( la fois pour les systmes dexploitation Microsoft et les clients Linux) et quIPsec nest pas une option (car il nest fourni que pour Windows 2000 et Windows XP), vous pouvez utiliser PoPToP (serveur de tunnel point point), fourni dans le paquet pptpd. Si vous voulez utiliser lauthentication et le chiffrage de Microsoft avec le serveur fourni dans le paquet ppp, veuillez noter la remarque suivante de la FAQ :

Il est seulement ncessaire dutiliser PPP 2.3.8 si vous voulez une authentification et un chiffrage compatible Microsoft MSCHAPv2/MPPE. La raison cela est que le correctif MSCHAPv2/MPPE actuellement fourni (19990813) est relatif PPP 2.3.8. Si vous navez pas besoin de lauthentification ou du chiffrage compatible Microsoft, nimporte quelle source PPP~2.3.x fera laffaire.

Vous devez cependant appliquer le correctif noyau fourni par le paquet kernel-patch-mppe qui fournit le module pp_mppe pour pppd. Prenez galement en compte que le chiffrage dans pptp vous force stocker les mots de passe utilisateur en clair et que le protocole MS-CHAPv2 contient des failles de scurit connues (http://mopo.informatik.uni-freiburg.de/pptp_mschapv2/).

Chapitre 8. Outils de scurit dans Debian

147

8.6

Infrastructure de cls publiques (PKI)

Linfrastructure de cls publiques (PKI) est une architecture de scurit introduite pour fournir un niveau de conance amlior lors de lchange dinformations sur des rseaux non scuriss. Elle utilise le concept de cls de chiffrage publiques et prives pour vrier lidentit de lexpditeur (signature) et pour garantir la condentialit (chiffrage). Lorsque vous vous intressez aux PKI, vous vous trouvez confront une grande varit doutils : Une autorit de certication (Certicate Authority CA) qui peut vous fournir des certicats extrieurs et travailler sous une hirarchie donne. Un rpertoire pour conserver les certicats publics des utilisateurs. Une base de donnes pour maintenir une liste des certicats rvoqus (Certicate Revocation Lists CRL). Des priphriques interoprants avec le CA pour diter des cartes puce/jetons USB/nimporte quoi dautre pour stocker les certicats en scurit. Les applications prvues pour fonctionner avec des certicats de conance peuvent utiliser des certicats distribus par des CA pour engager une communication chiffre et vrier les certicats dlivrs contre un CRL (pour lauthentication et les solutions de signature complte unique). Une autorit pour certier les dates et signer numriquement des documents. Une console de gestion permettant une gestion correcte de tout cela (gnration de certicats, contrle de listes de rvocation, etc.) Debian GNU/Linux contient des paquets logiciels pour vous aider rsoudre ces problmes de PKI. Cela inclut OpenSSL (pour la gnration de certicats), OpenLDAP (comme rpertoire pour maintenir les certicats), gnupg et openswan (avec le support standard X.509). Cependant, le systme dexploitation ne fournit pas (comme dans la version Woody, Debian 3.0) dautorit de dlivrance de certicat librement disponible comme pyCA, OpenCA (http: //www.openca.org) ou les exemples CA dOpenSSL. Pour plus dinformations, reportezvous au livre Open PKI (http://ospkibook.sourceforge.net).

8.7

Infrastructure SSL

Debian fournit quelques certicats SSL avec la distribution pour quils puissent tre installs localement. Ils sont disponibles dans le paquet ca-certificates. Ce paquet fournit un dpt central des certicats qui ont t soumis Debian et approuv (c.--d. vris) par le responsable du paquet, cela est utile pour toutes les applications OpenSSL qui vrient des connexion SSL. FIXME : lire debian-devel pour voir sil y a quelque chose ajouter cela.

Chapitre 8. Outils de scurit dans Debian

148

8.8

Outils antivirus

Il ny a pas beaucoup dantivirus fournis avec Debian, probablement parce que cest un problme qui affecte trs peu les utilisateurs de Linux. En fait, la plupart des antivirus disponibles sous Linux servent protger des ordinateurs fonctionnant sous un autre systme dexploitation. Ceci sexplique par le modle de scurit UNIX qui fait une distinction entre les processus privilgis (root) et les processus appartenant aux utilisateurs. Ainsi, un programme excutable hostile quun utilisateur non privilgi a reu ou cr et ensuite excut ne peut pas infecter ou dune autre faon manipuler le systme dexploitation lui-mme. Cependant, quelques virus et vers affectant Linux existent, mme si aucun na jamais russi se rpandre de faon signicative sous Debian. Dans tous les cas, les administrateurs peuvent vouloir mettre en place des passerelles antivirus pour se protger contre les virus affectant dautres systmes plus vulnrables dans leur rseau. Debian GNU/Linux fournit lheure actuelle les outils suivants pour mettre en place des environnements antivirus : Clam Antivirus (http://www.clamav.net), fourni depuis Debian Sarge (version 3.1). Des paquets sont fournis la fois pour le scanneur de virus (clamav), pour le dmon de scan (clamav-daemon) et pour les chiers de donnes ncessaires au scanneur. Puisquun antivirus doit tre jour an dtre vraiment utile, il y a trois moyens diffrents pour rcuprer ces donnes : clamav-freshclam fournit un moyen de mettre jour la base de donnes automatiquement par lInternet, clamav-data fournit les chiers de donnes directement 3 et il y a debian-volatile (http://volatile.debian.org), un dpt ofciel de Debian qui offre la fois plusieurs mises jour quotidiennes et un support ofciel de lquipe de scurit de Debian. mailscanner un scanneur de virus pour passerelle de courriels et un dtecteur de pourriels. Fonctionnant avec sendmail, postfix ou exim, il peut utiliser plus de 17 types de scanneurs de virus diffrents dont clamav. libfile-scan-perl qui fournit File : :Scan, une extension Perl pour scanner des chiers la recherche de virus. Ce module peut tre utilis pour crer un scanneur de virus indpendant de la plate-forme. Amavis Next Generation (http://www.sourceforge.net/projects/amavis), fourni par le paquet amavis-ng et disponible dans Sarge, est un scanneur de virus de courriel qui sintgre avec diffrents serveurs de courriers (Exim, Sendmail, Postx ou Qmail) et qui gre plus de 15 moteurs de recherche de virus (y compris clamav, File : :Scan et openantivirus). sanitizer (http://packages.debian.org/sanitizer), un outil qui utilise le paquet procmail, qui peut ltrer les attachements de courrier, bloquer les attachements selon leurs noms de chier et plus. amavis-postx (http://packages.debian.org/amavis-postfix), un script qui fourSi vous utilisez ce dernier paquet et que vous utilisez une Debian ofcielle, la base de donnes ne sera pas mise jour avec les mises jour de scurit. Vous devrez soit utiliser clamav-getfiles du paquet clamav-freshclam pour gnrer de nouveaux clamav-data ou mettre jour partir de lemplacement des responsables : deb http ://people.debian.org/~zugschlus/clamav-data/ / deb-src http ://people.debian.org/~zugschlus/clamav-data/ /
3

Chapitre 8. Outils de scurit dans Debian

149

nit une interface depuis un MTA vers un ou plusieurs scanners commerciaux de virus (ce paquet est seulement construit pour le MTA postfix). exiscan, un scanneur de virus de courriel crit en Perl qui fonctionne avec Exim. blackhole-qmail, un ltre de pourriel pour Qmail avec prise en charge intgre pour Clamav. Certains dmons de passerelle proposent dj des extensions doutils pour construire des environnements antivirus comprenant exim4-daemon-heavy (la version lourde du MTA Exim), frox (un serveur mandataire FTP de cache transparent), messagewall (un dmon mandataire SMTP) et pop3vscan (un mandataire POP3 transparent). Prsentement, clamav est lunique scanneur dantivirus inclus dans la branche ofcielle de Debian. En revanche, de nombreuses interfaces qui permettent dutiliser lantivirus via des passerelles supportant diffrents protocoles sont offertes. Dautres projets de logiciels libres dantivirus qui pourraient tre inclus dans une future version de Debian GNU/Linux : Open Antivirus (http://sourceforge.net/projects/openantivirus/) (voir Bug #150698 (ITP oav-scannerdaemon) (http://bugs.debian.org/150698) et Bug #150695 (ITP oav-update) (http://bugs.debian.org/150695)). FIXME : Y a-t-il un paquet fournissant un script qui tlcharge les dernires signatures de virus depuis http://www.openantivirus.org/latest.php ? FIXME : Vrier si scannerdaemon est le mme que le dmon scanner antivirus open (lire les ITP). Cependant, Debian ne fournira jamais de logiciels antivirus propritaires et impossibles redistribuer tels que : Panda Antivirus, NAI Netshield, Sophos Sweep (http://www. sophos.com/), TrendMicro Interscan (http://www.antivirus.com) ou RAV (http:// www.ravantivirus.com). Cela ne veut videmment pas dire que ces logiciels ne peuvent pas tre installs correctement sur un systme Debian4 . Pour plus dinformations sur la faon de mettre en place un systme de dtection des virus, veuillez lire larticle de Dave Jones Construire un systme de dtection des virus des courriels pour votre rseau (http://www.linuxjournal.com/article.php?sid=4882).

8.9

Agent GPG

Il est trs courant de nos jours de signer numriquement (et parfois de chiffrer) des courriels. Vous pouvez, par exemple, trouver que de nombreuses personnes participant sur des listes de diffusion signent leur courriel de la liste. Les signatures de cl public sont actuellement le seul moyen de vrier quun courriel a t envoy par lexpditeur et non par une autre personne. Debian GNU/Linux fournit un certain nombre de clients de messagerie avec des fonctionnalit de signature de courriels intgrs qui interagissent soit avec gnupg ou avec pgp :
Il y a un paquet nomm f-prot-installer qui est en fait un programme dinstallation qui tlchargera le logiciel F-prot (http://www.f-prot.com/products/home_use/linux/) et linstallera sur votre systme. F-prot lui-mme nest pas libre, mais il est gratuit pour lutilisation personnelle.
4

Chapitre 8. Outils de scurit dans Debian

150

evolution, mutt, kmail, mozilla ou Thunderbird (fourni dans le paquet mozilla-thunderbird) si le greffon Enigmail (http://enigmail.mozdev.org/) est install, lequel est fourni par mozilla-enigmail et par mozilla-thunderbird-enigmail. sylpheed. Selon la faon dont volue la version stable de ce paquet, vous pouvez avoir besoin dutiliser la version dernier cri, sylpheed-claws. gnus, qui, lorsquil est install avec le paquet mailcrypt, est une interface emacs gnupg. kuvert, qui fournit cette fonctionnalit indpendamment de votre client de messagerie choisi en interagissant avec lagent de transport de courrier (MTA). Les serveurs de cl vous permettent de tlcharger des cls publiques publies pour pouvoir vrier des signatures. Un tel serveur est http://wwwkeys.pgp.net. gnupg peut rcuprer automatiquement des cls publics qui ne sont pas dj dans votre porte-cls (keyring) public. Par exemple, pour congurer gnupg pour utiliser le serveur de cls ci-dessus, ditez le chier ~/.gnupg/options et ajoutez la ligne suivante : 5 keyserver wwwkeys.pgp.net La plupart des serveurs de cls sont lis an que, quand votre cl publique est ajoute un serveur, laddition soit propage tous les autres serveurs de cls publiques. Il existe galement un paquet Debian GNU/Linux debian-keyring fournissant les cls publiques des dveloppeurs Debian. Les porte-clefs gnupg sont installs dans /usr/share/keyrings/. Pour plus dinformations : FAQ de GnuPG (http://www.gnupg.org/documentation/faqs.fr.html). GnuPG Handbook (http://www.gnupg.org/gph/fr/manual.html). GnuPG Mini Howto (English) (http://www.dewinter.com/gnupg_howto/english/ GPGMiniHowto.html). comp.security.pgp FAQ (http://www.uk.pgp.net/pgpnet/pgp-faq/). Keysigning Party HOWTO (http://www.cryptnet.net/fdp/crypto/keysigning_ party/en/keysigning_party.html).

5 Pour plus dexemples sur la faon de congurer gnupg, consultez /usr/share/doc/mutt/examples /gpg.rc.

151

Chapitre 9

Avant la compromission
9.1 Maintenez votre systme scuris

Vous devriez faire tous les efforts ncessaires pour maintenir votre systme scuris en surveillant son utilisation ainsi que les vulnrabilits qui pourraient laffecter, en ajoutant les rustines ds quelles sont disponibles. Mme si vous avez install un systme vraiment scuris, vous devez garder lesprit que la scurit dun systme se dgrade avec le temps. Des failles de scurit peuvent tre dcouvertes pour les services offerts et les utilisateurs peuvent affaiblir la scurit du systme soit cause dune incomprhension (par exemple, en accdant au systme distance laide dun protocole non chiffr, ou en utilisant des mots de passe faciles deviner), ou parce quils essaient activement de corrompre la scurit du systme (i.e. installer des services supplmentaires dans leur compte local).

9.1.1

Surveillance des failles de scurit

Bien que la plupart des administrateurs ne soient conscients des failles de scurit affectant leur systme que lorsquun correctif est rendu disponible, vous pouvez tre proactif et tenter de prvenir les attaques en introduisant des contre-mesures temporaires contre ces vulnrabilits ds que vous dtectez quelles peuvent affecter votre systme. Ceci est particulirement vrai quand vous utilisez un systme expos (i.e. connect Internet) et fournissez un service. Dans ce cas, les administrateurs systmes devraient surveiller attentivement les sources dinformations connues pour tre les premiers tre informs lorsquune faille qui pourrait affecter un service critique est dtecte. Ceci inclut habituellement de sabonner la liste de diffusion des annonces, sur le site web du projet ou le systme de suivi des bogues fourni par les dveloppeurs pour les applications surveiller. Par exemple, les utilisateurs dApache devraient surveiller rgulirement la liste des failles de scurit connues (http://httpd.apache.org/security_report.html) et sinscrire la liste de diffusion des annonces du serveur Apache (http://httpd.apache. org/lists.html#http-announce). Pour suivre les failles de scurit connues affectant Debian, lquipe de scurit de Debian de

Chapitre 9. Avant la compromission

152

la version testing maintient un gestionnaire de la scurit (http://security-tracker. debian.net/) qui liste toutes les vulnrabilits connues qui nont pas encore t corriges dans les paquets Debian. Linformation est obtenue via plusieurs sources publiques et contient les failles connues qui sont disponibles soit par les bases de donnes de vulnrabilit ou le systme de suivi des bogues de Debian (http://www.debian.org/Bugs/). Les administrateurs peuvent chercher les problmes de scurit connus qui sont suivis pour stable (http: //security-tracker.debian.net/tracker/status/release/stable), oldstable (http://security-tracker.debian.net/tracker/status/release/oldstable), testing (http://security-tracker.debian.net/tracker/status/release/ testing), ou unstable (http://security-tracker.debian.net/tracker/status/ release/unstable). Le systme de suivi fourni une interface avec un moteur de recherches (par nom et nom de paquet via CVE (http://cve.mitre.org)) et dautres outils (tel que debsecan, voir Vrier automatiquement les problmes de scurit avec debsecan page 155) utilisant ces bases de donnes pour fournir de linformation sur les vulnrabilits qui nont pas encore t rsolues pour un systme donn. Les administrateurs consciencieux peuvent utiliser cette information pour dterminer quelles failles de scurit peuvent affecter le systme quils grent, dterminer la svrit du bogue et appliquer (si possible) des contre-mesures temporaires avant quun correctif soit disponible pour rsoudre le problme. Les problmes de scurit des versions supportes et suivis par lquipe de scurit de Debian vont gnralement passer par un avis de scurit Debian (DSA) et seront disponibles pour tous les utilisateurs (voir Mettre jour le systme en permanence de la prsente page). Une fois que les problmes de scurit sont rsolus et annoncs, ils ne seront plus afchs par le systme de suivi, mais vous pourrez encore chercher les vulnrabilits par leur nom CVE en utilisant la table de rfrences croises de scurit (http://www.debian.org/security/ crossreferences) disponible pour les DSA publies. Notez toutefois que linformation suivie par lquipe de test de scurit Debian ne concerne que les failles connues (i.e. celles qui ont dj t rendues publiques). Parfois, lquipe de scurit Debian peut grer et prparer des DSA pour des paquets selon des informations qui ne sont pas publiques et quils ont obtenues par des listes de diffusions restreintes, par le dcouvreur de la faille ou par les dveloppeurs du logiciel. Aussi, ne soyez pas surpris de dcouvrir des problmes de scurit afchs dans un DSA sans ne jamais avoir apparu dans le systme de suivi des vulnrabilits.

9.1.2

Mettre jour le systme en permanence

Vous devriez effectuer des mises jour de scurit frquemment. La grande majorit des exploits rsulte de failles connues qui nont pas t corriges temps, comme lexplique ce papier par Bill Arbaugh (http://www.cs.umd.edu/~waa/vulnerability.html) (prsent lors du Symposium 2001 IEEE sur la scurit et la condentialit). Les mises jour sont dcrites dans Faire une mise jour de scurit page 40.

Chapitre 9. Avant la compromission

153

Vrier manuellement si des mises jour de scurit sont disponibles Debian dispose dun outil spcique pour dterminer si un systme a besoin dtre mis jour, mais beaucoup dutilisateurs veulent simplement vrier si des mises jour de scurit sont disponibles pour leur systme. Si vous avez congur votre systme comme dcrit dans Faire une mise jour de scurit page 40, vous avez simplement faire : # # [ # # [ apt-get update apt-get upgrade -s ... passer en revue les paquets mettre jour ... ] apt-get upgrade checkrestart ... redmarrer les services qui doivent tre redmarrs ... ]

Et redmarrez les services dont les bibliothques ont t mises jour sil y en a. Note : lisez Faire une mise jour de scurit page 40 pour plus dinformations sur les mises jour de bibliothques (et de noyau). La premire ligne tlchargera la liste des paquets disponibles depuis vos sources de paquets congures. Loption -s effectuera une simulation dexcution, cest--dire quelle ne va pas tlcharger ou installer de paquets, mais quelle va plutt vous dire quels paquets seraient tlchargs et/ou installs. partir de cette sortie, vous pouvez en dduire quels paquets ont t corrigs dans Debian et sont disponibles comme mise jour de scurit. Par exemple : # apt-get upgrade -s Lecture des listes de paquets... Fait Construction de larbre des dpendances... Fait Calcul de la mise jour... Fait Les paquets suivants seront mis jour : cvs libcupsys2 2 mis jour, 0 nouvellement installs, 0 enlever et 0 non mis jour. Inst cvs (1.11.1p1debian-8.1 Debian-Security:3.0/stable) Inst libcupsys2 (1.1.14-4.4 Debian-Security:3.0/stable) Conf cvs (1.11.1p1debian-8.1 Debian-Security:3.0/stable) Conf libcupsys2 (1.1.14-4.4 Debian-Security:3.0/stable) Dans cet exemple, vous pouvez voir que le systme a besoin dtre mis jour avec les nouveaux paquets cvs et cupsys qui sont rcuprs depuis larchive de mises jour de scurit de Woody. Si vous voulez comprendre pourquoi de tels paquets sont ncessaires, vous devriez aller http://security.debian.org et vrier quelles alertes de scurit Debian (DSA) ont t rcemment publies concernant ces paquets. Dans ce cas, les DSA concernes sont DSA-233 (http://www.debian.org/security/2003/dsa-233) (pour cvs) et DSA-232 (http://www.debian.org/security/2003/dsa-232) (pour cupsys). Remarquez que vous devrez redmarrer votre systme sil y a eu une mise jour du noyau.

Chapitre 9. Avant la compromission

154

Vrier les mises jour sur la station de travail Depuis Debian 4.0 Lenny, Debian fournit et installe par dfaut update-notifier. Cest une application GNOME qui est lance lors de louverture de la session et qui peut tre utilise pour faire le suivi des mises jour disponibles pour votre systme et les installer. Il le fait en utilisant le paquet update-manager. Pour un systme stable, les mises jour sont seulement disponibles quand un correctif de scurit est disponible ou pour les versions intermdiaires. En consquence, si le systme est congur correctement pour recevoir les mises jour de scurit tel que dcrit dans Faire une mise jour de scurit page 40 et que vous avez une tche cron qui met jour les informations sur les paquets, vous serez averti par une icne dans lespace de notication du bureau. La notication nest pas intrusive et les utilisateurs ne sont pas forcs dinstaller les mises jour. Depuis licne de notication, un utilisateur du bureau (avec le mot de passe administrateur) peut accder une interface simple et voir les mises jour disponibles puis de les installer. Cette application fonctionne en consultant la base de donnes des paquets et en la comparant avec le systme. Si cette base de donnes est mise jour rgulirement par une tche cron, alors son contenu sera plus rcent que les paquets installs sur le systme et lapplication pourra vous avertir. Apt installe une telle tche cron (/etc/cron.d/apt) qui sexcutera selon la conguration dAPT (plus spciquement APT : :Periodic). Dans lenvironnement GNOME, la valeur de la conguration peut tre ajuste dans le menu Systme > Administration > Sources de mise jour > Updates, ou en excutant /usr/bin/software-properties. Si le systme tlcharge quotidiennement la liste des paquets, mais ne tlcharge pas les paquets eux-mmes, votre chier /etc/apt/apt.conf.d/10periodic devrait ressembler ceci : APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Download-Upgradeable-Packages "0"; Vous pouvez utiliser une tche cron diffrente, comme celle installe par cron-apt (voir Vrier automatiquement les mises jour avec cron-apt de la prsente page). Vous pouvez aussi simplement vrier manuellement les mises jour en utilisant cette application. Les utilisateurs de lenvironnement KDE prfreront probablement installer la place adept et adept-notifier. Ils fournissent des fonctionnalits similaires, mais ils ne sont pas installs par dfaut.

Vrier automatiquement les mises jour avec cron-apt Une autre mthode pour des mises jour de scurit automatique est lutilisation de cron-apt. Ce paquet fournit un outil pour mettre jour le systme intervalles rguliers (en utilisant une tche cron). Par dfaut, il va simplement mettre jour la liste des paquets et

Chapitre 9. Avant la compromission

155

tlcharger les nouveaux paquets. Il peut galement tre congur pour envoyer un courriel ladministrateur systme. Notez que vous pouvez vouloir vrier la version de distribution comme dcrit dans Alternative la vrication des versions de distribution page 134, si vous avez lintention de mettre jour automatiquement votre systme (mme si vous ne faites que tlcharger les paquets). Sinon, vous ne pouvez pas tre certain que les paquets tlchargs proviennent rellement dune source de conance. Pour plus dinformations, consultez le site dadministration de Debian (http://www. debian-administration.org/articles/162).

Vrier automatiquement les problmes de scurit avec debsecan Le programme debsecan value ltat de la scurit en listant la fois les mises jour de scurit non effectues et les vulnrabilits sans correctif alors que cron-apt ne fournit quun rapport sur les mises jour non effectues. debsecan obtient les informations sur les failles qui ne sont pas corriges laide de la base de donnes des vulnrabilits qui est gre par lquipe de scurit de Debian. Par consquent, tel que dcrit dans Surveillance des failles de scurit page 151, il aide plus efcacement les administrateurs suivre les failles de scurit. En installant le paquet debsecan, et si ladministrateur le choisit, une tche cron qui excutera priodiquement debsecan sera ajoute et notiera lutilisateur spci lorsquun paquet vulnrable est dtect. Lemplacement de la base de donnes des vulnrabilits fait aussi partie des questions poses lors de linstallation et peut ensuite tre modi dans le chier /etc /default/debsecan. Ceci est utile pour les systmes qui nont pas un accs direct lInternet et qui doivent tlcharger les nouvelles informations depuis un miroir local an quil ny ait quun seul chemin pour mettre jour la base de donnes des vulnrabilit. Notez toutefois que lquipe de scurit fait le suivi de beaucoup de failles, y compris des problmes peu dangereux qui peuvent ne pas tre corrigs lors des mises jour de scurit. De plus, certaines failles initialement considres comme affectant Debian peuvent, plus tard et aprs enqute, tre abandonnes. debsecan notiera toutes les failles, ce qui peut en faire un outil plus verbeux que les autres outils dcrits ci-dessus. Pour plus dinformations, vous pouvez consulter le site de lauteur (http://www.enyo.de/ fw/software/debsecan/).

Dautres mthodes de mises jour de scurit Il y a aussi le paquet apticron qui, comme apt-cron, vriera les mises jour et enverra des courriels ladministrateur. Pour plus dinformations, vous pouvez consulter le site dadministration de Debian (http://www.debian-administration.org/articles/491). Vous pourriez galement regarder du ct de secpack (http://clemens.endorphin.org/ secpack/) qui est un programme non ofciel pour effectuer des mises jour de scurit depuis security.debian.org crit par Fruhwirth Clemens et qui vrie les signatures, ou encore

Chapitre 9. Avant la compromission

156

le module dextension Nagios check_debian_updates.sh (http://www.unixdaemon.net/ nagios_plugins.html#check_debian_packages) crit par Dean Wilson.

9.1.3

vitez dutiliser la branche unstable

moins que vous ne vouliez ddier du temps corriger les paquets vous-mme quand une faille survient, vous ne devriez pas utiliser la branche unstable de Debian pour des systmes de production. La raison principale cela est quil ny a pas de mises jour de scurit pour unstable (voir Comment est assure la scurit pour les versions testing et unstable ? page 189). Le fait est que certains problmes de scurit peuvent apparatre dans unstable et pas dans la distribution stable. Cela est d aux nouvelles fonctionnalits ajoutes constamment aux applications fournies, ainsi quaux nouvelles applications incluses qui peuvent ne pas encore avoir t testes en profondeur. Pour effectuer des mises jour de scurit dans la branche unstable, il se peut que vous deviez faire des mises jour compltes vers de nouvelles versions (ce qui peut mettre jour beaucoup plus que les paquets touchs). Bien quil y ait des exceptions, les correctifs de scurit sont habituellement rtroports dans la branche stable. Lide principale tant quentre les mises jour, aucun nouveau code ne doit tre ajout, seulement des correctifs pour des problmes importants. Notez que vous pouvez utiliser le systme de suivi de scurit (dcrit dans Surveillance des failles de scurit page 151) pour suivre les failles de scurit affectant cette branche.

9.1.4

Support de la scurit pour la branche testing

Si vous utilisez la branche testing, il y a plusieurs problmes que vous devez prendre en compte concernant la disponibilit des mises jour de scurit : Quand un correctif de scurit est prpar, lquipe de scurit rtroporte le correctif pour stable (car stable est habituellement en retard de quelques versions mineures ou majeures). Le responsable du paquet est responsable pour prparer les paquets pour unstable, habituellement bas sur une nouvelle version amont. Parfois, les modications se produisent en mme temps et parfois lune des distributions reoit le correctif de scurit avant. Les paquets de la distribution stable sont tests plus en profondeur que ceux dunstable car ces derniers peuvent fournir la dernire version amont (qui peut inclure de nouveaux bogues inconnus). Les mises jour de scurit sont disponibles pour la branche unstable quand le responsable du paquet cre une nouvelle version du paquet et pour stable quand lquipe de scurit effectue un envoi et publie une DSA. Veuillez noter que ni lun, ni lautre ne modie testing. Si aucun (nouveau) bogue nest dtect dans la version unstable de paquet, il est dplac dans testing aprs plusieurs jours. Le dlai est habituellement de dix jours, bien que cela dpende de la priorit de lenvoi des changements et si lentre du paquet dans testing est bloque par ses relations de dpendances. Notez que si lentre du paquet dans testing est bloque, la priorit denvoi ne changera pas le temps que cela lui prendra pour y entrer.

Chapitre 9. Avant la compromission

157

Ce comportement peut changer selon ltat de publication de la distribution. Quand une nouvelle version est presque imminente, lquipe de scurit ou les responsables de paquet peuvent fournir des mises jour directement dans testing.

9.1.5

Mises jour automatiques dans un systme Debian GNU/Linux

Tout dabord, les mises jour automatiques ne sont pas compltement recommandes car les administrateurs devraient vrier les DSA et comprendre limpact de toute mise jour de scurit donne. Si vous voulez mettre jour votre systme automatiquement, vous devriez : Congurer apt pour que les paquets que vous ne voulez pas mettre jour restent leur version actuelle, soit avec la fonctionnalit dtiquetage (pinning) dapt, soit en les marquant comme hold ( garder) avec dpkg ou dselect. Pour conserver les paquets une version donne, vous devez diter /etc/apt /preferences (voir apt_preferences(5)) et ajouter : Package: * Pin: release a=stable Pin-Priority: 100 FIXME : vrier si cette conguration est correcte. Utiliser soit cron-apt comme dcrit dans Vrier automatiquement les mises jour avec cron-apt page 154 et lactiver pour installer les paquets rcuprs, soit ajouter une entre cron vous-mme pour que la mise jour soit excute tous les jours, par exemple : apt-get update && apt-get -y upgrade Loption -y fera quapt supposera une rponse yes pour toutes les questions qui pourraient tre poses lors de la mise jour. Dans certains cas, vous pouvez vouloir utiliser loption --trivial-only la place de --assume-yes (qui est quivalent -y).1 Congurer cron pour que debconf ne demande aucune entre pendant les mises jour, ainsi, elles sont faites non interactivement.2 Vrier les rsultats de lexcution de cron qui seront envoyes au superutilisateur (sauf si la variable denvironnement MAILTO est change dans le script). Une alternative plus sure peut tre dutiliser loption -d (ou --download-only) qui tlchargera les paquets ncessaires, mais ne les installera pas. Puis, si lexcution de cron afche que le systme doit tre mis jour, cela peut tre fait manuellement. Pour accomplir ces tches, le systme doit tre congur correctement pour tlcharger les mises jour de scurit comme dcrit dans Faire une mise jour de scurit page 40. Cependant, cela nest pas recommand pour unstable sans analyse attentive, car vous pourriez placer votre systme dans un tat inutilisable si un bogue srieux sintroduit dans un paquet important et est install sur votre systme. Testing est un peu mieux scuris concernant ce problme car les bogues srieux ont une meilleure chance dtre dtect avant que le paquet
Vous pouvez aussi vouloir utiliser loption --quiet (-q) pour rduire la sortie de apt-get, ce qui empchera la gnration de toute sortie si aucun paquet nest install. 2 Notez que certains paquets peuvent ne pas utiliser debconf et les mises jour seront bloques car les paquets demanderont des entres de la part de lutilisateur pendant la conguration.
1

Chapitre 9. Avant la compromission

158

ne soir plac dans la branche testing (cependant, vous pouvez navoir aucune mise jour de scurit disponible de quelque faon). Si vous avez une distribution mixte, cest--dire, une installation de stable avec des paquets mis jour de testing ou dunstable, vous pouvez jouer avec les prfrences dtiquetage ainsi quavec loption --target-release dapt-get pour ne mettre jour que les paquets que vous avez mis jour. 3

9.2

Faites des tests dintgrit priodiques

En vous basant sur les informations de base que vous avez gnres aprs linstallation (i.e. linstantan dcrit dans Prendre un instantan (snapshot) du systme page 83), vous devriez pouvoir effectuez un test dintgrit de temps en temps. Un test dintgrit pourra dtecter des modications du systme de chiers ralises par un intrus ou dues une erreur de ladministrateur systme. Les tests dintgrit devraient, si possible, tre raliss non connects.4 Cest--dire, sans utiliser le systme dexploitation du systme contrler, pour viter un sentiment de scurit erron (i.e. des faux ngatifs) produit par, par exemple, des rootkits installs. La base de donnes dintgrit par rapport laquelle le systme est vrie devrait galement tre utilise depuis un support en lecture seule. Vous pouvez envisager de faire des vrications dintgrit en ligne en utilisant lun des outils dintgrit de systme de chiers disponibles (dcrits dans Vrier lintgrit des systmes de chiers page 74) sil nest pas possible de dconnecter le systme. Cependant, des prcautions devraient tre prises pour utiliser une base de donnes dintgrit en lecture seule et galement pour assurer que les outils de vrication dintgrit (et le noyau du systme dexploitation) nont pas t falsis. Certains des outils mentionns dans la section des outils dintgrit, comme aide, integrit ou samhain, sont dj prpars pour faire des vrications priodiques (en utilisant la crontab dans les deux premiers cas et en utilisant un dmon indpendant pour samhain) et ils peuvent avertir ladministrateur par diffrents moyens (habituellement par courriel, mais samhain peut galement envoyer des pages, des alertes SNMP ou des alertes syslog) quand le systme de chiers est modi. Bien sr, si vous excutez une mise jour de scurit du systme, linstantan pris pour le systme devrait tre rgnr pour prendre en compte les modications ralises par la mise jour de scurit.
3 Cest un problme courant car beaucoup dutilisateurs veulent conserver un systme stable tout en mettant jour certains paquets avec unstable pour obtenir les dernires fonctionnalits. Ce besoin provient de lvolution plus rapide de certains projets que le temps mis par Debian pour publier une nouvelle version stable de sa distribution. 4 Une faon aise de faire cela est dutiliser un cdrom autonome (Live CD), comme Knoppix Std (http: //www.knoppix-std.org/) qui inclurait la fois les outils dintgrit de chier et la base de donne pour votre systme.

Chapitre 9. Avant la compromission

159

9.3

Mise en place dun systme de dtection dintrusion

Debian inclut certains outils pour la dtection dintrusion qui sont utiles pour dfendre votre systme local ou pour dfendre dautres systmes dans le mme rseau. Ce type de dfense est important si le systme est trs critique ou si vous tes vraiment paranoaque. Les approches les plus communes dans la dtection dintrusion sont la dtection danomalie statistique et la dtection de correspondance de modle. Soyez toujours aux aguets de manire rellement amliorer la scurit du systme avec nimporte lequel de ces outils, vous devez avoir un mcanisme alerte+raction. Donc, nutilisez pas de systme de dtection dintrusion si vous navertissez personne. Quand une attaque particulire est dtecte, la plupart des outils de dtection dintrusion vont soit loguer lvnement avec syslogd, soit envoyer des courriers lutilisateur root (le destinataire du courrier est habituellement congurable). Un administrateur doit congurer convenablement les outils an que de fausses alertes ne soient pas envoyes. Les alertes peuvent galement indiquer une attaque en cours et ne seraient pas trs utiles un jour plus tard, puisque lattaque pourrait dj alors avoir t couronne de succs. Assurez-vous donc quune rgle de scurit correcte a t mise en place vis--vis des alertes et que les mcanismes techniques pour limplmenter sont en place. Une source dinformation intressante est la checklist de dtection dintrusion du CERT (http://www.cert.org/tech_tips/intruder_detection_checklist.html).

9.3.1

Dtection dintrusion provenant du rseau

Les outils de dtection dintrusions provenant du rseau scrutent le trac sur un segment de rseau et utilisent cette information comme source de donnes. Spciquement, les paquets du rseau sont examins et ils sont vris pour voir sils correspondent une certaine signature. Snort est un renieur exible de paquets ou un logueur qui dtecte les attaques selon un dictionnaire de signature dattaques. Il dtecte une varit dattaques et de sondes, tels que des dbordements de capacit, les scans dissimuls de ports, les attaques CGI, les sondes SMB, et bien dautres. Snort dispose galement dune capacit dalerte en temps rel. Vous pouvez utiliser snort pour un certain nombre dhtes de votre rseau ainsi que pour votre propre hte. Cest un outil qui peut tre install sur nimporte quel routeur pour garder un il sur le rseau. Installez-le simplement avec apt-get install snort, suivez les questions et surveillez ses journaux. Pour une infrastructure de scurit un peu plus large, voir Prelude (http://www.prelude-ids.org). Le paquet snort de Debian est install avec de nombreuses vrications de scurit actives par dfaut. Toutefois, vous devriez prendre le temps de personnaliser linstallation pour prendre en compte les services que vous utilisez sur votre systme. Vous pouvez trs bien aussi demander des vrications supplmentaires spciques ces services. Note : Les paquets snort disponibles pour Woody sont plutt obsoltes et peuvent mme tre bogus (http://lists.debian.org/debian-devel/2003/debian-devel-200308/

Chapitre 9. Avant la compromission

160

msg02105.html), vous pouvez rcuprer des paquets Snort rtroports (et signs) fournis par le responsable http://people.debian.org/~ssmeenk/snort-stable-i386/. Il y a dautres outils plus simples qui peuvent tre utiliss pour dtecter les attaques rseaux. portsentry est un autre paquet intressant qui peut vous informer lorsquun scan de votre rseau est effectu sur votre site. Dautres outils comme ippl ou iplogger peuvent aussi dtecter certaines attaques IP (TCP et ICMP), mme sils ne fournissent pas de techniques avances pour dtecter les attaques rseaux (comme le ferait snort). Vous pouvez testez chacun de ces outils avec le paquet Debian idswakeup, un gnrateur de fausses alertes et qui inclut un grand nombre de signature dattaques communes.

9.3.2

La dtection dintrusion fonde sur lhte

La dtection dintrusion fonde sur lhte implique dactiver, sur le systme tudier, un logiciel qui utilise les journaux ou les programmes daudit du systme comme source de donnes. Il scrute les processus suspects, scrute les accs dhtes et peut mme scruter les changements aux chiers critiques du systme. Tiger est un ancien outil de dtection dintrusion qui a t port sous Debian depuis la distribution Woody. Tiger fournit un ensemble de vrications sur des problmes communs lis aux failles de scurit, il vrie la force des mots de passe, les problmes du systme de chiers, les processus de communications et dautres faons par lesquelles root peut tre compromis. Ce paquet inclut de nouvelles vrications de scurit spciques Debian comprenant : les vrications de MD5sums des chiers installs, les emplacements de chiers nappartenant pas aux paquets et lanalyse des processus locaux lcoute. Linstallation par dfaut congure tiger pour tre excut chaque jour, gnrant un compte-rendu qui est envoy au superutilisateur propos des compromissions possibles du systme. Des outils danalyse de journaux comme logcheck peuvent galement tre utiliss pour dtecter des tentatives dintrusions. Voir Utiliser et personnaliser logcheck page 65. De plus, des paquets scrutant lintgrit du systme de chiers (voir Vrier lintgrit des systmes de chiers page 74) peuvent tre utiles dans la dtection danomalies dans un environnement scuris. Il est trs probable quune intrusion effective modiera certains chiers du systme de chiers locaux pour court-circuiter les rgles de scurit locales, installer un cheval de Troie ou crer des utilisateurs. De tels vnements peuvent tre dtects avec les vricateurs dintgrit du systme de chiers.

9.4
9.4.1

viter les rootkits


Loadable Kernel Modules (LKM)

Les LKM (Loadable Kernel Modules ou modules de noyau chargeables) sont des chiers contenant des composants de noyau chargeables dynamiquement utiliss pour tendre les fonctionnalits de noyau. Le principal avantage dutiliser des modules est la possibilit dajouter des

Chapitre 9. Avant la compromission

161

priphriques additionnels comme une carte rseau ou une carte son sans avoir recompiler le noyau entirement. Cependant certains pirates peuvent utiliser les LKMs pour les rootkits (knark et adore) an dinstaller des portes drobes sur des systmes GNU/Linux. Les portes drobes des LKM peuvent tre plus sophistiques et moins dtectables que des rootkits traditionnels. Ils peuvent cacher des processus, des chiers, des rpertoires et mme des connexions sans modier les codes sources des binaires. Par exemple, un LKM peut forcer le noyau cacher des processus spciques dans procps pour que mme une bonne copie du binaire ps ne puisse lister des informations exactes propose des processus actuels du systme.

9.4.2

Dtection des rootkits

Il existe deux approches pour dfendre votre systme contre les rootkits LKM, une dfense proactive et une dfense ractive. La dtection peut tre simple et sans douleur ou difcile et usante selon la mesure que vous choisissez.

Dfense proactive Lavantage de ce type de dfense est quelle prvient des dommages que pourrait entraner un rootkit au systme. Une telle stratgie est de les attraper en premier, cest--dire, de charger un LKM bien dni an de protger le systme dautres LKM infects. Une deuxime stratgie consiste retirer la fonctionnalit de chargement des modules du noyau lui-mme. Notez, cependant, quil existe des rootkits qui peuvent fonctionner mme dans ce cas, il en existe certains qui altrent directement /dev/kmem (la mmoire du noyau) pour se rendre indtectables. Debian GNU/Linux fournit quelques paquets qui peuvent tre utiliss pour mettre en place une dfense proactive : lcap - Une interface utilisateur agrable pour retirer les fonctionnalits (contrle daccs bas sur le noyau) dans le noyau, rendant le systme plus scuris. Par exemple, excuter lcap CAP_SYS_MODULE 5 enlvera des fonctionnalits de chargement des modules (mme pour lutilisateur root).6 Il y a de vieilles informations sur ces fonctionnalits dans la section de Jon Corbet Kernel development (http://lwn.net/1999/1202/kernel.php3) sur LWN datant de dcembre 1999. Si vous navez pas lutilit de toutes ces fonctionnalits de noyau sur votre systme GNU/Linux, vous pouvez vouloir dsactiver le support des modules chargeables lors de la
Il existe 28 fonctionnalits incluant : 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 dsactives pour renforcer votre noyau. 6 Vous navez pas besoin dinstaller lcap pour faire cela, mais cest plus facile que de congurer /proc/sys /kernel/cap-bound la main.
5

Chapitre 9. Avant la compromission

162

conguration du noyau. Pour dsactiver le support des modules chargeables, positionnez simplement CONFIG_MODULES=n lors de ltape de conguration de construction de votre noyau ou dans le chier .config. Cela prvient des rootkits LKM mais vous ne pourrez plus utiliser les modules avec votre noyau GNU/Linux. Faites attention que la dsactivation des modules peut surcharger le noyau, rendant le support du chargement ncessaire.

Dfense ractive Lavantage dune dfense ractive est quelle reprsente une faible surcharge au niveau des ressources systmes. Elle fonctionne en comparant la table des appels systmes avec une copie sre dun chier du disque, System.map. Bien sr, une dfense ractive navertira ladministrateur quaprs la compromission du systme. La dtection des rootkits dans Debian peut tre accomplie avec le paquet chkrootkit. Le programme Chkrootkit (http://www.chkrootkit.org) cherche des signes de prsence de plusieurs rootkits connus sur le systme local, mais ce nest pas un test dnitif.

9.5

Ides gniales/paranoaques ce que vous pourriez faire

Cest probablement la section la plus instable et la plus amusante, car jespre que quelques unes des ides bah, a semble dingue pourraient tre ralises. Vous trouverez ci-dessous certaines ides pour amliorer la scurit suivant votre point de vue vous les qualierez de gniales, paranoaques, folles ou inspires. Samuser avec PAM (Pluggable Authentication Modules) Comme il est dit dans larticle PAM du phrack 56, la chose bien avec PAM est qu On est limit seulement par son imagination . Cest vrai. Imaginez une connexion root seulement possible avec empreinte digitale ou un scan de lil ou une cryptocarte (pourquoi ai-je fait une conjonction de OU et pas de ET ici ?). Journalisation fasciste. Je voudrais dire que tout ce dont nous avons discut plus haut est de la journalisation douce . Si vous voulez effectuer une vraie journalisation, procurezvous une imprimante avec du papier listing et journalisez tout en limprimant. Cela semble amusant, mais cest able et ne peut tre supprim, ni altr. Distribution CD. Cette ide est trs simple raliser et offre une assez bonne scurit. Crez une distribution Debian durcie, avec les bonnes rgles pare-feu, faites-en une image ISO amorable et gravez-la sur un cdrom. Vous avez maintenant une bonne distribution en lecture-seule avec environ 600 Mo despace pour les services. Assurez-vous juste que toutes les donnes qui devraient tre crites, soient crites via le rseau. Il est impossible pour des intrus dobtenir un accs en lecture/criture sur ce systme et tout changement quun intrus ferait peut tre dsactiv avec un redmarrage du systme. Dsactiver la capacit module. Comme dcrit auparavant, quand vous dsactivez lusage des modules noyau la compilation, beaucoup de portes drobes bases sur le noyau sont impossibles implmenter car la plupart dentre elles sont bases sur linstallation de modules noyau modis.

Chapitre 9. Avant la compromission

163

Journalisation par cble srie (contribution de Gaby schilders). Tant que les serveurs ont toujours des ports srie, imaginez-vous ayant une machine ddie la journalisation pour un certain nombre de serveurs. Le systme de journalisation serait dconnect du net et connect aux serveurs via un multiplexeur de ports srie (cyclades ou similaire). Maintenant faites journaliser vos serveurs par leurs ports srie en criture seule. La machine de journalisation naccepterait que du texte en clair en entre sur ses ports sries et ncrirait que sur un chier journal. Branchez un graveur de cdrom/dvdrom et transfrez-y les chiers journaux quand le chier journal atteint la capacit du mdia. Maintenant si seulement ils faisaient des graveurs avec des auto-changeurs. . . Pas aussi copie-en-dur que la journalisation directe vers limprimante, mais cette mthode peut grer de larges volumes et les cdroms prennent moins despace de stockage. Changez les attributs de tous les chiers avec chattr (tir du Tips-HOWTO crit par Jim Dennis). Tout de suite aprs que vous ayez install et congur initialement votre systme, utilisez le programme chattr avec lattribut +i pour rendre les chiers non-modiables (le chier ne peut tre supprim, renomm, li ou rcrit). Envisagez de positionner cet attribut sur tous les chiers de /bin, /sbin/, /usr/bin, /usr/sbin, /usr/lib et tous les chiers noyau de la racine. Vous pouvez galement faire une copie de tous les chiers de /etc/, en utilisant tar et marquez larchive comme immuable. Cette stratgie vous aidera limiter les dgts que vous pouvez faire quand vous tes connect en root. Vous ncraserez pas de chiers avec un oprateur de redirection gar, et vous ne rendrez pas votre systme inutilisable avec une espace mal place dans une commande rm -rf (vous pourriez encore faire pas mal de dgts vos donnes mais vos bibliothques et binaires seront plus labri). Cela rend aussi un large ventail dexploits de scurit et de dnis de service soit impossibles soit plus difciles (car beaucoup dentre eux comptent sur lcrasement dun chier travers les actions dun programme SETUID qui ne fournit pas une commande shell arbitraire). Le seul inconvnient de cette stratgie survient lorsque vous compilez et installez divers binaires systmes. Dun autre ct, cela empche aussi le make install dcraser les chiers. Quand vous oubliez de lire le Makele et de faire un chattr -i, les chiers qui vont tre rcrits (et les rpertoires auxquels vous voulez ajouter des chiers) - la commande make choue, utilisez juste la commande chattr et relancez-le. Vous pouvez aussi proter de loccasion pour dplacer vos vieux binaires et bibliothques dans un rpertoire .old/ ou dans une archive tar par exemple. Notez que cette stratgie vous empche aussi de mettre jour vos paquets systmes car les chiers quils fournissent ne peuvent tre rcrits, vous pourriez donc souhaiter avoir un mcanisme pour dsactiver le drapeau immuable sur tous les binaires juste avant de faire un apt-get update. Couper 2 ou 4 ls du cble an de rendre les communications UDP unidirectionnelles. Ensuite, utilisez des paquets UDP pour envoyer des informations la machine destinatrice qui peut agir en tant que serveur de journalisation scuris ou systme de stockage de carte de crdit.

Chapitre 9. Avant la compromission

164

9.5.1

Construction dun pot de miel

Un pot de miel est un systme conu pour apprendre aux administrateurs systme comment des attaquants sondent et exploitent un systme. Il sagit dune conguration systme qui a pour but dtre sonde, attaque et potentiellement exploite. En apprenant les outils et mthodes utilises par lattaquant, un administrateur systme peut apprendre mieux protger ses propres systmes et son rseau. Un systme Debian GNU/Linux peut facilement tre congur comme un pot de miel, si vous y consacrez le temps de limplmenter et de le surveiller. Vous pouvez facilement mettre en place le serveur de pot de miel factice ainsi que le pare-feu7 qui contrle le pot de miel et un certain type de dtecteur dintrusion rseau, placez-le sur lInternet et attendez. Prenez soin de vous assurer dtre averti temps (voir Limportance des logs et des alertes page 64) si le systme est victime dun exploit pour que vous puissiez prendre des mesures appropries et terminer le compromis une fois que vous en avez assez vu. Voici quelques uns des paquets et problmes considrer lors de la conguration de votre pot de miel : la technologie pare-feu dont vous aurez besoin (fourni par les noyaux Linux). syslog-ng pour envoyer les journaux du pot de miel vers un serveur syslog distant. snort pour congurer la capture de tout le trac rseau arrivant sur le pot de miel et dtecter les attaques. osh, un shell restreint scurit amlior et SETUID root avec journalisation (voir larticle de Lance Spitzner ci-dessous). ainsi que tous les serveurs que vous utiliserez pour votre serveur mot de miel factice. Selon le type dattaquant que vous voulez analyser, vous renforcerez ou non le pot de miel et vous le conserverez ou non jour avec les mises jour de scurit. des vricateurs dintgrit (voir Vrier lintgrit des systmes de chiers page 74) et la bote outils du lgiste (The Coroners Toolkit (tct)) pour faire des audits post-attaques. honeyd et farpd pour mettre en place un pot de miel qui coutera les connexions vers des adresses IP non utilises et les fera suivre vers des scripts simulant des services actifs. Regardez galement iisemulator. tinyhoneypot pour mettre en place un serveur pot de miel simple avec des services factices. Si vous ne pouvez pas utiliser des systmes de rserve pour construire les pots de miel et les systmes rseau pour le protger et le contrler, vous pouvez utiliser la technologie de virtualisation disponible dans xen ou uml (User-Mode-Linux). Si vous choisissez cette route, vous devrez modier votre noyau soit avec kernel-patch-xen, soit avec kernel-patch-uml, ou encore installer lun des noyaux prcompils offerts depuis Debian Lenny. Vous pouvez en lire plus sur la construction des pots de miel dans lexcellent article de Lance Spizner To Build a Honeypot (http://www.net-security.org/text/articles/ spitzner/honeypot.shtml) (de la srie des connaissez votre ennemi). De mme, le Honeynet Project (http://project.honeynet.org/) fournit des informations utiles sur la faon de congurer un pot de miel et dauditer les rsultats dune attaque.
7 Vous utiliserez gnralement un pare-feu pont pour que le pare-feu lui-mme ne soit pas dtectable, voir Conguration dun pare-feu pont page 205.

165

Chapitre 10

Aprs la compromission (la rponse lincident)


10.1 Comportement gnral

Si vous tes physiquement prsent quand lattaque se droule et que faire ce qui suit na pas deffet fcheux sur vos transactions commerciales, votre premire raction devrait tre de dbrancher simplement la machine du rseau en dbranchant la carte rseau. La dsactivation du rseau la premire couche est le seul vrai moyen de garder un attaquant en dehors dune machine compromise (conseil avis de Phillip Hofmeister). Cependant, certains outils installs laide dun rootkit, dun cheval de Troie ou mme dun utilisateur malhonnte connect via une porte drobe (backdoor), pourraient tre capables de dtecter cet vnement et dy ragir. Voir un rm -rf / sexcuter au moment de dbranchez le rseau du systme nest pas vraiment trs drle. Si vous ne dsirez pas prendre ce risque et que vous tes certain que le systme est compromis, vous devriez dbrancher le cble dalimentation (voire tous, sil y en a plusieurs) et croiser les doigts. Ceci peut sembler extrme, mais en fait cela dsamorcera toute bombe retardement que lintrus pourrait avoir programm. Dans ce cas, le systme compromis ne doit pas tre redmarr. Soit le disque dur devrait tre dplac sur un autre systme pour analyse, soit vous devriez utiliser un autre support (un CD-ROM) pour amorcer le systme et pour lanalyser. Vous ne devriez pas utiliser les disquettes de rcupration de Debian pour amorcer le systme, mais vous pouvez utiliser le shell fourni par les disquettes dinstallation (rappelez-vous que Alt+F2 vous y amnera) pour analyser1 le systme. La mthode la plus recommande pour rcuprer un systme compromis est dutiliser un CD autonome avec tous les outils (et les modules du noyau) dont vous pouvez avoir besoin pour accder au systme compromis. Vous pouvez utiliser le paquet mkinitrd-cd
Si vous tes aventureux, vous pouvez vous connecter au systme et sauver les informations sur tous les processus en fonctionnement (vous en aurez beaucoup dans /proc/nnn/). Il est possible davoir lintgralit du code excutable depuis la mmoire, mme si lattaquant a supprim les chiers excutables du disque. Puis tirez sur le cordon dalimentation.
1

Chapitre 10. Aprs la compromission (la rponse lincident)

166

pour construire un tel CD-ROM2 . Vous pourriez galement trouver que le CD-ROM FIRE (http://biatchux.dmzs.com/) (anciennement appel Biatchux) est utile ici, car il sagit aussi dun CD-ROM autonome avec des outils danalyse post mortem utiles dans ces situations. Il ny a pas (encore) doutil bas sur Debian comme celui-ci, ni de moyen simple de construire un CD-ROM en utilisant votre propre slection de paquets Debian et mkinitrd-cd (vous devrez donc lire la documentation fournie avec celui-ci pour faire vos propres CD-ROM). Si vous voulez colmater la brche de scurit vraiment rapidement, vous devriez retirer lhte compromis du rseau et rinstaller le systme dexploitation partir de zro. Cela pourrait navoir aucun effet si vous ne savez pas comment lintrus a obtenu les droits du superutilisateur. Dans ce cas vous devez tout vrier : pare-feu, intgrit des chiers, les diffrents journaux de lhte de journalisation, etc. Pour plus dinformations sur quoi faire aprs une intrusion, reportez-vous aux documents SANS Incident Handling white papers (http: //www.sans.org/reading_room/whitepapers/incident/) ou CERTs Steps for Recovering from a UNIX or NT System Compromise (http://www.cert.org/tech_tips/ win-UNIX-system_compromise.html). Certaines questions gnrales sur comment grer un systme Debian GNU/Linux compromis sont galement disponibles dans Mon systme est vulnrable ! (En tes-vous certain ?) page 184.

10.2

Copies de sauvegarde du systme

Rappelez-vous que si vous tes certain que le systme a t compromis, vous ne pouvez pas faire conance aux logiciels qui sy trouvent ou nimporte quelle autre information quil vous donne. Les applications pourraient dissimuler un cheval de Troie, des modules pourraient tre installs dans le noyau, etc. La meilleure chose faire est une sauvegarde complte du systme de chiers (en utilisant dd) aprs avoir dmarr depuis un mdia sr. Les cdroms Debian GNU/Linux peuvent tre utiles en cela, car une console en mode texte est disponible dans le deuxime terminal une fois linstallateur dmarr (allez-y en pressant CTRL+ALT+F2 suivi de la touche Entre ). partir de cette console, sauvegardez les informations vers un autre endroit si possible (possiblement sur un serveur de chiers via NFS ou FTP). Par la suite, vous pourrez analyser linformation pendant que le systme compromis est hors-ligne ou rinstall. Si vous tes certain que la seule chose que vous ayez est un cheval de Troie dans lun des modules du noyau, vous pouvez tenter dexcuter le noyau partir du CD-ROM en mode rescue. Assurez-vous aussi de dmarrer en mode single user de faon ce quaucun autre cheval de Troie ne sexcute aprs le redmarrage.
2 En fait, cest loutil utilis pour construire les CD-ROM pour le projet Gibraltar (http://www.gibraltar. at/) (un pare-feu sur un CD-ROM autonome bas sur la distribution Debian).

Chapitre 10. Aprs la compromission (la rponse lincident)

167

10.3

Contacter votre CERT local

Le CERT (Computer and Emergency Response Team) est une organisation qui peut vous aider rcuprer un systme compromis. Il y a des CERT partout dans le monde 3 et vous devriez contacter votre CERT local en cas dincident de scurit qui a conduit une compromission systme. Les personnes du CERT local peuvent vous aider le rcuprer. Fournir votre CERT (ou au centre de coordination CERT) des informations sur la compromission mme si vous ne demandez pas daide peut galement aider dautres personnes car les informations agrges des incidents reports sont utilises pour dterminer si une faille donne est rpandue, sil y a un nouveau ver dans la nature, quels nouveaux outils dattaque sont utiliss. Cette information est utilis pour fournir la communaut Internet des informations sur les activits actuelles des incidents de scurit (http://www.cert.org/current/) et pour publier des notes dincident (http://www.cert.org/incident_notes/) et mme des alertes (http://www.cert.org/advisories/). Pour des informations plus dtailles sur la faon (et les raisons) de rendre compte dun incident, veuillez lire les rgles de compterendu dincident du CERT (http://www.cert.org/tech_tips/incident_reporting. html). Vous pouvez galement utiliser un mcanisme moins formel si vous avez besoin daide pour rcuprer un systme compromis ou si vous voulez discuter dinformations dincident. Cela inclut la liste de diffusion des incidents (http://marc.theaimsgroup.com/?l= incidents) et la liste de diffusion des intrusions (http://marc.theaimsgroup.com/?l= intrusions).

10.4

Analyse post mortem

Si vous souhaitez rassembler plus dinformations, le paquet tct (The Coroners Toolkit de Dan Farmer et Wietse Venema) contient des utilitaires qui effectuent une analyse post mortem dun systme. Tct permet lutilisateur de collecter des informations sur les chiers effacs, les processus qui sexcutent et plus. Consultez la documentation ci-incluse pour plus dinformations. Ces utilitaires, ainsi que quelques autres, peuvent tre retrouvs dans les paquets Sleuthkit et Autopsy (http://www.sleuthkit.org/) de Brian Carrier. Ils permettent lanalyse post mortem dune image des disques via une interface Web. Dans Debian, vous trouverez les paquets sleuthkit (les outils) et autopsy (linterface graphique).
Voici une liste de quelques CERT. Pour la liste complte, consultez le FIRST Member Team information (http://www.first.org/about/organization/teams/index.html) (FIRST est le Forum of Incident Response and Security Teams) : AusCERT (http://www.auscert.org.au) (Australie), UNAM-CERT (http:// www.unam-cert.unam.mx/) (Mexique) CERT-Funet (http://www.cert.funet.fi) (Finlande), DFN-CERT (http://www.dfn-cert.de) (Allemagne), RUS-CERT (http://cert.uni-stuttgart.de/) (Allemagne), CERT-IT (http://security.dico.unimi.it/) (Italie), JPCERT/CC (http://www.jpcert.or.jp/) (Japon), UNINETT CERT (http://cert.uninett.no) (Norvge), HR-CERT (http://www.cert.hr) (Croatie) CERT Polska (http://www.cert.pl) (Pologne), RU-CERT (http://www.cert.ru) (Russie), SI-CERT (http: //www.arnes.si/si-cert/) (Slovnie) IRIS-CERT (http://www.rediris.es/cert/) (Espagne), SWITCHCERT (http://www.switch.ch/cert/) (Suisse), TWCERT/CC (http://www.cert.org.tw) (Taiwan), et CERT/CC (http://www.cert.org) (tats-Unis).
3

Chapitre 10. Aprs la compromission (la rponse lincident)

168

Noubliez pas que lanalyse post mortem devrait toujours tre faite sur une copie des donnes et jamais sur les donnes elles-mmes. Si ces dernires sont altres par cette analyse, vous pourriez perdre des indices importants pour comprendre ce qui sest pass exactement, en plus de rendre les preuves potentiellement non recevables en cour. Vous trouverez plus dinformations sur les analyses post mortem dans le livre Forensic Discovery (http://www.porcupine.org/forensics/forensic-discovery/) (disponible en ligne) de Dan Farmers et Wietse Venema, ainsi que leur Computer Forensics Column (http://www.porcupine.org/forensics/column.html) et leur Computer Forensic Analysis Class handouts (http://www.porcupine.org/forensics/handouts. html). Les bulletins de Brian Carrier The Sleuth Kit Informer (http://www.sleuthkit. org/informer/index.php) est galement une trs bonne source de trucs pour les analyses post mortem, mme sil ny a plus eu de bulletin depuis mai 2006. Finalement, le Honeynet Challenges (http://www.honeynet.org/misc/chall.html) est une excellente faon de peauner vos comptences en analyse post mortem puisquils incluent des attaques relles contre des honeypot et procurent des ds qui vont de lanalyse post mortem de disques durs lanalyse des journaux des pare-feux et la capture de paquets. FIXME : Ce paragraphe fournira, dans un avenir proche je lespre, plus dinformations sur lanalyse post mortem dun systme Debian. FIXME : Dcrire comment utiliser debsums sur un systme stable avec les md5sums sur un CD-ROM et le systme de chiers rcupr restaur sur une partition spare. FIXME : Ajouter des liens vers des articles danalyse post mortem (tel que le d invers de Honeynet ou les articles de David Dittrich (http://staff.washington.edu/dittrich/)).

10.4.1

Analyse des programmes malveillants (malware)

Dautres outils pouvant tre utiliss pour lanalyse post mortem sont disponibles pour la distribution Debian : strace, ltrace. Lun de ces paquets peut tre utilis pour analyser des binaires dangereux (comme des portes drobes) an de dterminer comment ils fonctionnent et ce quils font au systme. Parmi les autres outils frquemment utiliss, nous retrouvons ldd (dans libc6), strings et objdump (tous deux dans binutils). Si vous essayez de faire lautopsie de binaires suspects ou contenant des portes drobes rcuprs dun systme compromis, vous devriez le faire dans un environnement scuris (par exemple, dans une image bochs, xen ou un environnement chroot en utilisant un compte ayant peu de privilges4 ). Sinon, votre systme pourrait tre victime de la porte drobe et compromis son tour !
4 Faites trs attention si vous utilisez chroot, car si le programme utilise une faille de scurit au niveau du noyau an daccrotre ses droits, il pourrait tout de mme russir compromettre le systme.

Chapitre 10. Aprs la compromission (la rponse lincident)

169

Si vous tes intress par les programmes malveillants, alors vous devriez lire le chapitre Malware Analysis Basics (http://www.porcupine.org/forensics/ forensic-discovery/chapter6.html) du livre Forensic Discovery (http: //www.porcupine.org/forensics/forensic-discovery/) de Dan Farmer et Wietse Venema.

Chapitre 10. Aprs la compromission (la rponse lincident)

170

171

Chapitre 11

Foire Aux Questions (FAQ)


Ce chapitre introduit quelques questions qui reviennent souvent sur la liste de diffusion de scurit. Vous devriez les consulter avant de poster sur la liste ou certains pourraient vous dire daller RTFM.

11.1
11.1.1

La scurit dans le systme dexploitation Debian


Debian est-elle plus sre que X ?

Un systme est aussi sr que ladministrateur est capable de le rendre. Debian essaie dinstaller les services dune faon sre par dfaut, mais elle nest peut-tre pas aussi paranoaque que dautres systmes dexploitation qui installent tous les services dsactivs par dfaut. Toutefois, ladministrateur systme a besoin dadapter la scurit du systme la politique de scurit locale. Pour une liste des donnes concernant les failles de scurit pour plusieurs systmes dexploitation, voir http://securityfocus.com/vulns/stats.shtml. Est-ce que ces donnes sont utiles ? Le site liste plusieurs facteurs considrer pour linterprtation des donnes et avertit que les donnes ne peuvent tre utilises pour comparer les failles de lun des systmes dexploitation par rapport un autre.1 Conservez galement lesprit que certaines failles Bugtraq concernant Debian ne sappliquent qu la branche unstable.
Par exemple, bas sur les donnes de Securityfocus, il pourrait sembler que Windows NT est plus sr que Linux, ce qui est une assertion discutable. Aprs tout, les distributions Linux fournissent habituellement beaucoup plus dapplications en comparison de Windows NT de Microsoft. Ces problmes de failles comptabilises sont mieux dcrits dans Why Open Source Software / Free Software (OSS/FS) ? Look at the Numbers ! (http://www.dwheeler.com/oss_fs_why.html#security) par David A. Wheeler
1

Chapitre 11. Foire Aux Questions (FAQ)

172

Est-ce que Debian est plus scurise que dautres distributions Linux (comme Red Hat, SuSE, etc.) ? Il ny a pas de grandes diffrences entre les distributions Linux, lexception de linstallation de base et du systme de gestion des paquets. La plupart des distributions partagent une grande partie des mmes applications, les diffrences tant seulement dans les versions de ces applications livres avec la version stable de la distribution. Par exemple, le noyau, Bind, Apache, OpenSSH, XFree, gcc, zlib, etc sont tous communs entre les distributions Linux. Par exemple, Red Hat a t jou de malchance et a livr une version stable quand la version de foo tait la 1.2.3, version dans laquelle il a t trouv par la suite un trou de scurit. Debian, dun autre ct, a t plus chanceuse de livrer foo 1.2.4, qui incorpore la correction du bogue. Cela a t le cas avec le gros problme de rpc.statd (http://www.cert.org/advisories/ CA-2000-17.html) il y quelques annes. Il y a beaucoup de collaboration entre les quipes de scurit respectives des majeures distributions Linux. Les mises jour de scurit connues sont rarement, si mme jamais, laisss non corriges par un vendeur dune distribution. La connaissance dune faille de scurit nest jamais conserve au dtriment dun autre vendeur de distribution, tout comme les corrections sont habituellement coordonnes en amont ou par le CERT (http://www.cert.org). Le rsultat de cela est que les mises jour de scurit ncessaire sont habituellement diffuss en mme temps et que la scurit relative des diffrentes distributions est trs semblable. Lun des principaux avantages de Debian concernant la scurit est la facilit des mises jour du systme par lutilisation dapt. Voici quelquuns des autres aspects de la scurit dans Debian considrer : Debian fournit plus doutils de scurit que les autres distributions, voir Outils de scurit dans Debian page 143. Linstallation standard de Debian est plus petite (moins de fonctionnalit) et donc plus sre. Les autres distributions, au nom de lutilisabilit, ont tendance installer plusieurs services par dfaut et parfois, ils ne sont pas congurs correctement (rappelez-vous des vers Ramen ou Lion (http://www.sans.org/y2k/lion.htm)). Linstallation de Debian nest pas aussi limite que celle dOpenBSD (aucun dmon nest activ par dfaut), mais cest un bon compromis. 2 Debian documente les meilleures pratiques de scurit dans des documents comme celui-ci.

11.1.2

De nombreux bogues Debian sont lists dans bugtraq, cela le rend il plus vulnrable ?

Debian contient un grand nombre de paquets et diffrents logiciels (et saggrandissant), probablement plus que beaucoup de systmes dexploitation propritaires. Cela signie quil y a un plus grand risque de trouver des logiciels proposant des failles de scurit exploitables que sur certains systmes contenant moins de logiciels.
Sans diminuer le fait que dautres distributions, comme Red Hat ou Mandrake, prennent aussi en compte la scurit dans leurs installations standard en demandant lutilisateur de slectionne des prols de scurit ou en utilisant des assistants pour aider la conguration de pare-feux personnels.
2

Chapitre 11. Foire Aux Questions (FAQ)

173

De plus en plus de personnes examinent le code source la recherche de failles. Il y a de nombreux papiers consultatifs lis des audits de code source effectus sur des composants logiciels majeurs livrs dans Debian. Lorsque un de ces audits de code source fait ressortir une faille majeur, elle est rpare et une alerte est envoye aux listes telle que celle de Bug Traq. Les bogues prsents dans la distribution Debian affectent galement dautres vendeurs et dautres distributions. Vriez la partie Debian specic : yes/no en haut de chaque document (DSA).

11.1.3

Debian possde-t-elle une certication touchant la scurit ?

Rponse courte : non. Rponse longue : la certication cote de largent (particulirement, une certication de scurit srieuse et personne na attribu de ressources pour faire certier la distribution Debian GNU/Linux nimporte quel niveau que ce soit, par exemple, la Common Criteria. Si vous tes intress par lobtention dune distribution GNU/Linux certie, essayez de fournir les ressources pour que cela devienne possible. Il existe actuellement au moins deux distributions Linux certies diffrents niveaux EAL (http://en.wikipedia.org/wiki/Evaluation_Assurance_Level). Veuillez noter que certains des tests CC sont en cours dintgration dans le Linux Testing Project (http: //ltp.sourceforge.net) qui est disponible dans Debian dans le paquet ltp.

11.1.4

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

Oui. Bastille Linux (http://www.bastille-unix.org), orient la base vers certaines distributions Linux (Red Hat et Mandrake), fonctionne actuellement sur Debian. Des tapes sont prvues pour intgrer les changements de la version amont dans le paquet Debian nomm bastille. Certains pensent, cependant, quun outil de durcissement nlimine pas la ncessit dune bonne administration.

11.1.5

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

Lune des grandes forces de Debian est la grande varit de choix disponibles entre les paquets fournissant la mme fonctionnalit (serveurs DNS, serveurs de messagerie, serveurs FTP, serveurs web, etc.). Ceci peut tre droutant pour ladministrateur dbutant lorsquil essaie de dterminer quel est le bon outil pour lui. Le mieux pour une situation donne dpend dun quilibre entre les fonctionnalits et la scurit dont vous avez besoin. Voici quelques questions vous poser pour dcider entre des paquets semblables : Est-ce que le logiciel est maintenu en amont ? De quand date la dernire version Est-ce que le paquet est mre ? Le numro de version ne vous dira vraiment rien concernant sa maturit. Essayez de tracer lhistoire du logiciel.

Chapitre 11. Foire Aux Questions (FAQ)

174

Est-ce que le logiciel est truff de bogues ? Y a-t-il eu des alertes de scurit lies au logiciel ? Est-ce que le logiciel fournit toutes les fonctionnalits dont vous avez besoin ? Fournit-il plus que ce dont vous avez vraiment besoin ?

11.1.6

Comment scuriser davantage un service XYZ dans la Debian ?

Les informations disponibles dans ce document vous permettront de rendre certains services (FTP, Bind) plus scuriss dans la Debian GNU/Linux. Toutefois, pour les services non abords ici, vous pouvez vrier la documentation des programmes ou les informations gnrales Linux. La plupart des directives concernant la scurit pour les systmes Unix peut galement sappliquer Debian. Ainsi, la scurisation dun service X dans la Debian revient, la plupart du temps, scuriser un service comme pour nimporte quelle autre distribution Linux (ou Unix, peu importe).

11.1.7

Comment supprimer toutes les informations de version pour les services ?

Si vous voulez pas ques des utilisateurs se connectent votre dmon POP3, par exemple, et rcuprent des informations propos de votre systme, vous pouvez vouloir supprimer (ou modier) les informations de version afches aux utilisateurs. 3 Faire cela dpend du logiciel que vous utilisez pour un service donn. Par exemple, dans postfix, vous pouvez placer votre bannire SMTP dans /etc/postfix/main.cf :

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) Dautres logiciels ne sont pas aussi faciles changer. Ssh devra tre recompil pour pouvoir changer la version quil afche. Faites attention ne pas supprimer la premire partie (SSH-2.0) de la bannire, car les clients lutilisent pour identier quel(s) protocole(s) est(sont) support(s) par votre paquet.

11.1.8

Les paquets Debian sont-ils tous srs ?

Lquipe de scurit Debian ne peut pas analyser tous les paquets inclus dans Debian pour tester des potentielles failles de scurit, puisque il ny a tout simplement pas assez de ressources pour auditer le code source de lensemble du projet. Cependant Debian bncie des audits de code source raliss par des dveloppeurs amont. De fait, un dveloppeur Debian pourrait distribuer un trojan dans un paquet et il ny a pas moyen de le vrier. Mme sil tait introduit dans une branche Debian, il serait impossible de couvrir toutes les situations imaginables dans lesquelles le trojan pourrait agir. Cest pourquoi Debian a une clause de licence de non-garantie .
3

Notez que ceci est de la scurit par lobscurit et ne vaudra probablement pas leffort long terme.

Chapitre 11. Foire Aux Questions (FAQ)

175

Cependant, les utilisateurs Debian peuvent tre assurs que le code stable rassemble une large audience et que la plupart des problmes seront dcouverts pendant lutilisation. Il nest pas recommand dinstaller des logiciels non tests dans un systme critique (si vous ntes pas en mesure de fournir laudit de code ncessaire). Dans tous les cas, si des failles de scurits taient incluses dans la distribution, le processus permettant dinclure les paquets (utilisation de signature numrique) assure que le problme pourra tre remont jusquau dveloppeur, et que le projet Debian ne prend pas cela la lgre.

11.1.9

Pourquoi certains chiers journaux/chiers de conguration sont-ils lisibles par tous les utilisateurs, est-ce que cest sr ?

Vous pouvez naturellement changer les permissions Debian par dfaut de votre systme. La rgle actuelle concernant les chiers journaux et les chiers de conguration est quils doivent tre lisibles par tous les utilisateurs moins quils fournissent des informations sensibles. Soyez attentifs si vous faites des modications car : Il se peut que des processus ne puissent pas crire dans des chiers journaux si vous avez restreint leurs permissions. Certains applications peuvent ne pas fonctionne si le chier de conguration dont elles dpendent ne peut tre lu. 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 : Vrier si cest crit dans la Charte. Certains paquets (par exemple, les dmons FTP) semblent ncessiter diffrentes permissions.

11.1.10

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

De fait, la mme question sapplique pour tout autre utilisateur. Comme linstallation de Debian ne place aucun chier dans ce rpertoire, il ny a aucune information sensible y protger. Si vous pensez que ces permissions sont trop laxistes pour votre systme, vous pouvez les renforcer en 750. Pour les utilisateurs, veuillez lire Limiter laccs aux informations dautres utilisateurs page 61. Ce le (http://lists.debian.org/debian-devel/2000/debian-devel-200011/ msg00783.html) de la liste de diffusion de scurit Debian contient plus dinformations sur ce problme.

11.1.11

Aprs linstallation de grsec/dun pare-feu, jai commenc recevoir beaucoup de messages de console ! Comment est-ce que je les supprimer ?

Si vous recevez des messages de console et que vous avez congur /etc/syslog.conf pour les rediriger soit dans des chiers, soit dans un TTY spcial, vous pouvez voir des messages envoys directement la console.

Chapitre 11. Foire Aux Questions (FAQ)

176

Le niveau par dfaut de log de la console pour tout noyau donn est de 7, ce qui veut dire que tout message avec une priorit infrieure apparatra dans la console. Habituellement, les pare-feux (la rgle LOG) et dautres outils de scurit logguent des priorits infrieures cette priorit et les messages sont donc envoys directement la console. Pour rduire les messages envoys la console, vous pouvez utiliser dmesg (loption -n option, voir dmesg(8)), qui examine et contrle le tampon anneau du noyau. Pour corriger cela aprs le prochain redmarrage, changez /etc/init.d/klogd de : KLOGD="" : KLOGD="-c 4" Utilisez un nombre plus faible pour -c si vous les voyez toujours. Une description des diffrents niveaux de log peut tre trouve dans /usr/include/sys/syslog.h : #define #define #define #define #define #define #define #define LOG_EMERG LOG_ALERT LOG_CRIT LOG_ERR LOG_WARNING LOG_NOTICE LOG_INFO LOG_DEBUG 0 1 2 3 4 5 6 7 /* /* /* /* /* /* /* /* le systme est inutilisable */ une action doit tre entreprise immdiatement */ conditions critiques */ conditions derreur */ conditions davertissement */ normal, mais conditions significatives */ informatif */ messages de niveau dboguage */

11.1.12

Les utilisateurs et les groupes du systme dexploitation

Tous les utilisateurs systmes sont-ils ncessaires ? Oui et non. Debian est livre avec certains utilisateurs prdnis (id utilisateur (UID) < 99 comme dcrit dans la charte Debian (http://www.debian.org/doc/debian-policy/) ou /usr/share/doc/base-passwd/README) an de faciliter linstallation de certains services qui imposent dtre lancs par un utilisateur/UID appropri. Si vous navez pas lintention den installer de nouveaux, vous pouvez supprimer sans problme ces utilisateurs qui ne possdent aucun chier sur votre systme et qui nexcutent aucun service. Dans tous les cas, le comportement par dfaut est que les UID de 0 99 sont rserves dans Debian et les UID de 100 999 sont cres par des paquets lors de linstallation (et supprimes quand le paquet est purg). Vous pouvez facilement trouver les utilisateurs ne possdant aucun chier en excutant la commande suivante (soyez sr de lexcuter en tant que root, tant donn quun utilisateur ordinaire pourrait ne pas avoir les droits ncessaires pour accder certains rpertoires sensibles) :

Chapitre 11. Foire Aux Questions (FAQ)

177

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 dinformations sur la manire dont ces utilisateurs sont grs dans Debian. La liste des utilisateurs par dfaut (avec un groupe correspondant) : root : Root est (typiquement) le super-utilisateur. daemon : Quelques dmons non privilgis ont besoin de pouvoir dcrire sur certains chiers du disque en tant que daemon :daemon (par exemple, portmap, atd, et probablement dautres). Les dmons qui nont besoin daucune appartenance de chier peuvent tourner en tant que nobody :nogroup, et des dmons plus complexes ou plus consciencieux de la scurit tournent en tant quutilisateurs spciques. Lutilisateur daemon est aussi utile pour les dmons installs localement. bin : Maintenu pour des raisons historiques. sys : La mme chose que pour bin. Toutefois, /dev/vcs* et /var/spool/cups appartiennent au groupe sys. sync : Le shell de lutilisateur sync est /bin/sync. Donc, si son mot de passe est quelque chose de facile deviner (comme ), nimporte qui peut synchroniser le systme la console mme sil na pas de compte sur le systme. games : De nombreux jeux sont SETGID games ainsi ils peuvent crire dans les chiers des meilleurs scores. Ceci est expliqu dans la charte. man : Le programme man est (parfois) lanc en tant quutilisateur man, il peut alors crire les pages cat vers /var/cache/man. lp : Utilis par les dmons dimpression. mail : Les botes aux lettres dans /var/mail appartiennent au groupe mail, comme dcrit dans la charte. Lutilisateur et le groupe sont galement utiliss dautres ns par diffrents MTA. news : Plusieurs serveurs de news et autres programmes associs (tel suck) utilisent lutilisateur et le groupe news de diffrentes faons. Les chiers dans la le dattente des news appartiennent souvent lutilisateur et au groupe news. Les programmes tels que inews qui peuvent tre utiliss pour poster des news son typiquement SETGID news. uucp : Lutilisateur et le groupe uucp sont utiliss par le sous-systme UUCP. Il gre les chiers de spool et de conguration. Les utilisateurs du groupe uucp peuvent excuter uucico. proxy : Comme daemon, cet utilisateur et ce groupe sont utiliss par certains dmons (particulirement les dmons proxy) qui ne possdent pas did utilisateur et qui ne ncessite pas la possession de chiers. Par exemple, le groupe proxy est utilis par pdnsd et squid tourne en tant quutilisateur proxy. majordom : Majordomo a un uid allou statiquement sur les systmes Debian pour des raisons historiques. Il nest plus install sur les nouveaux systmes. postgres : Les bases de donnes Postgresql appartiennent cet utilisateur et ce groupe. Tous les chiers dans /var/lib/postgresql appartiennent cet utilisateur an dimposer un niveau de scurit convenable. www-data : Certains serveurs web tournent en tant que www-data. Le contenu Internent ne devrait pas appartenir cet utilisateur, ou un serveur Internet compromis serait alors en

Chapitre 11. Foire Aux Questions (FAQ)

178

mesure de rcrire un site web. Les donnes transfres par les serveurs web, incluant les chiers journaux, seront la proprit de www-data. backup : De cette manire la responsabilit de sauvegarde/restauration peut tre localement dlgue quelquun sans avoir lui donner toutes les permissions de root. operator : Operator est historiquement (et pratiquement) le seul compte utilisateur qui peut se connecter distance, et qui ne dpend pas de NIS/NFS. list : Les archives des listes de diffusion liste et les donnes appartiennent cet utilisateur et son groupe. Certains programmes de listes de diffusion utilisent aussi cet utilisateur. irc : Utilis par les dmons irc. Un utilisateur allou statiquement est ncessaire cause dun bug dans ircd, il se setuid()e lui-mme vers un UID donn au dmarrage. gnats. nobody, nogroup : Les dmons qui nont pas besoin dtre propritaires de chiers devraient fonctionner sous lutilisateur nobody et le groupe nogroup. Donc, aucun chier sur un systme ne devrait appartenir cet utilisateur ou ce groupe.

Autres groupes qui nont pas dutilisateur associ : adm : Le groupe adm est utilis pour les tches de surveillance du systme. Les membres de ce groupe peuvent lire de nombreux journaux dvnements dans /var/log et peuvent utiliser xconsole. Historiquement, /var/log tait /usr/adm (et plus tard /var/adm) do le nom du groupe. tty : Les priphriques TTY appartiennent ce groupe. Cest utilis par write et wall pour permettre dcrire sur les TTY dautres personnes. disk : Accs brut vers les disques. Quasiment quivalent laccs root. kmem : /dev/kmem et les chiers similaires sont lisibles par ce groupe. Cest la plupart du temps un reste de BSD, mais certains programmes en ont besoin pour un accs direct en lecture sur la mmoire du systme ce qui peut ainsi tre fait par SETGID kmem. dialout : Accs direct et total aux ports sries. Les membres de ce groupe peuvent recongurer les modems, tlphoner nimporte o, etc. dip : Le nom du groupe signie Dialup IP . tre dans le groupe dip permet dutiliser des outils comme que ppp, dip, wvdial, etc. pour tablir une connexion. Les utilisateurs de ce groupe ne peuvent pas congurer 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 : Bote vocale, utile pour les systmes qui utilisent leur modem comme rpondeur. cdrom : Ce groupe peut tre utilis localement pour donner certains utilisateurs un accs un lecteur CDROM. oppy : Ce groupe peut tre utilis localement pour donner certains utilisateurs un accs un lecteur de disquettes. tape : Ce groupe peut tre utiliser localement pour donner certains utilisateurs un accs un lecteur de bandes. sudo : Les membres de ce groupe nont pas besoin de fournir un mot de passe lors de lutilisation de sudo. Voir /usr/share/doc/sudo/OPTIONS. audio : Ce groupe peut tre utilis localement pour donner certains utilisateurs un accs un priphrique audio. src : Ce groupe possde les codes sources, incluant les chiers dans /usr/src. Il peut tre utilis an de donner un utilisateur la capacit de manipuler les codes sources du systme.

Chapitre 11. Foire Aux Questions (FAQ)

179

shadow : /etc/shadow est lisible par ce groupe. Certains programmes qui ont besoin daccder ce chier sont SETGID shadow. utmp : Ce groupe peut crire dans /var/run/utmp et dans les chiers similaires. Les programmes qui ncessitent lcriture sont SETGID utmp. video : Ce groupe peut tre utilis localement pour donner certains utilisateurs un accs un priphrique vido. staff : Autorise les utilisateurs ajouter des modications au systme local (/usr/local, /home) sans avoir les privilges root. comparer au groupe adm qui est plus apparent la surveillance/scurit. users : Tandis que les systmes Debian utilisent le systme de groupe priv par utilisateur par dfaut (chaque utilisateur a son propre groupe), certains prfrent dutiliser un systme de groupes plus traditionnel. Dans ce systme, chaque utilisateur est un membre de ce groupe.

Jai supprim un utilisateur systme ! Comment puis-je le rcuprer ? Si vous avez supprim un utilisateur systme et que vous navez pas de sauvegardes de vos chiers password et group, vous pouvez essayez de rcuprer de ce problme en utilisant update-passwd (voir update-passwd(8)).

Quelle est la diffrence entre les groupes adm et staff ? Le groupe adm est habituellement celui des administrateurs et est utile an de le autoriser lire les journaux dactivits sans avoir utiliser su. Le groupe staff est gnralement pour des personnes du genre administrateur systme helpdesk/junior et leur offre la capacit de faire des choses dans /usr/local et de crer des rpertoires dans home.

11.1.13

Pourquoi y a-t-il un nouveau groupe quand jajoute un nouvel utilisateur ? (ou pourquoi Debian attribue-t-elle un groupe chaque utilisateur ?)

Le comportement par dfaut dans Debian est que chaque utilisateur a son propre groupe priv. Le schma traditionnel Unix place tous les utilisateurs dans le groupe users. Des groupes supplmentaires taient crs et utiliss pour restreindre laccs des chiers partags associs aux diffrents rpertoires de projets. La gestion des chiers devenait difcile quand un seul utilisateur travaillait sur plusieurs projets car quand quelquun crait un chier, ce dernier tait associ au groupe primaire auquel il appartenait (c.--d. users ). Le schma Debian rsoud ce problme en attribuant chaque utilisateur son propre groupe ainsi avec un umask correct (0002) et le bit SETGID positionn dans un rpertoire de projet donn, le groupe correcte est automatiquement attribu aux chiers crs dans ce rpertoire. Cela facilite le travail sur plusieurs projets car il ny a pas besoin de changer les groupes ou les umask quand on travaille sur des chiers partags. Vous pouvez, cependant, changer ce comportement en modiant /etc/adduser.conf. Changez la variable USERGROUPS no , pour quaucun nouveau groupe ne soit cr quand

Chapitre 11. Foire Aux Questions (FAQ)

180

un nouvel utilisateur est cr. Positionnez galement USERS_GID vers le GID du groupe users auquel appartiennent tous les utilisateurs.

11.1.14

Question concernant les services et les ports ouverts

Pourquoi tous les services sont-ils activs lors de linstallation ? Ceci est juste une approche du problme qui est, dun ct,davoir une scurit prsente et dun autre cot lutilisation facile. Contrairement OpenBSD, qui dsactive tous les services moins que ceux-ci soit activs par ladministrateur, Debian GNU/Linux activera tous les services installs moins de les dsactiver (voir Dsactivation de services dmon page 33 pour plus dinformations). Aprs tout, vous avez install ces services de votre propre chef, nest-ce pas ? Il y a un grand nombre de discussions sur les listes de diffusion Debian (sur debian-devel et debian-security) propos de ce que doit tre linstallation standart. Cependant, il ny a pas de consensus ce jour (mars 2002) sur la solution adopter. Puis-je retirer inetd ? Inetd nest pas ais retirer tant donn que netbase dpend du paquet qui le fournit (netkit-inetd). Si vous voulez le retirer, vous pouvez soit le dsactiver (voir Dsactivation de services dmon page 33) ou retirer le paquet en utilisant le paquet equivs. Pourquoi ai-je le port 111 douvert ? Le port 111 est le mappeur de port sunrpc, il est install par dfaut dans toutes les installations de base dun systme Debian puisquil est requis pour savoir lorsque le programme dun utilisateur a besoin de RPC pour fonctionner correctement. Dans tous les cas, il est principalement utilis pour NFS. Si vous nen avez pas besoin, retirez-le comme dcrit dans Scurisation des services RPC page 109. Dans les versions du paquet portmap aprs la version 5-5, vous pouvez en fait avoir le portmapper dinstall, mais ncoutant que pour localhost (en modiant /etc/default /portmap). Quelle est lutilisation didentd (port 113) ? Le service identd est un service dauthentication identiant le propritaire dune connexion TCP/IP spcique au serveur distant acceptant la connexion. Par exemple, quand un utilisateur se connecte sur un hte distant, inetd de lhte distant va envoyer une demande sur le port 113 pour dterminer les informations du propritaire. Cela est souvent utilis pour les serveurs de courriers, FTP et IRC et peut galement tre utilis pour remonter la trace de lutilisateur qui attaque un systme distant par lintermdiaire de votre machine.

Chapitre 11. Foire Aux Questions (FAQ)

181

Il y a eu des discussions compltes sur la scurit didentd (voir les archives de la liste de diffusion (http://lists.debian.org/debian-security/2001/ debian-security-200108/msg00297.html)). En rgle gnrale, identd est plus utile sur un systme multi-utilisateurs que sur un poste de travail mono-utilisateur. Si vous nen avez pas lutilit, dsactivez-le, pour ne pas laisser un service ouvert au monde extrieur. Mais si vous le bloquez par un pare-feu, sil vous plat, crez une rgle de rejet et non pas une rgle de dni, autrement la communication un serveur utilisant identd pourrait tre en attente jusqu lexpiration dun dlai (voir les problmes sur le rejet ou le dni (http://logi.cc/linux/reject_or_deny.php3)). Jai des services utilisant les ports 1 et 6, quels sont ces services et comment puis-je les enlever ? Si vous excutez la commande netstat -an et que vous recevez : Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address PID/Program name raw 0 0 0.0.0.0:1 0.0.0.0:* raw 0 0 0.0.0.0:6 0.0.0.0:* Vous ne voyez aucun processus coutant sur les ports 1 et 6. En fait, vous voyez un processus coutant sur une socket raw (brut) pour les protocoles 1 (ICMP) et 6 (TCP). Un tel comportement est courant pour les trojans et aussi pour certains systmes de dtection dintrusions comme iplogger et portsentry. Si vous avez ces paquets, supprimez-les simplement. Si vous ne les avez pas, essayez loption -p (processus) de netstat pour voir quel processus est lcoute. Jai vri et jai le port suivant (XYZ) douvert, puis-je le fermer ? Bien sr que vous pouvez, les ports que vous laissez ouverts doivent adhrer la politique de scurit de votre site concernant les services publiques disponibles pour les autres systmes. Vriez sils sont ouvert par inetd (voir Dsactivation dinetd ou de ses services page 35) ou par dautres paquets installs et prenez les mesures adquates (par exemple, conguration dinetd, suppression du paquet, viter quil dmarre au dmarrage). Est-ce que la suppression de services de /etc/services va maider scuriser ma machine ? Non, le chier /etc/services fournit juste une cartographie dun nom virtuel un numro de port donn. La suppression des noms ne va pas (en gnral) prvenir les services dtre

State 7 7

Chapitre 11. Foire Aux Questions (FAQ)

182

lances. Certains dmons ne se lanceront peut-tre pas si /etc/services est modi mais ce nest pas la norme. Pour dsactiver correctement les services, voir Dsactivation de services dmon page 33.

11.1.15

Problmes courants de scurit

Jai perdu mon mot de passe et je ne peux plus accder au systme ! Les dmarches prendre an de rcuprer votre systme dpend si vous avez ou non appliqu les diffrentes procdures concernant les limitations daccs lilo et au BIOS. Si vous avez limits les deux accs, vous devez dsactiver les fonctionnalits du BIOS (dmarrer uniquement depuis le disque dur) avant de commencer. Si vous avez galement oubli votre mot de passe pour le BIOS, vous devrez ouvrir votre systme et retirer manuellement la pile du BIOS. Une fois que vous avez activ lamorage depuis un CD-ROM ou une disquette, vous pouvez essayer de : dmarrer depuis une disquette de secours (rescue) et dmarrer le noyau accder aux consoles virtuelles (Alt+F2) monter le disque dur o est plac votre partition /root diter (la disquette de secours de la Debian 2.2 est livre avec ae, la Debian 3.0 est livre avec nano-tiny qui est similaire vi) /etc/shadow et changer la ligne : root:asdfjl290341274075:XXXX:X:XXXX:X::: (X=nimporte quel nombre) en : root::XXXX:X:XXXX:X:::

Ceci retirera le mot de passe root oubli, contenu dans le premier champ spar par deux points aprs le nom dutilisateur. Enregistrez le chier, redmarrer le systme et connectez-vous en tant que root (avec un mot de passe vide). Ceci fonctionnera moins que vous nayez congur le systme plus strictement, par exemple, si vous nautorisez pas aux utilisateurs de mots de passe vides ou root de se connecter partir de la console. Si vous avez introduit ces caractristiques, vous devrez passer en mode utilisateur unique. Si LILO a t restreint, vous devrez relancer lilo aprs le reset du root indiqu ci-dessus. Cest assez rus puisque votre /etc/lilo.conf devra tre modi car le systme de chiers / est alors un disque virtuel et non le rel disque dur. Une fois que LILO nest plus restreint, vous pouvez : Pressez lune des touches Alt, shift ou Control juste avant que le BIOS systme ne nisse, pour obtenir linvite prompt de LILO. Entrez linux single, linux init=/bin/sh ou linux 1 linvite. Vous devriez arriver une invite de shell un mode utilisateur unique (il vous sera demander un mot de passe, mais vous le connaisez dj) Remontez en lecture/criture la partition racine (/), en utilisant la commande de montage. mount -o remount,rw /

Chapitre 11. Foire Aux Questions (FAQ)

183

Changez le mot de passe du super-utilisateur avec passwd (tant donn que vous tes le super-utilisateur, lancien mot de passe ne vous sera pas demand).

11.1.16

Comment puis-je mettre en place un service pour mes utilisateurs sans leur donner un compte shell ?

Par exemple, si vous voulez mettre en place un service POP, vous navez pas besoin de congurer un compte dutilisateur pour chaquet utilisateur y accdant. Il est prfrable de mettre en place une authentication bas sur un rpertoire grce un service externe (comme Radius, LDAP ou une base de donnes SQL). Installez simplement la bibliothque PAM approprie (libpam-radius-auth, libpam-ldap, libpam-pgsql ou libpam-mysql), lisez la documentation (pour commencer, voir Authentication utilisateur : PAM page 49) et congurez le service en activant PAM pour utiliser la mthode que vous avez choisi. Cela est fait en diter les chiers sous /etc/pam.d/ pour vos services et en modiant

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 rpertoires LDAP, certains services fournissent des schmas LDAP inclure dans votre rpertoire et qui sont ncessaires pour utiliser lauthentication LDAP. Si vous utilisez une base de donnes relationnelle, une astuce utile est dutiliser la clause where quand vous congurez les modules PAM modules. Par exemple, si vous avez une base de donnes avec les attributs de table suivants :

(user_id, user_name, realname, shell, password, UID, GID, homedir, sys, pop,

En changeant les attributs de service en champs boolens, vous pouvez les utiliser pour permettre ou interdire laccs aux diffrents services en utilisant simplement les lignes appropries dans les chiers 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.

Chapitre 11. Foire Aux Questions (FAQ)

184

11.2
11.2.1

Mon systme est vulnrable ! (En tes-vous certain ?)


Le scanneur X de vrication des failles indique que mon systme Debian est vulnrable !

Plusieurs scanneurs de vrication de failles renvoient des faux positifs quand ils sont utiliss sur des systmes Debian, car ils nutilisent que le numro de version pour dterminer si un paquet donn de logiciel est vulnrable, mais ils ne testent pas rellement la faille de scurit elle-mme. Comme Debian ne change de numros de version lors de la correction dun paquet (il est courant que la correction effectue pour des versions plus rcentes soit rtro-porte), certains outils ont tendance croire quun systme Debian mis jour est vulnrable alors quil ne lest pas. Si vous pensez que votre systme est jour concernant les correctifs de scurit, vous pouvez dsirer utiliser les rfrences croises des bases de donnes des failles de scurit publies avec les DSA (voir Alertes de scurit Debian page 126) pour liminer les faux positifs, si loutil que vous utilisez inclut des rfrences CVE.

11.2.2

Jai vu une attaque dans les chiers journaux de mon systme. Est-ce que mon systme est compromis ?

Une trace dune attaque ne veut pas toujours dire que votre systme a t compromis et vous devriez effectuer les tapes habituelles pour dterminer si le systme est vraiment compromis (voir Aprs la compromission (la rponse lincident) page 165). Notez galement que le fait que vous voyez les attaques dans les chiers journaux peut vouloir dire que votre systme est dj vulnrable (cependant, un attaquant dtermin pourrait avoir utilis une autre faille en plus de celles que vous avez vu).

11.2.3

Jai trouv dtranges lignes MARK dans mes journaux : est-ce que mon systme est compromis ?

Il se peut que vous trouviez les lignes suivantes dans vos chiers journaux du systme : Dec 30 07:33:36 debian -- MARK -Dec 30 07:53:36 debian -- MARK -Dec 30 08:13:36 debian -- MARK -Cela nindique pas un type de compromission et les utilisateurs changeant de versions de Debian peuvent trouver cela trange. Si votre systme na pas une charge importante (ou beaucoup de services actifs), ces lignes peuvent apparatre dans vos journaux. Cest une indication que votre dmon syslogd fonctionne correctement. De syslogd(8) : -m interval

Chapitre 11. Foire Aux Questions (FAQ)

185

Syslogd stocke dans un journal une marque dhorodatage rgulirement. Lintervalle par dfaut entre deux lignes -- MARK -- est de 20 minutes. Ceci peut tre chang avec cette option. Positionner lintervalle 0 dsactive cela compltement.

11.2.4

Jai trouv des utilisateurs utilisant su dans mes journaux : mon systme est-il compromis ?

Vous pouvez trouver des lignes comme ceci dans vos journaux : Apr Apr 1 09:25:01 server su[30315]: + ??? root-nobody 1 09:25:01 server PAM_unix[30315]: (su) session opened for user nobody

Ne vous inquitez pas trop. Vriez que ces entres sont dues des tches cron (habituellement, /etc/cron.daily/find ou logrotate) : $ grep 25 /etc/crontab 25 6 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

11.2.5

Jai trouv un possible SYN ooding dans mes journaux : mon systme est-il attaqu ?

Si vous voyez des entres comme ceci dans vos chiers journaux : May May May May 1 1 1 1 12:35:25 12:36:25 12:37:25 13:43:11 linux linux linux linux kernel: kernel: kernel: kernel: possible possible possible possible SYN SYN SYN SYN flooding flooding flooding flooding on on on on port port port port X. X. X. X. Sending Sending Sending Sending

cookie cookie cookie cookie

Vriez sil y a un nombre lev de connexions au serveur en utilisant netstat, par exemple : linux:~# netstat -ant | grep SYN_RECV | wc -l 9000 Cest une indication dune attaque par dni de service (DoS) sur le port X de votre systme (trs certainement sur un service public comme un serveur web ou un serveur de courrier). Vous devriez activer TCP syncookies dans votre noyau, voir Congurer syncookies page 76. Cependant, notez quune attaque par DoS peut inonder votre rseau mme si vous pouvez lempcher de planter vos systmes ( cause de la rarfaction de descripteurs de chiers, le systme peut ne plus rpondre jusqu ce que les connexions TCP expirent). Le seul moyen efcace pour stopper cette attaque est de contacter votre fournisseur daccs rseau.

Chapitre 11. Foire Aux Questions (FAQ)

186

11.2.6

Jai trouv des sessions root tranges dans mes journaux : mon systme est-il compromis ?

Vous pouvez voir ce genre dentres dans votre chier /var/log/auth.log : May 2 11:55:02 May 2 11:55:02 May 2 12:00:01 (UID=0) May 2 12:00:02 linux PAM_unix[1477]: (cron) session closed for user root linux PAM_unix[1476]: (cron) session closed for user root linux PAM_unix[1536]: (cron) session opened for user root by linux PAM_unix[1536]: (cron) session closed for user root

Elles sont dues lexcution dune tche cron (dans cet exemple, toutes les cinq minutes). Pour dterminer quel programme est responsable de ces tches, vriez les entres dans : /etc /crontab, /etc/cron.d, /etc/crond.daily et la crontab de root dans /var/spool /cron/crontabs.

11.2.7

Jai souffert dune intrusion, que dois-je faire ?

Il y a plusieurs tapes que vous pouvez effectuer en cas dintrusion : Vriez que votre systme est jour avec les correctifs de scurit pour les failles publies. Si votre systme est vulnrable, les risques que le systme est vraiment compromis augmentent. Les risques augmentent encore plus si la faille est connue depuis un certain temps, car il y a habituellement plus dactivit en lien avec danciennes failles. Voici un lien vers les 20 principales failles de scurit selon le SANS (http://www.sans.org/top20/). Lisez ce document, particulirement la section Aprs la compromission (la rponse lincident) page 165. Demandez de laide. Vous pouvez utiliser la liste de diffusion debian-security pour demander conseil sur la manire de rtablir/raccommoder votre systme. Informez votre CERT (http://www.cert.org) local (sil existe, sinon vous pouvez vouloir contacter le CERT directement). Ceci peut ou non vous aider, mais au minimum, cela informera le CERT sur les attaques en cours. Cette information est trs prcieuse pour dterminer quels outils et quelles attaques sont utilises par la communaut blackhat.

11.2.8

Comment puis-je pister une attaque ?

En regardant les logs (sils nont pas t modis), en utilisant un systme de dtection dintrusions (voir Mise en place dun systme de dtection dintrusion page 159), traceroute, whois et outils similaires (incluant des analyses lgales) vous pouvez rechercher la source de lattaque. La manire dont vous devez ragir sur ces informations dpend uniquement de vos rgles de scurit, et de ce que vous considrez comme une attaque Un scan distant est-il une attaque ? Un test de failles de scurit est-il une attaque ?

Chapitre 11. Foire Aux Questions (FAQ)

187

11.2.9

Le programme X dans Debian est vulnrable, que dois-je faire ?

Tout dabord, prenez un moment pour regarder si la vulnrabilit a t annonce sur les listes de diffusion publiques de scurit (comme Bugtraq) ou autre forums. Lquipe de scurit Debian se met jour laide de ces listes, ils sont donc peut tre dj conscients du problme. Ne lancez pas dautres actions si vous avez vu paratre lannonce sur http://security. debian.org. Si vous navez rien vu de cela, envoyez sil vous plat un courriel sur le(s) paquet(s) affect(s) avec une description de la vulnrabilit rencontre aussi dtaille que possible (la preuve par un code dexploitation est aussi bienvenue) team@security.debian.org (mailto: team@security.debian.org). Cela vous mettra en rapport avec lquipe de scurit Debian.

11.2.10

Le numro de version pour un paquet indique que jutilise toujours une version vulnrable !

Au lieu de mettre jour vers une nouvelle version, nous appliquons la rustine de scurit la version prsente dans la distribution stable. La raison pour laquelle nous agissons ainsi est simple. Elle permet dassurer quune version a le moins de changements possible, de cette manire les choses ne changeront pas ou ne se briseront pas cause dune mise jour de scurit. Vous pouvez vrier que vous utilisez une version scurise de votre paquet en regardant le changelog du paquet ou en comparant le numro exact de version (version amont -slash- version Debian) avec celui indiqu dans lalerte de scurit Debian (Debian Security Advisory).

11.2.11

Logiciels spciques

proftpd est vulnrable une attaque de dni de service Ajoutez DenyFilter \*.*/ votre chier de conguration, pour plus dinformations, voir http://www.proftpd.org/critbugs.html.

Aprs linstallation de portsentry, il y a un grand nombre de ports douverts. Il sagit simplement de la faon dont fonctionne portsentry. Il ouvre environ 20 ports non utiliss pour tenter de dtecter les scans de ports.

11.3

Questions concernant lquipe de scurit Debian

Cette information est tire de la FAQ de lquipe Debian sur la scurit (http://www. debian.org/security/faq). Elle inclut les informations au 19 novembre et fournit plusieurs autres questions communes poses sur la liste de diffusion debian-security.

Chapitre 11. Foire Aux Questions (FAQ)

188

11.3.1

Quest ce quune alerte de scurit Debian (Debian Security Advisory, DSA) ?

Cest linformation envoye par lquipe de scurit Debian (voir ci-dessous) informant quune mise jour de scurit concernant une vulnrabilit dun paquet de Debian GNU/Linux est disponible. Les DSA signs sont envoyes aux listes de diffusion publiques (debian-securityannounce) et postes sur le site Debian (sur la page de garde et dans la zone concernant la scurit (http://www.debian.org/security/)). Les DSA incluent des informations sur les paquets concerns, la faille de scurit dcouverte et lendroit o rcuprer les paquets mis jour (ainsi que leurs sommes MD5).

11.3.2

La signature des alertes Debian ne se vrie pas correctement !

Cest la plupart du temps un problme de votre ct. La liste debian-security-announce (http://www.debian.org/security/faq) a un ltre qui autorise uniquement lenvoi de messages ayant une signature correcte appartenant un des membres de lquipe de scurit. Le plus probable est quun logiciel de courrier de votre ct change lgrement le message, ce qui rompt la signature. Assurez-vous pour cela que votre logiciel ne fait aucun encodage ou dcodage MIME, ou de conversion de tabulation ou espace. Des coupables connus sont fetchmail (avec loption mimedecode active), formail (pour procmail 3.14 uniquement) et evolution.

11.3.3

Comment la scurit est-elle gre chez Debian ?

Ds que lquipe de scurit reoit une notication dun incident, un ou plusieurs membres linspecte et tudie si la distribution stable de Debian y est vulnrable ou pas. Si notre systme est vulnrable, un travail est entrepris pour rsoudre le problme. Le responsable du paquet est galement contact sil na pas dj contact lquipe de scurit. Finalement, la solution est teste et de nouveaux paquets sont prpars qui sont ensuite compils sur toutes les architectures stables et mis disposition ensuite. Aprs que toutes ces tches sont termines, une alerte de scurit est publie.

11.3.4

Pourquoi vous embtez-vous avec une vieille version de tel paquet ?

La rgle la plus importante lors de la cration dun nouveau paquet qui corrige un problme de scurit est de faire le moins de changements possible. Nos utilisateurs et dveloppeurs comptent sur le comportement exact dune distribution une fois quelle est stable, donc tout changement que nous faisons peut peut-tre casser le systme de quelquun. Cela est particulirement vrai dans le cas de bibliothques : assurez-vous de ne jamais changer linterface de programmation dapplications (API) ou linterface binaire dapplications (ABI), quelque petit que soit le changement.

Chapitre 11. Foire Aux Questions (FAQ)

189

Cela veut dire que passer une nouvelle version amont nest pas une bonne solution, au lieu de cela, les changements pertinents devraient tre rtro-ports. Habituellement, les responsables amont sont dsireux daider si ncessaire, sinon lquipe de scurit Debian peut peut-tre aider. Dans certains cas, il nest pas possible de rtro-porter un correctif de scurit, par exemple quand de grandes quantits de code source doivent tre modies ou rcrites. Si cela arrive, il peut tre ncessaire de passer une nouvelle version amont, mais cela doit obligatoirement tre coordonn avec lquipe de scurit auparavant.

11.3.5

Quelle est la rgle pour quun paquet x apparaisse sur security.debian.org ?

Les problmes de scurit dans la distribution stable garantisse quun paquet ira sur security.debian.org. Rien dautre ne le peut. La taille du problme nest pas un problme rel ici. Habituellement, lquipe de scurit va prparer des paquets avec le responsable du paquet. Pourvu que quelquun (de conance) suive le problme, compile tous les paquets ncessaires et les propose lquipe de scurit, mme des problmes de scurit trs triviaux peuvent faire aller le paquet sur security.debian.org. Voir ci-dessous.

11.3.6

Le numro de version pour un paquet indique que jutilise toujours une version vulnrable !

Au lieu de mettre jour vers une nouvelle version, nous appliquons la rustine de scurit la version prsente dans la distribution stable. La raison pour laquelle nous agissons ainsi est simple. Elle permet dassurer quune version a le moins de changements possible, de cette manire les choses ne changeront pas ou ne se briseront pas cause dune mise jour de scurit. Vous pouvez vrier que vous utilisez une version scurise de votre paquet en regardant le changelog du paquet ou en comparant le numro exact de version avec celui indiqu dans lalerte de scurit Debian (Debian Security Advisory).

11.3.7

Comment est assure la scurit pour les versions testing et unstable ?

La rponse courte est : il ny en a pas. Testing et unstable voluent trs rapidement et lquipe de scurit na pas les ressources ncessaires pour les supporter correctement. Si vous dsirez un serveur scuris (et stable), nous vous encourageons fortement rester sur une version stable. Cependant, les secrtaires de scurit essaieront de corriger les problmes dans testing et unstable aprs leur correction dans la distribution stable. Dans certains cas, cependant, la branche unstable rcupre les correctifs de scurit trs rapidement puisque les mises jour de scurit sont gnralement disponibles en amont plus rapidement (pour les autres versions, comme celles introduites dans la branche stable, il est ncessaire de faire un rtro-portage).

Chapitre 11. Foire Aux Questions (FAQ)

190

11.3.8

Je possde un ancienne version de Debian, est-elle supporte par lquipe de scurit Debian ?

Malheureusement non. Lquipe de scurit Debian ne peut pas grer la fois la version stable (ofcieusement elle ne gre pas non plus la version unstable) et dautres anciennes versions. Cependant, vous pouvez esprer des mises jour de scurit pour une priode limite juste (habituellement plusieurs mois) aprs la sortie dune nouvelle distribution Debian.

11.3.9

Pourquoi ny a-t-il pas de miroirs ofciels de security.debian.org ?

Le but de security.debian.org est de mettre disposition les mises jour de scurit aussi vite et facilement que possible. Les miroirs ajouteraient un niveau de complexit qui nest pas ncessaire et qui provoquerait une certaine frustration en cas de non mise jour.

11.3.10

Jai vu la DSA 100 et la DSA 102, que sest-il pass avec la DSA 101 ?

Plusieurs vendeurs (la plupart pour GNU/Linux, mais aussi des drivs BSD) coordonnent les alertes de scurit pour certains incidents et se mettent daccord pour un calendrier particulier pour que tous les vendeurs puissent diffuser lalerte en mme temps. Cela a t dcid an de ne pas discriminer un vendeur en particulier qui aurait besoin de plus de temps (par exemple si le vendeur doit faire passer ses paquets par de longs tests de QA ou doit supporter plusieurs architectures ou distributions binaires). Notre propre quipe de scurit prpare galement les alertes lavance. De temps en temps, dautres problmes de scurit doivent tre traits avant que lalerte en attente puisse tre diffuse, cela laisse donc temporairement vide un ou plusieurs numros dalerte.

11.3.11

Comment joindre lquipe de scurit ?

Les informations de scurit peuvent tre envoyes security@debian.org (mailto: security@debian.org), qui est lu par tous les dveloppeurs Debian. Si vous disposez dinformations sensibles, veuillez utiliser team@security.debian.org (mailto:team@security. debian.org) qui nest lu que par les membres de lquipe de scurit. Si vous le dsirez, le courriel peut tre chiffr laide de la clef de contact de la scurit Debian (identiant de cl 0x363CCD95 (http://pgpkeys.pca.dfn.de:11371/pks/lookup?search= 0x363CCD95op=vindex)).

11.3.12

Quelles diffrence existe-t-il entre security@debian.org et debiansecurity@lists.debian.org ?

Lorsque vous envoyez des messages security@debian.org, ceux-ci sont envoys aux listes de diffusion des dveloppeurs (debian-private). Tous les dveloppeurs Debian sont inscrits cette liste et tous les envois cette liste sont tenus condentiels (i.e. ne sont pas archivs sur le site

Chapitre 11. Foire Aux Questions (FAQ)

191

web public). La liste de diffusion publique debian-security@lists.debian.org est ouverte tous ceux qui dsirent sy inscrire (http://www.debian.org/MailingLists/), et des archives sont disponible pour la recherche partir du site Internet ici (http://lists.debian.org/ search.html).

11.3.13

Comment puis-je aider lquipe de scurit Debian ?

En contribuant ce document, en rsolvant les FIXMEs ou en fournissant un nouveau contenu. La documentation est importante et rduit le nombre de rponses aux problmes courants. La traduction de ce document dans dautres langues est galement un bonne contribution. En empaquetant des applications utiles pour vrier ou amliorer la scurit dun systme Debian GNU/Linux. Si vous ntes pas un dveloppeur, remplissez un rapport de bogue WNPP (http://www.debian.org/devel/wnpp/) et proposez des logiciels que vous pensez utiles et qui ne sont pas encore disponibles. Contrlez les applications dans Debian ou aidez rsoudre les bogues et rapportez les problmes security@debian.org. Le travail dautres projets tels que Linux Kernel Security Audit Project (http://kernel-audit.sourceforge.net/) ou Linux Security-Audit Project (http://www.lsap.org/) accrot la scurit de Debian GNU/Linux car les contributions apporteront peut-tre une aide supplmentaire. Dans tous les cas, sil vous plat, passez en revue chaque problme avant de les rapporter security@debian.org. Si vous tes capable de fournir des rustines, cela acclrera le processus. Ne faites pas simplement suivre le courrier de Bugtraq tant donn quils lont dj reu. Fournir des informations supplmentaires est cependant toujours une bonne ide.

11.3.14

Qui compose lquipe de scurit ?

Lquipe de scurit Debian se rsume cinq membres et deux secrtaires. Lquipe de scurit elle-mme invite tout le monde se joindre lquipe.

11.3.15

Lquipe de scurit Debian vrie-t-elle chaque nouveau paquet dans Debian ?

Non, lquipe de scurit Debian ne vrie pas tous les paquets et il nexiste pas de vrication automatique (lintian) an de dceler de nouveaux paquets malveillants tant donn que ces vrications sont plutt impossibles dtecter automatiquement. Toutefois, les dveloppeurs sont compltement responsables du logiciel quils introduisent dans Debian et tout logiciel est dabord sign par un dveloppeur habilit. Celui-ci a la responsabilit danalyser la scurit du paquet quil maintient.

Chapitre 11. Foire Aux Questions (FAQ)

192

11.3.16

Combien de temps faudra-t-il debian pour rsoudre la vulnrabilit XXXX ?

Lquipe de scurit Debian travaille rapidement pour envoyer les alertes et produire des paquets corrigs pour la branche stable une fois que la vulnrabilit a t dcouverte. Un rapport publi sur la liste de diffusion debian-security (http://lists.debian.org/ debian-security/2001/debian-security-200112/msg00257.html) a montr que durant lanne 2001, il a fallu un temps moyen de 35 jours lquipe de scurit Debian pour corriger les vulnrabilits dcouvertes. Cependant, plus de 50 % de ces vulnrabilits ont t rpares dans une dure de dix jours, et plus de 15 % de celles-ci ont t rpares le jour mme de la sortie de lalerte. Cependant, quand ils posent cette question, les gens ont tendance oublier que : Les DSA ne sont pas envoyes avant que : les paquets soient disponibles pour toutes les architectures supportes par Debian (ce qui prend du temps pour les paquets qui font partie intgrante du systme de base, spcialement si lon considre le nombre darchitectures supportes dans la version stable) ; les nouveaux paquets sont ensuite tests pour sassurer quaucun nouveau bug nest introduit. Les paquets peuvent tre disponibles avant que la DSA ne soit envoye (dans la le darrive ou sur les miroirs). Debian est un projet bas sur le volontariat. La licence de Debian comprend une clause de non garantie . Si vous dsirez une analyse plus pousse du temps que cela prend lquipe de scurit Debian de travailler sur les vulnrabilits, vous devriez considrer que les nouvelles DSA (voir Alertes de scurit Debian page 126) publies sur le site web de scurit (http: //security.debian.org) et les mta-donnes utilises pour les gnrer incluent des liens vers les bases de donnes de vulnrabilits. Vous pouvez tlcharger les sources depuis le serveur web (depuis le CVS (http://cvs.debian.org)) ou utiliser les pages HTML pour dterminer le temps que cela prend Debian pour corriger les vulnrabilits et corrler cette donne avec les bases de donnes publiques.

193

Annexe A

La procdure de durcissement tape par tape


Vous trouverez ci-dessous une procdure post-installation pour durcir un systme Debian 2.2 GNU/Linux. Il sagit dune approche possible pour une telle procdure et celle-ci est oriente sur le renforcement des services rseaux. Elle est incluse pour prsenter le processus entier que vous pouvez utiliser pendant la conguration. Veuillez galement voir Liste des contrles de conguration. page 197. Faire une installation du systme (tenez compte des informations dans ce manuel concernant le partitionnement). Aprs linstallation du systme de base, allez dans linstallation personnalise, ne slectionnez pas de paquets de tches (task). Slectionnez les mots de passe ombrs (shadow). Passer les paquets en revue avec dselect et retirer les paquets non ncessaire mais slectionns auparavant avant de faire [I]nstall. Laisser le strict minimum de logiciels sur le systme. Actualiser tous les logiciels partir des paquets les plus rcents disponibles sur security.debian.org comme dcrit prcdemment dans Faire une mise jour de scurit page 40. Appliquer les suggestions prsentes dans ce manuel concernant les quotas utilisateur, les dnitions des connexion et lilo. Faire une liste de services actifs sur votre systme. Excuter ceci : $ ps aux $ netstat -pn -l -A inet # /usr/sbin/lsof -i | grep LISTEN Vous devrez installer lsof-2.2 pour que la troisime commande fonctionne ( lancer en root). Vous devriez faire attention car lsof peut traduire le mot LISTEN pour votre langue. An de retirer les services non ncessaires, dterminer avant tout quels paquets fournissent le service et comment ils sont lancs. Cette tche peut tre facilement ralise en vriant le programme qui coute la socket , lexemple suivant nous le montre en utilisant ces outils et dpkg : #!/bin/sh # FIXME: ceci est vite fait, mal fait ; remplacer par un bout

Chapitre A. La procdure de durcissement tape par tape

194

# de script plus robuste for i in sudo lsof -i | grep LISTEN | cut -d " " -f 1 |sort -u ; do pack=dpkg -S $i |grep bin |cut -f 1 -d : | uniq echo "Service $i is installed by $pack"; init=dpkg -L $pack |grep init.d/ if [ ! -z "$init" ]; then echo "and is run by $init" fi done Une fois les services indsirables trouvs, supprimer le paquet (avec dpkg -purge) ou utiliser update-rc.d (voir Dsactivation de services dmon page 33) de faon le retirer du systme de dmarrage. Pour les services inetd (lancs par le super-dmon), vrier quels services sont activs dans /etc/inetd.conf avec : $ grep -v "^#" /etc/inetd.conf | sort -u et dsactiver ceux qui ne sont pas ncessaire en commentant la ligne qui les inclut dans /etc /inetd.conf, en supprimant le paquet ou en utilisant update-inetd. Si vous avez des services wrapps (ceux utilisant /usr/sbin/tcpd), vrier que les chiers /etc/hosts.allow et /etc/hosts.deny sont congurs daprs vos rgles de services. Si le serveur utilise plus dune interface externe, vous pouvez avoir envie de limiter les services pour quils ncoutent que sur une seule dentre elles. Par exemple, si vous voulez un accs FTP interne, paramtrez le dmon FTP an quil ncoute que sur linterface dsire et non toutes les interfaces (cest--dire 0.0.0.0 :21). Redmarrez la machine ou passer en mode utilisateur seul puis revenez en mode multiutilisateur avec : $ init 1 (....) $ init 2 Vriez que les services sont maintenant disponibles et, si ncessaire, rptez les tapes cidessus. Installez maintenant les services ncessaires si vous ne lavez pas encore fait et congurez les correctement. Utilisez la commande shell suivante pour dterminer quel utilisateur est utilis pour lancer chaque service disponible : $ for i in /usr/sbin/lsof -i |grep LISTEN |cut -d " " -f 1 |sort -u; \ > do user=ps ef |grep $i |grep -v grep |cut -f 1 -d " " ; \ > echo "Le service $i a t lanc en tant quutilisateur $user"; done Pensez changer les utilisateur et groupe lanant ces services pour un utilisateur/groupe donn et peut-tre utiliser chroot pour augmenter le niveau de scurit. Vous pouvez procder en changeant les scripts de dmarrage de services de /etc/init.d. La plupart des services dans la Debian utilisent start-stop-daemon qui propose des options (--change-uid et --chroot) pour faire cela. Un petit avertissement concernant lutilisation de chroot pour des services est ncessaire : vous aurez peut-tre besoin de mettre tous les chiers installs par le paquet (utilisez dpkg -L) fournissant le service ainsi que les paquets dont il dpend dans lenvironnement chroot. Des informations sur la mise en place

Chapitre A. La procdure de durcissement tape par tape

195

dun environnement chroot pour le programme ssh peut tre trouve dans Environnement de chroot pour SSH page 217. Rpter les tapes ci-dessus an de vrier que seuls les services dsirs sont lancs et quils fonctionnent avec une combinaison utilisateur/groupe dsire. Tester les services installs an de voir si leur fonctionnement est bien celui souhait. Vrier le systme en utilisant un scanner de vulnrabilits (comme nessus) de faon dterminer les vulnrabilits du systme (mauvaise conguration, services vieux ou non ncessaires). Mettre en place des mesures contre les intrusions rseaux et htes comme snort et logcheck. Rpter ltape du scanner de rseaux et vrier que le systme de dtection dintrusion fonctionne correctement.

Pour les personnes vraiment paranoaques, vous pouvez galement prendre en considration ce qui suit : Ajouter au systme des possibilits de pare-feux, acceptant les connexions entrantes uniquement pour les services dnis et limitant les connexions sortantes celles autorises. Revrier linstallation avec une nouvelle valuation de vulnrabilit laide dun scanner de rseaux. Vrier les connexions sortantes en utilisant un scanner de rseaux depuis le systme jusqu un hte lextrieur et vrier que les connexions non voulues ne trouvent pas leur sortie. FIXME : cette procdure considre le durcissement de service, mais pas le renforcement du systme au niveau utilisateur, incluant des informations propos de la vrication des permissions utilisateurs, les chiers setuid et le gel des changements dans le systme en utilisant le systme de chiers ext2.

Chapitre A. La procdure de durcissement tape par tape

196

197

Annexe B

Liste des contrles de conguration.


Cet appendice rcapitule brivement les points des autres sections de ce manuel sous une forme condense de liste de contrles. Ceci est un petit rsum pour une personne qui a dj lu le manuel. Il existe dautres listes de contrles disponibles, y compris la scurisation de Linux pas pas (http://seifried.org/security/os/ linux/20020324-securing-linux-step-by-step.html) de Kurt Seifried et la liste de contrles de scurit Unix du CERT (http://www.cert.org/tech_tips/usc20_full. html). FIXME : Ceci est bas sur la version 1.4 du manuel et a peut-tre besoin dune mise jour. Limiter les accs physiques et les possibilits de dmarrage. Activer un mot de passe pour le BIOS. Dsactiver le dmarrage sur disquette/cdrom/. . . Mettre un mot de passe LILO ou GRUB (respectivement /etc/lilo.conf ou /boot /grub/menu.lst) ; vrier que le chier de conguration de LILO ou de GRUB est en lecture seule. Interdire le dmarrage par disquette sur le MBR en rcrivant par dessus le MBR (peut-tre pas ?) Partitionnement Sparer les donnes o les utilisateurs peuvent crire, les donnes non-systme, et les donnes dexcution qui changent rapidement dans leurs propres partitions Mettre les options de montage nosuid,noexec,nodev dans /etc/fstab sur les partitions ext2 tel que /tmp. Hygine pour les mots de passes et la scurit des connexions. Choisir un bon mot de passe root. Activer les mots de passes ombr et MD5. Installer et utiliser PAM. Ajouter le support du MD5 PAM et sassurer que (de manire gnrale) les entres dans les chiers /etc/pam.d/ qui autorisent laccs la machine ont un second champ dans le chier pam.d positionn requisite ou required. Modier /etc/pam.d/login pour que seul le root puisse se connecter localement. Indiquer galement les consoles (ttys) autorises dans /etc/security

Chapitre B. Liste des contrles de conguration.

198

/access.conf et gnralement congurer ce chier pour limiter le plus possible les connexions de root. Ajouter pam_limits.so si vous voulez xer des limites par utilisateur. Modier /etc/pam.d/passwd : augmenter la taille minimum du mot de passe (6 caractres peut-tre) et activer MD5. Ajouter le groupe wheel /etc/group si vous voulez ; ajouter lentre pam_wheel.so group=wheel au chier /etc/pam.d/su. Pour les contrles dusage par utilisateur, utiliser les entres appropries dans pam_listle.so. Avoir un chier /etc/pam.d/other et mettre en place une scurit reserre. Fixer des limites dans /etc/security/limits.conf (notez que /etc/limits nest pas utilis si vous utilisez PAM) Resserrer /etc/login.defs ; de mme que, si vous activez MD5 et/ou PAM, assurezvous de faire galement les changements ici. Dsactiver laccs par ftp lutilisateur root dans le chier /etc/ftpusers. Dsactiver la connexion par rseau de root ; utiliser su(1) ou sudo(1). (considrer linstallation du paquet sudo) Utiliser PAM pour imposer des contraintes supplmentaires sur les connexions ? Autres problmes de scurit locaux Modications du noyau (voir Conguration des options rseaux du noyau page 76) Rustines pour noyaux (voir Les utilitaires pour ajouter des rustines au noyau page 68) Resserrer les permissions sur les chiers journaux. (/var/log/{last,fail}log, journaux dApache) Vrier que la vrication de setuid est active dans /etc/checksecurity.conf Penser crer des chiers journaux en avec uniquement le droit dajout et des chiers de conguration invariants en utilisant chattr (systme de chiers ext2 uniquement) Mettre en place une vrication dintgrit des chiers (voir Vrier lintgrit des systmes de chiers page 74). Installer debsums Impression de tous les chiers journaux sur une imprimante locale ? Graver votre conguration sur un CD amorable et dmarrer dessus ? Dsactiver les modules pour le noyau ? Restreindre les accs rseaux Installer et congurer ssh (suggrer PermitRootLogin No dans /etc/ssh, PermitEmptyPasswords No ; noter galement dautres suggestions dans le texte) Envisager la dsactivation ou la suppression de in.telnetd. Gnralement, dsactiver les services inutiles dans le chier /etc/inetd.conf en utilisant update-inetd --disable (ou dsactiver inetd compltement, ou utiliser une solution de rechange tel xinetd ou rlinetd). Dsactiver les autres services inutiles ; courriel, ftp, DNS, www, etc. ne devraient pas tre lancs si vous nen avez pas besoin et veillez les surveiller rgulirement. Pour les services dont vous avez besoin, nutilisez pas simplement les programmes communs, rechercher des versions plus scurises disponibles dans Debian (ou depuis tout autre source). Peu importe celle que vous utiliserez, assurez-vous que vous compreniez bien les risques induits. Mettre en place des prisons chroot pour les utilisateurs et dmons extrieurs. Congurer un pare-feux et les tcpwrappers (voir hosts_access(5)) ; notez lastuce

Chapitre B. Liste des contrles de conguration.

199

pour /etc/hosts.deny dans le texte. Si vous utilisez ftp, mettre en place un serveur ftpd qui sera toujours lanc dans un environnement de chroot au rpertoire personnel de lutilisateur. Si vous utilisez X, dsactiver lauthentication xhost et utiliser plutt ssh ; de faon encore plus scurise, dsactiver X distance si vous le pouvez (ajouter -nolisten tcp la ligne de commande de X et dsactiver XDMCP dans le chier /etc/X11/xdm/xdm-config en plaant la valeur 0 requestPort). Dsactiver laccs aux imprimantes de lextrieur. Encrypter toute session IMAP ou POP via SSL ou ssh ; installez stunnel si vous voulez fournir ce service pour des utilisateurs de courriels distance. Mettre en place un hte de journaux et congurer les autres machines pour quelles envoient les journaux cet hte (/etc/syslog.conf). Scuriser BIND, Sendmail et tout autre dmon complexe (Lancer dans une prison chroot ; lancer en tant quutilisateur non-root) Installer snort ou un outil similaire. Faire sans NIS et RPC si vous le pouvez (dsactiver portmap). Problmes de rglement duquer les utilisateurs sur le pourquoi et le comment de vos rgles. Lorsque que vous interdisez quelque chose qui est gnralement disponible sur dautres systmes, fournissezleur une documentation qui explique comment arriver aux mmes rsultats dune manire plus scurise. Interdire lutilisation de protocoles qui utilisent des mots de passe en clair (telnet, rsh et similaire ; ftp, imap, http, . . .). Interdire les programmes qui utilisent la SVGAlib. Utiliser les quotas disques. Rester inform propos des problmes de scurit Sabonner aux listes de discussions lies la scurit. Congurer apt pour les mises jour de scurit ajouter une entre (ou plusieurs entres) /etc/apt/sources.list pour http ://security.debian.org/debian-security Se rappeler priodiquement de lancer apt-get update ; apt-get upgrade (mettre en place peut-tre une tche cron ?) comme expliqu dans Faire une mise jour de scurit page 40.

Chapitre B. Liste des contrles de conguration.

200

201

Annexe C

Paramtrer un IDS autonome


Vous pouvez facilement mettre en place un systme Debian autonome comme Systme de Dtection dIntrusion en utilisant snort. Quelques lignes de conduite : Installer un systme de base Debian et ne pas slectionner de paquets supplmentaires. Tlcharger et installer manuellement (avec dpkg) les paquets ncessaire (voir la liste de paquets installe ci-dessous). Tlcharger et installer ACID (Analysis Console for Intrusion Databases). ACID est actuellement empaquet pour Debian sous le nom dacidlab. Le paquet fournit une interface web graphique la sortie de snort. Il peut galement tre tlcharg depuis http: //www.cert.org/kb/acid/, http://acidlab.sourceforge.net ou http://www. andrew.cmu.edu/~rdanyliw/snort/. Vous pouvez galement vouloir lire le guide des statistiques de Snort (http://www.linuxdoc.org/HOWTO/Snort-Statistics-HOWTO/ index.html). Le systme devrait tre mis en place avec au moins deux interfaces : lune connecte un rseau de gestion (pour accder aux rsultats et maintenir le systme), lautre sans adresse IP lie au segment du rseau analyser. Le chier standard Debian /etc/network/interfaces normalement utilis pour congurer les cartes rseau ne peut pas tre utilis tant donn que les programmes ifup et ifdown attendent une adresse IP. Vous devez faire, simplement, ifconfig eth0 up. En plus de linstallation standard Debian, acidlab dpend galement des paquets php4 et apache entre autres. Tlchargez les paquets suivants (note : les versions peuvent diffrer en fonction de la distribution Debian que vous utilisez, cette liste est pour Debian Woody de septembre 2001) : ACID-0.9.5b9.tar.gz adduser_3.39_all.deb apache-common_1.3.20-1_i386.deb apache_1.3.20-1_i386.deb

Chapitre C. Paramtrer un IDS autonome

202

debconf_0.9.77_all.deb dialog_0.9a-20010527-1_i386.deb fileutils_4.1-2_i386.deb klogd_1.4.1-2_i386.deb libbz2-1.0_1.0.1-10_i386.deb libc6_2.2.3-6_i386.deb libdb2_2.7.7-8_i386.deb libdbd-mysql-perl_1.2216-2_i386.deb libdbi-perl_1.18-1_i386.deb libexpat1_1.95.1-5_i386.deb libgdbmg1_1.7.3-27_i386.deb libmm11_1.1.3-4_i386.deb libmysqlclient10_3.23.39-3_i386.deb libncurses5_5.2.20010318-2_i386.deb libpcap0_0.6.2-1_i386.deb libpcre3_3.4-1_i386.deb libreadline4_4.2-3_i386.deb libstdc++2.10-glibc2.2_2.95.4-0.010703_i386.deb logrotate_3.5.4-2_i386.deb mime-support_3.11-1_all.deb mysql-client_3.23.39-3_i386.deb mysql-common_3.23.39-3.1_all.deb mysql-server_3.23.39-3_i386.deb perl-base_5.6.1-5_i386.deb perl-modules_5.6.1-5_all.deb perl_5.6.1-5_i386.deb php4-mysql_4.0.6-4_i386.deb php4_4.0.6-1_i386.deb php4_4.0.6-4_i386.deb snort_1.7-9_i386.deb sysklogd_1.4.1-2_i386.deb zlib1g_1.1.3-15_i386.deb Paquets installs (dpkg -l) : ii ii ii ii ii ii ii ii ii ii adduser ae apache apache-common apt base-config base-files base-passwd bash bsdutils 3.39 962-26 1.3.20-1 1.3.20-1 0.3.19 0.33.2 2.2.0 3.1.10 2.03-6 2.10f-5.1

Chapitre C. Paramtrer un IDS autonome

203

ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii

console-data console-tools console-toolscron debconf debianutils dialog diff dpkg e2fsprogs elvis-tiny fbset fdflush fdutils fileutils findutils ftp gettext-base grep gzip hostname isapnptools joe klogd ldso libbz2-1.0 libc6 libdb2 libdbd-mysql-p libdbi-perl libexpat1 libgdbmg1 libmm11 libmysqlclient libncurses5 libnewt0 libpam-modules libpam-runtime libpam0g libpcap0 libpcre3 libpopt0 libreadline4 libssl09 libstdc++2.10 libstdc++2.10-

1999.08.29-11. 0.2.3-10.3 0.2.3-10.3 3.0pl1-57.2 0.9.77 1.13.3 0.9a-200105272.7-21 1.6.15 1.18-3.0 1.4-11 2.1-6 1.0.1-5 5.3-3 4.1-2 4.1-40 0.10-3.1 0.10.35-13 2.4.2-1 1.2.4-33 2.07 1.21-2 2.8-15.2 1.4.1-2 1.9.11-9 1.0.1-10 2.2.3-6 2.7.7-8 1.2216-2 1.18-1 1.95.1-5 1.7.3-27 1.1.3-4 3.23.39-3 5.2.20010318-2 0.50-7 0.72-9 0.72-9 0.72-9 0.6.2-1 3.4-1 1.4-1.1 4.2-3 0.9.4-5 2.95.2-13 2.95.4-0.01070

Chapitre C. Paramtrer un IDS autonome

204

ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii ii

libwrap0 lilo locales login makedev mawk mbr mime-support modutils mount mysql-client mysql-common mysql-server ncurses-base ncurses-bin netbase passwd pciutils perl perl-base perl-modules php4 php4-mysql ppp pppconfig procps psmisc pump sed setserial shellutils slang1 snort ssh sysklogd syslinux sysvinit tar tasksel tcpd telnet textutils update util-linux zlib1g

7.6-4 21.4.3-2 2.1.3-18 19990827-20 2.3.1-46.2 1.3.3-5 1.1.2-1 3.11-1 2.3.11-13.1 2.10f-5.1 3.23.39-3 3.23.39-3.1 3.23.39-3 5.0-6.0potato1 5.0-6.0potato1 3.18-4 19990827-20 2.1.2-2 5.6.1-5 5.6.1-5 5.6.1-5 4.0.6-4 4.0.6-4 2.3.11-1.4 2.0.5 2.0.6-5 19-2 0.7.3-2 3.02-5 2.17-16 2.0-7 1.3.9-1 1.7-9 1.2.3-9.3 1.4.1-2 1.48-2 2.78-4 1.13.17-2 1.0-10 7.6-4 0.16-4potato.1 2.0-2 2.11-1 2.10f-5.1 1.1.3-15

205

Annexe D

Conguration dun pare-feu pont


Ces informations sont fournies par Francois Bayart pour aider les utilisateurs mettre en place un pare-feu/pont avec le noyau 2.4.x et iptables. Des correctifs de noyau ne sont plus ncessaires car le code est maintenant une partie standard de la distribution du noyau Linux. Pour congurer le noyau avec la prise en charge ncessaire, excutez make menuconfig ou make xconfig. Dans la section Networking options, activez les options suivantes :

[*] Network packet filtering (replaces ipchains) [ ] Network packet filtering debugging (NEW) <*> 802.1d Ethernet Bridging [*] netfilter (firewalling) support (NEW)

Avertissement : vous devez dsactiver ceci si vous voulez appliquer des rgles de pare-feu ou sinon iptables ne fonctionnera pas :

[ ]

Network packet filtering debugging (NEW)

Ensuite, ajoutez les options correctes dans la section IP : Netlter Conguration. Puis, compilez et installez le noyau. Si vous dsirez le faire la sauce Debian, installez kernel-package et excutez make-kpkg pour crer un paquet noyau personnalis Debian que vous pouvez installer sur votre serveur en utilisant dpkg. Une fois que le nouveau noyau est compil et install, installez le paquet bridge-utils. Une fois que ces tapes sont compltes, vous pouvez terminer la conguration de votre pont. La section suivante prsente deux congurations diffrentes possibles pour le pont, chacune avec une carte rseau hypothtique ainsi que les commandes ncessaires.

Chapitre D. Conguration dun pare-feu pont

206

D.1

Un pont fournissant des fonctionnalits de translations dadresse (NAT) et de pare-feu

La premire conguration utilise le pont comme un pare-feu avec de la translation dadresse rseau (NAT) qui protge un serveur et des clients du rseau interne. Voici ci-dessous un diagramme de la conguration rseau :

Internet -- routeur ( 62.3.3.25 ) -- pont (62.3.3.26 gw 62.3.3.25 / 192.168.0. | | |-- serveur WWW (62.3.3.27 gw 62.3.3.25) | | rseau -- Zipowz (192.168.0.2 gw 192.168.

Les commandes suivantes prsentent comment ce pont peut tre congur.

# Cre linterface br0 /usr/sbin/brctl addbr br0 # Ajoute linterface Ethernet utiliser avec le pont /usr/sbin/brctl addif br0 eth0 /usr/sbin/brctl addif br0 eth1 # Active linterface Ethernet /sbin/ifconfig eth0 0.0.0.0 /sbin/ifconfig eth1 0.0.0.0 # # # # # # Configure le pont ethernet Le pont sera correct et invisible (pare-feu transparent). Il est invisible au traceroute et vous conservez la passerelle relle sur les autres machines. Maintenant, si vous le dsirez, vous pouvez configurer une passerelle sur votre pont et la choisir comme votre nouvelle passerelle pour les autres machines.

/sbin/ifconfig br0 62.3.3.26 netmask 255.255.255.248 broadcast 62.3.3.32 # Jai ajout cette IP interne pour crer ma translation dadresse ip addr add 192.168.0.1/24 dev br0 /sbin/route add default gw 62.3.3.25

Chapitre D. Conguration dun pare-feu pont

207

D.2

Un pont fournissant des fonctionnalits de pare-feu

Une seconde possibilit est un systme qui est mis en place comme un pare-feu transparent pour un rseau avec un espace dadresse IP public.

Internet -- routeur (62.3.3.25) -- pont (62.3.3.26) | | |-- serveur WWW (62.3.3.28 gw 62.3.3.25) | | |-- serveur de courriel (62.3.3.27 gw 62.3 Les commandes suivantes montrent comment ce pont peut tre congur. # Cre linterface br0 /usr/sbin/brctl addbr br0 # Ajouter linterface Ethernet utiliser avec le pont /usr/sbin/brctl addif br0 eth0 /usr/sbin/brctl addif br0 eth1 # Active linterface Ethernet /sbin/ifconfig eth0 0.0.0.0 /sbin/ifconfig eth1 0.0.0.0 # # # # # # Configure le pont Ethernet Le pont sera correct et invisible (pare-feu transparent). Il est invisible au traceroute et vous conservez la passerelle relle sur les autres machines. Maintenant, si vous le dsirez, vous pouvez configurer une passerelle sur votre pont et la choisir comme votre nouvelle passerelle pour les autres machines.

/sbin/ifconfig br0 62.3.3.26 netmask 255.255.255.248 broadcast 62.3.3.32 Si vous lancez un traceroute vers le serveur de courriel Linux, vous ne verrez pas le pont. Si vous voulez accder au pont avec ssh, vous devez avoir une passerelle ou vous devez tout dabord vous connecter sur un autre serveur comme le serveur de courriel , puis ensuite vous connecter sur le pont oar la carte rseau interne.

D.3

Rgles de base dIPtables

Voici un exemple des rgles de base qui pourraient tre utilises pour lune ou lautre des conguration.

Chapitre D. Conguration dun pare-feu pont

208

iptables iptables iptables iptables # # # # # # #

-F -P -A -A

FORWARD FORWARD DROP FORWARD -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -m state --state INV FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Quelques rgles amusantes, mais pas pour un iptables classique, dsol... Limite ICMP iptables -A FORWARD -p icmp -m limit --limit 4/s -j ACCEPT Correspond une chane de caractres, une bonne mthode simple pour bloquer certaines VIRUS trs rapidement iptables -I FORWARD -j DROP -p tcp -s 0.0.0.0/0 -m string --string "cmd.exe"

# Bloque toutes les connexions MySQL simplement pour tre sr iptables -A FORWARD -p tcp -s 0/0 -d 62.3.3.0/24 --dport 3306 -j DROP # Rgles du serveur de courriel Linux

# Autorise FTP-DATA (20) , FTP (21) , SSH (22) iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 62.3.3.27/32 --dport 20:22 -j ACCEP # Autorise le serveur de courriel e connecter lextrieur # Note : Ceci nest *pas* ncessaire pour les connexions prcdentes # (rappelez-vous : filtrage tat) et peut tre supprim. iptables -A FORWARD -p tcp -s 62.3.3.27/32 -d 0/0 -j ACCEPT # Rgles pour le serveur WWW # Autorise les connexions HTTP ( 80 ) avec le serveur WWW iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 62.3.3.28/32 --dport 80 -j ACCEPT # Autorise les connexions HTTPS ( 443 ) avec le serveur WWW iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 62.3.3.28/32 --dport 443 -j ACCEPT # Autorise les connexions sortantes du serveur WWW # Note : Ceci nest *pas* ncessaire pour les connexions prcdentes # (rappelez-vous : filtrage tat) et peut tre supprim. iptables -A FORWARD -p tcp -s 62.3.3.28/32 -d 0/0 -j ACCEPT

209

Annexe E

Exemple de script pour changer linstallation par dfaut de Bind.


Ce script automatise la procdure de changement de linstallation par dfaut du serveur de noms bind pour quil ne fonctionne pas en tant que super-utilisateur. Utilisez-le avec la plus extrme attention car il na pas t test rigoureusement. #!/bin/sh # Change la configuration par dfaut du bind de Debian pour quil # sexcute en tant quun utilisateur et un groupe non-root. # # ATT : Ce script na pas t test rigoureusement, veuillez vrifier # les changements effectus sur les scripts dinitialisation # (c) 2002 Javier Fernndez-Sanguino Pea # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 1, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # Please see the file COPYING for the complete copyright notice. #

restore() { # Au cas o, restaure le systme si le changement choue echo "WARN: Restoring to the previous setup since Im unable to properly c

Chapitre E. Exemple de script pour changer linstallation par dfaut de Bind.

210

echo "WARN: Please check the $INITDERR script." mv $INITD $INITDERR cp $INITDBAK $INITD }

USER=named GROUP=named INITD=/etc/init.d/bind INITDBAK=$INITD.preuserchange INITDERR=$INITD.changeerror START="start-stop-daemon --start --quiet --exec /usr/sbin/named -- -g $GROUP AWKS="awk /start-stop-daemon --start/ { print \"$START\"; noprint = 1; }; [ id -u -ne 0 ] && { echo "This program must be run by the root user" exit 1 } RUNUSER=ps eo user,fname |grep named |cut -f 1 -d " "

if [ "$RUNUSER" = "$USER" ] then echo "WARN: The name server running daemon is already running as $USER" echo "ERR: This script will not many any changes to your setup." exit 1 fi if [ ! -f $INITD ] then echo "ERR: This system does not have $INITD (which this script tries to c RUNNING=ps eo fname |grep named [ -z "$RUNNING" ] && \ echo "ERR: In fact the name server daemon is not even running (is it i echo "ERR: No changes will be made to your system" exit 1 fi # Vrifie si le groupe named existe if [ -z "grep $GROUP /etc/group" ] then echo "Creating group $GROUP:" addgroup $GROUP else echo "WARN: Group $GROUP already exists. Will not create it" fi # Pareil pour lutilisateur

Chapitre E. Exemple de script pour changer linstallation par dfaut de Bind.

211

if [ -z "grep $USER /etc/passwd" ] then echo "Creating user $USER:" adduser --system --home /home/$USER \ --no-create-home --ingroup $GROUP \ --disabled-password --disabled-login $USER else echo "WARN: The user $USER already exists. Will not create it" fi # Change le script dinit.d

# Tout dabord, on fait une sauvegarde (vrifie en premier quil ny en a pa # dj une) if [ ! -f $INITDBAK ] then cp $INITD $INITDBAK fi # Puis, utilise-la pour la changer cat $INITDBAK | eval $AWKS > $INITD

echo "WARN: The script $INITD has been changed, trying to test the changes." echo "Restarting the named daemon (check for errors here)." $INITD restart if [ $? -ne 0 ] then echo "ERR: Failed to restart the daemon." restore exit 1 fi

RUNNING=ps eo fname |grep named if [ -z "$RUNNING" ] then echo "ERR: Named is not running, probably due to a problem with the chang restore exit 1 fi # Vrifie que named fonctionne comme attendu RUNUSER=ps eo user,fname |grep named |cut -f 1 -d " " if [ "$RUNUSER" = "$USER" ]

Chapitre E. Exemple de script pour changer linstallation par dfaut de Bind.

212

then echo "All has gone well, named seems to be running now as $USER." else echo "ERR: The script failed to automatically change the system." echo "ERR: Named is currently running as $RUNUSER." restore exit 1 fi exit 0 Le script prcdent, excut sur le bind personnalis de Woody (Debian 3.0) produira le chier initd suivant aprs cration de lutilisateur et du groupe named : #!/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin test -x /usr/sbin/named || exit 0 start () { echo -n "Starting domain name service: named" start-stop-daemon --start --quiet \ --pidfile /var/run/named.pid --exec /usr/sbin/named echo "." } stop () { echo -n "Stopping domain name service: named" # --exec doesnt catch daemons running deleted instances of named, # as in an upgrade. Fortunately, --pidfile is only going to hit # things from the pidfile. start-stop-daemon --stop --quiet \ --pidfile /var/run/named.pid --name named echo "." } case "$1" in start) start ;; stop) stop ;;

Chapitre E. Exemple de script pour changer linstallation par dfaut de Bind.

213

restart|force-reload) stop sleep 2 start ;; reload) /usr/sbin/ndc reload ;; *)

echo "Usage: /etc/init.d/bind {start|stop|reload|restart|force-reload} exit 1 ;; esac exit 0

Chapitre E. Exemple de script pour changer linstallation par dfaut de Bind.

214

215

Annexe F

Mise jour de scurit protge par un pare-feu


Aprs une installation standard, un systme peut toujours avec des failles de scurit. moins de pouvoir tlcharger les mises jour pour les paquets vulnrables depuis un autre systme (ou si vous avez fait un miroir de security.debian.org pour utilisation en local), le systme devra tre connect lInternet pour les tlchargements. Cependant, ds que vous vous connecter lInternet, vous exposez le systme. Si lun de vos services locaux est vulnrable, votre systme peut mme tre compromis avant que la mise jour ne soit termine ! Cela peut sembler paranoaque, mais en fait une analyse du Projet Honeynet (http://www.honeynet.org) a dmontr que les systmes peuvent tre compromis en moins de trois jours, mme si le systme nest pas connu publiquement (i.e., non publi dans les enregistrements DNS). Lorsque vous faites une mise jour sur un systme non protg par un systme externe comme un pare-feu, il est possible de congurer correctement votre pare-feu pour restreindre les connexions nimpliquant que la mise jour de scurit elle-mme. Lexemple cidessous montre comment mettre en place des telles fonctionnalits de pare-feu, permettant les connexions depuis security.debian.org seulement et en historisant toutes les autres. FIXME : ajouter ladresse IP pour security.debian.org dans /etc/hosts (car sinon vous avez besoin que le DNS fonctionne). FIXME : tester cette conguration pour voir si cela fonctionne correctement FIXME : cela ne fonctionnera quavec les URL HTTO car ftp peut avoir besoin du module ip_conntrack_ftp ou dutiliser le mode passif. # iptables -F # iptables -L Chain INPUT (policy ACCEPT) target prot opt source

destination

Chapitre F. Mise jour de scurit protge par un pare-feu

216

Chain FORWARD (policy ACCEPT) target prot opt source

destination

Chain OUTPUT (policy ACCEPT) target prot opt source destination # iptables -P INPUT DROP # iptables -P FORWARD DROP # iptables -P OUTPUT DROP # iptables -A OUTPUT -d security.debian.org --dport 80 -j ACCEPT # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # iptables -A INPUT -p icmp -j ACCEPT # iptables -A INPUT -j LOG # iptables -A OUTPUT -j LOG # iptables -L Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ES ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 LOG all -- anywhere anywhere LOG level warnin Chain FORWARD (policy DROP) target prot opt source Chain OUTPUT (policy DROP) target prot opt source ACCEPT 80 -- anywhere LOG all -- anywhere

destination

destination security.debian.org anywhere LOG level warnin

217

Annexe G

Environnement de chroot pour SSH


Crer un environnement restreint pour SSH est un travail difcile cause de ses dpendances et du fait que, la diffrence dautres serveurs, SSH fournit un shell distant pour les utilisateurs. Cest pourquoi vous devrez galement considrer les applications que les utilisateurs auront le droit dutiliser dans lenvironnement. Si vous crer cette structure de chiers sous, par exemple /var/chroot/ssh, vous pouvez lancer le serveur ssh chroot avec cette commande : # chroot /var/chroot/ssh /sbin/sshd -f /etc/sshd_config Cependant, notez que pour que SSH fonctionne, la partition o le chroot est mis en place ne doit pas tre monte avec loption nodev. Si vous utilisez cette option, vous obtiendrez lerreur suivante : PRNG is not seeded car /dev/urandom ne fonctionne pas dans le chroot.

G.1

Utiliser libpam_chroot

La faon probablement la plus facile est dutiliser le paquet libpam_chroot fourni dans Debian. Une fois que vous lavez install, vous devez : modier /etc/pam.d/ssh pour utiliser ce module PAM, ajouter cette ligne la n du chier : session required pam_chroot.so positionner lenvironnement de chroot correct. Vous pouvez soit consulter /usr/share /doc/libpam-chroot/examples/, utiliser makejail et mettre en place un environnement Debian minimal avec debootstrap. Assurez-vous que lenvironnement inclut les priphriques ncessaires /dev/ptmx et /dev/pty* et le sous-rpertoire /dev/pts/ (excuter MAKEDEV dans le rpertoire /dev devrait tre sufsant). congurer /etc/security/chroot.conf pour que les utilisateurs que vous dterminez soient chroots dans le rpertoire que vous avez mis en place auparavant. Vous pouvez vouloir ajouter des rpertoires indpendants pour diffrents utilisateurs an quils ne puissent voir ni le systme complet, ni les uns les autres.

Chapitre G. Environnement de chroot pour SSH

218

congurer SSH : si vous utilisez une version plus rcente (aprs 3.4) dOpenSSH qui utilise la sparation de privilges, vous devrez le dsactiver avec : UsePrivilegeSeparation no Notez que cela rduira la scurit de votre systme car le serveur OpenSSH fonctionnera avec lutilisateur root. Cela veut dire que si une attaque distance est trouve sur OpenSSH, un attaquant obtiendra les droits de root au lieu de ceux de sshd, ce qui compromettra le systme en entier. 1 Note : cette information est galement disponible (et peut-tre plus jour) dans /usr/share /doc/libpam-chroot/README.Debian.gz, veuillez consulter ce chier pour des informations plus jour avant dentreprendre les tapes ci-dessus.

G.2

Crer lenvironnement automatiquement (la manire simple)

Vous pouvez facilement crer un environnement restraine avec le paquet makejail puisquil prend automatiquement soin de tracer le dmon serveur (avec strace), et lexcute sous lenvironnement restreint. Lavantage de programmes qui gnrent automatiquement lenvironnement de chroot est quils sont capables de copier tout paquet vers lenvironnement de chroot (en suivant mme les dpendances de paquet et en sassurant quil est complet). Fournir les applications aux utilisateurs est donc plus facile. Pour mettre en place lenvironnement en utilisant les exemples fournis par makejail, excutez simplement la commande suivante : # makejail /usr/share/doc/makejail/examples/sshd.py Lisez le chier dexemple pour voir quels autres changements doivent tre raliss dans lenvironnement. Certains de ces changements, comme la copie des rpertoires personnels des utilisateurs, ne peuvent tre raliss automatiquement. Limitez galement lexposition des informations sensibles en ne copiant que les donnes dun nombre donn dutilisateurs des chiers /etc/shadow ou /etc/group. Lenvironnement dexemple suivant a t (lgrement) test et est construit avec le chier de conguration fourni par le paquet et inclut le paquet fileutils : . |-| | |
1

bin |-- ash |-- bash |-- chgrp

Si vous utilisez un noyau implmentant le contrle daccs obligatoire ( Mandatory Access Control ou MAC) (RSBAC/SElinux), vous pouvez viter de changer cette conguration en autorisant simplement lutilisateur sshd excuter lappel systme chroot().

Chapitre G. Environnement de chroot pour SSH

219

| |-| |-| |-| |-| |-| |-| |-| |-| |-| |-| |-| |-| |-| |-| |-| |-| |-| |-| |-| |-| |-| |-| |-| -|-- dev | |-| |-| |-| |-(...) | |-| |-(...) | -|-- etc | |-| | | | | |-| |-| |-| |-| |-| |-| |-| |--

chmod chown cp csh -> /etc/alternatives/csh dd df dir fdflush ksh ln ls mkdir mknod mv rbash -> bash rm rmdir sh -> bash sync tcsh touch vdir zsh -> /etc/alternatives/zsh zsh4 null ptmx pts ptya0 tty tty0 urandom alternatives |-- csh -> /bin/tcsh -- zsh -> /bin/zsh4 environment hosts hosts.allow hosts.deny ld.so.conf localtime -> /usr/share/zoneinfo/Europe/Madrid motd nsswitch.conf

Chapitre G. Environnement de chroot pour SSH

220

| | | | | | | | | | | | | | | | | | | | | | |-| |-| | | | | | | | | | | | | | | | | | | | |

|-|-| | |-|-|-| | | | | | |-|---

pam.conf pam.d |-- other -- ssh passwd resolv.conf security |-- access.conf |-- chroot.conf |-- group.conf |-- limits.conf |-- pam_env.conf -- time.conf shadow shells ssh |-- moduli |-- ssh_host_dsa_key |-- ssh_host_dsa_key.pub |-- ssh_host_rsa_key |-- ssh_host_rsa_key.pub -- sshd_config home -- userX lib |-- ld-2.2.5.so |-- ld-linux.so.2 -> ld-2.2.5.so |-- libc-2.2.5.so |-- libc.so.6 -> libc-2.2.5.so |-- libcap.so.1 -> libcap.so.1.10 |-- libcap.so.1.10 |-- libcrypt-2.2.5.so |-- libcrypt.so.1 -> libcrypt-2.2.5.so |-- libdl-2.2.5.so |-- libdl.so.2 -> libdl-2.2.5.so |-- libm-2.2.5.so |-- libm.so.6 -> libm-2.2.5.so |-- libncurses.so.5 -> libncurses.so.5.2 |-- libncurses.so.5.2 |-- libnsl-2.2.5.so |-- libnsl.so.1 -> libnsl-2.2.5.so |-- libnss_compat-2.2.5.so |-- libnss_compat.so.2 -> libnss_compat-2.2.5.so |-- libnss_db-2.2.so |-- libnss_db.so.2 -> libnss_db-2.2.so |-- libnss_dns-2.2.5.so

Chapitre G. Environnement de chroot pour SSH

221

| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|---

libnss_dns.so.2 -> libnss_dns-2.2.5.so libnss_files-2.2.5.so libnss_files.so.2 -> libnss_files-2.2.5.so libnss_hesiod-2.2.5.so libnss_hesiod.so.2 -> libnss_hesiod-2.2.5.so libnss_nis-2.2.5.so libnss_nis.so.2 -> libnss_nis-2.2.5.so libnss_nisplus-2.2.5.so libnss_nisplus.so.2 -> libnss_nisplus-2.2.5.so libpam.so.0 -> libpam.so.0.72 libpam.so.0.72 libpthread-0.9.so libpthread.so.0 -> libpthread-0.9.so libresolv-2.2.5.so libresolv.so.2 -> libresolv-2.2.5.so librt-2.2.5.so librt.so.1 -> librt-2.2.5.so libutil-2.2.5.so libutil.so.1 -> libutil-2.2.5.so libwrap.so.0 -> libwrap.so.0.7.6 libwrap.so.0.7.6 security |-- pam_access.so |-- pam_chroot.so |-- pam_deny.so |-- pam_env.so |-- pam_filter.so |-- pam_ftp.so |-- pam_group.so |-- pam_issue.so |-- pam_lastlog.so |-- pam_limits.so |-- pam_listfile.so |-- pam_mail.so |-- pam_mkhomedir.so |-- pam_motd.so |-- pam_nologin.so |-- pam_permit.so |-- pam_rhosts_auth.so |-- pam_rootok.so |-- pam_securetty.so |-- pam_shells.so |-- pam_stress.so |-- pam_tally.so |-- pam_time.so |-- pam_unix.so

Chapitre G. Environnement de chroot pour SSH

222

| | | | | | | |-| |-| | | | | | | | | | | | | | | | | | | | | | | | | | | | --

|-|-|-|-|-|---

pam_unix_acct.so -> pam_unix.so pam_unix_auth.so -> pam_unix.so pam_unix_passwd.so -> pam_unix.so pam_unix_session.so -> pam_unix.so pam_userdb.so pam_warn.so pam_wheel.so

sbin -- start-stop-daemon usr |-- bin | |-- dircolors | |-- du | |-- install | |-- link | |-- mkfifo | |-- shred | |-- touch -> /bin/touch | -- unlink |-- lib | |-- libcrypto.so.0.9.6 | |-- libdb3.so.3 -> libdb3.so.3.0.2 | |-- libdb3.so.3.0.2 | |-- libz.so.1 -> libz.so.1.1.4 | -- libz.so.1.1.4 |-- sbin | -- sshd -- share |-- locale | -- es | |-- LC_MESSAGES | | |-- fileutils.mo | | |-- libc.mo | | -- sh-utils.mo | -- LC_TIME -> LC_MESSAGES -- zoneinfo -- Europe -- Madrid var -- run |-- sshd -- sshd.pid

27 directories, 733 files

Chapitre G. Environnement de chroot pour SSH

223

G.3

Modier SSH pour activer la fonctionnalit de chroot

Le serveur sshd de Debian ne vous autorisera pas restreindre les mouvements des utilisateurs via le serveur tant donn que celui-ci est dpourvu de la fonction chroot que le programme commerciale sshd2 possde (utilisation de ChrootGroups ou ChrootUsers , voir sshd2_config(5)). Toutefois, une rustine est disponible an de vous permettre de le faire, elle peut tre trouve depuis le rapport de bogue 139047 (http://bugs.debian.org/ 139047). Elle sera peut-tre applique au paquet OpenSSH dans le futur. Emmanuel Lacour dispose de paquets Debian ssh pour Sarge avec cette fonctionnalit. Ils sont disponibles http://debian.home-dn.net/sarge/ssh/. Notez que ceux-ci peuvent ne pas tre jour, effectuer ltape de compilation est donc recommand. Une description de toutes les tapes ncessaires peut-tre trouve sur http://mail. incredimail.com/howto/openssh/ (pratiquement tout est applicable Debian mme sil est question de la RedHat 7.2). Aprs lapplication de la rustine, vous devez simplement modier le /etc/passwd en changeant le chemin personnel des utilisateurs (avec le jeton spcial /./) : joeuser:x:1099:1099:Joe Random User:/home/joe/./:/bin/bash Ceci restreindra la fois les accs distants au shell, ainsi que la copie via le tunnel ssh. Assurez-vous que tous les programmes et bibliothques sont bien prsents dans le chemin chroot pour les utilisateurs. Ces chiers devraient appartenir root pour viter les fraudes de lutilisateur (tel la sortie dune prison chroot). Un chantillon pourrait inclure ceci : ./bin: total 660 drwxr-xr-x drwxr-xr-x -r-xr-xr-x -r-xr-xr-x -r-xr-xr-x -rwxr-xr-x -r-xr-xr-x -r-xr-xr-x lrwxrwxrwx ./etc: total 24 drwxr-xr-x drwxr-xr-x -rw-r--r--rw-r--r--rw-r--r--rw-r--r--

2 8 1 1 1 1 1 1 1

root guest root root root root root root root

root guest root root root root root root root

4096 4096 531160 43916 16684 23960 9916 24780 4

Mar Mar Feb Nov Nov Mar Jul Nov Mar

18 15 6 29 29 18 26 29 30

13:36 16:53 22:36 13:19 13:19 13:36 2001 13:19 16:29

. .. bash ls mkdir more pwd rm sh -> bash

2 8 1 1 1 1

root guest root root root root

root guest root root root root

4096 4096 54 428 44 52

Mar Mar Mar Mar Mar Mar

15 15 15 15 15 15

16:13 16:53 13:23 15:56 15:53 13:23

. .. group hosts passwd shells

Chapitre G. Environnement de chroot pour SSH

224

./lib: total 1848 drwxr-xr-x 2 root drwxr-xr-x 8 guest -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rw-r--r-1 root -rw-r--r-1 root -rw-r--r-1 root -rw-r--r-1 root -rw-r--r-1 root libnss_files.so.2 -rw-r--r-1 root -rw-r--r-1 root -rw-r--r-1 root -rw-r--r-1 root -rw-r--r-1 root ./usr: total 16 drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x ./usr/bin: total 340 drwxr-xr-x drwxr-xr-x -rwxr-xr-x -rwxr-xr-x -r-xr-xr-x -rwxr-xr-x -r-sr-xr-x -rwxr-xr-x

root guest root root root root root root root root root root root root

4096 4096 92511 1170812 20900 9436 248132 71332 34144 29420 105498 25596 7760 24328

Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar

18 15 15 15 15 15 15 15 15 15 15 15 15 15

13:37 16:53 12:49 12:49 13:01 12:49 12:48 13:00 16:10 12:57 12:51 12:51 12:59 12:57

. .. ld-linux.so.2 libc.so.6 libcrypt.so.1 libdl.so.2 libncurses.so.5 libnsl.so.1

libpam.so.0 libpthread.so.0 librt.so.1 libutil.so.1 libwrap.so.0

4 8 2 2

root guest root root

root guest root root

4096 4096 4096 4096

Mar Mar Mar Mar

15 15 15 15

13:00 16:53 15:55 15:37

. .. bin lib

2 4 1 1 1 1 1 1

root root root root root root root root

root root root root root root root root

4096 4096 10332 13052 25432 43768 218456 9692

Mar Mar Mar Mar Mar Mar Mar Mar

15 15 15 15 15 15 15 15

15:55 13:00 15:55 13:13 12:40 15:15 12:40 13:17

. .. env id scp sftp ssh tty

./usr/lib: total 852 drwxr-xr-x 2 root drwxr-xr-x 4 root -rw-r--r-1 root libcrypto.so.0.9.6 -rw-r--r-1 root -rwxr-xr-x 1 root

root root root root root

4096 Mar 15 15:37 . 4096 Mar 15 13:00 .. 771088 Mar 15 13:01 54548 Mar 15 13:00 libz.so.1 23096 Mar 15 15:37 sftp-server

Chapitre G. Environnement de chroot pour SSH

225

G.4

Environnement cr manuellement (la manire difcile)

Il est possible de crer un environnement, en utilisant une mthode dessai-et-derreur, en surveillant les traces du serveur sshd et les chiers journaux pour dterminer les chiers ncessaires. Lenvironnement suivant, fourni par Jos Luis Ledesma, est un listing exemple des chiers dans un environnement de chroot pour ssh : 2 .: total 36 drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x ./bin: total 8368 drwxr-xr-x drwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -r-xr-xr-x -rwxr-xr-x -rwxr-xr-x
2

9 root root 4096 Jun 5 10:05 ./ 11 root root 4096 Jun 3 13:43 ../ 2 root root 4096 Jun 4 12:13 bin/ 2 root root 4096 Jun 4 12:16 dev/ 4 root root 4096 Jun 4 12:35 etc/ 3 root root 4096 Jun 4 12:13 lib/ 2 root root 4096 Jun 4 12:35 sbin/ 2 root root 4096 Jun 4 12:32 tmp/ 2 root root 4096 Jun 4 12:16 usr/

2 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

root root root root root root root root root root root root root root root root root root root root root root

root root root root root root root root root root root root root root root root root root root root root root

4096 Jun 4 12:13 ./ 4096 Jun 5 10:05 ../ 109855 Jun 3 13:45 a2p* 387764 Jun 3 13:45 bash* 36365 Jun 3 13:45 c2ph* 20629 Jun 3 13:45 dprofpp* 6956 Jun 3 13:46 env* 158116 Jun 3 13:45 fax2ps* 104008 Jun 3 13:45 faxalter* 89340 Jun 3 13:45 faxcover* 441584 Jun 3 13:45 faxmail* 96036 Jun 3 13:45 faxrm* 107000 Jun 3 13:45 faxstat* 77832 Jun 4 11:46 grep* 19597 Jun 3 13:45 h2ph* 46979 Jun 3 13:45 h2xs* 10420 Jun 3 13:46 id* 4528 Jun 3 13:46 ldd* 111386 Jun 4 11:46 less* 26168 Jun 3 13:45 login* 49164 Jun 3 13:45 ls* 11600 Jun 3 13:45 mkdir*

Notez quils ny a pas de chiers SETUID. Cela rend plus difcile pour les utilisateurs distants de schapper de lenvironnement de chroot. Cependant, il empche galement les utilisateurs de changer leurs mots de passe, car le programme passwd ne peut pas modicer les chiers /etc/passwd ou /etc/shadow.

Chapitre G. Environnement de chroot pour SSH

226

-rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -r-xr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rws--x--x -rwxr-xr-x -rws--x--x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x ./dev: total 8 drwxr-xr-x drwxr-xr-x crw-r--r-./etc: total 208 drwxr-xr-x

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root

root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root

24780 Jun 3 13:45 more* 154980 Jun 3 13:45 pal2rgb* 27920 Jun 3 13:46 passwd* 4241 Jun 3 13:45 pl2pm* 2350 Jun 3 13:45 pod2html* 7875 Jun 3 13:45 pod2latex* 17587 Jun 3 13:45 pod2man* 6877 Jun 3 13:45 pod2text* 3300 Jun 3 13:45 pod2usage* 3341 Jun 3 13:45 podchecker* 2483 Jun 3 13:45 podselect* 82412 Jun 4 11:46 ps* 36365 Jun 3 13:45 pstruct* 7120 Jun 3 13:45 pwd* 179884 Jun 3 13:45 rgb2ycbcr* 20532 Jun 3 13:45 rm* 6720 Jun 4 10:15 rmdir* 14705 Jun 3 13:45 s2p* 28764 Jun 3 13:46 scp* 385000 Jun 3 13:45 sendfax* 67548 Jun 3 13:45 sendpage* 88632 Jun 3 13:46 sftp* 387764 Jun 3 13:45 sh* 744500 Jun 3 13:46 slogin* 14523 Jun 3 13:46 splain* 744500 Jun 3 13:46 ssh* 570960 Jun 3 13:46 ssh-add* 502952 Jun 3 13:46 ssh-agent* 575740 Jun 3 13:46 ssh-keygen* 383480 Jun 3 13:46 ssh-keyscan* 39 Jun 3 13:46 ssh_europa* 107252 Jun 4 10:14 strace* 8323 Jun 4 10:14 strace-graph* 158088 Jun 3 13:46 thumbnail* 6312 Jun 3 13:46 tty* 55904 Jun 4 11:46 useradd* 585656 Jun 4 11:47 vi* 6444 Jun 4 11:45 whoami*

2 root root 4096 Jun 4 12:16 ./ 9 root root 4096 Jun 5 10:05 ../ 1 root root 1, 9 Jun 3 13:43 urandom

4 root root 4096 Jun 4 12:35 ./

Chapitre G. Environnement de chroot pour SSH

227

drwxr-xr-x 9 root -rw------- 1 root -rw-r--r-- 1 root -rw-r--r-- 1 root -rw-r--r-- 1 root -rw-r--r-- 1 root -rw-r--r-- 1 root -rw-r--r-- 1 root -rw-r--r-- 1 root -rw-r--r-- 1 root drwxr-xr-x 2 root -rw-r--r-- 1 root -rw-r--r-- 1 root -rw-r--r-- 1 root -rw-r--r-- 1 root -rw-r--r-- 1 root drwxr-xr-x 2 root -rw-r----- 1 root -rw------- 1 root -rw-r----- 1 root -rw-r--r-- 1 root -rw-r--r-- 1 root -rw------- 1 root -rw-r--r-- 1 root -rw------- 1 root -rw-r--r-- 1 root -rw------- 1 root -rw-r--r-- 1 root -rw-r--r-- 1 root ./etc/pam.d: total 24 drwxr-xr-x 2 root drwxr-xr-x 4 root lrwxrwxrwx 1 root -rw-r--r-- 1 root -rw-r--r-- 1 root -rw-r--r-- 1 root -rw-r--r-- 1 root ./etc/security: total 32 drwxr-xr-x 2 root drwxr-xr-x 4 root -rw-r--r-- 1 root -rw-r--r-- 1 root -rw-r--r-- 1 root -rw-r--r-- 1 root

root root root root root root root root root root root root root root root root root root root root root root root root root root root root root

4096 Jun 5 10:05 ../ 0 Jun 4 11:46 .pwd.lock 653 Jun 3 13:46 group 242 Jun 4 11:33 host.conf 857 Jun 4 12:04 hosts 1050 Jun 4 11:29 ld.so.cache 304 Jun 4 11:28 ld.so.conf 235 Jun 4 11:27 ld.so.conf~ 88039 Jun 3 13:46 moduli 1342 Jun 4 11:34 nsswitch.conf 4096 Jun 4 12:02 pam.d/ 28 Jun 4 12:00 pam_smb.conf 2520 Jun 4 11:57 passwd 7228 Jun 3 13:48 profile 1339 Jun 4 11:33 protocols 274 Jun 4 11:44 resolv.conf 4096 Jun 3 13:43 security/ 1178 Jun 4 11:51 shadow 80 Jun 4 11:45 shadow1178 Jun 4 11:48 shadow.old 161 Jun 3 13:46 shells 1144 Jun 3 13:46 ssh_config 668 Jun 3 13:46 ssh_host_dsa_key 602 Jun 3 13:46 ssh_host_dsa_key.pub 527 Jun 3 13:46 ssh_host_key 331 Jun 3 13:46 ssh_host_key.pub 883 Jun 3 13:46 ssh_host_rsa_key 222 Jun 3 13:46 ssh_host_rsa_key.pub 2471 Jun 4 12:15 sshd_config

root root root root root root root

4096 Jun 4 12:02 ./ 4096 Jun 4 12:35 ../ 4 Jun 4 12:02 other -> sshd 318 Jun 3 13:46 passwd 546 Jun 4 11:36 ssh 479 Jun 4 12:02 sshd 370 Jun 3 13:46 su

root root root root root root

4096 Jun 3 13:43 ./ 4096 Jun 4 12:35 ../ 1971 Jun 3 13:46 access.conf 184 Jun 3 13:46 chroot.conf 2145 Jun 3 13:46 group.conf 1356 Jun 3 13:46 limits.conf

Chapitre G. Environnement de chroot pour SSH

228

-rw-r--r-- 1 root root -rw-r--r-- 1 root root ./lib: total 8316 drwxr-xr-x 3 root root drwxr-xr-x 9 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root lrwxrwxrwx 1 root root -rwxr-xr-x 1 root root lrwxrwxrwx 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root lrwxrwxrwx 1 root root -rwxr-xr-x 1 root root lrwxrwxrwx 1 root root libpam_misc.so.0.72* -rwxr-xr-x 1 root root lrwxrwxrwx 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root -rwxr-xr-x 1 root root drwxr-xr-x 2 root root

2858 Jun 3 13:46 pam_env.conf 2154 Jun 3 13:46 time.conf

4096 Jun 4 12:13 ./ 4096 Jun 5 10:05 ../ 1024 Jun 4 11:51 cracklib_dict.hwm 214324 Jun 4 11:51 cracklib_dict.pwd 11360 Jun 4 11:51 cracklib_dict.pwi 342427 Jun 3 13:46 ld-linux.so.2* 4061504 Jun 3 13:46 libc.so.6* 15 Jun 4 12:11 libcrack.so -> libcrack.so.2.7* 15 Jun 4 12:11 libcrack.so.2 -> libcrack.so.2.7* 33291 Jun 4 11:39 libcrack.so.2.7* 60988 Jun 3 13:46 libcrypt.so.1* 71846 Jun 3 13:46 libdl.so.2* 27762 Jun 3 13:46 libhistory.so.4.0* 17 Jun 4 12:12 libncurses.so.4 -> libncurses.so.4.2* 503903 Jun 3 13:46 libncurses.so.4.2* 17 Jun 4 12:12 libncurses.so.5 -> libncurses.so.5.0* 549429 Jun 3 13:46 libncurses.so.5.0* 369801 Jun 3 13:46 libnsl.so.1* 142563 Jun 4 11:49 libnss_compat.so.1* 215569 Jun 4 11:49 libnss_compat.so.2* 61648 Jun 4 11:34 libnss_dns.so.1* 63453 Jun 4 11:34 libnss_dns.so.2* 63782 Jun 4 11:34 libnss_dns6.so.2* 205715 Jun 3 13:46 libnss_files.so.1* 235932 Jun 3 13:49 libnss_files.so.2* 204383 Jun 4 11:33 libnss_nis.so.1* 254023 Jun 4 11:33 libnss_nis.so.2* 256465 Jun 4 11:33 libnss_nisplus.so.2* 14 Jun 4 12:12 libpam.so.0 -> libpam.so.0.72* 31449 Jun 3 13:46 libpam.so.0.72* 19 Jun 4 12:12 libpam_misc.so.0 -> 8125 Jun 3 13:46 libpam_misc.so.0.72* 15 Jun 4 12:12 libpamc.so.0 -> libpamc.so.0.72* 10499 Jun 3 13:46 libpamc.so.0.72* 176427 Jun 3 13:46 libreadline.so.4.0* 44729 Jun 3 13:46 libutil.so.1* 70254 Jun 3 13:46 libz.a* 13 Jun 4 12:13 libz.so -> libz.so.1.1.3* 13 Jun 4 12:13 libz.so.1 -> libz.so.1.1.3* 63312 Jun 3 13:46 libz.so.1.1.3* 4096 Jun 4 12:00 security/

Chapitre G. Environnement de chroot pour SSH

229

./lib/security: total 668 drwxr-xr-x 2 root drwxr-xr-x 3 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root ./sbin: total 3132 drwxr-xr-x 2 root drwxr-xr-x 9 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root

root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root

4096 Jun 4 12:00 ./ 4096 Jun 4 12:13 ../ 10067 Jun 3 13:46 pam_access.so* 8300 Jun 3 13:46 pam_chroot.so* 14397 Jun 3 13:46 pam_cracklib.so* 5082 Jun 3 13:46 pam_deny.so* 13153 Jun 3 13:46 pam_env.so* 13371 Jun 3 13:46 pam_filter.so* 7957 Jun 3 13:46 pam_ftp.so* 12771 Jun 3 13:46 pam_group.so* 10174 Jun 3 13:46 pam_issue.so* 9774 Jun 3 13:46 pam_lastlog.so* 13591 Jun 3 13:46 pam_limits.so* 11268 Jun 3 13:46 pam_listfile.so* 11182 Jun 3 13:46 pam_mail.so* 5923 Jun 3 13:46 pam_nologin.so* 5460 Jun 3 13:46 pam_permit.so* 18226 Jun 3 13:46 pam_pwcheck.so* 12590 Jun 3 13:46 pam_rhosts_auth.so* 5551 Jun 3 13:46 pam_rootok.so* 7239 Jun 3 13:46 pam_securetty.so* 6551 Jun 3 13:46 pam_shells.so* 55925 Jun 4 12:00 pam_smb_auth.so* 12678 Jun 3 13:46 pam_stress.so* 11170 Jun 3 13:46 pam_tally.so* 11124 Jun 3 13:46 pam_time.so* 45703 Jun 3 13:46 pam_unix.so* 45703 Jun 3 13:46 pam_unix2.so* 45386 Jun 3 13:46 pam_unix_acct.so* 45386 Jun 3 13:46 pam_unix_auth.so* 45386 Jun 3 13:46 pam_unix_passwd.so* 45386 Jun 3 13:46 pam_unix_session.so* 9726 Jun 3 13:46 pam_userdb.so* 6424 Jun 3 13:46 pam_warn.so* 7460 Jun 3 13:46 pam_wheel.so*

root root root root root root root

4096 Jun 4 12:35 ./ 4096 Jun 5 10:05 ../ 178256 Jun 3 13:46 choptest* 184032 Jun 3 13:46 cqtest* 81096 Jun 3 13:46 dialtest* 1142128 Jun 4 11:28 ldconfig* 2868 Jun 3 13:46 lockname*

Chapitre G. Environnement de chroot pour SSH

230

-rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x ./tmp: total 8 drwxr-xr-x drwxr-xr-x ./usr: total 8 drwxr-xr-x drwxr-xr-x lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx

1 1 1 1 1 1 1 1 1 1

root root root root root root root root root root

root root root root root root root root root root

3340 Jun 3 13:46 ondelay* 376796 Jun 3 13:46 pagesend* 13950 Jun 3 13:46 probemodem* 9234 Jun 3 13:46 recvstats* 64480 Jun 3 13:46 sftp-server* 744412 Jun 3 13:46 sshd* 30750 Jun 4 11:46 su* 194632 Jun 3 13:46 tagtest* 69892 Jun 3 13:46 tsitest* 43792 Jun 3 13:46 typetest*

2 root root 4096 Jun 4 12:32 ./ 9 root root 4096 Jun 5 10:05 ../

2 9 1 1 1

root root root root root

root root root root root

4096 Jun 4 12:16 ./ 4096 Jun 5 10:05 ../ 7 Jun 4 12:14 bin -> ../bin// 7 Jun 4 11:33 lib -> ../lib// 8 Jun 4 12:13 sbin -> ../sbin//

231

Annexe H

Environnement de chroot pour Apache


H.1 Introduction

Lutilitaire chroot est souvent utilis pour emprisonner un dmon dans une arborescence restreint. Vous pouvez lutiliser pour isoler des services dautres services, pour que les problmes de scurit dun paquet logiciel ne mettent pas en pril le serveur tout entier. Quand vous utiliser le script makejail, mettre en place et mettre jour larborescence chroot est beaucoup plus facile. FIXME : Apache can also be chrooted using http://www.modsecurity.org which is available in libapache-mod-security (for Apache 1.x) and libapache2-mod-security (for Apache 2.x).

H.1.1

Licence

Ce document est copyright 2002 Alexandre Ratti. Il est publi sous une double licence, la GPL version 2 (GNU General Public License) et la GNU-FDL 1.2 (GNU Free Documentation Licence) et est inclus dans ce manuel avec sa permission explicite (depuis le document dorigine (http://www.gabuzomeu.net/alex/doc/apache/index-en.html)).

H.2

Installer le serveur

Cette procdure a t teste sur Debian GNU/Linux 3.0 (Woody) avec makejail 0.0.4-1 (de Debian/testing). Connectez-vous en tant que root et crez le nouveau rpertoire prison : $ mkdir -p /var/chroot/apache Crez un nouvel utilisateur et un nouveau groupe. Le serveur Apache chroot fonctionnera sous cet utilisateur et groupe, qui nest utilis pour rien dautre sur le systme. Dans cet exemple, lutilisateur et le groupe sont appels chrapach.

Chapitre H. Environnement de chroot pour Apache

232

$ adduser --home /var/chroot/apache --shell /bin/false \ --no-create-home --system --group chrapach FIXME : est-ce quun nouvel utilisateur est ncessaire ? (Apache fonctionne dj sous lutilisateur apache) Installez Apache comme dhabitude sous Debian : apt-get install apache Congurez Apache (e.g. dnissez vos sous-domaines, etc.). Dans le chier de conguration /etc/apache/httpd.conf, positionnez les options Group et User chrapach. Redmarrez Apache et assurez-vous que le serveur fonctionne correctement. Maintenant, stoppez le dmon Apache. Installez makejail (disponible dans Debian/testing actuellement). Vous devriez galement installer wget et lynx car ils sont utiliss par makejail pour tester le serveur chroot : apt-get install makejail wget lynx Copiez le chier de conguration exemple pour Apache dans le rpertoire /etc /makejail :

# cp /usr/share/doc/makejail/examples/apache.py /etc/makejail/ ditez /etc/makejail/apache.py. Vous devez changer les options chroot, users et groups. Pour excuter cette version de makejail, vous pouvez galement ajouter une option packages. Voir la documentation makejail (http://www.floc.net/makejail/ current/doc/). Un exemple est fourni ici : chroot="/var/chroot/apache" testCommandsInsideJail=["/usr/sbin/apachectl start"] processNames=["apache"] testCommandsOutsideJail=["wget -r --spider http://localhost/", "lynx --source https://localhost/"] preserve=["/var/www", "/var/log/apache", "/dev/log"] users=["chrapach"] groups=["chrapach"] packages=["apache", "apache-common"] userFiles=["/etc/password", "/etc/shadow"] groupFiles=["/etc/group", "/etc/gshadow"] forceCopy=["/etc/hosts", "/etc/mime.types"] FIXME : certaines options semblent ne pas fonctionner correctement. Par exemple, /etc /shadow et /etc/gshadow ne sont pas copis, alors que /etc/password et /etc/group sont intgralement copis au lieu dtre ltrs. Crez larborescence de chroot : makejail /etc/makejail/apache.py Si les chiers /etc/password et /etc/group ont t intgralement copis, entrez : $ grep chrapach /etc/passwd > /var/chroot/apache/etc/passwd $ grep chrapach /etc/group > /var/chroot/apache/etc/group pour les remplacer avec des copies ltres.

Chapitre H. Environnement de chroot pour Apache

233

Copiez les pages du site web et les journaux dans la prison. Ces chiers ne sont pas copis automatiquement (voir loption preserve du chier de conguration de makejail). # cp -Rp /var/www /var/chroot/apache/var # cp -Rp /var/log/apache/*.log /var/chroot/apache/var/log/apache ditez le script de dmarrage pour le dmon de journaux systme pour quil coute galement sur la socket /var/chroot/apache/dev/log. Dans /etc/init.d/sysklogd, remplacez : SYSLOGD="" par SYSLOGD=" -a /var/chroot/apache/dev/log" et redmarrez le dmon (/etc/init.d/sysklogd restart). ditez le script de dmarrage dApache (/etc/init.d/apache). Vous pouvez avoir besoin deffectuer certaines changements au script de dmarrage par dfaut pour quil fonctionne correctement dans une arborescence chroot. Comme : congurer une nouvelle variable CHRDIR au dbut du chier ; diter les sections start, stop, reload, etc. ; ajouter une ligne pour monter et dmonter le systme de chiers /proc dans la prison. #! /bin/bash # # apache Start the apache HTTP server. # CHRDIR=/var/chroot/apache NAME=apache PATH=/bin:/usr/bin:/sbin:/usr/sbin DAEMON=/usr/sbin/apache SUEXEC=/usr/lib/apache/suexec PIDFILE=/var/run/$NAME.pid CONF=/etc/apache/httpd.conf APACHECTL=/usr/sbin/apachectl trap "" 1 export LANG=C export PATH test -f $DAEMON || exit 0 test -f $APACHECTL || exit 0 # ensure we dont leak environment vars into apachectl APACHECTL="env -i LANG=${LANG} PATH=${PATH} chroot $CHRDIR $APACHECTL" if egrep -q -i "^[[:space:]]*ServerType[[:space:]]+inet" $CONF then exit 0 fi case "$1" in start)

Chapitre H. Environnement de chroot pour Apache

234

echo -n "Starting web server: $NAME" mount -t proc proc /var/chroot/apache/proc start-stop-daemon --start --pidfile $PIDFILE --exec $DAEMON \ --chroot $CHRDIR ;; stop) echo -n "Stopping web server: $NAME" start-stop-daemon --stop --pidfile "$CHRDIR/$PIDFILE" --oknodo umount /var/chroot/apache/proc ;; reload) echo -n "Reloading $NAME configuration" start-stop-daemon --stop --pidfile "$CHRDIR/$PIDFILE" \ --signal USR1 --startas $DAEMON --chroot $CHRDIR ;; reload-modules) echo -n "Reloading $NAME modules" start-stop-daemon --stop --pidfile "$CHRDIR/$PIDFILE" --oknodo \ --retry 30 start-stop-daemon --start --pidfile $PIDFILE \ --exec $DAEMON --chroot $CHRDIR ;; restart) $0 reload-modules exit $? ;; force-reload) $0 reload-modules exit $? ;;

*) echo "Usage: /etc/init.d/$NAME {start|stop|reload|reload-modules|force exit 1 ;; esac if [ $? == 0 ]; then echo . exit 0 else

Chapitre H. Environnement de chroot pour Apache

235

echo failed exit 1 fi FIXME : est-ce que le premier processus Apache devrait tre lanc avec un autre utilisateur que root (i.e. ajouter add chuid chrapach :chrapach) ? Dsavantage : chrapach devra avoir un accs en criture aux journaux, ce qui est trange. Remplacez dans /etc/logrotate.d/apache /var/log/apache/*.log par /var/chroot/apache/var/log/apache/*.log Dmarrez Apache (/etc/init.d/apache start) et vriez ce qui est indiqu dans les journaux de la prison (/var/chroot/apache/var/log/apache/error.log). Si votre conguration est plus complexe (e.g. si vous utilisez galement PHP et MySQL), des chiers seront probablement manquants. Si certains chiers ne sont pas copis automatiquement par makejail, vous pouvez les lister dans les options forceCopy (pour copier les chiers directement) ou packages (pour copier les paquets en entier et leurs dpendances) du chier de conguration /etc/makejail/apache.py. Entrez ps aux | grep apache pour vous assurer quApache fonctionne. Vous devriez voir quelque chose comme : root 180 0.0 1.1 2936 1436 ? S 04:03 0:00 /usr/sbin/apache chrapach 189 0.0 1.1 2960 1456 ? S 04:03 0:00 /usr/sbin/apache chrapach 190 0.0 1.1 2960 1456 ? S 04:03 0:00 /usr/sbin/apache chrapach 191 0.0 1.1 2960 1456 ? S 04:03 0:00 /usr/sbin/apache chrapach 192 0.0 1.1 2960 1456 ? S 04:03 0:00 /usr/sbin/apache chrapach 193 0.0 1.1 2960 1456 ? S 04:03 0:00 /usr/sbin/apache Assurez-vous que les processus Apache fonctionnent bien dans le chroot en observant le systme de chiers /proc : ls -la /proc/numero_processus/root/. o numero_processus est lun des numros de PID lists ci-dessus (2e colonne ; 189 par exemple). Les entres pour une arborescence restreinte devraient tre listes ainsi : drwxr-sr-x 10 root staff 240 Dec 2 16:06 . drwxrwsr-x 4 root staff 72 Dec 2 08:07 .. drwxr-xr-x 2 root root 144 Dec 2 16:05 bin drwxr-xr-x 2 root root 120 Dec 3 04:03 dev drwxr-xr-x 5 root root 408 Dec 3 04:03 etc drwxr-xr-x 2 root root 800 Dec 2 16:06 lib dr-xr-xr-x 43 root root 0 Dec 3 05:03 proc drwxr-xr-x 2 root root 48 Dec 2 16:06 sbin drwxr-xr-x 6 root root 144 Dec 2 16:04 usr drwxr-xr-x 7 root root 168 Dec 2 16:06 var Pour automatiser ce test, vous pouvez entrer :ls -la /proc/cat /var/chroot/apache/var/run/apache.pid/root/. FIXME : ajouter dautres tests qui peuvent tre excuter pour sassurer que la prison est fermes ?

La raison pour laquelle jaime ceci est que la mise en place dune prison nest pas trs difcile et que le serveur peut tre mis jour avec seulement deux lignes :

Chapitre H. Environnement de chroot pour Apache

236

apt-get update && apt-get install apache makejail /etc/makejail/apache.py

H.3

Voir galement

Si vous recherchez plus dinformations, vous pouvez envisager ces sources dinformations dans lesquelles linformation prsente est base : page daccueil de makejail (http://www.floc.net/makejail/), ce programme a t crit par Alain Tesio Chrooting daemons and system processes HOWTO (http://www.nuclearelephant. com/papers/chroot.html) par Jonathan, Network Dweebs, 21/10/2002

Vous aimerez peut-être aussi