You are on page 1of 177

Securing Debian Manual

Javier Fernndez-Sanguino Pea <jfs@debian.org> Auteurs de la prsente page

Version : 3.16, construite le Sun, 08 Apr 2012 02 :48 :09 +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-2013 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 16. 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 (http://www.gnu.org/copyleft/ gpl.html) 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.

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 crire (FIXME/TODO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Journal des modications 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.16 (janvier 2013) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Version 3.15 (dcembre 2010) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Version 3.14 (mars 2009) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 2 2 2 4 4 4 4 5 5 5 5 6 6 6 6 7 7 7 7 8 8 8 8 8 9 9 9 9 9 9

1.6.10 Version 3.7 (avril 2006) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.11 Version 3.6 (mars 2006) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.12 Version 3.5 (novembre 2005) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.13 Version 3.4 (aot-septembre 2005) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.14 Version 3.3 (juin 2005) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.15 Version 3.2 (mars 2005) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.16 Version 3.1 (janvier 2005) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.17 Version 3.0 (dcembre 2004) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.18 Version 2.99 (mars 2004) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.19 Version 2.98 (dcembre 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.20 Version 2.97 (septembre 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.21 Version 2.96 (aot 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.22 Version 2.95 (juin 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.23 Version 2.94 (avril 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.24 Version 2.93 (mars 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.25 Version 2.92 (fvrier 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6.26 Version 2.91 (janvier/fvrier 2003) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.6.27 Version 2.9 (dcembre 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

TABLE DES MATIRES

ii

1.6.28 Version 2.8 (novembre 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.6.29 Version 2.7 (octobre 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.6.30 Version 2.6 (septembre 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.6.31 Version 2.5 (septembre 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.6.32 Version 2.5 (aot 2002) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.6.33 Version 2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.6.34 Version 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.6.35 Version 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.6.36 Version 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.6.37 Version 2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.6.38 Version 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.6.39 Version 1.99 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.6.40 Version 1.98 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.6.41 Version 1.97 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.6.42 Version 1.96 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.6.43 Version 1.95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.6.44 Version 1.94 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.6.45 Version 1.93 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.46 Version 1.92 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.47 Version 1.91 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.48 Version 1.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.49 Version 1.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.50 Version 1.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.51 Version 1.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.6.52 Version 1.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.6.53 Version 1.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.6.54 Version 1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.6.55 Version 1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.6.56 Version 1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.6.57 Version 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.7 2 Remerciements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 19

Avant de commencer 2.1 2.2 2.3

Que voulez-vous faire du systme ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 tre conscient des problmes de scurit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Comment Debian gre la scurit ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 23

Avant et pendant linstallation 3.1 3.2

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

3.3 3.4

Ne pas se connecter Internet tant que tout nest pas prt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Dnir un mot de passe pour le superutilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

TABLE DES MATIRES 3.5 3.6

iii

Activer les mots de passe masqus et les mots de passe MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Administrer le nombre minimal de services ncessaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.6.1 3.6.2 Dsactivation de services dmon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Dsactivation dinetd ou de ses services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.7

Installer le minimum de logiciels ncessaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.7.1 Supprimer Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.8 4

Consulter les listes de discussions Debian sur la scurit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 31

Aprs linstallation 4.1 4.2

Sabonner la liste de diffusion Debian Security Announce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Faire une mise jour de scurit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.2.1 4.2.2 Mise jour de scurit des bibliothques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Mise jour de scurit du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4.3 4.4 4.5 4.6 4.7 4.8 4.9

Changer le BIOS ( nouveau) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Attribuer un mot de passe LILO ou GRUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Dsactivation de linvite superutilisateur de linitramfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Enlever linvite superutilisateur du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Restreindre les accs aux consoles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Restreindre les redmarrages systme depuis la console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Restriction dutilisation des touches SysRq magiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

4.10 Monter correctement les partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.10.1 Paramtrer /tmp en noexec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.10.2 Paramtrer /usr en lecture seule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.11 Fournir des accs scuriss aux utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.11.1 Authentication utilisateur : PAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.11.2 Restreindre lutilisation des ressources : le chier limits.conf . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.11.3 Actions de connexion de lutilisateur : modication de /etc/login.defs . . . . . . . . . . . . . . . . . . . 42 4.11.4 Actions de connexion de lutilisateur : modication de /etc/pam.d/login . . . . . . . . . . . . . . . 42 4.11.5 Restreindre le FTP : diter /etc/ftpusers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.11.6 Utilisation de su . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.11.7 Utilisation de sudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.11.8 Dsactiver des accs dadministration distance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.11.9 Restriction des utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.11.10 Audit dutilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.11.11 Inspection des prols utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.11.12 Positionner des umasks aux utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.11.13 Limiter ce que les utilisateurs peuvent voir et accder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.11.14 Gnrer des mots de passe utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.11.15 Vrier les mots de passe utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.11.16 Dconnecter les utilisateurs inactifs (idle) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.12 Utilisation de tcpwrappers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.13 Limportance des journaux et des alertes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

TABLE DES MATIRES

iv

4.13.1 Utiliser et personnaliser logcheck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.13.2 Congurer lendroit o les alertes sont envoyes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.13.3 Utilisation dun hte darchivage (loghost) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.13.4 Permissions du chier de journalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.14 Les utilitaires pour ajouter des correctifs au noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.15 Se protger contre les dpassements de tampon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.15.1 Correctif du noyau de protection pour les dpassements de tampon . . . . . . . . . . . . . . . . . . . . 53 4.15.2 Tester des programmes pour les dpassements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.16 Scurisation des transferts de chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.17 Limites et contrle des systmes de chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.17.1 Utilisation de quotas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.17.2 Les attributs spciques du systme de chiers ext2 (chattr/lsattr) . . . . . . . . . . . . . . . . . . . . . 54 4.17.3 Vrier lintgrit des systmes de chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.17.4 Mise en place de la vrication setuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.18 Scurisation des accs rseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.18.1 Conguration des options rseau du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.18.2 Congurer syncookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.18.3 Scurisation du rseau pendant lamorage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.18.4 Conguration des fonctionnalits de pare-feu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.18.5 Dsactiver les problmes dhtes weak-end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.18.6 Protger contre les attaques ARP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.19 Prendre un instantan ( snapshot ) du systme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.20 Autres recommandations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.20.1 Nutilisez pas de logiciels dpendant de svgalib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 5 Scurisation des services du systme 5.1 63

Scurisation de SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.1.1 5.1.2 5.1.3 5.1.4 Chrooter SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Clients SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Interdire les transferts de chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Restriction daccs au seul transfert de chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

5.2 5.3 5.4

Scurisation de Squid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Scurisation de FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Scurisation de laccs au systme X Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 5.4.1 Vriez le gestionnaire dafchage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

5.5 5.6

Scurisation de laccs limpression (le problme lpd et lprng) . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Scurisation du service de courrier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 5.6.1 5.6.2 5.6.3 Congurer un Nullmailer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Fournir un accs scuris aux botes lettres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Rception du courrier de manire sre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

5.7

Scurisation de BIND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 5.7.1 Conguration de BIND pour viter de mauvaises utilisations . . . . . . . . . . . . . . . . . . . . . . . . 70

TABLE DES MATIRES 5.7.2 5.7.3 5.8

Changer lutilisateur de BIND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Chrooter le serveur de domaine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

Scurisation dApache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 5.8.1 5.8.2 5.8.3 Dsactiver la publication de contenu sur le web par les utilisateurs . . . . . . . . . . . . . . . . . . . . . 75 Permissions des chiers de journalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Fichiers web publis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

5.9

Scurisation de nger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

5.10 Paranoa gnralise du suid et du chroot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 5.10.1 Crer des environnements chroot automatiquement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 5.11 Paranoa gnralise du mot de passe en texte clair . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 5.12 Dsactivation du NIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 5.13 Scurisation des services RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 5.13.1 Dsactivation des services RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 5.13.2 Limiter laccs aux services RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 5.14 Ajouter des capacits au pare-feu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 5.14.1 Protger le systme local avec un pare-feu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 5.14.2 Utiliser un pare-feu pour protger dautres systmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 5.14.3 Mettre en place un pare-feu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 6 Scurisation automatique dun systme Debian 6.1 6.2 7 85

Harden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Bastille Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 87

Infrastructure de scurit Debian 7.1 7.2

Lquipe de scurit Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Alertes de scurit Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 7.2.1 7.2.2 Rfrences croises des failles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Compatibilit CVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

7.3 7.4

Systme de suivi en scurit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Infrastructure de construction de scurit Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 7.4.1 Le guide du dveloppeur pour les mises jour de scurit . . . . . . . . . . . . . . . . . . . . . . . . . . 89

7.5

La signature de paquet dans Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 Le schma actuel pour la vrication de paquet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 apt scuris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Vrication par version de distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Vrication de distribution pour les sources non Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Schma alternatif de signature par paquet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 99

Outils de scurit dans Debian 8.1 8.2 8.3 8.4

Outils dvaluation des vulnrabilits distance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Outils pour parcourir le rseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Audits internes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Contrle du code source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

TABLE DES MATIRES 8.5

vi

Rseaux Privs Virtuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 8.5.1 Le tunnel point point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

8.6 8.7 8.8 8.9 9

Infrastructure de clefs publiques (PKI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Infrastructure SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Outils antivirus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Agent GPG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 105

Meilleures pratiques de scurit pour les dveloppeurs 9.1 9.2

Meilleures pratiques de vrication et conception scurises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Cration dutilisateurs et de groupes pour les dmons logiciels . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 109

10 Avant la compromission

10.1 Maintenez le systme scuris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 10.1.1 Surveillance des failles de scurit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 10.1.2 Mettre jour le systme en permanence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 10.1.3 vitez la branche unstable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 10.1.4 Suivi en scurit de la branche testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 10.1.5 Mises jour automatiques dans un systme Debian GNU/Linux . . . . . . . . . . . . . . . . . . . . . . 113 10.2 Tests dintgrit priodiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 10.3 Mise en place de dtection dintrusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 10.3.1 Dtection dintrusion provenant du rseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 10.3.2 Dtection dintrusion fonde sur lhte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 10.4 viter les rootkits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 10.4.1 Loadable Kernel Modules (LKM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 10.4.2 Dtection des rootkits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 10.5 Ides gniales ou paranoaques ce que vous pourriez faire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 10.5.1 Construction dun pot de miel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 11 Aprs la compromission (la rponse lincident) 119

11.1 Comportement gnral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 11.2 Copies de sauvegarde du systme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 11.3 Contacter le CERT local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 11.4 Analyse post mortem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 11.4.1 Analyse des programmes malveillants (malware) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 12 Foire Aux Questions (FAQ) 123

12.1 La scurit dans le systme dexploitation Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 12.1.1 Debian est-elle plus sre que X ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 12.1.2 De nombreux bogues Debian sont dans Bugtraq, cela la rend-elle plus vulnrable ? . . . . . . . . . . . . 124 12.1.3 Debian possde-t-elle une certication relative la scurit ? . . . . . . . . . . . . . . . . . . . . . . . . . 124 12.1.4 Existe-t-il un programme de durcissement pour Debian ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 12.1.5 Je veux fournir le service XYZ, lequel dois-je choisir ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 12.1.6 Comment mieux scuriser le service XYZ dans Debian ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 12.1.7 Comment supprimer toutes les informations de version pour les services ? . . . . . . . . . . . . . . . . . 125

TABLE DES MATIRES

vii

12.1.8 Les paquets Debian sont-ils tous srs ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 12.1.9 Pourquoi certains chiers journaux ou chiers de conguration sont-ils lisibles par tous les utilisateurs, est-ce que cest sr ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 12.1.10 Pourquoi est-ce que /root/ (ou UserX) a 755 comme permissions ? . . . . . . . . . . . . . . . . . . . . . 125 12.1.11 Aprs linstallation de grsec ou dun pare-feu, jai commenc recevoir beaucoup de messages de console ! Comment les supprimer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 12.1.12 Les utilisateurs et les groupes du systme dexploitation . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 12.1.13 Pourquoi y a-t-il un nouveau groupe chaque ajout de nouvel utilisateur (ou pourquoi Debian attribue-t-elle un groupe chaque utilisateur) ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 12.1.14 Questions concernant les services et les ports ouverts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 12.1.15 Problmes courants de scurit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 12.1.16 Comment mettre en place un service pour les utilisateurs sans leur donner un compte avec invite de commande ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 12.2 Le systme est vulnrable ! (En tes-vous certain ?) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 12.2.1 Le scanneur X de vrication des failles indique que le systme Debian est vulnrable ! . . . . . . . . . 131 12.2.2 Une attaque apparat dans les chiers journaux du systme. Le systme est-il compromis ? . . . . . . . 131 12.2.3 Dtranges lignes MARK apparaissent dans les journaux : le systme est-il compromis ? . . . . . . . 131 12.2.4 Des utilisateurs utilisant su apparaissent dans les journaux : le systme est-il compromis ? . . . . . 131 12.2.5 possible SYN ooding apparat dans les journaux : le systme est-il attaqu ? . . . . . . . . . . . . . 132 12.2.6 Des sessions superutilisateur tranges apparaissent dans les journaux : le systme est-il compromis ? . 132 12.2.7 Le systme a t victime dune intrusion, que faire ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 12.2.8 Comment pister une attaque ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 12.2.9 Le programme X dans Debian est vulnrable, que faire ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 12.2.10 Le numro de version pour un paquet indique une version vulnrable ! . . . . . . . . . . . . . . . . . . 133 12.2.11 Logiciels spciques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 12.3 Questions concernant lquipe de scurit Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 12.3.1 Quest ce quune alerte de scurit Debian (Debian Security Advisory, DSA) ? . . . . . . . . . . . . . . . 133 12.3.2 La signature des alertes Debian ne se vrie pas correctement ! . . . . . . . . . . . . . . . . . . . . . . . 133 12.3.3 Comment la scurit est-elle gre chez Debian ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 12.3.4 Pourquoi vous embtez-vous avec une vieille version de tel paquet ? . . . . . . . . . . . . . . . . . . . . 134 12.3.5 Quelle est la rgle pour quun paquet x apparaisse sur security.debian.org ? . . . . . . . . . . . . . . . 134 12.3.6 Que signie local (remote) ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 12.3.7 Le numro de version pour un paquet indique une version vulnrable ! . . . . . . . . . . . . . . . . . . 134 12.3.8 Comment est assure la scurit pour les versions testing et unstable ? . . . . . . . . . . . . . . . . . . . 134 12.3.9 Je possde un ancienne version de Debian, est-elle suivie par lquipe de scurit Debian ? . . . . . . . 135 12.3.10 Comment testing reoit-elle les mises jour de scurit ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 12.3.11 Comment la scurit est-elle gre pour contrib et non-free ? . . . . . . . . . . . . . . . . . . . . . . . . . 135 12.3.12 Pourquoi ny a-t-il pas de miroirs ofciels de security.debian.org ? . . . . . . . . . . . . . . . . . . . . . . 135 12.3.13 Jai vu la DSA 100 et la DSA 102, mais o est la DSA 101 ? . . . . . . . . . . . . . . . . . . . . . . . . . . 135 12.3.14 Jai essay de tlcharger un paquet faisant partie dune annonce de scurit, mais jobtiens une erreur chier non trouv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 12.3.15 Comment joindre lquipe de scurit ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 12.3.16 Quelles diffrence existe-t-il entre security@debian.org et debian-security@lists.debian.org ? . . . . . . 136 12.3.17 Je crois avoir trouv un problme de scurit, que dois-je faire ? . . . . . . . . . . . . . . . . . . . . . . . 136

TABLE DES MATIRES

viii

12.3.18 Comment puis-je aider lquipe de scurit Debian ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 12.3.19 Qui compose lquipe de scurit ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 12.3.20 Lquipe de scurit Debian vrie-t-elle chaque nouveau paquet dans Debian ? . . . . . . . . . . . . . 136 12.3.21 Combien de temps faudra-t-il Debian pour rsoudre la vulnrabilit XXXX ? . . . . . . . . . . . . . . 137 12.3.22 Pendant combien de temps les mises jour de scurit sont-elles fournies ? . . . . . . . . . . . . . . . . 137 12.3.23 Comment puis-je contrler lintgrit des paquets ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 12.3.24 Que faire si un paquet est cass suite une mise jour de scurit ? . . . . . . . . . . . . . . . . . . . . . 137 A La procdure de durcissement tape par tape B Liste des contrles de conguration C Paramtrage dun IDS autonome D Conguration dun pare-feu pont 139 141 143 145

D.1 Un pont fournissant des fonctionnalits de traduction dadresse (NAT) et de pare-feu . . . . . . . . . . . . . . 145 D.2 Un pont fournissant des fonctionnalits de pare-feu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 D.3 Rgles de base diptables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 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 149 153 155

G.1 Chrooter les utilisateur SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 G.1.1 Utilisation de libpam_chroot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 G.1.2 Appliquer des correctifs au serveur SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 G.2 Chrooter le serveur SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 G.2.1 Conguration dun systme minimal (la manire vraiment simple) . . . . . . . . . . . . . . . . . . . . . 158 G.2.2 Crer lenvironnement automatiquement (la manire simple) . . . . . . . . . . . . . . . . . . . . . . . . 158 G.2.3 Crer soi-mme lenvironnement (la manire difcile) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 H Environnement de chroot pour Apache 165

H.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 H.1.1 Licence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 H.2 Installer le serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 H.3 Consultez galement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

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 ses 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 la machine sous le 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 du 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 examins 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 Internet, 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 (la liste de toutes les contributions est dans le journal de modications), 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.

Chapitre 1. Introduction

1.2

O rcuprer ce manuel (et formats disponibles)

Vous pouvez tlcharger ou consulter 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 modications et historique page 4 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 une 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). Ce document fait partie des documents distribus par le Projet de documentation Debian (https://alioth.debian. org/projects/ddp/). Les modications introduites ce document sont consultables laide dun navigateur web depuis les journaux en ligne du systme de gestion de version (http://anonscm.debian.org/viewvc/ddp/manuals/ trunk/securing-howto). Vous pouvez aussi obtenir lintgralit du code en utilisant Subversion :
svn co svn://svn.debian.org/svn/ddp/manuals/trunk/securing-howto/

1.3

Avis et ractions

Maintenant, la partie ofcielle. Pour linstant, cest Alexander Reelsen qui a crit la plupart des paragraphes de ce manuel mais, selon lui, cela devrait voluer. Il a grandi et vcu avec les logiciels libres : cest une part de ma vie quotidienne et, jespre, de la vtre aussi . Il encourage chacun lui envoyer 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 19 pour savoir o trouver des informations plus approfondies sur le sujet.

1.5

lments 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 prcdente).

Chapitre 1. Introduction

Ce document doit encore tre mis jour en fonction des dernires publications de Debian. La conguration par dfaut de certains paquets doit tre adapte car elles ont t modies depuis que ce document a t crit. 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). crire sur les outils de surveillance distance (pour vrier la disponibilit du systme) tels que monit, daemontools et mon. Consultez 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-feu concerne actuellement un systme isol (pas de protection dautres machines, etc.). 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 correctifs spcialiss dans la scurit du noyau dans Debian, incluant ceux montrs ci-dessus et ajouter des informations spciques sur la faon dactiver ces correctifs 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 services rseaux inutiles (outre inetd) ; cest 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 de lencapsulation 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. lpr et lprng. Dsactiver les outils GNOME qui utilisent IP. Parler de pam_chroot (consultez 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. 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 (cest--dire logcheck 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

Chapitre 1. Introduction

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. Chiffrement entier du systme de chiers. Outils stganographiques. Congurer une autorit de clefs 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 bases sur le chier README des paquets (pas encore tout fait prsent, consultez le bogue n 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 ) avec le paquet honeyd. Dcrire la situation relative 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. Ajouter une section sur lutilit des serveurs virtuels (Xen, Vserver, etc.). Expliquer comment utiliser plusieurs vricateurs dintgrit tels 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 modications et historique


Version 3.16 (janvier 2013)

Modications de Javier Fernndez-Sanguino Pea. Indication que le document nest pas mis jour avec les dernires versions. Mise jour des liens vers lemplacement actuel des sources. Mise jour des renseignements de scurit pour les publications les plus rcentes. Lien vers des renseignements pour les dveloppeurs sur les sources en ligne au lieu de les garder dans ce document pour viter les doublons. Extension des renseignements sur la scurisation daccs la console, y compris la limitation des touches SysRq magiques. Mise jour des renseignements sur les modules PAM, y compris une faon de restreindre les connexions en console, lutilisation de cracklib et lutilisation de fonctionnalits disponibles dans /etc/pam.d/login. Retrait des rfrences aux variables obsoltes de /etc/login.defs. Rfrence certains modules PAM disponibles pour permettre lauthentication deux facteurs, pour les administrateurs voulant arrter de partager des mots de passe. Correction de lexemple de script en annexe. Correction derreurs de rfrence.

1.6.2

Version 3.15 (dcembre 2010)

Modications de Javier Fernndez-Sanguino Pea. Modication de la rfrence au site web de Log Analysis car il nest plus disponible.

1.6.3

Version 3.14 (mars 2009)

Modications de Javier Fernndez-Sanguino Pea. Modication de la section indiquant comment choisir un systme de chiers. ext3 est maintenant le systme de chiers par dfaut. Modication du nom des paquets relatifs Enigmail pour correspondre aux modications de nom introduites dans Debian.

Chapitre 1. Introduction

1.6.4

Version 3.13 (fvrier 2008)

Modications de 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.5

Version 3.12 (aot 2007)

Modications de Javier Fernndez-Sanguino Pea. Mise jour des informations au 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. Division des applications de pare-feu selon les utilisateurs cibles et ajout de reier la liste des applications de pare-feu 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. Merci John Talbut.

1.6.6

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 suivi en scurit nest plus disponible pour celle-ci. Description de la restriction des 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 documentation supplmentaire dapt scuris. 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 superutilisateur car cela ne sapplique plus BIND 9. Retrait de la rfrence au script init.d car les congurations doivent tre faites laide de /etc/default/. Retrait de la mthode dsute de mise en place 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 updatenotier) 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 mise jour de la section sur les analyses post mortem de malwares. Retrait ou correction de quelques liens morts. Correction de nombreuses erreurs typographiques et grammaticales mentionnes par Francesco Poli.

1.6.7

Version 3.10 (novembre 2006)

Modications de Javier Fernndez-Sanguino Pea.

Chapitre 1. Introduction

Ajout dexemples dutilisation de loption rdepends dapt-cache tel que suggr par Ozer Sarilar. Correction de lemplacement du manuel de lutilisateur de Squid aprs quOskar Pearson (son responsable) nous ait inform de son dplacement. Correction des informations au sujet dumask. Cest dans logins.defs (et non pas limits.conf) que cela peut tre congur pour toutes les connexions. Prciser les valeurs par dfaut de Debian et suggrer des valeurs plus restrictives pour les utilisateurs et le superutilisateur. Merci Reinhard Tartler pour avoir dtect cette erreur.

1.6.8

Version 3.9 (octobre 2006)

Modications de Javier Fernndez-Sanguino Pea. Ajout dinformations sur le suivi des vulnrabilits de scurit et ajout de rfrences propos du systme de suivi en scurit de Debian testing. Ajout dinformations sur le suivi en scurit pour Debian testing. Correction dun grand nombre derreurs typographiques partir de correctifs fournis par Simon Brandmair. Ajout dune section rdige par Max Attems sur la faon de dsactiver la console de superutilisateur avec initramfs. Retrait des rfrences queso. Signalement dans lintroduction que testing est maintenant suivie par lquipe de scurit de Debian.

1.6.9

Version 3.8 (juillet 2006)

Modications de 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.10

Version 3.7 (avril 2006)

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

1.6.11

Version 3.6 (mars 2006)

Modications de 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. 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 apt scuris et insertion dans la section sur les infrastructures. Rvision des sections se 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 dsuets, les correctifs pour Openwall sont galement dsuets. 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 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-feu (lien vers le wiki au lieu de faire une liste de tous les paquets disponibles sur les pare-feu). Ferme le bogue n 339865. Rvision de la FAQ sur les statistiques sur les vulnrabilits. Merci Carlos Galisteo de Cabo davoir mentionn que linformation ntait plus jour. Citation dextraits du Contrat social Debian 1.1 au lieu de 1.0, tel que suggr par Francesco Poli.

Chapitre 1. Introduction

1.6.12

Version 3.5 (novembre 2005)

Modications de 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 faute de frappe 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 fautes de frappe. 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 des formats 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).

1.6.13

Version 3.4 (aot-septembre 2005)

Modications de 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 faute de frappe 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.14

Version 3.3 (juin 2005)

Modications de 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 le bogue n 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.15

Version 3.2 (mars 2005)

Modications de 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 valables 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. 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 fautes de frappe signales par Frdric Bothamy.

Chapitre 1. Introduction

1.6.16

Version 3.1 (janvier 2005)

Modications de 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 fautes de frappe. FreeSWAN est mort, longue vie OpenSWAN. Ajout dinformations sur la restriction 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 fautes de frappe, 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.17

Version 3.0 (dcembre 2004)

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

1.6.18

Version 2.99 (mars 2004)

Modications de Javier Fernndez-Sanguino Pea. Ajout dinformations sur des rfrences dans la compatibilit entre DSA et CVE. Ajout dinformations sur apt 0.6 (apt scuris 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 directs ( hardlink ) si les partitions ne sont pas mises en place correctement. Ajout de certaines tapes manquantes pour excuter bind comme named tel 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.19

Version 2.98 (dcembre 2003)

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

1.6.20

Version 2.97 (septembre 2003)

Modications de 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/TODO. 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 boucles (echo to all) dans le script de scurit rseau du noyau comme suggr par Elliott Mitchell.

Chapitre 1. Introduction

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.21

Version 2.96 (aot 2003)

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

1.6.22

Version 2.95 (juin 2003)

Modications de Javier Fernndez-Sanguino Pea. Corrections de fautes signales par Leonard Norrgard. Ajout dune section sur la faon de 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.23

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.24

Version 2.93 (mars 2003)

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

1.6.25

Version 2.92 (fvrier 2003)

Modications de Javier Fernndez-Sanguino Pea et Frdric Schtz. Fusion de la section 9.3 ( correctifs noyau utiles ) dans la section 4.13 ( Ajouter des correctifs noyau ) et ajout dun peu de contenu. Ajout de quelques TODO 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 rcriture 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).

1.6.26

Version 2.91 (janvier/fvrier 2003)

Modications de Javier Fernndez-Sanguino Pea (moi). Ajout dun correctif propos 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 de rfrences correctes dans la premire zone (Salut Pedro !) Correction de la date du journal de modications nouvelle anne :-). Ajout dune rfrence aux articles de Colin pour les TODO.

Chapitre 1. Introduction Suppression de la rfrence danciens correctifs SSH+chroot. Correctifs additionnels de Carlo Perassi. Corrections de fautes (rcursif dans BIND est rcursion) signales par Maik Holtkamp.

10

1.6.27

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.28

Version 2.8 (novembre 2002)

Modications de Javier Fernndez-Sanguino Pea (moi). Application des correctifs de Carlo Perassi, corrections incluant : modication de la longueur de lignes, correction dURL, et correction de certains FIXME. 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). Correction de quelques erreurs de frappe (il en reste encore plein). Correction des liens TDP conformment la suggestion de John Summereld.

1.6.29

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 FIXME par Carlo Perassi.

1.6.30

Version 2.6 (septembre 2002)

Modications de Chris Tillman, tillman@voicetrak.com. Modications pour amliorer la grammaire et lorthographe. s/host.deny/hosts.deny/ (1 endroit). Application du correctif de Larry Holish (assez gros, corrige de nombreux FIXME).

1.6.31

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 une URL.

1.6.32

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 cela la version retour de lune de miel :). Application dun correctif fourni 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).

Chapitre 1. Introduction

11

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 messagerie 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 ses bogues), intgration des informations dupliques dans toutes les annexes. 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 correctifs 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 crer 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 ? : pourquoi le systme de base est-il comme a ?) sur la liste de diffusion debian-security (mai 2002). Rorganisation de la section sur les paramtres rseau 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 une discussion qui sest tenue sur 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 permissions 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 de renseignements 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 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 dun lien sur la version texte disponible en ligne ( vrier). 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 dinformations supplmentaires sur lumask par dfaut de Debian et ce quoi un utilisateur peut accder si on lui a donn une invite de commande sur le systme (effrayant, non ?) Inclusion dune note dans la section du mot de passe BIOS suite un commentaire dAndreas Wohlfeld.

Chapitre 1. Introduction

12

Inclusion des correctifs fournis par Alfred E. Heggestad corrigeant beaucoup de fautes encore prsentes dans le document. Ajout dun lien vers le journal de modications dans la section des remerciements car la plupart des personnes qui ont contribu sont cits 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 relais. 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 dune ligne de Cristian Ionescu-Idbohrn pour rcuprer les paquets avec gestion 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 compte 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 sur 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 correctifs 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 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 debian-security). Ajout dinformations sur les services RPC (et quand ils sont ncessaires). Ajout de plus dinformations sur les capacits ( capabilities ) en matire de scurit (et ce que fait lcap). Y a-t-il une bonne documentation sur ce sujet ? Je nai trouv aucune documentation sur mon noyau 2.4. Correction de fautes de frappes.

1.6.33

Version 2.4

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

1.6.34

Version 2.3

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

Chapitre 1. Introduction

13

1.6.35

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 lectronique. Correction de ladresse lectronique dAlexander (mme si elle est commente). Correction de lemplacement des clefs de versions (merci Pedro Zorzenon pour avoir relev cette erreur).

1.6.36

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 superutilisateur.

1.6.37

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.38

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 lencapsulation TCP et Debian (maintenant plusieurs services sont compils avec la prise en charge adquate ; ainsi cela nest plus un problme dinetd). Clarication des informations sur la dsactivation des services pour la rendre plus cohrente (les informations RPC se rfrent toujours update-rc.d). Ajout dune petite note sur lprn. Ajout de quelques renseignements 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 paranoidmode=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-feu avec linstallation standard de Debian 3.0 (paquet iptables). 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 correctifs. 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.

Chapitre 1. Introduction

14

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.39

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-feu dans Debian GNU/Linux (pourrait tre un peu largie). 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.40

Version 1.98

Modications de Javier Fernndez-Sanguino Pea. Ajout dune nouvelle section concernant lutilisation de Debian GNU/Linux pour raliser des audits. Ajout de renseignements sur le dmon nger daprs la liste de diffusion debian-security.

1.6.41

Version 1.97

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

1.6.42

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.43

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.44

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).

Chapitre 1. Introduction

15

1.6.45

Version 1.93

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

1.6.46

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.47

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 TODO supplmentaires. Correction de nouvelles fautes (merci Yotam !).

1.6.48

Version 1.9

Modications de Javier Fernndez-Sanguino Pea. Correction 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 (consultez tre conscient des problmes de scurit page 19). 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 TODO termins et ajout de nouveaux.

1.6.49

Version 1.8

Modications de Javier Fernndez-Sanguino Pea. Ajout de la liste des utilisateurs et des groupes standards, donne par Joey Hess la liste de discussion debian-security. Ajout dinformations sur les rootkits LKM (Loadable Kernel Modules (LKM) page 115) avec la contribution de Philipe Gaspar. Ajout dinformations sur ProFTPD avec la contribution dEmmanuel Lacour. Rajout de lannexe pense-bte dEra Eriksson. Ajout de nouveaux TODO et retrait de ceux termins. Ajout manuel des correctifs dEra car ils nont pas t inclus dans la version prcdente.

1.6.50

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.

Chapitre 1. Introduction

16

1.6.51

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 formates. Correction de fautes de frappes. Ajout dune ide Gniale/Paranoaque avec la contribution de Gaby Schilders.

1.6.52

Version 1.5

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

1.6.53

Version 1.4

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

1.6.54

Version 1.3

Ajout de mise jour de scurit aprs le paragraphe aprs installation . Ajout dun paragraphe ProFTPD. Cette fois, quelque chose concernant XDM a rellement t crit. Dsol pour la dernire fois.

1.6.55

Version 1.2

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

1.6.56

Version 1.1

Corrections de fautes de frappes, divers ajouts.

1.6.57

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.

Chapitre 1. Introduction

17

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 apt scuris 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 apt scuris. 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 nalement incluses ici (consultez Journal des modications et historique page 4). Tous ceux qui mont encourag (Alexander) crire ce HOWTO (qui devint plus tard ce manuel). Tout le projet Debian.

Chapitre 1. Introduction

18

19

Chapitre 2

Avant de commencer
2.1 Que voulez-vous faire du 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 le systme. Vous constaterez que ce manuel va du dbut la n, cest--dire que vous trouverez des informations sur les tches raliser avant, pendant et aprs linstallation du systme Debian. Les tches peuvent tre dcoupes comme ceci : dcider quels sont les services dont vous avez besoin et vous limiter ceux-l. Cela comprend la dsactivation ou la dsinstallation des services inutiles et lajout de ltres de type pare-feu ou de tcpwrappers ; limiter les utilisateurs et les permissions sur le systme ; consolider les services disponibles ; ainsi, mme en cas dintrusion, limpact sur le 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 consulter 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. 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 Le Securing Linux Step by Step (http://seifried.org/security/os/linux/ 20020324-securing-linux-step-by-step.html) de Kurt Seifried. 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).
1. Il a t remplac un moment donn par le Linux Security Knowledge Base . Cette documentation est galement disponible dans Debian par lintermdiaire du paquet lskb. Il est nouveau de retour en tant que le Lasg.

Chapitre 2. Avant de commencer

20

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 consulter 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 consulter 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, etc.) 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 avec 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. De mme, les versions franaises de ces documents sont disponibles dans les paquets doc-linux-fr-text (version texte) et doc-linux-fr-html (version HTML) qui seront respectivement disponibles dans les rpertoires /usr /share/doc/HOWTO/fr-txt et /usr/share/doc/HOWTO/fr-html. Autres livres Linux recommands. Maximum Linux Security : A Hackers Guide to Protecting Your Linux Server and Network. Anonyme. Paperback 829 pages. Sams Publishing. ISBN : 0672313413. Juillet 1999. Linux Security par John S. Flowers. New Riders ; ISBN : 0735700354. Mars 1999. Hacking Linux Exposed (http://www.linux.org/books/ISBN_0072127732.html) par Brian Hatch. McGraw-Hill Higher Education. ISBN : 0072127732. Avril 2001. Livres divers (qui se rapportent des questions gnrales concernant UNIX et la scurit, non spciques Linux). Practical Unix and Internet Security (2nd Edition) (http://www.ora.com/catalog/puis/noframes.html) Garnkel, Simpson et Spafford, Gene ; OReilly Associates ; ISBN : 0-56592-148-8 ; 1004 pages ; 1996. Firewalls and Internet Security Cheswick, William R. and Bellovin, Steven M. ; Addison-Wesley ; 1994 ; ISBN : 0-20163357-4 ; 320 pages. Quelques sites Internet 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 dissimulerons pas les problmes. Nous conserverons lintgralit de notre base de donnes de rapports de bogue accessible au public en tout temps. Les rapports que les utilisateurs remplissent en ligne seront rapidement visibles par les autres.

Chapitre 2. Avant de commencer

21

Debian suit les problmes de scurit de trs prs. Lquipe en charge de la scurit consulte les sources relatives la scurit, la plus importante tant Bugtraq (http://www.securityfocus.com/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 un ensemble amliorant 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. Cela 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 (consultez tre conscient des problmes de scurit page 19), ce document a pour but de favoriser des installations de systmes beaucoup mieux scurises.

Chapitre 2. Avant de commencer

22

23

Chapitre 3

Avant et pendant linstallation


3.1 Choisir un mot de passe pour le BIOS

Avant dinstaller un systme dexploitation sur lordinateur, 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 CD 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. Cela 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. Les arborescences de rpertoires modiables par un utilisateur, telles que /home, /tmp et /var/tmp, doivent tre sur des partitions distinctes. Cela rduit le risque quun dni de service provoqu par un utilisateur ne remplisse le point de montage / rendant ainsi le systme inutilisable (remarque : ce nest pas strictement vrai car il existe toujours un espace rserv au superutilisateur quun utilisateur normal ne pourra pas remplir) et cela empche les attaques de liens directs (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 la norme de 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 souhaitable 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.
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 persistante (http://www.hackinglinuxexposed.com/articles/20031214.html) (notez que lincident est li Debian). Cest de manire basique une attaque dans laquelle un utilisateur local cache profondment une application setuid vulnrable en faisant un lien direct 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 (consultez le bogue n 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

24

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 le noyau qui peuvent tre lvm10, lvm6 ou 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 2 pendant linstallation de Debian pour les partitions Linux est ext3, un systme de chiers journalis. Vous devriez toujours utiliser 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 la batterie se 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. 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 (cela pouvant parfois tourner la guerre de religion), il est habituellement prfrable dutiliser le systme de chiers ext3. La raison pour cela est quil est rtrocompatible avec ext2, donc sil y a un quelconque problme avec la journalisation, vous pouvez la dsactiver et toujours avoir un systme de chiers fonctionnel. De plus, si vous avez besoin de rcuprer le systme avec une disquette damorage (ou un CD), vous navez pas besoin dun noyau personnalis. Si le noyau est en version 2.4 ou 2.6, la prise en charge 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 ou 2.6 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 mtadonnes, consultez http://lwn.net/ 2001/0802/a/ext3-modes.php3. Remarquez, nanmoins, que certaines partitions nont pas dintrt particulier utiliser un systme de chiers journalis. Par exemple, si vous utilisez une partition part pour /tmp/, vous devriez plutt utiliser un systme de chiers ext2 car elle sera nettoye lors du dmarrage du systme.

3.3

Ne pas se connecter Internet tant que tout nest pas prt

Le systme ne devrait pas tre connect Internet pendant linstallation. Cela 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 supports (comme des CD). Dans ce cas, il se peut que le systme soit compromis avant mme la n de linstallation ! tant donn que linstallation et les mises jour 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 Internet (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 source et les mises jour de scurit. Vous pouvez mettre en place des miroirs de paquets en utilisant un autre systme connect Internet 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 (consultez Mise jour de scurit protge par un pare-feu page 153).
2. Depuis Debian GNU/Linux 4.0, surnomme Etch.

Chapitre 3. Avant et pendant linstallation

25

3.4

Dnir un mot de passe pour le superutilisateur

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 (consultez Gnrer des mots de passe utilisateur page 47). Beaucoup dinformations sur le choix de bons mots de passe peuvent tre trouves sur Internet ; deux URL qui fournissent un bon rsum et une argumentation sont les HOWTO Pick a Safe Password (http://wolfram.org/writing/howto/ password.html) dEric Wolfram et Unix Password Security (http://www.belgers.com/write/pwseceng.txt) 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 le superutilisateur et les membres du 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 passe normaux nimporte quel moment en utilisant shadowconfig. Vous pouvez en apprendre davantage sur les mots de passe masqus dans le Shadow Password (http://www.linuxdoc. org/HOWTO/Shadow-Password-HOWTO.html) (/usr/share/doc/HOWTO/fr-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 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$. Ceci 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, consultez Authentication utilisateur : PAM page 38. 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.

3.6

Administrer le nombre minimal 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 la machine. Chaque service install peut introduire de nouveaux trous de scurit, peu vidents ou inconnus, sur lordinateur. 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 service install, 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 rseau 3 . Si vous navez pas choisi linstallation standard, mais que vous avez slectionn linstallation 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, consultez Scurisation des services RPC page 77 pour plus dinformations sur la faon de scuriser ou de dsactiver les services RPC. Lorsque vous installez un nouveau service rseau (dmon) sur le systme Debian GNU/Linux, il peut tre activ de deux faons : avec le superdmon inetd (une ligne sera ajoute /etc/inetd.conf) ou par un programme qui sattache luimme aux interfaces rseau. Ces programmes sont contrls par 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, consultez /usr/share/doc/sysvinit/README.runlevels.gz).
3. Lempreinte dans Debian 3.0 et les versions prcdentes ntait pas aussi rduite 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.

Chapitre 3. Avant et pendant linstallation

26

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 dinformations sur la faon de dsactiver des services rseau, veuillez consulter Dsactivation de services dmon de la prsente page. Si vous voulez changer le comportement par dfaut de dmarrage des services linstallation de leur paquet associ 4 , utilisez policy-rc.d, veuillez consulter /usr/share/doc/sysv-rc/README.policy-rc.d.gz pour obtenir plus de renseignements. La prise en charge dinvoke-rc.d est obligatoire dans Debian, ce qui veut dire que pour Debian 4.0 Etch et versions suivantes, vous pouvez crire un chier policy-rc.d qui interdit le dmarrage des nouveaux dmons avant de les avoir congurs. Mme si aucun de ces scripts nest encore empaquet, ils sont plutt faciles crire. Consultez policyrcd-script-zg2.

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 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 pour tuer). Pour obtenir plus de renseignements, veuillez consulter la section Personnalisation des niveaux de dmarrage (http://www.debian.org/ doc/manuals/reference/ch-system#s-custombootscripts) de la rfrence Debian (chapitre 2 - fondamentaux de Debian). Vous pouvez supprimer ces liens manuellement ou en utilisant update-rc.d (consultez update-rc.d(8)). Vous pouvez, par exemple, dsactiver un service pour les niveaux dexcution multiutilisateurs en faisant :
# update-rc.d nom stop 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 (consultez le bogue n 67095 (http: //bugs.debian.org/67095)). Daprs les pages de manuel :
Si 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. Vous pouvez aussi utiliser linterface en ligne de commande de sysv-rc-conf :
# sysv-rc-conf bidule off

Lavantage, avec cet utilitaire, est que les liens rc.d sont remis dans ltat quils avaient avant lappel off si vous ractivez le service avec :
# sysv-rc-conf bidule on

Dautres mthodes (moins recommandes) pour dsactiver les services sont : suppression du script /etc/init.d/nom_service et suppression des liens de dmarrage avec :
# update-rc.d nom remove

dplacement du chier script (/etc/init.d/nom_service) vers un autre nom (par exemple /etc/init.d /OFF.nom_service). Cela laissera des liens symboliques non valables sous /etc/rc${runlevel}.d/ et gnrera des messages derreur au dmarrage du systme ;
4. Cest pratique si vous mettez en place un chroot de dveloppement, par exemple.

Chapitre 3. Avant et pendant linstallation

27

suppression du droit dexcution du chier /etc/init.d/nom_service. Cela gnrera galement des messages derreur au dmarrage ; dition du 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). Si vous procdez de cette faon, vous ne pourrez plus utiliser le script pour dmarrer le service vous-mme plus tard. 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. 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 file-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 corriges 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 avec 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 le 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 sur toutes les adresses IP de lhte, 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) CD de logiciels et des milliers de paquets et la version 3.1 fournit environ 13 CD de logiciels. Avec autant de logiciels et mme si linstallation du systme de base est assez rduite 5 vous pourriez vous laisser entraner et installer plus de logiciels quil nest vraiment ncessaire sur le systme. Comme vous connaissez dj lutilisation du systme (nest-ce pas ?), vous ne devez installer que les logiciels qui sont vraiment ncessaires son fonctionnement. Tout outil non ncessaire install pourrait tre utilis par un utilisateur qui voudrait compromettre le systme ou par un intrus externe qui aurait obtenu un accs linterprteur de commandes (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 voir ci-dessous python, tcl, etc.) pourrait aider un attaquant compromettre le systme un peu plus : lui permettre daugmenter ses droits. Il est plus facile, par exemple, dexploiter localement 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. 6
5. 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

6. Beaucoup dintrusions ne sont faites que pour avoir accs aux ressources pour effectuer des activits illgales (attaques de dni de service, envoi dindsirables, serveurs FTP illicites, pollution de DNS, etc.) plus que pour obtenir des donnes condentielles du systme compromis.

Chapitre 3. Avant et pendant linstallation

28

Bien sr, un intrus ayant un accs local linterprteur de commandes peut tlcharger son propre jeu doutils et les excuter, et linterprteur de commandes peut lui-mme 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 (consultez Outils dvaluation des vulnrabilits distance page 99), vous pouvez vous attendre ce quun intrus les utilise galement sils sont disponibles. Veuillez noter quune installation par dfaut de Debian Sarge (cest--dire une installation pour laquelle aucun paquet individuel nest slectionn) installera un certain nombre doutils de dveloppement qui ne sont habituellement pas ncessaires. Cela vient du fait que certains paquets de dveloppement sont de priorit Standard. Si vous ne comptez pas faire de dveloppement, vous pouvez supprimer ces paquets du 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 cpp 29,446 gcc 4,896 (Note : paquet virtuel) g++-3.3 1,778,880 bison 702,830 make 366,138 libstdc++5-3.3-dev 774,982

Ce problme est corrig dans les versions aprs Sarge, consultez le bogue n 301273 (http://bugs.debian.org/ cgi-bin/bugreport.cgi?bug=301273) et le bogue n 301138 (http://bugs.debian.org/cgi-bin/bugreport. cgi?bug=301138). 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. 7 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.
7. Vous pouvez crer (sur un autre systme) un paquet bidon avec equivs.

Chapitre 3. Avant et pendant linstallation /usr/sbin/exigrep du paquet exim. /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.

29

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

ou
$ apt-cache rdepends perl

3.8

Consulter 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 debiansecurity-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 sur 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 avec correction des bogues de scurit, ce qui est relativement important dans le maintien dun systme scuris (consultez Faire une mise jour de scurit page 31 pour obtenir plus de prcisions).

Chapitre 3. Avant et pendant linstallation

30

31

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 la conguration, mais pour prvenir un accs physique, vous devriez consulter Changer le BIOS ( nouveau) page 33, Attribuer un mot de passe LILO ou GRUB page 33, Enlever linvite superutilisateur du noyau page 34, Restreindre les accs aux consoles page 35 et Restreindre les redmarrages systme depuis la console page 35. Avant de vous connecter tout rseau, particulirement sil sagit dun rseau public, vous devriez, au minimum, faire une mise jour de scurit (consultez Faire une mise jour de scurit de la prsente page). Vous pourriez facultativement faire un instantan du systme (consultez Prendre un instantan ( snapshot ) du systme page 60).

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 Debian 1 . Consultez Lquipe de scurit Debian page 87 pour plus dinformations sur le fonctionnement de lquipe en charge de la scurit Debian. Pour des informations sur linscription aux listes de diffusion Debian, consultez http://lists.debian.org. Les DSA sont signes avec la clef 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. FIXME : Ajouter la clef 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 quune vulnrabilit a t dcouverte dans un paquet. Ainsi, des rvisions mineures (il y en a eu quatre dans la version Debian 3.0 Sarge) incluent ces mises jour de paquets. Pendant linstallation, les mises jour de scurit sont congures sur le systme, et les mises jour en attente sont tlcharges et appliques, sauf indication contraire ou si le systme nest pas connect Internet. Les mises jour sont appliques avant mme le premier dmarrage, de telle sorte que le nouveau systme commence sa vie aussi jour que possible. Pour mettre jour vous-mme le systme, ajoutez la ligne suivante dans le sources.list et vous recevrez les mises jour de scurit automatiquement quand vous mettrez jour le systme. Remplacez [NOM] par le nom de la version, par exemple squeeze.
1. Debian Security Advisories (DSA).

Chapitre 4. Aprs linstallation


deb http://security.debian.org/ [NOM]/updates main contrib non-free

32

Remarque : si vous utilisez la distribution testing, utilisez les source du miroir de scurit de testing conformment Suivi en scurit de la branche testing page 112. Aprs avoir fait cela, plusieurs outils vous permettent de mettre niveau le systme. Sil sagit dun ordinateur de bureau, une application appele update-notifier 2 permet de vrier facilement si de nouvelles mises niveau sont disponibles. En choisissant cela, vous pouvez faire les mises niveau depuis le bureau (en utilisant update-manager). Pour obtenir plus de renseignements, veuillez consulter Vrication de mises jour sur station de travail page 110. Dans les environnements de bureau, vous pouvez aussi utiliser synaptic (GNOME), kpackage ou adept (KDE) pour des interfaces plus avances. Si le systme ne possde quun terminal texte, vous pouvez utiliser aptitude, apt ou dselect (obsolte) pour mettre niveau. Si vous voulez utiliser linterface texte daptitude, il suft dappuyer sur u (mise jour) suivi de g (pour mettre niveau). Vous pouvez aussi utiliser simplement la ligne de commande (en tant que superutilisateur) :
# aptitude update # aptitude upgrade

Si vous voulez utiliser apt, il suft de faire comme pour aptitude, mais en remplaant aptitude des lignes prcdentes par apt-get. Si vous voulez utiliser dselect, choisissez tout dabord mise jo[U]r, puis [I]nstaller et enn [C]ongurer pour mettre jour et installer les paquets. Si vous le voulez, vous pouvez ajouter galement les lignes deb-src /etc/apt/sources.list. Consultez apt(8) pour plus de dtails.

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 jour 3 . 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 4 (en tant que superutilisateur) :
# lsof | grep <la_bibliothque_mise__niveau> \ | awk {print $1, $9} | uniq | sort -k 1

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) 5 . 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 envisageable 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.

4.2.2

Mise jour de scurit du noyau

Assurez-vous tout dabord que le 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, le 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 linux-image-2.6.18-4-686: /boot/vmlinuz-2.6.18-4-686

2. Depuis Etch. 3. Bien que les bibliothques aient t supprimes du systme de chiers, aucun inud ne sera nettoy tant quun programme a encore un descripteur de chier pointant dessus. 4. En fonction de la version de lsof, vous pourriez avoir besoin de remplacer $9 par $8. 5. Cela sest produit, par exemple, dans la mise jour de la libc6 2.2.x la 2.3.x cause de problmes dauthentication NSS, consultez http:// lists.debian.org/debian-glibc/2003/debian-glibc-200303/msg00276.html.

Chapitre 4. Aprs linstallation

33

Si le 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 linux-image-2.6.18-4-686. Dans le premier cas, vous devrez installer manuellement un paquet dimage de noyau. Limage exacte du noyau que vous devez installer dpend de larchitecture et de la version de noyau prfre. Une fois 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 le noyau de la version 2.4 la version 2.6 (ou de la version 2.4.26 la version 2.4.27 6 ). Le systme dinstallation des dernires versions de Debian grera le noyau slectionn comme partie du systme de gestion des paquets. Vous pouvez vrier quels noyaux sont installs en excutant :
$ COLUMNS=150 dpkg -l linux-image* | awk $1 ~ /ii/ { print $0 }

Pour voir si le noyau doit tre mis jour, excutez :


$ kernfile=readlink -f /vmlinuz $ kernel=dpkg -S $kernfile | awk -F : {print $1} $ apt-cache policy $kernel linux-image-2.6.32-5-686: Install : 2.6.32-35 Candidat : 2.6.32-35 Table de version : *** 2.6.32-35 100 /var/lib/dpkg/status

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). 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 consulter (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 sous-systme rseau correctement et qui redmarrera le systme si ce nest pas le cas 7 . Cela 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 srie 8 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 23 ? 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 CD. 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 une invite de commandes superutilisateur et changer les mots de passe en entrant linvite damorage <nom-de-l-image-d-amorage> init=/bin/sh. Aprs le changement du mot de passe et le
6. Sauf si vous avez install un mtapaquet de noyau comme linux-image-2.6-686 qui va toujours tirer la dernire rvision mineure de noyau pour une version de noyau et une architecture donne. 7. 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). 8. Congurer une console srie est en dehors du cadre de ce document, pour plus dinformations, veuillez consulter 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).

Chapitre 4. Aprs linstallation

34

redmarrage du systme, la personne a un accs superutilisateur illimit et peut faire tout ce quelle veut sur le systme. Aprs cela, vous naurez plus daccs supertilisateur sur la machine, tant donn que vous ne connatrez pas le mot de passe. 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 par image. 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 au superutilisateur 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). Cela 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 chiffre. Lutilitaire grub-md5-crypt gnre un hachage de mot de passe qui est compatible avec lalgorithme du mot de passe GRUB (MD5). Pour indiquer grub quun mot de passe au format MD5 va tre utilis, utilisez la directive suivante :
timeout 3 password --md5 $1$T/vfEWUQ$t8xoW.5kp3nbqc1zOwa3W1

Le paramtre md5 a t ajout pour informer grub deffectuer la procdure dauthentication md5. Le mot de passe fourni est la version MD5 chiffre 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 dinformations concernant les mots de passe grub sont disponibles dans le paquet grub-doc.

4.5

Dsactivation de linvite superutilisateur de linitramfs

Note : cela sapplique aux noyaux fournis par dfaut aprs Debian 3.1. Les noyaux Linux 2.6 fournissent un moyen daccder une invite de commande de superutilisateur lors de lamorage et qui sera prsente pendant le chargement de linitramfs en cas derreur. Cest pratique pour permettre ladministrateur dentrer une invite de commande de secours avec des droits du superutilisateur. Cette invite de commande peut tre utilise pour charger vous-mme des modules quand la dtection automatique choue. Ce comportement est celui par dfaut pour les initramfs crs par initramfs-tools. Le message suivant apparatra :
"ALERT! /dev/sda1 does not exist. Dropping to a shell!

An de supprimer ce comportement, vous devez congurer largument damorage suivant : panic=0. Ajoutez-le soit la section kopt de /boot/grub/menu.lst et excutez update-grub, soit la section append de /etc/lilo.conf.

4.6

Enlever linvite superutilisateur du noyau

Note : cela ne sapplique pas aux noyaux fournis par Debian 3.1, car le temps dattente du noyau a t modi 0. Les noyaux Linux 2.4 fournissent un moyen daccder une invite de commandes superutilisateur lors de lamorage et qui sera prsent juste aprs le chargement du systme de chiers cramfs. Un message apparatra pour permettre ladministrateur dobtenir une invite de commandes interactive avec des droits du superutilisateur, cette invite de commandes peut tre utilise pour charger manuellement des modules quand la dtection automatique choue. Ce comportement est celui par dfaut pour linuxrc de linitrd. Le message suivant apparatra :

Chapitre 4. Aprs linstallation


Press ENTER to obtain a shell (waits 5 seconds)

35

Pour supprimer ce comportement, vous devez changer /etc/mkinitrd/mkinitrd.conf et positionner :


# DELAY Le temps, en seconde que le script linuxrc doit # attendre pour permettre lutilisateur de linterrompre # avant que le systme ne soit lanc DELAY=0

Puis, rgnrez limage 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

4.7

Restreindre les accs aux consoles

Certaines rgles de scurit peuvent forcer les administrateurs se connecter au systme sur une console avec leur identiant et mot de passe puis devenir superutilisateur (avec su ou sudo). Cette rgle est applique sous Debian en ditant les chiers /etc/pam.d/login et /etc/securetty lors de lutilisation de PAM : /etc/pam.d/login 9 active le module pam_securetty.so. Ce module, une fois correctement congur, interdira la demande de mot de passe quand le superutilisateur essaye de se connecter sur une console non scurise, rejetant laccs cet utilisateur ; securetty 10 en ajoutant ou supprimant les terminaux depuis lesquels les accs du superutilisateur seront autoriss. Si vous voulez nautoriser que les accs locaux en console, vous avez alors besoin de console, ttyX 11 et vc/X (si vous utilisez des priphriques devfs), vous pouvez vouloir ajouter galement ttySX 12 si vous utilisez une console srie pour laccs local (o X est un nombre entier, vous pouvez vouloir avoir plusieurs instances). La conguration par dfaut pour Wheezy 13 inclut de nombreux priphriques tty, ports sries, consoles vc ainsi que le serveur X et le priphrique console. Vous pouvez ajuster cela en toute scurit si vous nutilisez pas tant de consoles. Vous pouvez conrmer les consoles virtuelles et priphriques tty disponibles en vriant /etc/inittab 14 . 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 :
auth required pam_unix.so nullok

4.8

Restreindre les redmarrages systme depuis la console

Si un clavier est attach au systme, tout le monde (oui, tout le monde) avec un accs physique au systme peut le redmarrer sans se connecter en appuyant simplement sur la combinaison Ctrl+Alt+Delete du clavier (le salut trois doigts). Cela peut tre en conformit ou non avec vos rgles de scurit. Cest aggrav dans les environnements o le systme dexploitation est virtualis. Dans ces environnements, la possibilit stend aux utilisateurs ayant accs la console virtuelle (qui pourrait tre accessible par le rseau). Remarquez aussi que, dans ces environnements, cette combinaison est utilise constamment (pour ouvrir une invite de connexion dans certaines interfaces graphiques de systmes dexploitations) et quun administrateur pourrait lenvoyer virtuellement et forcer un systme redmarrer. Deux manires permettent de restreindre cela :
9. Dans les versions prcdentes de Debian, il fallait modier login.defs, et utiliser la variable CONSOLE qui dnit un chier ou une liste de terminaux sur lesquels la connexion du superutilisateur est autorise. 10. Le chier /etc/securetty est un chier de conguration qui appartient au paquet login. 11. Ou ttyvX pour GNU/FreeBSD et ttyE0 pour GNU/KNetBSD. 12. Ou comX pour GNU/Hurd, cuaaX pour GNU/FreeBSD et ttyXX pour GNU/KNetBSD. 13. 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. 14. Recherchez les appels getty.

Chapitre 4. Aprs linstallation le congurer pour que seuls les utilisateurs autoriss puissent redmarrer le systme ; dsactiver compltement cette fonctionnalit.

36

Si vous dsirez restreindre cela, vous devez vrier le chier /etc/inittab pour que la ligne incluant ctrlaltdel appelle shutdown avec le paramtre -a. La valeur par dfaut dans Debian inclut ce paramtre :
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

Le paramtre -a, conformment la description de la page de manuel shutdown(8), donne la possibilit de permettre certains utilisateurs darrter le systme. Pour cela, le chier /etc/shutdown.allow doit tre cr et inclure le nom des utilisateurs qui peuvent redmarrer le systme. Quand la combinaison du salut trois doigts est excute en console, le programme va vrier si lun des utilisateurs dnis dans ce chier est connect. Si aucun dentre eux ne lest, shutdown ne va pas redmarrer le systme. Pour dsactiver la combinaison Ctrl+Alt+Del, il suft de commenter la ligne contenant la dnition de ctrlaltdel dans /etc /inittab. Noubliez pas dexcuter init q aprs toute modication du chier /etc/inittab pour quelle prenne effet.

4.9

Restriction dutilisation des touches SysRq magiques

Les touches SysRq magiques sont des combinaisons de touches qui permettent aux utilisateurs connects une console systme du noyau Linux de raliser des commandes de bas niveau. Ces commandes de bas niveau sont envoyes en appuyant simultanment sur Alt+SysRq et une touche de commande. La touche SysRq est la mme que Impr cran sur la plupart des claviers. Depuis la publication de Etch, les touches SysRq magiques sont actives dans le noyau Linux pour donner certains droits aux utilisateurs en console. Vous pouvez conrmer cela en vriant si /proc/sys/kernel/sysrq existe et vrier ses valeurs :
$ cat /proc/sys/kernel/sysrq 438

La valeur par dfaut ci-dessus permet toutes les fonctions SysRq sauf la possibilit denvoyer des signaux aux processus. Par exemple, elle permet aux utilisateurs connects en console de remonter tous les systmes de chiers en lecture seule, redmarrer le systme ou provoquer une panique du noyau. Si toutes les fonctionnalits sont actives, ou sur les anciens noyaux (avant le 2.6.12), la valeur sera simplement 1. Vous devriez dsactiver cette fonctionnalit si laccs la console nest pas restreint aux utilisateurs autoriss : par exemple si la console est connecte une ligne modem, sil y a un accs physique facile au systme ou sil est excut dans un environnement virtualis et dautres utilisateurs ont accs la console. Pour cela, modiez /etc/sysctl.conf pour ajouter les lignes suivantes :
# Dsactiver les touches SysRq magiques kernel.sysrq = 0

Pour de plus amples renseignements, consultez le chapitre scurit de Remote Serial Console HOWTO (http://tldp. org/HOWTO/Remote-Serial-Console-HOWTO/security-sysrq.html), la documentation SysRQ du noyau (http: //kernel.org/doc/Documentation/sysrq.txt) et larticle de Wikipdia sur les touches SysRq magiques (http: //fr.wikipedia.org/wiki/Magic_SysRq_key).

4.10

Monter correctement les partitions

En montant un systme de chiers ext (ext2, ext3 ou ext4), diffrentes options additionnelles sont permises pour lappel mount ou pour le chier /etc/fstab. Par exemple, ceci est une 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 chiers de priphriques. Cela semble bon mais :

Chapitre 4. Aprs linstallation ne sapplique quaux systmes de chiers ext2 ou ext3 ; peut tre contourn facilement.

37

Loption noexec vite aux binaires dtre excuts directement mais ctait facilement contournable dans les premires versions du noyau :
alex@joker:/tmp# mount | grep tmp /dev/hda7 on /tmp type ext2 (rw,noexec,nosuid,nodev) alex@joker:/tmp# ./date bash: ./date: Permission non accorde alex@joker:/tmp# /lib/ld-linux.so.2 ./date dimanche 3 dcembre 2000, 17:49:23 (UTC+0100)

Les versions plus rcentes du noyau grent cependant loption noexec correctement :
angrist:/tmp# mount | grep /tmp /dev/hda3 on /tmp type ext3 (rw,noexec,nosuid,nodev) angrist:/tmp# ./date bash: ./tmp: Permission non accorde angrist:/tmp# /lib/ld-linux.so.2 ./date ./date: error while loading shared libraries: ./date: failed to map segment from shared object: Operation not permitted

Toutefois, de nombreux pirates en herbe utilisent des failles 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 dinformations consultez le bogue n 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 logiciels 15 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 ext3 ext3 ext3 ext3 ext3 ext3 ext3 ext3 ext3 vfat iso9660 defaults,ro,nodev 0 2 defaults,ro,nodev,nosuid 0 2 defaults,nodev,usrquota,grpquota 0 2 defaults,nodev,nosuid,noexec,usrquota,grpquota 0 defaults,nodev,nosuid,noexec,usrquota,grpquota 0 defaults,nodev,nosuid,noexec 0 2 defaults,nodev,nosuid,noexec 0 2 rw,nosuid,nodev,exec,auto,nouser,async,usrquota,grpquota defaults,users,nodev,nosuid,noexec 0 0 defaults,users,nodev,nosuid,noexec 0 0 ro,users,nodev,nosuid,noexec 0 0

2 2

4.10.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 (consultez http:// bugs.debian.org/116448) si APT::ExtractTemplates::TempDir nest pas congur correctement (consultez 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 droits dexcution.

4.10.2

Paramtrer /usr en lecture seule

Si vous mettez /usr en lecture seule, vous serez dans lincapacit dinstaller de nouveaux paquets sur le systme Debian GNU/Linux. Vous devrez, avant tout, la remonter en lecture/criture, puis installer les nouveaux paquets et enn la remonter en lecture seule. apt peut tre congur pour lancer des commandes avant et aprs linstallation de paquets, ainsi vous pouvez avoir envie de le congurer correctement. Pour raliser cela, modiez le chier /etc/apt/apt.conf et ajoutez :
DPkg { Pre-Invoke { "mount /usr -o remount,rw" }; Post-Invoke { "mount /usr -o remount,ro" }; };

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

Chapitre 4. Aprs linstallation

38

Notez que le Post-Invoke peut chouer avec un message derreur /usr busy . Cela 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 vous-mme. Attention ! Cela veut dire que vous devrez probablement redmarrer la session X (si vous en faites fonctionner une) chaque fois que vous faites une mise jour majeure du systme. Vous pourriez aussi vous redemander si paramtrer /usr en lecture seule est adapt au systme. Consultez galement cette discussion sur debian-devel propos de /usr en lecture seule (http://lists.debian.org/ debian-devel/2001/11/threads.html#00212).

4.11
4.11.1

Fournir des accs scuriss aux utilisateurs


Authentication utilisateur : PAM

PAM (Pluggable Authentication Modules) permet aux administrateurs systme de choisir comment les applications authentient les utilisateurs. Remarquez que PAM ne peut rien faire tant quune application na pas t compile avec la prise en charge pour PAM. La plupart des applications livres dans Debian ont cette prise en charge intgre (Debian navait pas de prise en charge pour PAM avant la version 2.2). La conguration actuelle par dfaut pour tout service activ avec PAM est dmuler lauthentication UNIX (consultez /usr/share/doc/libpam0g/Debian-PAM-MiniPolicy.gz pour plus dinformations sur la faon dont les services devraient fonctionner dans Debian). Chaque application avec la prise en charge de PAM fournit un chier de conguration dans /etc/pam.d qui peut tre utilis pour modier son comportement : 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 lire les Guides Linux-PAM (http: //www.linux-pam.org/Linux-PAM-html/) de rfrence. Cette documentation est fournie par le paquet libpam-doc dans /usr/share/doc/libpam-doc/html/. 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 au systme. Donc soyez prudent. Une ligne de conguration typique a un champ de contrle comme deuxime lment. Gnralement, il devrait tre paramtr sur requisite qui retourne un chec de connexion si un module choue. Scurit de mot de passe dans PAM Vriez /etc/pam.d/common-password, englob dans /etc/pam.d/passwd 16 . Ce chier est aussi englob dans dautres chiers de /etc/pam.d/ pour dnir le comportement des mots de passe utiliss dans les sous-systmes qui donnent accs aux services sur la machine, comme la connexion en console (login), les gestionnaires de connexion graphiques (comme gdm ou lightdm) et la connexion distance (comme sshd). Assurez-vous que le module pam_unix.so utilise loption sha512 pour les mots de passe chiffrs. Cest le cas par dfaut dans Debian Squeeze. La ligne avec la dnition du module pam_unix devrait ressembler :
password [success=1 default=ignore] pam_unix.so nullok obscure minlen=8 sha512

Cette dnition : renforce le chiffrement des mots de passe conservs, en utilisant la fonction de hachage SHA-512 (option sha512) ; active les vrications de complexit des mots de passe (option obscure) conformment la dnition de la page de manuel pam_unix(8) ; impose une taille minimale de mot de passe (option min) 8 caractres.
16. Dans les anciennes versions de Debian, la conguration des modules tait dnie directement dans /etc/pam.d/passwd.

Chapitre 4. Aprs linstallation

39

Assurez-vous que les mots de passe chiffrs sont utiliss dans les applications PAM, car cela aide protger contre les attaques par dictionnaire. Lutilisation du chiffrement permet aussi dutiliser des mots de passe plus longs que 8 caractres. Puisque ce module est aussi utilis pour dnir la faon dont les mots de passe sont changs (il est inclus par chpasswd), vous pouvez renforcer la scurit des mots de passe dans le systme en installant libpam-cracklib et en introduisant cette dnition dans le chier de conguration /etc/pam.d/common-password :
# 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 [success=1 default=ignore] pam_unix.so obscure minlen=8 sha512 use_authok

La premire ligne charge le module PAM cracklib, qui fournit la vrication de la sret des mots de passe, attend un nouveau mot de passe avec une taille minimale 17 de 12 caractres, une diffrence dau moins 3 caractres par rapport lancien et autorise 3 essais. cracklib dpend dune liste de mots (comme wenglish, wfrench, wbritish, etc.), assurezvous donc den avoir install une adapte votre langue, sinon, cela peut tre totalement inutile. La seconde ligne (utilisant le module pam_unix.so) est la conguration par dfaut dans Debian, conformment la description prcdente, hormis pour loption use_authok. Loption use_authok est ncessaire si pam_unix.so est empil aprs pam_cracklib.so, et est utilis pour passer le mot de passe du module prcdent. Sinon le mot de passe serait demand deux fois lutilisateur. Pour plus de renseignements sur le rglage de cracklib, consultez la page de manuel pam_cracklib(8) et larticle Scurit des mots de passe sous Linux avec pam_cracklib (http://www.deer-run.com/~hal/sysadmin/pam_cracklib. html) de Hal Pomeranz. En activant le module PAM cracklib, vous dnissez une rgle qui oblige les utilisateurs utiliser des mots de passe srs. Autrement, les modules PAM peuvent tre congurs pour utiliser une authentication deux facteurs, comme : libpam-barada, libpam-google-authenticator, libpam-oath, libpam-otpw, libpam-poldi, libpam-usb ou libpam-yubico. La conguration de ces modules permettrait daccder au systme en utilisant des mcanismes dauthentication externes comme des cartes puce, clefs USB externes ou mots de passe uniques gnrs par des applications externes excutes, par exemple, sur le tlphone portable de lutilisateur. Veuillez remarquer que ces restrictions sappliquent tous les utilisateurs mais pas aux changements de mot de passe du superutilisateur. Le superutilisateur pourra dnir nimporte quel mot de passe (nimporte quelle taille ou complexit) pour lui-mme et les autres, quelque soient les restrictions dnies ici. Contrle de laccs utilisateur dans PAM An dtre sr que le superutilisateur peut se connecter uniquement partir des terminaux locaux, la ligne suivante doit tre active dans /etc/pam.d/login :
auth requisite pam_securetty.so

Puis, vous devez modier la liste des terminaux sur lesquels la connexion du superutilisateur est autorise dans le chier /etc/securetty (comme cest dcrit en Restreindre les accs aux consoles page 35). 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. Limites des utilisateurs dans PAM 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

Cela restreint les ressources du systme auxquelles les utilisateurs sont autorises (consultez ci-aprs 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.
17. Loption minlen nest pas tout fait claire, et nindique pas exactement le nombre de caractres du mot de passe. Un compromis peut tre dni entre la complexit et la taille en ajustant les paramtres credit de diffrentes classes de caractres. Pour plus de renseignements, consultez la page de manuel pam_cracklib(8).

Chapitre 4. Aprs linstallation Contrle de su dans PAM

40

Si vous voulez protger su, pour que seules quelques personnes puissent lutiliser pour devenir superutilisateur sur le 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 superutilisateur, ce groupe. Ensuite, ajoutez la ligne suivante dans /etc/pam.d/su :
auth requisite pam_wheel.so group=wheel debug

Cela permet dtre sr que seules les personnes du groupe wheel pourront utiliser su pour devenir superutilisateur. Les autres utilisateurs ne seront pas capables de le devenir. En fait, ils recevront un message de refus sils essayent de devenir superutilisateur. Si vous dsirez que seulement certains utilisateurs sauthentient un service PAM, il suft dutiliser les chiers o sont stocks les utilisateurs autoriss (ou pas) se connecter. Imaginons que vous ne vouliez autoriser que lutilisateur ref se connecter avec 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/sshusers-allowed onerr=fail

Rpertoires temporaires dans PAM Puisquil y eu de nombreuses vulnrabilits dites de chier temporaire non scuris, dont thttpd est un exemple (consultez DSA-883-1 (http://www.debian.org/security/2005/dsa-883)), libpam-tmpdir est un bon paquet installer. Tout ce que vous avez faire est dajouter ceci /etc/pam.d/common-session :
session optional pam_tmpdir.so

Une discussion a eu lieu propos de lajout par dfaut dans Debian. Consultez http://lists.debian.org/ debian-devel/2005/11/msg00297.html pour obtenir plus de renseignements. Conguration pour les applications PAM non dnies La dernire tape, mais pas la moindre, est de crer le chier /etc/pam.d/other et dajouter les lignes suivantes :
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 grent PAM (accs refus par dfaut).

4.11.2

Restreindre lutilisation des ressources : le chier limits.conf

Vous devriez vraiment jeter un srieux coup dil ce chier. Vous pouvez y dnir 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 une invite de commandes valable sur le 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 interprteurs de commandes (par exemple, bash a ulimit, consultez bash(1)), mais comme ils ne fournissent pas tous les mmes limites et quun utilisateur peut changer

Chapitre 4. Aprs linstallation

41

dinterprteur (consultez chsh(1)), il est prfrable de placer ces limites dans les modules PAM ainsi elles sappliqueront quel que soit linterprteur de commandes utilis et galement aux modules PAM qui ne sont pas orients interprteur. 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.. Les paramtres de limites spciques que vous pouvez vouloir imposer dpendent des ressources du systme, cest lune des principales raisons pour lesquelles aucune limite nest impose dans linstallation par dfaut. Par exemple, lexemple de conguration ci-dessous impose une limite de 100 processus par utilisateur (pour empcher les bombes 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)

0 102400 2048 10000 10000 1024 8 8192 unlimited 100 unlimited

Et voici les limites dun utilisateur administratif :


$ 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)

0 102400 100000 100000 100000 1024 8 8192 unlimited 2000 unlimited

Pour plus dinformations, consultez : PAM reference guide for available modules (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.

Chapitre 4. Aprs linstallation

42

4.11.3

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

La prochaine tape est dditer les conguration et action de base lors de la connexion de lutilisateur. Notez que ce chier ne fait pas partie 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 programmes nest appel au moins indirectement (le programme getty qui gre les consoles et offre linvite de connexion initiale appelle bien login).
FAILLOG_ENAB yes

Si vous activez cette variable, les connexions choues seront enregistres dans un journal. Il est important den garder une trace pour reprer si quelquun tente une attaque par force brute.
LOG_UNKFAIL_ENAB no

En congurant cette variable yes , les noms dutilisateur seront enregistrs en cas dchec de connexion. Laisser la conguration no (par dfaut) est plus prudent, puisque sinon, les mots de passe dutilisateurs pourraient tre enregistrs par erreur (si un utilisateur fait une faute de frappe et entre le mot de passe la place de lidentiant). Si vous congurez yes , assurez-vous que les journaux ont les droits adquats (640 par exemple, avec une conguration de groupe adquate comme adm).
SYSLOG_SU_ENAB yes

Cela va activer lcriture dans les journaux de syslog des tentatives de su. Plutt important sur des machines srieuses, mais notez que cela 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.


ENCRYPT_METHOD SHA512

Comme mentionn ci-dessus, les mots de passe chiffrs rduisent considrablement le problme des attaques par dictionnaire tant donn que vous pouvez utiliser des mots de passe plus longs. Cette dnition doit tre cohrente avec la valeur dnie dans /etc/pam.d/common-password.

4.11.4

Actions de connexion de lutilisateur : modication de /etc/pam.d/login

Le chier de conguration de connexion peut tre ajust pour implmenter une politique plus stricte. Par exemple, la conguration par dfaut peut tre modie pour augmenter le dlai entre les invites de connexion. La conguration par dfaut dnit 3 secondes le dlai :
auth optional pam_faildelay.so delay=3000000

Augmenter la valeur de delay une valeur sufsamment grande permet de rendre plus difciles les tentatives de connexion en utilisant la force brute. Si un mauvais mot de passe est fourni, le pirate potentiel (ou le simple utilisateur !) doit attendre plus longtemps avant dobtenir une nouvelle invite de connexion, ce qui prend pas mal de temps quand vous testez des mots de passe. Par exemple, avec delay=10000000, les utilisateurs devront attendre 10 secondes sils ont tap un mauvais mot de passe. Ce chier permet aussi de dnir le message prsent aux utilisateurs avant de se connecter. Cest dsactiv par dfaut, comme ci-dessous :
# auth required pam_issue.so issue=/etc/issue

Si la politique de scurit lexige, ce chier peut tre utilis pour montrer un message standard indiquant que laccs au systme est restreint et que laccs des utilisateurs est journalis. Ce type de dclaration peut tre ncessaire dans certains environnements et juridictions. Pour lactiver, ajoutez simplement les renseignements ncessaires dans le chier /etc /issue 18 et dcommentez la ligne activant le module pam_issue.so dans /etc/pam.d/login. Dans ce chier, vous pouvez aussi activer des fonctionnalits supplmentaires qui pourraient tre pertinentes appliquer aux politiques de scurit locales comme :
18. Le contenu par dfaut de ce chier fournit des renseignements sur le systme dexploitation et la version utilise par le systme, que vous pourriez ne pas vouloir dvoiler aux utilisateurs anonymes.

Chapitre 4. Aprs linstallation

43

la dnition de rgles accordant laccs certains utilisateurs suivant lheure, en activant le module pam_time.so et en congurant /etc/security/time.conf en consquence (dsactive par dfaut) ; la dnition de sessions de connexion pour utiliser les limitations aux utilisateurs conformment la dnition de /etc /security/limits.conf (active par dfaut) ; la prsentation lutilisateur des renseignements sur la prcdente connexion (active par dfaut) ; lafchage dun message (/etc/motd et /run/motd.dynamic) aux utilisateurs aprs la connexion (active par dfaut) ;

4.11.5

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 le dmon gre PAM, cela peut tre utilis pour permettre ou refuser certains services aux utilisateurs. FIXME (bogue) : Est-ce un bogue que le chier par dfaut ftpusers dans Debian ne contienne pas tous les utilisateurs dadministration (dans base-passwd) ? Un moyen pratique dajouter tous les comptes systme /etc/ftpusers est dexcuter
$ awk -F : {if ($3<1000) print $1} /etc/passwd > /etc/ftpusers

4.11.6

Utilisation de su

Si vous avez rellement besoin que des utilisateurs deviennent superutilisateur sur le 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 superutilisateur 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 UNIX.

4.11.7

Utilisation de sudo

sudo autorise lutilisateur excuter des commandes dnies sous lidentit dun autre utilisateur, mme en tant que superutilisateur. 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 superutilisateur.

4.11.8

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 dexemple 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 prises en compte.

4.11.9

Restriction des utilisateurs

Parfois, vous pensez avoir besoin dutilisateurs crs dans le 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. Cela peut tre corrig en donnant aux utilisateurs un interprteur de commandes vide ( /dev/null) (qui doit tre dans /etc/shells). Si vous voulez autoriser les utilisateurs accder au systme mais limiter

Chapitre 4. Aprs linstallation

44

leurs mouvements, vous pouvez utiliser le chier /bin/rbash, ce qui est quivalent lajout de loption -r dans bash (consultez INTERPRTEUR RESTREINT dans bash(1)). Veuillez noter que mme avec un interprteur de commandes restreint, un utilisateur ayant accs un programme interactif (qui peut permettre lexcution dun sous-interprteur) peut tre capable de passer outre les limites de linterprteur de commandes. 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). 19 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 la faon de chrooter des utilisateurs accdant au systme par le service ssh sont dcrites dans Environnement de chroot pour SSH page 155.

4.11.10

Audit dutilisateur

Si vous tes vraiment paranoaque, vous pourriez congurer lenvironnement pour superviser ce que les utilisateurs font sur le 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 surveiller la fois ce que les utilisateurs excutent et les rsultats de leurs commandes. Vous ne pouvez pas congurer script comme un interprteur de commandes (mme si vous lajoutez /etc/shells). Mais vous pouvez faire en sorte que le chier dinitialisation de linterprteur de commandes 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 linterprteur ne continuerait pas lire les chiers dinitialisation personnels (car linterprteur sera cras par script). Une solution est de le faire dans les chiers dinitialisation de lutilisateur (mais lutilisateur pourrait alors lenlever, consultez 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 positionnant loption append-only ( append-only ) en utilisant chattr. 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 de linterprteur de commandes Si vous voulez passer en revue ce que les utilisateurs entrent dans linterprteur de commandes (mais sans voir le rsultat), vous pouvez congurer un /etc/profile pour tout le systme qui congure lenvironnement pour que toutes les commandes soient enregistres 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 interprteur de commandes. Cest plutt spcique linterprteur de commandes, donc assurez-vous que tous les utilisateurs utilisent un interprteur de commandes qui le permet. Par exemple, pour bash, le chier /etc/profile pourrait tre paramtr ainsi 20 :
HISTFILE=~/.bash_history HISTSIZE=10000 HISTFILESIZE=999999 # Empcher les utilisateurs dentrer des commandes qui seraient # ignores dans le fichier dhistorique HISTIGNORE="" HISTCONTROL=""

19. 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. 20. Congurer HISTSIZE une trs grande valeur peut poser des problmes avec certains interprteur de commandes 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 sauvegarder les chiers dhistorique des utilisateurs (si vous avez besoin de tout lhistorique de lutilisateur pour une raison ou une autre).

Chapitre 4. Aprs linstallation


readonly HISTFILE readonly HISTSIZE readonly HISTFILESIZE readonly HISTIGNORE readonly HISTCONTROL export HISTFILE HISTSIZE HISTFILESIZE HISTIGNORE HISTCONTROL

45

An que cela fonctionne, lutilisateur doit tre seulement capable dajouter des informations au chier .bash_history. Vous devez aussi positionner lattribut append-only en utilisant le programme chattr sur .bash_history pour tous les utilisateurs. 21 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 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 dinterprteur de commande du tout (ou exclusivement). Si cest le 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 source de bash, les modier et rcuprer dans un chier toutes les commandes quun utilisateur tape. Vous pourriez aussi avoir ttysnoop constamment en attente de nouveaux ttys 22 et reverser toutes les sorties dans un chier. Un autre programme utile est snoopy (consultez galement la page du projet (http://sourceforge.net/ projects/snoopylogger/)) qui est un programme transparent pour lutilisateur qui se positionne comme une bibliothque fournissant une encapsulation des appels execve(), toute commande excute est journalise par syslogd en utilisant la fonctionnalit authpriv (gnralement stocke dans /var/log/auth.log).

4.11.11

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 peut sortir un prol de chaque utilisateur montrant dans quel crneau horaire il se connecte habituellement au systme. 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.11.12

Positionner des umasks aux utilisateurs

En fonction de la politique dutilisateur, vous pourriez modier la faon dont les renseignements sont partags entre utilisateurs, cest--dire quels sont les droits de nouveaux chiers par dfaut crs par les utilisateurs. Le paramtre umask par dfaut de Debian est 022, cela signie que les chiers (et les rpertoires) peuvent tre lus et accds par le groupe de lutilisateur et par tout autre utilisateur du systme. Cette dnition est congure dans le chier de conguration normalis /etc/profile utilis par tous les interprteurs de commandes. Si la valeur par dfaut de Debian est trop permissive pour le systme, vous devrez changer ce paramtre umask pour tous les interprteurs de commandes. Parmi les congurations plus restrictives dumask, 027 (pas daccs permis aux nouveaux chiers pour le groupe other, cest--dire aux autres utilisateur du systme) ou 077 (pas daccs permis aux nouveaux chiers
21. Sans lattribut append-only les utilisateurs seraient capables de vider le contenu du chier des historiques avec > .bash_history. 22. Les ttys sont cres pour les connexions locales et distance par SSH et TELNET.

Chapitre 4. Aprs linstallation

46

pour les membres du groupe de lutilisateur) peuvent tre utiliss. Debian (par dfaut 23 ) cre un groupe par utilisateur de telle sorte que seul lutilisateur soit inclus dans son groupe. Par consquent, 027 et 077 sont quivalents car le groupe de lutilisateur ne contient que lutilisateur lui-mme. Cette modication est congure en dnissant un rglage correct de umask pour tous les utilisateurs. Vous pouvez modier cela en introduisant un appel umask dans les chiers de conguration de linterprteur de commandes : /etc /profile (source par tous les interprteurs de commandes compatibles Bourne), /etc/csh.cshrc, /etc/csh.login, /etc/zshrc et probablement dautres (en fonction des interprteurs de commandes installs sur le systme). Vous pouvez aussi modier le rglage de UMASK dans /etc/login.defs. De toutes celles-l, la dernire charge par linterprteur de commandes est prioritaire. Lordre est : la conguration systme par dfaut pour linterprteur de lutilisateur (cest-dire /etc/profile et les autres chiers de conguration globaux du systme) et ensuite ceux de lutilisateur (ses ~ /.profile, ~/.bash_profile, etc.). Certains interprteurs, cependant, peuvent tre excuts avec une valeur nologin avec laquelle certains de ces chiers pourraient tre sauts. Consultez la page de manuel de linterprteur pour obtenir de plus amples renseignements. Pour les connexions qui utilisent login, la dnition de UMASK de /etc/login.defs est utilise avant toutes les autres. Cependant, cette valeur ne sapplique pas aux programmes excuts par lutilisateur qui nutilisent pas login comme ceux excuts travers su, cron ou ssh. Noubliez pas de vrier et ventuellement modier les chiers de conguration utilisateur sous /etc/skel/ car ce sont ceux qui seront utiliss par dfaut quand ils sont crs avec la commande adduser. Les chiers de conguration utilisateur Debian par dfaut ne contiennent pas dappel umask mais sil y en a dans nimporte quel chier de conguration utilisateur, les utilisateurs nouvellement crs pourraient avoir une valeur diffrente. Notez, cependant, que les utilisateurs peuvent modier leur propre paramtre umask sils le dsirent, le rendant plus permissif ou plus restrictif, en modiant leurs propres chiers de conguration utilisateur. Le paquet libpam-umask rgle lumask par dfaut utilisant PAM. Aprs linstallation du paquet, ajoutez ceci /etc /pam.d/common-session :
session optional pam_umask.so umask=077

Enn, vous pourriez envisager de modier lumask par dfaut du superutilisateur 022 (tel que dni dans /root /.bashrc) une valeur plus restrictive. Cela vitera ladministrateur systme de laisser fuir par inadvertance des chiers sensibles lorsquil travaille en tant que superutilisateur dans des rpertoires lisibles par tous (comme /tmp) et en les rendant lisibles aux autres utilisateurs.

4.11.13

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 (un administrateur aussi paranoaque que cela devrait chrooter ses utilisateurs au passage) sil nutilise pas dpkg-statoverride. Si vous avez besoin daccorder aux utilisateurs un accs au systme avec un interprteur de commandes, rchissez-y 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 le systme, y compris : certains chiers de conguration dans /etc. Cependant, les permissions par dfaut de Debian pour certains chiers sensibles (qui peuvent, par exemple, contenir des mots de passe) empcheront laccs des informations critiques. Pour voir quels chiers ne sont accessibles que par le superutilisateur, excutez par exemple find /etc -type f -a -perm 600 -a -uid 0 en tant que superutilisateur ; 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 le systme ; certains chiers journaux dans /var/log. Notez galement que quelques chiers journaux ne sont accessibles quau superutilisateur et au groupe adm (essayez find /var/log -type f -a -perm 640) et certains ne sont mme disponibles que pour le superutilisateur (essayez find /var/log -type f -a -perm 600 -a -uid 0). Que peut voir un utilisateur dans le 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

La liste des chiers quun utilisateur peut voir et des rpertoires auxquels il a accs est afche.
23. Tel que dni dans /etc/adduser.conf (USERGROUPS=yes). Vous pouvez modier ce comportement en congurant cette valeur no , bien que ce ne soit pas recommand.

Chapitre 4. Aprs linstallation Limiter laccs aux informations dautres utilisateurs

47

Si vous accordez toujours un accs dinterprteur de commandes aux utilisateurs, vous pouvez vouloir limiter les informations quils peuvent voir des autres utilisateurs. Les utilisateurs ayant un accs dinterprteur de commandes ont tendance crer un grand nombre de chiers dans leur rpertoire $HOME : botes aux 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 attribu. Cela 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 peuvent tre (ou non) un problme selon vos rgles locales. Vous pouvez changer ce comportement pour que la cration dutilisateur fournisse des permissions sur $HOME diffrentes. Pour changer ce comportement pour les nouveaux utilisateurs quand ils 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 pas directement dans leur rpertoire $HOME moins quils ne changent 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. Cela permettra au serveur web daccder ce rpertoire (qui devrait lui-mme 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.11.14

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 passe pour tre le mme que le nom du compte utilisateur, mais cela 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 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 attribution 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 24 (tous les deux dans le paquet passwd, ils sont donc dj installs). Si vous voulez utiliser un chier avec toutes les informations pour crer les utilisateurs comme un processus batch, il sera probablement prfrable dutiliser newusers.

4.11.15

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 grandes sont 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 38, les utilisateurs pourront toujours utiliser des mots de passe faibles. Comme laccs utilisateur peut inclure un accs une invite de commandes distance (en esprant que ce soit avec 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.
24. chpasswd ne sait pas grer la gnration de mots de passe MD5, il faut donc lui donner le mot de passe sous sa forme chiffre avant de lutiliser avec loption -e.

Chapitre 4. Aprs linstallation

48

Un administrateur systme doit, suivant le nombre dutilisateurs, vrier si les mots de passe sont cohrents avec la rgle locale de scurit. Comment vrier ? Essayez de les casser 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) 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 Internet classique comme ftp://ftp.ox.ac.uk/pub/ wordlists ou ftp://ftp.cerias.purdue.edu/pub/dict.

4.11.16

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 et na pas t rtablie. Quelquen soit la raison, les utilisateurs inactifs peuvent amener une compromission : car la console de lutilisateur peut tre dbloque et peut tre accde par un intrus ; car un attaquant peut tre capable de se rattacher lui-mme une connexion rseau ferme et envoyer des commandes linvite de commandes distante (cest assez facile si linvite de commandes distante nest pas chiffre comme avec 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. Plusieurs moyens existent pour cela : si bash est linterprteur de commandes de lutilisateur, un administrateur systme peut positionner une valeur TMOUT par dfaut (consultez bash(1)) qui entranera la dconnexion automatique des utilisateurs distants inactifs. Notez que cela doit tre congur avec loption -o ou les utilisateurs pourront la changer (ou la dsactiver) ; installez timeoutd et congurez /etc/timeouts selon vos rgles de scurit locales. Le dmon regardera les utilisateurs inactifs et mettra un terme leur invite de commandes en fonction ; installez autolog et congurez-le pour enlever les utilisateurs inactifs. Les dmons timeoutd et autolog sont les mthodes prfres car, aprs tout, les utilisateurs peuvent changer dinterprteur de commandes par dfaut ou peuvent, aprs avoir excut leur interprteur de commandes par dfaut, basculer sur un autre interprteur de commandes (non contrl).

4.12

Utilisation de tcpwrappers

Lencapsulation TCP a t dveloppe quand il ny avait pas de rels ltres de paquets disponibles et que les contrles daccs taient ncessaires. Toutefois, ils sont toujours trs intressants et utiles. Lencapsulation TCP vous permet 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 par le service tcpwrapper (tcpd) ; compils avec la prise en charge de libwrapper. Dun ct, pour des services congurs dans /etc/inetd.conf, cela comprend 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 la prise en charge pour les rgles dencapsulation TCP. Les services suivant sont compils avec prise en charge dencapsulation TCP dans Debian : ssh, portmap, in.talk, rpc.statd, rpc.mountd, gdm, oaf (le dmon dactivation GNOME), nessus et beaucoup dautres. Pour voir quels paquets utilisent tcpwrappers 25 , essayez :
$ apt-cache rdepends libwrap0

25. Pour les anciennes versions de Debian, vous pourriez devoir utiliser :
$ apt-cache showpkg libwrap0 | egrep ^[[:space:]] | sort -u | \ sed s/,libwrap0$//;s/^[[:space:]]\+//

Chapitre 4. Aprs linstallation

49

Tenez compte de cela quand vous utilisez tcpdchk (un vricateur trs utile de rgles et syntaxe de chier de conguration dencapsulation TCP). Quand vous pouvez ajouter des services indpendants (qui sont lis la bibliothque dencapsulation) 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 lencapsulation TCP en seconde ligne de dfense. Un petit truc est de mettre en place une commande SPAWN 26 dans /etc/hosts.deny qui enverra un courrier au superutilisateur quand un service refus dclenche lencapsulation :
ALL: ALL: SPAWN ( \ echo -e "\n\ Encapsulation TCP \: Connexion refuse\n\ Par \: $(uname -n)\n\ Processus \: %d (pid %p)\n\ Utilisateur \: %u\n\ Hte \: %c\n\ Date \: $(date)\n\ " | /usr/bin/mail -s "Connexion %d bloque" 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.13

Limportance des journaux et des alertes

Il est facile de voir que le traitement de journaux 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 cela 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 journaux, notamment swatch 27 , 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 journaux du systme afchs sur une console virtuelle. Cest utile car vous pouvez (de loin) 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) :
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. Une grande partie de lanalyse des journaux ne peut pas tre couverte ici, une bonne ressource dinformations est disponible dans les livres comme Gestion des journaux de scurit : identication de motifs au milieu du chaos (http://books.google.com/books?id= UyktqN6GnWEC). Dans tous les cas, mme des outils automatiques ne peuvent rivaliser avec le meilleur outil danalyse : votre cerveau.

4.13.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 du journal 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 journaux 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 contient un chier de conguration /etc/logcheck
26. Assurez-vous dutiliser des majuscules sinon spawn ne fonctionnera pas. 27. Il y a un trs bon article sur celui-ci crit par Lance Spitzner (http://www.spitzner.net/swatch.html).

Chapitre 4. Aprs linstallation

50

/logcheck.conf, qui dnit quel utilisateur sont envoys les vrications. Il permet galement aux paquets qui fournissent des services dimplmenter de nouvelles rgles dans les rpertoires : /etc/logcheck /cracking.d/_paquet_, /etc/logcheck/violations.d/_paquet_, /etc/logcheck/violations.ignore.d /_paquet_, /etc/logcheck/ignore.d.paranoid/_paquet_, /etc/logcheck/ignore.d.server/_paquet_ et /etc/logcheck/ignore.d.workstation/_paquet_. 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 obtenir plus de renseignements, veuillez consulter /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 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 fait, vous pouvez vouloir vrier les courriers envoys, pour les quelques premiers jours, semaines ou mois. Si estimez recevoir des messages indsirables, ajoutez simplement lexpression rationnelle (consultez regex(7) et egrep(1)) qui correspond ces messages au chier /etc/logcheck/ignore.d.niveau_de_compte-rendu/local. Essayez de faire correspondre la ligne entire du journal. Des dtails sur lcriture des rgles sont expliqus dans /usr/share/doc /logcheck-database/README.logcheck-database.gz. Cest un processus dafnement perptuel ; une fois que les messages envoys sont toujours pertinents, vous pouvez considrer que lafnement est termin. Notez que si logcheck ne trouve rien de pertinent dans le 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.13.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 en fonction de la facilit du systme. Vous devriez tre familier avec cela ; 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 journaux 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 journalisation (il reoit les journaux de tous les autres systmes). Le courrier du superutilisateur devrait tre pris en considration galement, de nombreux contrles de scurit (comme snort) envoient des alertes dans la bote aux lettres du superutilisateur. Celle-ci pointe gnralement sur le premier utilisateur cr sur le systme (vriez /etc/aliases). Veillez envoyer le courrier du superutilisateur un endroit o il sera lu (soit localement soit distance). Il y a dautres comptes et alias rles sur le systme. Sur un petit systme, le plus simple est probablement de sassurer que tous ces alias pointent vers le compte du superutilisateur, et que les messages destination du superutilisateur sont 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.13.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 -r et un nouveau loghost est n. De faon rendre cela permanent dans Debian, ditez /etc/default/syslogd et changez la ligne
SYSLOGD=""

par
SYSLOGD="-r"

Chapitre 4. Aprs linstallation

51

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

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

dans 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 journalisation locaux). Consultez les pages de manuel syslog(3), syslogd(8) et syslog.conf(5) pour toutes informations complmentaires.

4.13.4

Permissions du chier de journalisation

Il est important de dcider non seulement comment les alertes sont utilises, mais aussi qui y accde, cest--dire qui peut lire ou modier les chiers de journalisation (en absence dhte darchivage). Les alertes de scurit que lattaquant peut modier ou dsactiver sont de peu de valeur en cas dintrusion. Vous devez galement prendre en compte que les chiers de journalisation peuvent rvler un grand nombre dinformations propos du systme un intrus sil y a accs. Certaines permissions de chiers de journalisation 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 lastlog, vous pouvez voir qui sest connect rcemment, et dans faillog, vous voyez un rsum des connexions qui ont choues. Lauteur recommande de faire un chmod 660 sur les deux chiers. Faites un tour rapide des chiers de journalisation et dcidez avec beaucoup dattention quels chiers de journalisation vous rendez lisible ou modiable par un utilisateur avec un UID diffrent de 0 et un autre groupe que adm ou root . Vous pouvez facilement vrier cela sur le systme avec :
# 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 la faon dont les chiers de journalisation sont crs, vous devez probablement personnaliser le programme qui les gnre. Cependant, si le chier de journalisation est archiv, vous pouvez personnaliser le comportement de la cration et de larchivage.

4.14

Les utilitaires pour ajouter des correctifs au noyau

Debian GNU/Linux fournit quelques correctifs pour le noyau Linux qui amliorent sa scurit du systme. En voici quelques-uns. LIDS Linux Intrusion Detection (http://www.lids.org) fourni dans le paquet kernel-patch-2.4-lids. Ce correctif 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 superutilisateur. Elle implmente des fonctionnalits de contrle daccs obligatoire ( Mandatory Access Control ). Linux Trustees (http://trustees.sourceforge.net/) fourni dans le paquet trustees. Ce correctif ajoute un systme avanc dcent de gestion des permissions au 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). Des rtroportages des paquets avec SElinux activ sont disponibles en http://selinux.alioth.debian.org/. Plus de renseignements sont disponibles sur la page SElinux du wiki Debian (http://wiki.debian.org/SELinux), et sur les sites web de Manoj Srivastava (http://www. golden-gryphon.com/software/security/selinux.xhtml) et Russell Cookers (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).

Chapitre 4. Aprs linstallation

52

Le correctif Grsecurity (http://www.grsecurity.net/) fourni par les paquets kernel-patch-2.4-grsecurity et kernel-patch-grsecurity2 28 implmente le contrle daccs obligatoire (Mandatory Access Control) grce RBAC, fournit 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 boucle chiffr AES, la gestion MPPE et un rtroportage de la version 2.6 dIPsec. cryptoloop-source. Ce correctif vous permet dutiliser les fonctions de lAPI de chiffrement du noyau pour crer des systmes de chiers chiffrs en utilisant le priphrique loopback . Prise en charge dIPsec par le noyau (du paquet linux-patch-openswan). Si vous voulez utiliser le protocole IPsec avec Linux, vous avez besoin de ce correctif. Vous pouvez ainsi crer des VPN trs facilement, mme vers les machines Windows, puisque IPsec est une norme courante. 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.openswan.org. 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 : POSIX Access Control Lists (http://acl.bestbits.at/) (ACL) pour Linux fourni dans le paquet kernel-patch-acl. Ce correctif 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. 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, FIFO dans /tmp, une restriction de /proc, une gestion de descripteur 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. Ce correctif vous permet galement dajouter des fonctionnalits de cryptographie au noyau Linux et tait utile pour les versions de Debian jusqu Potato. Il 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, certains correctifs ne sont pas encore fournis dans Debian. Si vous croyez que certains devraient tre inclus, veuillez le demander sur la page des paquets en souffrance et paquets souhaits (http://www.debian.org/devel/ wnpp).

4.15

Se protger contre les dpassements de tampon

Dpassement de tampon est le nom dune attaque courante sur un logiciel 29 qui utilise insufsamment des vrications de limites (une erreur de programmation courante, plus particulirement en langage C) pour excuter du code machine par des entres de programme. Ces attaques, contre des logiciels serveur qui attendent des connexions distantes et contre des logiciels locaux qui autorisent des droits levs aux utilisateurs (setuid ou setgid) peuvent avoir pour consquence la compromission de tout un systme. Quatre mthodes en particulier permettent de se protger contre les dpassement de tampon : appliquer un correctif au noyau pour empcher lexcution de la pile. Vous pouvez utiliser Exec-shield, OpenWall ou PaX (incluant les correctifs Grsecurity et Adamantix) ; corriger le code source en utilisant des outils pour trouver des fragments qui pourraient introduire cette faille ;
28. 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 suivantes :

Pour plus dinformations, consultez les bogues n 194225 (http://bugs.debian.org/194225), n 199519 (http: //bugs.debian.org/199519), n 206458 (http://bugs.debian.org/206458), n 203759 (http://bugs.debian. org/203759), n 204424 (http://bugs.debian.org/204424), n 210762 (http://bugs.debian.org/210762), n 211213 (http://bugs.debian.org/211213) et la discussion sur debian-devel (http://lists.debian.org/ debian-devel/2003/debian-devel-200309/msg01133.html).
29. Si commune, en fait, quelles ont t la base de 20 % des failles de scurit signals cette anne, daprs les statistiques de la base de donnes des failles de lICAT (http://icat.nist.gov/icat.cfm?function=statistics).

# 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

Chapitre 4. Aprs linstallation

53

recompiler le code pour introduire des vrications qui empchent les dpassements en utilisant 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 cela a t demand dans le bogue n 213994 (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 car 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 vous voulez tester la protection contre les dpassements de tampon une fois que vous lavez mise en place (quelque que soit la mthode), vous pouvez vouloir installer le paxtest et excuter les tests quil fournit.

4.15.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 (fournies 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 consulter la section Les utilitaires pour ajouter des correctifs au noyau page 51.

4.15.2

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.16

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 chiffrer les transmissions. Toutes ces mthodes ncessitent des clients spciques. Debian fournit des clients logiciels, comme scp du paquet ssh, qui fonctionne comme rcp, mais est compltement chiffr, 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 64. Laccs FTP peut tre chroot, cest probablement plus facile selon le dmon que vous choisissez, comme dcrit dans Scurisation de FTP page 66. Si vous vous inquitez dutilisateurs locaux pouvant parcourir les chiers locaux et que vous voulez avoir une communication chiffre, vous pouvez soit utiliser un dmon FTP avec la prise en charge SSL, soit combiner un FTP sans chiffrement avec une conguration VPN (consultez Rseaux Privs Virtuels page 100).

4.17
4.17.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 les disques durs.

Chapitre 4. Aprs linstallation

54

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 cela 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 lespace 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 ; utiliser des quotas sur tous les espaces accessibles en criture par les utilisateurs, aussi bien sur /home que /tmp. Tous les rpertoires et partitions auxquels les utilisateurs ont accs en criture complet devraient avoir les quotas activs. 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 la prise en charge des quotas dans le 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 le chier /etc/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 ou les quotas pour inuds selon vos besoins. Pour plus dinformations concernant les quotas, consultez la page de manuel de la commande quota et le quota mini-howto (/usr/share/doc/HOWTO/fr-html/Quota.html). Vous pouvez galement vouloir tudier pam_limits.so.

4.17.2

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

En plus des permissions standards UNIX, les systmes de chiers ext2 et ext3 offrent un ensemble dattributs spciques qui donnent plus de contrle sur les chiers du systme. la diffrence des permissions 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 cela veut dire que ces attributs ne sont habituellement pas enregistrs quand vous sauvegardez le systme, donc si vous modiez lun dentre eux, il peut tre utile denregistrer 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 par le superutilisateur : 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. Cela 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 journalisation 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 supprimer 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 sont pas excuts par le superutilisateur, la possibilit dajouter des donnes un chier sans pouvoir modier son prcdent contenu. Dun autre ct, lattribut i semble moins intressant : aprs tout, le superutilisateur peut dj utiliser les permissions standards UNIX pour restreindre laccs un chier et un intrus qui aurait accs au compte superutilisateur 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 le 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.

Chapitre 4. Aprs linstallation

55

Une faon sre de rsoudre ce problme est dutiliser les fonctionnalits du noyau Linux, comme dcrit dans Dfense proactive page 115. 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 de modier les attributs a ou i sur le systme, mme pour le superutilisateur ! Une stratgie complte serait alors la suivante : 1 positionner les attributs a et i sur tous les chiers voulus ; 2 ajouter la commande lcap CAP_LINUX_IMMUTABLE (ainsi que lcap CAP_SYS_MODULE, comme suggr dans Dfense proactive page 115) lun des scripts de dmarrage ; 3 positionner lattribut i sur ce script et les autres chiers de dmarrage, ainsi que sur le binaire lcap lui-mme ; 4 excuter la commande ci-dessus vous-mme (ou ramorcer le systme pour vous assurer que tout fonctionne comme prvu). Maintenant que la fonctionnalit a t enleve du 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 ramorcer le systme en mode utilisateur seul (single-user mode) ou dutiliser une autre image damorage, deux oprations qui ncessitent un accs physique la machine !

4.17.3

Vrier lintgrit des systmes de chiers

tes-vous sr que le /bin/login prsent sur le disque dur est 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 sur Internet ? 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 bon, moins que quelquun ait pirat galement lalgorithme qui cre les md5sums sur cette machine. Cest extrmement difcile et trs improbable. Vous devriez vraiment prendre en compte que la vrication de vos binaires est trs importante tant donn que cest un moyen facile de reconnatre des changements sur vos binaires. Les outils couramment utiliss pour cela 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 consulter Tests dintgrit priodiques page 113 et Prendre un instantan ( snapshot ) du systme page 60. 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 lUID. Vous pourriez utiliser bsign ou elfsign. elfsign fournit un utilitaire pour ajouter une signature numrique un binaire ELF et un autre pour vrier cette signature. Lactuelle implmentation utilise PKI pour signer la somme de contrle du binaire. Lavantage de faire cela est que ceux qui le veulent peuvent dterminer si un binaire a t modi et qui la cr. bsign utilise GPG, elfsign utilise les certicats PKI (X.509, OpenSSL).

4.17.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 30 . Cette tche cron excutera le script /usr/sbin/checksecurity qui sauvegardera les renseignements sur les modications.
30. Dans les versions prcdentes, checksecurity tait intgr dans cron et le chier tait /etc/cron.daily/standard.

Chapitre 4. Aprs linstallation

56

Le comportement par dfaut est de ne pas envoyer cette information au superutilisateur mais la place de garder une copie quotidienne des modications dans /var/log/setuid.changes. Vous devrez positionner la variable MAILTO (dans /etc/checksecurity.conf) root pour que ces renseignements lui soient envoys. Consultez checksecurity(8) pour plus dinformations sur la conguration.

4.18

Scurisation des accs rseau

FIXME : Besoin de plus de contenu (spcique Debian).

4.18.1

Conguration des options rseau du noyau

Beaucoup de fonctionnalits du noyau peuvent tre modies en cours de fonctionnement en envoyant quelque chose (par 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 (consultez 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 decho ICMP envoyes ladresse broadcast seront ignores. Sinon, cela ne fait rien. Si vous voulez empcher le 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 le 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/*, consultez /usr/src/linux /Documentation/filesystems/proc.txt. Toutes les options sont dcrites de faon complte sous /usr/src/linux /Documentation/networking/ip-sysctl.txt 31 .

4.18.2

Congurer syncookies

Cette option est double tranchant. Dun ct, elle protge le systme contre le syn packet ooding ; dun autre ct, elle viole les standards dnis (RFCs).
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. Cela 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, consultez http://cr.yp.to/syncookies.html.


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

Chapitre 4. Aprs linstallation

57

4.18.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 le rseau au dmarrage. Vous pouvez congurer /etc/sysctl.conf (consultez 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 Consultez sysctl.conf(5) pour plus de renseignements. Consultez 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) 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 errones net/ipv4/icmp_ignore_bogus_error_responses = 1 # # Ne pas accepter les redirections ICMP (empche les attaques en # homme au milieu) net/ipv4/conf/all/accept_redirects = 0 # _ou_ # Naccepter les redirections ICMP que pour les passerelles # de notre liste de passerelles par dfaut (activ par dfaut) # net/ipv4/conf/all/secure_redirects = 1 # # Ne pas accepter les redirections ICMP (ce nest pas un routeur) net/ipv4/conf/all/send_redirects = 0 # # Ne pas faire suivre les paquets IP (ce nest pas un routeur) # Remarque : assurez-vous que /etc/network/options contient # ip_forward=no anet/ipv4/conf/all/forwarding = 0 # # Activer les TCP Syn Cookies # Remarque : 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 # Remarque : 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 # (ce nest pas un routeur) net/ipv4/conf/all/accept_source_route = 0

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

Chapitre 4. Aprs linstallation

58

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 # # Modification de plusieurs comportements par dfaut pour scuriser contre # certaines attaques et usurpations IP pour toutes les interfaces. # # Fourni par Dariusz Puchalak. # # Activation de la protection broadcast echo. echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # Dsactivation de lIP forwarding. echo 0 > /proc/sys/net/ipv4/conf/all/forwarding # Activation de la protection TCP syn cookies. echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# Enregistrement des paquets avec des adresses impossibles # (cela comprend les paquets usurps (spoofed), les paquets routs # source, les paquets redirigs), mais faites attention cela # sur les serveurs web trs chargs. echo 1 >/proc/sys/net/ipv4/conf/all/log_martians # Activation de la protection sur les mauvais messages derreur. echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses # Protection dusurpation IP. echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter # Dsactivation des redirections ICMP. echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects # Dsactivation des paquets source routs. 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 celuici :
#!/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 : un nom dinterface doit tre fourni en argument" echo "Utilisation : $0 <interface>" exit 1 fi if [ ! -e /proc/sys/net/ipv4/conf/$IFACE/ ]; then echo "$0 : linterface $IFACE nexiste pas " echo "(impossible de trouver /proc/sys/net/ipv4/conf/)" exit 1 fi # Dsactivation de lIP forwarding. echo 0 > /proc/sys/net/ipv4/conf/$IFACE/forwarding # Enregistrement des paquets avec des adresses impossibles # (cela inclut les paquets usurps (spoofed), les paquets routs # source, les paquets redirigs), mais faites attention cela # sur les serveurs web trs chargs. echo 1 >/proc/sys/net/ipv4/conf/$IFACE/log_martians # Protection dusurpation IP. echo 1 > /proc/sys/net/ipv4/conf/$IFACE/rp_filter

Chapitre 4. Aprs linstallation

59

# Dsactivation des redirections ICMP. echo 0 > /proc/sys/net/ipv4/conf/$IFACE/accept_redirects echo 0 > /proc/sys/net/ipv4/conf/$IFACE/send_redirects # Dsactivation des paquets source routs. 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.18.4

Conguration des fonctionnalits de pare-feu

De faon avoir des privilges de pare-feu, 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 de Debian 2.2 (Linux 2.2) fournit ipchains qui est un pare-feu pour ltrer les paquets, le noyau standard de Debian 3.0 (Linux 2.4) fournit lui le pare-feu iptables (netlter). Dans tous les cas, il est relativement facile dutiliser un noyau diffrent de celui fourni par Debian. Vous pouvez trouver des noyaux prcompils 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 78.

4.18.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. Cela prvient habituellement les accs aux services quand ils sont interrogs par une adresse donne. Cependant, cela ne veut pas dire (bien quil sagisse dune erreur classique) que le service est li une adresse matrielle donne (carte interface). 32 Ce 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), cela 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 les noyaux suivants, cela peut tre corrig avec : des rgles iptables ; un routage correctement congur 33 ; des correctifs du noyau 34 . Tout au long de ce texte, il y aura plusieurs occasions pour lesquelles il est afch comment congurer certains services (serveur SSH, Apache, service dimpression, etc.) pour les avoir en attente sur une adresse donne, le lecteur devra prendre en compte que, sans les correctifs donns ici, le correctif nempchera pas les accs depuis le mme rseau (local). 35
32. Pour reproduire cela (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 bruts.
33. 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

34. 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. 35. 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

60

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 ?

4.18.6

Protger contre les attaques ARP

Quand vous ne faites pas conance aux autres machines du 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 (consultez 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 la machine croire 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 utilisant des 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 ARP statique. Vous pouvez mettre en place des entres statiques dans le cache ARP avec :
arp -s nom_d_hte adresse_matrielle

En plaant des entres statiques pour chaque hte important du 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 gnraux 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.19

Prendre un instantan ( snapshot ) du systme

Avant de mettre le systme en production, vous pouvez prendre un instantan du systme entier. Cet instantan pourrait tre utilis en cas de compromission (consultez Aprs la compromission (la rponse lincident) page 119). 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 (vous pourriez utiliser un CD rinscriptible, ainsi vous pourriez mme garder des sauvegardes des md5sums diffrentes dates), ou un disque USB ou une carte MMC (si le 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 trap "/bin/umount /dev/fd0" 0 1 2 3 9 13 15 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.txt done echo "Base de donnes md5 de post-installation calcule" if [ ! -f /usr/bin/sha1sum ] ; then echo "Impossible de trouver sha1sum" echo "Attention~: seule la base de donnes MD5 sera garde" else /bin/cp /usr/bin/sha1sum /mnt/floppy echo "Calcul de la base de donnes SHA-1" >/mnt/floppy/sha1checksums.txt

Chapitre 4. Aprs linstallation


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 SHA-1 de post-installation calcule" fi exit 0

61

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 assurer 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 CD de rcupration ou un CD 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, consultez Aprs la compromission (la rponse lincident) page 119. Linstantan ninclut pas les chiers sous /var/lib/dpkg/info qui incluent les sommes de hachage MD5 des paquets installs (dans les chiers se terminant par .md5sums). Vous pourriez galement y copier ces renseignements, veuillez cependant noter 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 simple disquette, mais tiendra sans doute sur une clef USB) ; 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. Si vous ne voulez pas congurer de vrication manuelle, vous pouvez toujours utiliser nimporte quel systme dintgrit disponible qui fera cela et plus, pour de plus amples renseignements, veuillez consulter Tests dintgrit priodiques page 113.

4.20
4.20.1

Autres recommandations
Nutilisez pas de logiciels dpendant de svgalib

SVGAlib est trs bien pour les amoureux de la console mais sest montre trs peu sre par le pass. Des exploitations de failles de zgv ont t diffuses et il tait facile de devenir superutilisateur. Essayez dviter lutilisation de programmes utilisant la SVGAlib chaque fois que cest possible.

Chapitre 4. Aprs linstallation

62

63

Chapitre 5

Scurisation des services du systme


Les services prsents sur un systme peuvent tre scuriss de deux faons : les rendre accessibles uniquement aux points daccs (interfaces) ncessaires ; les congurer correctement ainsi seuls les utilisateurs habilits pourront les utiliser. Restreindre les services pour quils ne 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 le correctif vserver pour Linux (2.4.16) peut tre utilis 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 mtadmon xinetd, inclut une option bind pour faire cela. Consultez 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 en fonction de leur utilisation.

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 le systme. Encourager tous les utilisateurs du 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 superutilisateur et prfrer lutilisation de mthodes alternatives pour devenir superutilisateur comme su ou sudo. Enn, le chier sshd_config, dans /etc/ssh, devrait tre modi comme suit pour accrotre la scurit. ListenAddress 192.168.0.1 Ne fates couter SSH que sur une interface donne, juste au cas o vous en ayez 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 superutilisateur. Si quelquun veut devenir superutilisateur par SSH, deux connexions sont maintenant ncessaires et le mot de passe du superutilisateur ne peut tre attaqu par force brute par SSH.

Chapitre 5. Scurisation des services du systme

64

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 par 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 par 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 clefs 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 (consultez la page de manuel sshd_config(5)). Protocole 2 Dsactiver le protocole version 1, car il a des dfauts de conception qui facilitent le piratage de mots de passe. Pour obtenir de plus amples renseignements, consultez un article concernant les problmes du 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=/etc/loginusers

Pour nir, soyez conscient que ces directives proviennent dun chier de conguration OpenSSH. Actuellement, trois dmons SSH sont 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 mme des rumeurs propos dun portage pour Windows). ssh2 a beaucoup davantages par rapport ssh1 sauf quil est diffus sous une licence non libre. OpenSSH est un dmon SSH compltement libre, qui gre 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 la prise en charge 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, consultez 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 43. Dans Environnement de chroot pour SSH page 155, vous pouvez trouver plusieurs options pour crer un environnement chroot pour SSH.

5.1.2

Clients SSH

Si vous utilisez un client SSH pour se connecter au serveur SSH, vous devez vous assurer quil prend en charge les mmes protocoles que ceux utiliss sur le serveur. Par exemple, si vous utilisez le paquet mindterm, il ne prend en charge 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. Scurisation des services du systme

65

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. Vous pouvez aussi cloisonner les utilisateurs dans un chroot (en utilisant libpam-chroot de telle sorte que mme si le transfert de chiers est autoris, ils soient limits un environnement qui ne contient aucun chier systme.

5.1.4

Restriction daccs au seul transfert de chiers

Vous pourriez restreindre laccs aux utilisateurs pour leur permettre seulement le transfert de chiers sans interprteur de commandes interactif. Pour faire cela, vous pouvez : soit interdire les connexions dutilisateurs au serveur SSH (comme dcrit ci-dessus par le chier de conguration ou par la conguration PAM) ; soit donner aux utilisateurs un interprteur de commandes restreint comme scponly ou rssh. Ces interprteurs de commandes restreignent les commandes disponibles pour les utilisateurs an de ne pas leur donner de droits dexcution distance.

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 le 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. Consultez le Guide dutilisateur de Squid (http://www.deckle.co.za/squid-users-guide/Main_Page) pour plus dinformations propos des rgles ACL. Veuillez noter que Debian fournit une conguration minimale pour Squid qui empche tout, lexception de la connexion de localhost au serveur mandataire (qui fonctionnera sur le port 3128 par dfaut). Vous devrez personnaliser le chier/etc /squid/squid.conf comme ncessaire. La conguration minimale recommande (fournie avec le paquet) est indique ci-dessous :
acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # ports non enregistrs acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 901 # SWAT acl purge method PURGE 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 VOS PROPRES RGLES ICI POUR PERMETTRE LACCS # DEPUIS LES CLIENTS # http_access allow localhost # Et enfin, interdit tout autre accs ce mandataire http_access deny all # Par dfaut : # icp_access deny all # # Permet les requtes ICP tout le monde icp_access allow all

Chapitre 5. Scurisation des services du systme

66

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 et le cache correctement ne reprsente quune partie de la scurisation du site. Une autre tche ncessaire rside dans lanalyse des journaux de Squid pour sassurer que tout fonctionne comme prvu. Quelques paquets dans Debian GNU/Linux peuvent aider ladministrateur dans cette tche. Les paquets suivant sont disponibles dans Debian 3.0 et Debian 3.1 (Sarge) : calamaris - Analyseur des journaux pour serveurs mandataires Squid ou Oops modlogan - Analyseur modulaire de journaux sarg - Cration de compte-rendu danalyse de Squid squidtaild - Programme de surveillance des journaux de 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 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 - Accelerator Mode (http://www.deckle.co.za/ squid-users-guide/Accelerator_Mode).

5.3

Scurisation de 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 le systme comme sil disposait dun interprteur de commandes. Vous pouvez ajouter la ligne suivante dans la section global de proftpd.conf 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 par dni de service 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 (ce 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 implmentations 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 anonymes 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 valables. Plus dinformations et le correctif sont disponibles, consultez Correctifs ProFTPD (http://www.castaglia.org/proftpd/#Patches). Ce correctif a t galement indiqu pour Debian, consultez le bogue n 145669 (http://bugs.debian.org/145669).

5.4

Scurisation de laccs au systme X Window

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. Cela 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) suggestions de nombreuses documentations, vous tapez xhost + sur la machine. Cela autorise tout client X se connecter au systme. Pour une scurit lgrement meilleure, vous pouvez utiliser la commande xhost +hostname la place, ce qui permet de nautoriser les accs que depuis certains htes.

Chapitre 5. Scurisation des services du systme

67

Une solution encore meilleure serait dutiliser un tunnel SSH pour X et de chiffrer toute la session. Cest 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 (/usr/bin/xauth sur Debian unstable) pour mettre en place le pseudoafchage 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 lcoute sur le port TCP 6000 en tapant simplement :
$ startx -- -nolisten tcp

Cest le comportement par dfaut dans XFree 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 installe), 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: False

(qui est par dfaut dans Debian) :


*lock: True

FIXME : Ajouter des informations sur comment dsactiver les conomiseurs dcran qui afchent lcran de lutilisateur (qui peuvent avoir des informations sensibles). Plus de renseignements 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 le gestionnaire dafchage

Si vous ne voulez un gestionnaire dafchage install que pour une utilisation locale (avec une jolie connexion graphique, tout de mme), 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 le chier gdm.conf :


[xdmcp] Enable=false

Normalement, tous les gestionnaires dafchages sont congurs par dfaut pour ne pas dmarrer les services XDMCP dans Debian.
1. GDM najoutera pas -nolisten tcp sil trouve -query ou -indirect sur la ligne de commande car cela ne pourrait pas fonctionner.

Chapitre 5. Scurisation des services du systme

68

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 le 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 le 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 /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 connexions provenant de rseaux ou htes qui ne sont pas autoriss imprimer (le dmon lpr ne peut tre limit que pour couter 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 indiquer linterface sur laquelle se lier (cependant dune manire un peu bizarre) Si vous utilisez une imprimante sur le systme, mais seulement localement, vous ne voulez pas partager ce service sur le rseau. Vous pouvez considrer lutilisation dautres systmes dimpression, comme celui fourni 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 par le protocole HTTP. Cela 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 chiffrement. 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 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 Debian.

5.6

Scurisation du service de courrier

Si le serveur nest pas un systme denvoi de courrier, vous navez pas rellement besoin dun dmon de courrier coutant les connexions entrantes, mais vous pourriez vouloir que le courrier local soit distribu pour, par exemple, recevoir le courrier du superutilisateur 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. Consultez Dsactivation de services dmon page 26 pour le faon de 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. Cest courant quand vous devez administrer un certain nombre de systmes et que vous ne voulez pas

Chapitre 5. Scurisation des services du systme

69

vous connecter chacun dentre eux pour lire le courrier envoy localement. Comme toute la journalisation de chaque systme individuel peut tre centralise en utilisant un serveur de journalisation systme centralis, les courriers peuvent tre envoys un serveur de courriers central. Un tel systme relais 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, si le MTA est congur pour ne dlivrer que des messages locaux, de nautoriser 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 Exim ncoutera que sur la socket 127.0.0.1 :25. 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

Si vous voulez seulement le courrier local, cette approche est meilleure que lencapsulation TCP du dmon de courrier ou lajout de rgles de 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 une encapsulation TCP pour que les connexions entrantes soient vries par rapport /etc/hosts.allow et /etc/hosts.deny. De plus, vous serez au courant quand un accs non autoris est tent sur le dmon de courrier, si vous mettez en place correctement la journalisation pour nimporte laquelle des mthodes dcrites plus haut. En tout cas, pour rejeter les tentatives de relais de courrier au niveau SMTP, vous pouvez modier /etc/exim/exim.conf pour inclure :
receiver_verify = true

Mme si le serveur de courrier ne relaiera pas le message, ce genre de conguration est ncessaire au testeur de relais http://www.abuse.net/relay.html pour dterminer que le serveur ne peut pas faire de relais. Si vous voulez une conguration relais 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 disponibles 3 Cependant, si vous fournissez un accs IMAP, notez quil sagit dun protocole gnrique daccs aux chiers, il peut devenir lquivalent dun accs linterprteur de commandes car les utilisateurs peuvent tre capables de rcuprer nimporte quel chier par celle-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.
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 et dmons prenant ces protocoles en charge dans Debian peut tre rcupre avec :
$ apt-cache search pop3-server $ apt-cache search imap-server

Chapitre 5. Scurisation des services du systme

70

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 client IMAP le gre, uw-imapd-ssl) peut tre congur pour chrooter les rpertoires de courrier des utilisateurs, mais cela 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 valables soient crs sur le systme local (ce qui donnerait galement un accs linterprteur de commande), 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 de manire sre

La lecture et rception du courrier sont des protocoles en texte clair parmi les plus courants. Si vous utilisez POP3 ou IMAP pour rcuprer le 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 avec interprteur de commandes sur la machine qui sert de serveur POP ou IMAP. Voici un fetchmailrc simple dcrivant cela :
poll mon-serveur-imap.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 mon-serveur-imap.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 connexions au port local 1236 vers le port IMAP du serveur de mail, mais chiffres. Une autre possibilit serait dutiliser fetchmail avec la fonctionnalit SSL. Si vous dsirez fournir des services de courrier comme POP et IMAP chiffrs, 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 indiqu (-p).

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 (consultez 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 (consultez Changer lutilisateur de BIND page 72) et le chrooter (consultez Chrooter le serveur de domaine page 73).

5.7.1

Conguration de BIND pour viter de mauvaises utilisations

Vous devriez restreindre certains renseignements donns par le serveur DNS aux clients extrieurs pour lempcher dtre 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, consultez /usr/share/doc/bind/html/index.html en plus ce sujet une fois que le paquet est install.

Chapitre 5. Scurisation des services du systme

71

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 Internet (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 exploiter une attaque de dbordement de tampon sur) le serveur DNS. Vous pouvez mme le mettre uniquement en coute sur ladresse 127.0.0.1 si vous ne dsirez offrir le service personne dautre que vous mme. 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 cela 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; 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";

Chapitre 5. Scurisation des services du systme


}; 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; }; };

72

Veuillez vrier (de nouveau) le systme de suivi des bogues (BTS) propos de BIND, en particulier le bogue n 94760 ( propos des ACL sur les transferts de zone) (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 diffrent du superutilisateur excute BIND, alors BIND ne peut pas dtecter de nouvelles interfaces automatiquement, par exemple, quand vous insrez une carte PCMCIA dans un portable. Consultez le chier README.Debian du rpertoire de documentation de named (/usr/share/doc/bind/README.Debian) pour plus dinformations sur ce problme. De nombreux problmes de scurit concernant BIND ont t rcemment dcouverts, donc le changement dutilisateur est utile si possible, cependant si vous dsirez le faire de faon automatique, vous pouvez essayer le script fourni dans Exemple de script pour changer linstallation par dfaut de BIND page 149. Remarquez, de toute faon, que cela ne concerne que la version 8 de BIND. Dans les paquets Debian de la version 9 (depuis la version 9.2.1-5, disponible avec Sarge), lutilisateur bind est cr et utilis en congurant la variable OPTIONS de /etc /default/bind9. Si vous utilisez BIND version 9 et que le dmon de serveur de noms ne fonctionne pas avec lutilisateur bind, vriez les congurations de ce chier. 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 superutilisateur). Dans cet 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 vous pouvez soit diter, laide de votre diteur favori, /etc/init.d/bind et modiez les lignes commenant par
start-stop-daemon --start

en 4
start-stop-daemon --start --quiet --exec /usr/sbin/named -- -g named -u named

soit modier (crez-le sil nexiste pas) le chier de conguration par dfaut (/etc/default/bind pour BIND en version 8) et introduisez ceci :
OPTIONS="-u named -g named"

Modiez 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

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

Chapitre 5. Scurisation des services du systme 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"; }; [ ... ]

73

Pour viter galement dexcuter quoi que ce soit en tant que superutilisateur, modiez la ligne reload du script init.d en substituant :
reload) /usr/sbin/ndc reload

par :
reload) $0 stop sleep 1 $0 start

Remarque : selon la version de Debian, vous pouvez devoir changer la ligne restart galement. Cela a t corrig dans la version 1:8.3.1-2 de BIND pour Debian. Il ne reste plus qu redmarrer BIND laide de /etc/init.d/bind restart, puis rechercher dans le journal systme 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 named ne sexcute plus en tant que superutilisateur. Si vous voulez lire plus dinformations sur pourquoi BIND ne fonctionne pas en tant quutilisateur non superutilisateur sur les systmes Debian, veuillez vrier le systme de suivi des bogues concernant BIND, en particulier les bogues n 50013 : bind ne devrait pas fonctionner en tant que superutilisateur (http://bugs.debian.org/50013), n 132582 : linstallation par dfaut est potentiellement non scurise (http://bugs.debian.org/132582), n 53550 (http://bugs.debian.org/53550), n 52745 (http://bugs.debian.org/52745) et n 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 (consultez Paranoa gnralise du suid et du chroot page 76) autour du dmon. Il y a un moyen facile de faire cela : loption -t (consultez la page de manuel named(8) ou la page 100 de la documentation 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 bibliothques 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 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 accessible en criture lutilisateur named var/log/named - si vous configurez le journal vers un fichier, doit tre accessible en criture lutilisateur named dev/log - syslogd devrait couter ici si named est configur pour journaliser en lutilisant

Pour que le 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. Prenez en compte quil na besoin que dun accs en lecture seule aux chiers de zone, sauf sil sagit un serveur de nom secondaire ou serveur cache. Si cest le cas vous devrez permettre la lecture et lcriture aux zones ncessaires (pour que les transferts de zone partir du serveur primaire fonctionnent).

Chapitre 5. Scurisation des services du systme

74

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 (cest--dire pas seulement loption -t) pour BIND dans Debian, assurezvous quelle contient les chiers suivants 5 :
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.3.6.so lib/libc-2.3.6.so lib/ld-linux.so.2 - li symboliquement ld-2.3.6.so lib/libc.so.6 - li symboliquement libc-2.3.6.so sbin/ldconfig - pourra tre effac aprs la configuration du chroot sbin/named-xfer - si vous faites des transferts de nom var/run/

Modiez aussi lcoute de syslogd sur $CHROOT/dev/log pour que le serveur de nom puisse crire des entres de journalisation systme dans le journal du systme local. Pour viter des problmes avec les bibliothques dynamiques, vous pouvez compiler BIND statiquement. Vous pouvez utiliser apt-get pour cela avec loption source. Il peut mme rcuprer les paquets dont vous avez besoin pour le compiler correctement. Il vous faudrait faire quelque chose comme :
$ apt-get source bind # apt-get build-dep bind $ cd bind-8.2.5-2 (modifier src/port/linux/Makefile pour que CFLAGS contienne 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 chroot 6 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 ou utilisez loption -t de BIND en la congurant dans largument OPTIONS du chier de conguration /etc/default/bind (pour la version 8) ou /etc /default/bind9 (pour la version 9). Pour plus dinformations sur la mise en place de chroots, consultez Paranoa gnralise du suid et du chroot page 76. 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 :
5. Cette conguration na pas encore t essaye pour les nouvelles versions de BIND. 6. Sauf si vous utilisez loption instdir lors de lappel dpkg mais alors la prison chroot peut tre un petit peu plus complexe.

Chapitre 5. Scurisation des services du systme


BindAddress 127.0.0.1

75

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 comme dhttpd. La documentation dApache (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 sont disponibles en Environnement de chroot pour Apache page 165.

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 ://serveur_apache/~utilisateur. Pour empcher cela, veuillez modier le chier de conguration /etc/apache/http.conf en commentant (pour Apache 1.3) le module suivant :
LoadModule userdir_module /usr/lib/apache/1.3/mod_userdir.so

Avec Apache 2.0, il faut supprimer le chier /etc/apache2/mods-enabled/userdir.load ou restreindre la conguration par dfaut en modiant /etc/apache2/mods-enabled/userdir.conf. Cependant, si le module a t li statiquement (vous pouvez obtenir la liste des modules compils en excutant apache -l), vous devez ajouter la ligne suivante au chier de conguration dApache :
Userdir disabled

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. Vous pouvez viter cela en utilisant le module Rewrite.

5.8.2

Permissions des chiers de journalisation

Les chiers de journalisation 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 augmentation de droits) enlever danciennes entres de chiers de log.

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 sexcute avec lutilisateur www-data et le groupe www-data. Cela devrait rendre plus difcile aux attaquants qui compromettent le systme par le site web de le dgurer. 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 - dmon nger congurable engerd - autre dmon nger pour UNIX capable de syntoniser prcisment la sortie fngerd - dmon nger scuris

Chapitre 5. Scurisation des services du systme ngerd - serveur distant pour informations dutilisateurs xngerd - dmon nger de type BSD avec la prise en charge de qmail

76

ffingerd est le dmon nger recommand si vous comptez lutiliser pour un service public. Dans tous les cas, vous devriez, lors de la mise en place par inetd, xinetd ou tcpserver, limiter le nombre de processus qui seront lancs en mme temps, limiter les accs au dmon nger depuis un nombre dhtes donn (en utilisant lencapsulation TCP) et 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 faites pas conance lutilisateur ou au service, vous pouvez crer un environnement racine modi pour lui. Cela 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 malveillant, ltendue des dommages est limite la prison. Un grand nombre de services fonctionnant en dmons pourraient bncier de ce type darrangement. Les dmons que vous installez dans votre distribution Debian ne seront cependant pas fournis chroots 7 par dfaut. Exemples : serveurs de noms de domaine (comme bind), serveurs web (comme apache), serveurs de courrier (comme sendmail) et serveurs FTP (comme wu-ftpd). La complexit de BIND est probablement la raison pour laquelle il a t expos de nombreuses attaques ces dernires annes (consultez Scurisation de BIND page 70). Cependant, Debian fournit des logiciels qui peuvent vous aider mettre en place des environnements chroot. Consultez 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. Cela comprend : rvoquer les droits du superutilisateur, le faire fonctionner dans un environnement restreint (comme une 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 superutilisateur. Vous devez donc faire fonctionner le service avec un utilisateur sans droits levs. En limitant son environnement, vous limitez les chiers lisibles et excutables par tout le monde auxquels le service peut accder, vous limitez donc aussi les possibilits dune augmentation de droits en utilisant des failles de scurit sur le systme local. Mme dans une situation o vous ne pouvez pas tre compltement 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

Plusieurs programmes permettent de 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 au dmon en utilisant strace, stat et les dpendances du paquet Debian. De plus amples renseignements sont disponibles http://www.floc.net/makejail/. Jailer est un outil semblable disponible http://www.balabit.hu/downloads/jailer/ et en paquet Debian.

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.
7. Elle essaie de les faire fonctionner avec le minimum de droits, y compris excuter les dmons avec leur propre utilisateur au lieu de les excuter en tant que superutilisateur.

Chapitre 5. Scurisation des services du systme

77

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 chiffrs 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

Si possible, vitez dutiliser NIS, le service dinformations rseau ( Network Information Service ), car il autorise le partage de mot de passe. Cela 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). Des informations supplmentaires sur la scurit de NIS sont disponibles ladresse NIS-HOWTO (http://www. linuxdoc.org/HOWTO/NIS-HOWTO.html) (/usr/share/doc/HOWTO/fr-txt/NIS-HOWTO.txt.gz). FIXME (jfs) : Ajouter des renseignements sur la faon de congurer cela dans 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) sont 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). Notez que certaines des attaques DDoS (dni de service distribu) exploitent RPC pour entrer dans le systme et agir en tant quagent ou gestionnaire. Vous navez besoin de RPC que si vous utilisez un service bas sur RPC. Les services bass sur RPC les plus communs sont NFS (Network File System) et NIS (Network Information System). Consultez 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 du rseau (plus de renseignements propos de la scurit NFS sont disponibles dans le NFS-HOWTO (http://www.tldp.org/HOWTO/NFS-HOWTO.html) ou /usr/share/doc/HOWTO /fr-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 26, 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

Chapitre 5. Scurisation des services du systme

78

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 (consultez Ajouter des capacits au pare-feu de la prsente page) ; bloquer laccs ces services en utilisant lencapsulation TCP, car le portmapper (et certains services RPC) sont compils avec libwrap (consultez Utilisation de tcpwrappers page 48). Cela veut dire que vous pouvez en bloquer laccs par la conguration des chiers hosts.allow et hosts.deny de lencapsulation TCP ; 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 (consultez, cependant, Dsactiver les problmes dhtes weak-end page 59).

5.14

Ajouter des capacits au pare-feu

Le systme dexploitation Debian GNU/Linux possde les capacits intgres fournies par le noyau Linux . Si vous installez une version rcente de Debian (le noyau install par dfaut est le 2.6) vous aurez la fonctionnalit pare-feu iptables (netlter) disponible 8 .

5.14.1

Protger le systme local avec un pare-feu

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-feu 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 largement prfrable de ne pas dpendre exclusivement des capacits dun pare-feu pour protger un systme donn. La scurit dans un systme est ralise par 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, etc.), 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 superutilisateur 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.) 9 ; la rgle forward interdit tout ( moins que vous ne protgiez dautres systmes, voir ci-dessous) ; 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
8. Disponible depuis le noyau 2.4 (qui tait le noyau par dfaut de Debian 3.0). Les versions de noyau prcdentes (2.2, disponibles dans les versions encore plus anciennes de Debian) utilisaient ipchains. 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). Les distributions Debian plus anciennes (qui ne sont plus prises en charge) utilisant un noyau 2.0 ont besoin du correctif de noyau correspondant. 9. la diffrence des pare-feu 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 (consultez le module propritaire (owner) dans la page de manuel iptables(8)).

Chapitre 5. Scurisation des services du systme

79

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 (cest connu sous le nom deltrage) dirigs vers eux. Vous pouvez mme installer une machine Debian GNU/Linux en tant que pont pare-feu, 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. Consultez Conguration dun pare-feu pont page 145 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 (consultez Paquets pare-feu de la prsente page). 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 pare-feu) 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 hors ligne /usr/share/doc/iptables/html/. Si vous ne connaissez pas grand chose 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, consultez http://lists.debian.org/debian-firewall. Consultez galement tre conscient des problmes de scurit page 19 pour plus de pointeurs (gnraux) sur les pare-feu. Un autre bon tutoriel diptables est http://iptables-tutorial.frozentux.net/iptables-tutorial.html. 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. Plusieurs logiciels peuvent tre utiliss pour congurer des rgles de pare-feu dans un systme Debian. Pour les systmes de bureau : 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 ; 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 ou concurrent loutil guarddog bien que lgrement plus orient vers les utilisateurs avancs) ; reier, un outil interactif pour crer des rgles iptables partir du trac vu sur le systme et les applications. Il possde un modle client serveur donc vous devez installer la fois le serveur (fireflier-server) et un des clients disponibles, avec un client disponible pour chaque environnement de bureau : fireflier-client-gtk (client GTK+), fireflier-client-kde (client KDE) et fireflier-client-qt (client QT). Pour les systmes serveurs (sans interface graphique) : 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 ;

Chapitre 5. Scurisation des services du systme

80

shorewall, un outil de conguration de pare-feu qui fournit une prise en charge IPsec ainsi quune prise en charge limite 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 ; bastille, lapplication de durcissement est dcrit dans Scurisation automatique dun systme Debian page 85. 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. De nombreuses autres interfaces iptables sont disponibles dans Debian ; une liste exhaustive de comparaison des diffrents paquets dans Debian est tenue jour sur la page du wiki Debian sur les pare-feu (http://wiki.debian.org/ Firewalls). 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 voulez). Consultez la documentation du paquet et utilisez lun dentre eux pour ces congurations. Comme mentionn prcdemment, certains programmes comme firestarter, guarddog ou 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 pare-feu 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, soit 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. Consultez le script ci-dessous et adaptez-le vos besoins. Testez le script et vriez les messages du journal systme pour voir le trac qui est rejet. Si vous testez depuis le rseau, vous voudrez soit excuter le script shell en exemple qui enlve le pare-feu (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/parefeu. Congurez le systme pour excuter le script avant que le rseau ne soit congur :
#update-rc.d parefeu start 40 S . stop 89 0 6 .

Voici lexemple de script de pare-feu :


#!/bin/sh # Exemple de configuration de pare-feu. # # Mises en garde # - 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 : activer ou dsactiver le pare-feu au dmarrage # # Vous pouvez tester ce script avant de lappliquer avec lextrait # de script 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/parefeu clear ; done #---------------------------------------------------------------

Chapitre 5. Scurisation des services du systme

81

PATH=/bin:/sbin:/usr/bin:/usr/sbin # Services que le systme offrira au rseau TCP_SERVICES="22" # seulement SSH 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 # Port utilis pour le service SSH, dfinir si vous avez configur # une gestion de rseau mais lavez enlev de TCP_SERVICES # SSH_PORT="22" if ! [ -x /sbin/iptables ]; then exit 0 fi 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} -j ACCEPT 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 : # Remarque : vous pouvez indiquer en dur ladresse IP ici afin de prvenir une # usurpation DNS et configurer les rgles mme si le DNS ne fonctionne pas mais # dans ce cas vous ne verrez pas les modifications dIP pour ce service : /sbin/iptables -A OUTPUT -p tcp -d security.debian.org --dport 80 -j ACCEPT # Ainsi que pour tous les services 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 # 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 # (certaines ne fonctionneront que pour certaines versions de noyau) 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

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

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

Chapitre 5. Scurisation des services du systme


} fw_clear () { /sbin/iptables /sbin/iptables /sbin/iptables /sbin/iptables /sbin/iptables /sbin/iptables }

82

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

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

case "$1" in start|restart) echo -n "Dmarrage du pare-feu... " fw_stop fw_start echo "done." ;; stop) echo -n "Arrt du pare-feu... " fw_stop echo "done." ;; clear) echo -n "Effacement des rgles de pare-feu... " fw_clear echo "done." ;; *) echo "Utilisation : $0 {start|stop|restart|clear}" exit 1 ;; esac exit 0

Au lieu dintgrer toutes les rgles iptables dans un script init.d, vous pouvez utiliser le programme iptables-restore pour restaurer les rgles sauves avec iptables-save. Pour faire cela, vous devez congurer les rgles et sauver le jeu de rgles dans un endroit statique (comme /etc/default/firewall). Congurer les rgles du rseau par ifup Vous pouvez galement utiliser la conguration du rseau dans /etc/network/interfaces pour mettre en place les rgles de pare-feu. Pour cela, vous devez : crer le jeu de rgles de pare-feu appliquer quand linterface sera active ; sauver le 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 (consultez run-parts(8)). Tester la conguration de pare-feu Tester la conguration de pare-feu est aussi facile et aussi dangereux que dexcuter simplement le script de pare-feu (ou dactiver la conguration que vous avez dnie dans lapplication 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. Plusieurs moyens permettent 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. Scurisation des services du systme

83

Un autre moyen est dintroduire une porte drobe dans le 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 (consultez Outils dvaluation des vulnrabilits distance page 99) pour sonder le rseau depuis lextrieur (ou dans toute autre direction) pour tester lefcacit de la conguration du pare-feu.

Chapitre 5. Scurisation des services du systme

84

85

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 pensent 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 rpondre par oui ou 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 (cest--dire, 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, correctifs pour noyau, etc.) ; 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]

Cela devrait alerter ladministrateur, qui devrait reconsidrer ses actions.

Chapitre 6. Scurisation automatique dun systme Debian

86

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)) ; 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)).

87

Chapitre 7

Infrastructure de scurit Debian


7.1 Lquipe de scurit Debian

Debian possde une quipe de scurit, qui assure la scurit dans la distribution stable. Assurer la scurit veut dire suivre les failles qui surviennent dans les logiciels (en surveillant des forums comme Bugtraq ou vuln-dev) et dterminer si la distribution stable est concerne par ces failles. Lquipe de scurit Debian est galement le point de contact pour les problmes qui sont coordonns par les dveloppeurs amont ou des organisations comme le CERT (http://www.cert.org), qui peuvent toucher de multiples distributeurs, cest--dire quand les problmes ne sont pas spciques Debian. Le point de contact avec lquipe de scurit est team@security.debian.org (mailto:team@security.debian.org) qui nest lu que par les membres de lquipe de scurit. Les informations secrtes devraient tre envoyes la premire adresse et, dans certains cas, devraient tre chiffres avec la clef du contact de lquipe de scurit (disponible dans le trousseau Debian). Ds 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 contiendra parfois un rtroportage du correctif effectu en amont (qui est habituellement en avance de plusieurs versions 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 http://security.debian.org pour pouvoir tre rcuprs par apt (consultez Faire une mise jour de scurit page 31). 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 debian-security-announce (http://lists.debian.org/debian-security-announce) et Bugtraq. Dautres questions souvent poses sur lquipe de scurit Debian peuvent tre trouves en Questions concernant lquipe de scurit Debian page 133.

7.2

Alertes de scurit Debian

Les alertes de scurit Debian (DSA) sont effectues chaque fois quune faille affectant un paquet Debian est dcouverte. Ces alertes, signes par lun des membres de lquipe de scurit, contiennent des renseignements sur les versions touches ainsi que lemplacement des mises jour. 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 du stratagme ; 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/). Cela 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 intresss peuvent, cependant (et cest fait sur quelques portails relatifs Debian) utiliser le ux RDF pour tlcharger automatiquement les DSA sur leur bureau. Certaines applications, comme Evolution (un client de messagerie

Chapitre 7. Infrastructure de scurit Debian

88

et assistant dinformations personnelles) et Multiticker (une applette GNOME) peuvent tre utilises pour rcuprer les alertes automatiquement. Le ux 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 intgres au 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 remarquerez 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 de failles US-CERT (http://www.kb.cert.org/vuls) ainsi que les noms CVE (voir ci-dessous). Ces rfrences sont fournies pour faciliter lutilisation, mais seules les rfrences CVE sont priodiquement vries et intgres. Les avantages dajouter les rfrences croises vers ces bases de donnes de failles sont 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 systme peuvent en apprendre plus sur la faille et ses impacts en suivant les rfrences croises ; ces renseignements peuvent tre utiliss pour vrier les sorties de scanneurs de failles qui contiennent des rfrences CVE pour supprimer des faux positifs (consultez Le scanneur X de vrication des failles indique que le systme Debian est vulnrable ! page 131).

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 estime 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 fournit maintenant les noms CVE pour toutes les DSA publies depuis septembre 1998. Toutes les alertes peuvent tre rcupres sur le site web Debian et les annonces lies aux nouvelles failles contiennent les noms CVS quand ils sont disponibles lors de leur publication. Les alertes lies un nom CVE donn peuvent tre cherches directement avec le systme de suivi en scurit Debian (voir ci-aprs). Dans certains cas, vous pouvez ne pas trouver un nom CVE donn dans les alertes publies par exemple 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 signal 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).
1. Des traductions sont disponibles jusquen dix langues. 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

89

7.3

Systme de suivi en scurit

La base de donne centralise de ce que les quipes de scurit Debian connaissent des vulnrabilits est le systme de suivi en scurit Debian (http://security-tracker.debian.net). Elle rassemble les rfrences de paquets, les versions vulnrables et corriges pour chaque suite, les noms CVE, les numros de bogue Debian, les notes de DSA et autres. Elle peut tre consulte, par exemple, laide du nom CVE pour voir les paquets Debian affects ou corrigs, ou par paquet pour montrer les problmes de scurit non rsolus. Les seuls renseignements manquants au systme de suivi sont les informations condentielles que lquipe de scurit reoit sous embargo. Le paquet debsecan utilise les renseignements du systme de suivi pour signaler ladministrateur dun systme les paquets installs vulnrables, et ceux pour lesquels des mises jour corrigeant les problmes de scurit sont disponibles.

7.4

Infrastructure de construction de scurit Debian

Comme Debian prend actuellement en charge 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, part dans de rares circonstances, les mises jour sont disponibles pour toutes les architectures en mme temps. Les paquets de larchive de scurit sont construits automatiquement, tout comme larchive classique. Cependant, les mises jour de scurit sont un petit peu diffrentes des 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 distributeurs aient eu une chance raisonnable de le corriger. Larchive denvoi de scurit fonctionne donc de la faon suivante : quelquun trouve un problme de scurit ; quelquun corrige le problme et fait un envoi vers incoming de security-master.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 journal de modications contient une cible de distribution testing-security ou stable-security ; lenvoi est vri et trait par un systme Debian et dplac dans queue/accepted et le service dempaquetage est prvenu. Les chiers cet endroit sont accessibles par lquipe de scurit et (de faon un peu indirecte) par les service dempaquetage ; les serveurs dempaquetage activs pour la scurit rcuprent le paquet source (en priorit par rapport aux constructions courantes), 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 dplacs dans queue/accepted ; quand lquipe de scurit trouve les paquets acceptables (cest--dire quils sont correctement construits pour toutes les architectures pertinentes et corrigent le trou de scurit sans introduire de nouveau problme par eux-mmes), un script est excut qui : installe le paquet dans larchive de scurit ; met jour les chiers Packages, Sources et Release 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 ; fait suivre les paquets vers le proposed-updates appropri pour quil soit intgr larchive relle ds que possible. Cette procdure, auparavant ralise la main, a t teste 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 prises en charge (presque vingt) en moins dun jour.

7.4.1

Le guide du dveloppeur pour les mises jour de scurit

Les dveloppeurs Debian qui doivent se coordonner avec lquipe en charge de la scurit pour corriger un problme avec leurs paquets, peuvent consulter la rfrence du dveloppeur section Gestion des bogues de scurit (http://www. debian.org/doc/manuals/developers-reference/pkgs.html#bug-security).

7.5

La signature de paquet dans Debian

Ce chapitre pourrait galement tre intitul comment mettre jour et niveau un systme Debian GNU/Linux en scurit et mrite davoir son propre chapitre car cest une partie importante de linfrastructure de scurit. La signature des

Chapitre 7. Infrastructure de scurit Debian

90

paquets est un point important car elle vite laltration de paquets distribus sur les miroirs et des tlchargements avec des attaques en homme au 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 pourraient favoriser la propagation de chevaux de Troie et la compromission de systmes lors des mises jour 3 . Debian ne fournit pas de paquets signs, mais fournit un mcanisme disponible depuis Debian 4.0 Etch pour vrier lintgrit des paquets tlchargs 4 . Pour obtenir plus de renseignements, consultez apt scuris de la prsente page. Ce problme est mieux dcrit dans le Strong Distribution HOWTO (http://www.cryptnet.net/fdp/crypto/ strong_distro.html) par V. Alex Brennen.

7.5.1

Le schma actuel pour la vrication de paquet

Le schma actuel pour la vrication de signatures de paquet en utilisant apt est : le chier Release contient la somme de contrle MD5 de Packages.gz (qui contient les sommes de contrle MD5 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 Packages.gz ; quand un paquet est sur le point dtre install, il est dabord tlcharg, puis la somme MD5 est calcule ; le chier Release sign est vri (la signature est bonne) et la somme MD5 en est extraite pour le chier Packages.gz, la somme de contrle de Packages.gz est calcule et (si elle est bonne) la somme de contrle MD5 du paquet tlcharg en est extraite ; si la somme de contrle MD5 du paquet tlcharg est la mme que celle contenue dans le chier Packages.gz, le paquet sera install sinon ladministrateur sera averti et le paquet sera laiss dans le cache (ainsi ladministrateur dcidera de linstaller 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 install non plus. En suivant la chane des sommes MD5, apt est capable de vrier quun paquet est originaire dune version bien spcique. Cest moins souple que de signer chaque paquet un par un, mais ce peut tre combin galement avec ce schma (voir cidessous). Ce schma est compltement implment (http://lists.debian.org/debian-devel/2003/ debian-devel-200312/msg01986.html) dans apt 0.6 et disponible depuis la publication de Debian 4.0. Pour obtenir plus de renseignements, consultez apt scuris 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. aptitude et synaptic font partie des interfaces dj connues pour fonctionner correctement avec cette fonctionnalit. 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.5.2

apt scuris

La version 0.6 dapt, disponible depuis Debian 4.0 Etch, et les versions plus rcentes, intgrent apt-secure (aussi connu sous le nom dapt scuris) qui est un outil permettant ladministrateur systme de tester lintgrit des paquets tlchargs conformment au schma ci-dessus. Cette version contient loutil apt-key pour ajouter de nouvelles clefs au trousseau dapt qui ne contient par dfaut que la clef actuelle de signature de larchive Debian. Ces modications sont bases sur un correctif pour apt (disponible dans le bogue n 203741 (http://bugs.debian. org/cgi-bin/bugreport.cgi?bug=203741)) qui fournit cette implmentation. apt scuris fonctionne en vriant la distribution laide du chier Release, conformment Vrication par version de distribution page suivante. Typiquement, ce processus sera transparent pour ladministrateur bien quil faudra intervenir chaque anne 5 pour ajouter la nouvelle clef de larchive quand elle est modie. Pour obtenir plus de renseignements sur les tapes quun administrateur doit accomplir, consultez Ajout de clef en scurit page 93. Cette fonctionnalit est encore en dveloppement, donc si vous pensez avoir trouv des bogues dans ce paquet, veuillez dabord vrier que vous utilisez la dernire version (car ce paquet peut voluer beaucoup avant dtre diffus) et si vous utilisez la dernire version, soumettez un rapport de bogue sur le paquet apt.
3. 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 eu un impact sur les mises jour de scurit de Microsoft Windows. 4. Les versions plus anciennes, comme Debian 3.1 Sarge peuvent utiliser cette fonctionnalit en utilisant les versions rtroportes de cet outil de gestion de paquets. 5. Jusqu ce quun mcanisme automatique ne soit dvelopp.

Chapitre 7. Infrastructure de scurit Debian

91

Plus de renseignements sont disponibles sur les pages du wiki (http://wiki.debian.org/SecureApt) et dans la documentation ofcielle : Migration vers APT 0.6 (http://www.enyo.de/fw/software/apt-secure/) et Vrication de signature APT (http://www.syntaxpolice.org/apt-secure/).

7.5.3

Vrication par version de distribution

Cette section dcrit le mode de fonctionnement du mcanisme de vrication par version de distribution, elle a t crite par Joey Hess et est galement disponible dans le wiki de Debian (http://wiki.debian.org/SecureApt). Concepts de base Voici quelque concepts de base que vous devrez comprendre pour la suite de cette section. Une somme de contrle est une mthode permettant de prendre un chier et de le rduire en un nombre sufsamment petit qui identie son contenu de faon unique. Cest beaucoup plus compliqu quil ny parait de faire a bien, et le type de sommes de contrle le plus frquemment utilis, MD5, est en passe dtre cass. La cryptographie clef publique est base sur une paire de clefs : une publique et une prive. La clef publique est distribue partout ; la clef prive doit tre garde secrte. Tous ceux qui possdent la clef publique peuvent chiffrer un message qui ne pourra tre lu que par un possesseur de la clef prive. La clef prive permet elle de signer un chier, pas de le chiffrer. Si une clef prive est utilise pour signer un chier, alors tous ceux qui ont la clef publique peuvent vrier que le chier tait sign par cette clef. Une personne ne possdant pas la clef prive ne peut pas contrefaire une telle signature. Ces clefs sont des nombres assez grands (de 1024 2048 chiffres, ou plus) et pour les rendre plus facile utiliser, ils ont un identiant de clef, plus court (un nombre de 8 ou 16 chiffres), qui peut tre utilis pour y rfrer. gpg est loutil utilis par apt scuris pour signer les chiers et vrier leurs signatures. apt-key est un programme qui permet de grer un trousseau de clefs GPG pour apt scuris. Le trousseau est gard dans le chier /etc/apt/trusted.gpg ( ne pas confondre avec le chier /etc/apt/trustdb.gpg relatif, mais pas trs intressant). apt-key permet de montrer les clefs du trousseau, et dajouter ou enlever une clef. Sommes de contrle de Release Une archive Debian contient un chier Release, qui est mis jour chaque fois quun paquet de larchive est modi. Entre autres, le chier Release contient les sommes MD5 dautres chiers de larchives. Exemple dextrait de chier Release :
MD5Sum: 6b05b392f792ba5a436d590c129de21f 1356479a23edda7a69f24eb8d6f4a14b 2a5167881adc9ad1a8864f281b1eb959 88de3533bf6e054d1799f8e49b6aed8b

3453 1131 1715 658

Packages Packages.gz Sources Sources.gz

Les chiers Release contiennent aussi des sommes de contrle SHA-1, ce qui sera utile quand les sommes de contrle MD5 seront compltement casses, toutefois, apt ne les utilise pas encore. Maintenant, lintrieur dun chier Packages, dautres sommes de contrle MD5 sont disponibles : une pour chaque paquet de la liste. Par exemple :
Package: uqm Priority: optional ... Filename: unstable/uqm_0.4.0-1_i386.deb Size: 580558 MD5sum: 864ec6157c1eea88acfef44d0f34d219

Ces deux sommes de contrle permettent de vrier que la copie du chier Packages tlcharg est correcte, avec une somme de contrle MD5 qui correspond celle du chier Release. Lorsquun paquet est tlcharg individuellement, la vrication de la somme de contrle MD5 avec le contenu du chier Packages est aussi possible. Si apt choue lune de ces tapes, il abandonnera. Rien de nouveau pour apt scuris, mais cela fournit les bases. Remarquez quun seul chier na pas pu tre vri par apt : le chier Release. apt scuris a justement pour but de faire vrier Release par apt avant de faire quoi que ce soit dautre avec, et de combler ce trou, an de rendre la chane de vrication complte, du paquet qui va tre install jusquau fournisseur du paquet.

Chapitre 7. Infrastructure de scurit Debian Vrication du chier Release

92

Pour vrier le chier Release, une signature gpg est ajoute dans le chier Release.gpg, distribu ses cts. Il ressemble ceci 6 , bien que seul gpg accde son contenu normalement :
-----BEGIN PGP SIGNATURE----Version: GnuPG v1.4.1 (GNU/Linux) iD8DBQBCqKO1nukh8wJbxY8RAsfHAJ9hu8oGNRAl2MSmP5+z2RZb6FJ8kACfWvEx UBGPVc7jbHHsg78EhMBlV/U= =x6og -----END PGP SIGNATURE-----

Vrication du chier Release.gpg par apt apt scuris tlcharge les chiers Release.gpg en mme temps que les chiers Release, et sil ne peut pas tlcharger Release.gpg, ou si la signature nest pas correcte, il se plaindra, et fera remarquer que les chiers Packages points par le chier Release, et tous les paquets contenus dedans, ne proviennent pas dune source de conance. Voici quoi cela ressemble lors dun apt-get update :
W: Erreur de GPG : http://ftp.us.debian.org testing Release : Les signatures suivantes nont pas pu tre vrifies car la cl publique nest pas disponible : NO_PUBKEY 010908312D230C5F

Remarquez que la seconde partie du grand nombre est lidentiant de la clef quapt ne connat pas, cest--dire 2D230C5F ici. Si vous ignorez cet avertissement et essayez dinstaller un paquet ensuite, apt avertira de nouveau :
ATTENTION : les paquets suivants nont pas t authentifis. libglib-perl libgtk2-perl Faut-il installer ces paquets sans vrification (o/N) ?

Si vous acceptez ici, vous navez aucun moyen de savoir si le chier que vous obtenez est le paquet que vous voulez installer, ou sil sagit dautre chose que quelquun pouvant intercepter la communication avec le serveur 7 a prpar pour vous, avec une mauvaise surprise. Remarquez que vous pouvez dsactiver ces vrications en excutant apt avec allow-unauthenticated. Remarquez galement que les nouvelles versions de linstallateur Debian utilisent le mme mcanisme de chier Release lors du debootstrap du systme de base Debian, avant quapt ne soit disponible, et que linstallateur utilise mme ce systme pour vrier ses morceaux quil tlcharge. Enn, Debian ne signe pour linstant pas les chiers Release de ses CD ; apt peut tre congur pour faire toujours conance aux chiers des CD de sorte que ce ne soit pas un gros problme. Comment expliquer apt en quoi avoir conance La scurit de lintgralit du systme dpend de lexistence dun chier Release.gpg, qui signe un chier Release et de la vrication dapt laide de gpg. Pour vrier la signature, il doit connatre la clef publique de la personne qui a sign le chier. Ces clefs sont gardes dans le trousseau spcique apt (/etc/apt/trusted.gpg) et apt scuris arrive avec la gestion des clefs. Par dfaut, les systmes Debian sont fournis prcongurs avec la clef darchive Debian du trousseau.
# apt-key list /etc/apt/trusted.gpg -------------------pub 1024D/4F368D5D 2005-01-31 [expire: 2006-01-31] uid Debian Archive Automatic Signing Key (2005) <ftpmaster@debian.org>

Ici 4F368D5D est lidentiant de clef, et remarquez que la clef nest valable que pour une priode dun an. Debian permute ces clefs comme dernire ligne de dfense contre une quelconque brche de scurit de cassage de clef. apt aura ainsi conance en larchive Debian ofcielle, mais si vous ajoutez dautres dpts apt /etc/apt /sources.list, il vous faudra galement donner apt sa clef si vous voulez quil ait conance en ce dpt. Une fois que vous possdez la clef et que vous lavez vrie, il suft dexcuter apt-key add fichier pour lajouter. Obtenir la clef et la vrier sont les parties les plus dlicates.
6. Dun point de vue technique, cest une signature ASCII-armored dtache. 7. Ou ayant empoisonn le DNS, ou usurpant le serveur, ou ayant remplac le chier sur le miroir utilis, etc.

Chapitre 7. Infrastructure de scurit Debian Trouver la clef dun dpt

93

Le paquet debian-archive-keyring est utilis pour distribuer les clefs apt. Les mises niveau de ce paquet peuvent ajouter (ou retirer) des clefs gpg pour larchive Debian principale. Pour les autres archives, il ny a pas encore dendroit normalis pour trouver la clef dun dpt apt donn. La clef est souvent lie depuis la page web du dpt ou place dans le dpt directement, mais il vous faudra parfois la chercher. La clef de signature de larchive Debian est disponible en http://ftp-master.debian.org/ziyi_key_2006.asc (remplacez 2006 par lanne en cours). 8 gpg a lui mme un moyen normalis de distribuer les clefs, utilisant un servent de clefs, do gpg peut tlcharger une clef pour lajouter son trousseau. Par exemple :
$ gpg --keyserver pgpkeys.mit.edu --recv-key 2D230C5F gpg: requte de la cl 2D230C5F du serveur hkp pgpkeys.mit.edu gpg: cl 2D230C5F: cl publique Debian Archive Automatic Signing Key (2006) <ftpmaster@debian.org> importe gpg: Quantit totale traite: 1 gpg: importe: 1

Vous pouvez alors exporter cette clef depuis votre propre trousseau et la fournir apt-key :
$ gpg -a --export 2D230C5F | sudo apt-key add gpg: aucune cl de confiance ultime na t trouve OK

Lavertissement gpg : aucune cl de conance ultime na t trouve signie que gpg ntait pas congur pour faire conance de faon ultime une clef en particulier. Les rglages de conance font partie du rseau de conance dOpenPGP qui ne sapplique pas ici. Cet avertissement nest donc pas un problme ici. Dans les congurations typiques, seule la propre clef de lutilisateur est de conance ultime. Ajout de clef en scurit En ajoutant une clef au trousseau dapt, vous lui dite de faire conance tout ce qui est sign par cette clef, et cela vous permet de savoir avec certitude quapt ninstallera rien de non sign par la personne qui possde la clef prive. Si vous tes sufsamment paranoaque, vous pouvez voir que cela ne fait que dplacer les choses dun niveau : maintenant au lieu de vous inquiter de la validit dun paquet ou dun chier Release, il suft de sinquiter davoir vraiment la bonne clef ; est-ce que le chier http://ftp-master.debian.org/ziyi_key_2006.asc mentionn ci-dessous est vraiment la clef de signature de larchive, ou a-t-il t modi (ou ce document ment-il) ? tre paranoaque est une bonne attitude en scurit, mais vrier les choses partir dici est plus difcile. gpg connat le concept de chane de conance, qui peut commencer partir de quelquun dont vous tre sr, qui signe la clef de quelquun, qui signe une autre clef, etc. jusqu atteindre la clef de larchive. Si vous tes sufsamment paranoaque, vous voudrez vrier que la clef de larchive est signe par une clef en laquelle vous pouvez avoir conance, avec une chane de conance qui remonte jusqu quelquun que vous connaissez personnellement. Si vous voulez faire cela, rendez vous une confrence Debian ou peut-tre un groupe (LUG) local pour une signature de clef 9 . Si vous ne pouvez pas vous permettre ce niveau de paranoa, faites le ncessaire sufsant de votre point de vue quand vous ajoutez une nouvelle source apt et une nouvelle clef. Peut-tre voudrez vous changer un courrier lectronique avec la personne fournissant la clef et la vrier, ou peut-tre prfrerez vous tenter votre chance en tlchargeant la clef en supposant que cest la bonne. Ce qui est important est quen rduisant le problme au niveau de conance des clefs de larchive, apt scuris vous laisse tre aussi prudent et scuris que vous dsirez ltre. Vrication de lintgrit des clefs Vous pouvez aussi bien vrier lempreinte digitale de la clef que ses signatures. La rcupration de lempreinte digitale peut se faire depuis de nombreuses sources : vous pouvez vrier le livre systme Debian (http://debiansystem. info/readers/changes/547-ziyi-key-2006), parler avec des dveloppeurs Debian sur IRC, lire la liste de diffusion o la modication de clef sera annonce ou nimporte quel moyen supplmentaire pour vrier lempreinte digitale. Par exemple en faisant :
8. ziyi est le nom de loutil utilis pour signer sur les serveurs Debian, le nom vient du nom dune actrice chinoise (http://fr.wikipedia.org/ wiki/Zhang_Ziyi). 9. Toutes les clefs de dpt apt ne sont pas encore signes par une autre clef. Peut-tre que la personne qui a mis en place le dpt na pas dautre clef, ou peut-tre que a ne lui plat pas de signer une telle clef de rle avec sa clef principale. Pour des renseignements au sujet de la mise en place dune clef de dpt, consultez Vrication de distribution pour les sources non Debian page 98.

Chapitre 7. Infrastructure de scurit Debian


$ GET http://ftp-master.debian.org/keys/archive-key-6.0.asc | gpg --import gpg: cl 473041FA: cl publique Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org> importe gpg: Quantit totale traite: 1 gpg: importe: 1 (RSA: 1) gpg: 3 marginale(s) ncessaires, 1 complte(s) ncessaires, modle de confiance PGP gpg: profondeur: 0 valide: 1 sign: 0 confiance: 0-. 0g. 0n. 0m. 0f. 1u $ gpg --check-sigs --fingerprint 473041FA pub 4096R/473041FA 2010-08-27 [expire: 2018-03-05] Empreinte de la cl = 9FED 2BCB DCD2 9CDF 7626 78CB AED4 B06F 4730 41FA uid Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org> sig!3 473041FA 2010-08-27 Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org> sig! 7E7B8AC9 2010-08-27 Joerg Jaspert <joerg@debian.org> sig! P B12525C4 2010-08-27 Joerg Jaspert <joerg@debian.org> sig! D0EC0723 2010-08-27 Mark Hymers <mhy@debian.org> sig! 8AEA8FEE 2010-08-27 Stephen Gran <steve@lobefin.net> sig! A3AE44A4 2010-08-28 Michael OConnor (stew) <stew@vireo.org> sig! 00D8CD16 2010-08-28 Alexander Reichle-Schmehl <alexander@reichle.schmehl.info> sig! CD15A883 2010-08-28 Alexander Schmehl (privat) <alexander@schmehl.info> sig! 672C8B12 2010-08-28 Alexander Reichle-Schmehl <tolimar@debian.org> sig!2 C4CF8EC3 2010-08-28 Torsten Werner <twerner@debian.org> sig!2 D628A5CA 2010-08-28 Torsten Werner <mail.twerner@googlemail.com>

94

puis en vriant la chane de conance (consultez La signature de paquet dans Debian page 89) de votre clef (ou dune clef de conance) vers au moins une des clefs utilises pour signer la clef de larchive. Si vous tes sufsamment paranoaque, vous ne direz apt de ne faire conance la clef que si vous tes satisfait de la chane de conance :
$ gpg --export -a 473041FA | sudo apt-key add OK

Remarquez que la clef est signe par la clef de larchive prcdente, donc vous pouvez en thorie vous appuyer simplement sur votre conance prcdente. Rotation annuelle de la clef de larchive Debian Comme signal prcdemment, la clef de larchive Debian est modie tous les ans, en janvier. Comme apt scuris est encore jeune, nous manquons encore dexprience pour modier la clef et des passages sont un peu abrupts. En janvier 2006, une nouvelle clef t prpare pour 2006 et le chier Release a commenc tre sign par cette clef, mais pour viter de casser les systmes qui utilisaient encore lancienne clef de 2005, le chier Release tait aussi sign par cette dernire. Le but tait quapt accepte les deux signatures, indpendamment de la clef quil possde, mais cause dun bogue dapt, il refusait de faire conance au chier sil navait pas les deux clefs et ntait pas capable de vrier les deux signatures. Cela a t corrig dans la version 0.6.43.1 dapt. Une confusion existait aussi sur la faon de distribuer la clef aux utilisateurs qui utilisaient dj des systmes avec apt scuris ; elle avait t envoye sur le site web sans annonce et sans rel moyen de la vrier, et les utilisateurs ont t obligs de la tlcharger eux-mmes. En janvier 2006, une nouvelle clef t prpare pour 2006 et le chier Release a commenc tre sign par cette clef, mais pour viter de casser les systmes qui utilisaient encore lancienne clef de 2005, le chier Release tait aussi sign par cette dernire. Pour viter les confusions sur le meilleur mcanisme de distribution pour les utilisateurs qui utilisent dj des systmes avec apt scuris, le paquet debian-archive-keyring a t introduit, pour grer les mises jour du trousseau de clefs dapt. Problmes connus de vrication de la publication Un autre problme vident est que si lhorloge est trs dcale, apt scuris ne fonctionnera pas. Si la date est congure dans le passe, comme en 1999, apt chouera avec un message peu comprhensible comme :
W: GPG error: http://ftp.us.debian.org sid Release: Unknown error executing gpg

Pourtant apt-key list expliquera le problme :


gpg: la cl 473041FA spatio-temporelle ou pub 4096R/473041FA uid a t cre 367773259 secondes dans le futur (rupture problme dhorloge) 2010-08-27 [expire: 2018-03-05] Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org>

Si elle est congure une date trop dans le futur, apt considrera la clef expire. Un autre problme que vous pourriez rencontrer en utilisant testing ou unstable, est que si vous navez pas excut apt-get update rcemment et apt-get install un paquet, apt risque de se plaindre quil ne peut pas tre authenti. apt-get update corrigera cela.

Chapitre 7. Infrastructure de scurit Debian Vrication manuelle par version de distribution

95

Au cas o vous voudriez ajouter des vrications de scurit supplmentaires et que vous ne vouliez pas ou pouviez pas utiliser la dernire version dapt 10 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 unstable 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

Avant tout, vous avez besoin de : rcuprer les clefs que les logiciels de larchive utilisent pour signer les chiers Release, http://ftp-master. debian.org/ziyi_key_2006.asc, et les ajouter ~/.gnupg/trustedkeys.gpg (cest ce que gpgv utilise par dfaut) ;
gpg --no-default-keyring --keyring trustedkeys.gpg --import ziyi_key_2006.asc

retirer toutes les lignes de /etc/apt/sources.list qui nutilisent pas la structure normale dists ou modier 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 clefs appropries. Cest 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 de plus amples renseignements, consultez 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 ] } 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

10. Soit parce que vous utilisez la version stable Sarge ou une version plus ancienne, soit parce que vous ne voulez pas utiliser la dernire version dapt, bien que nous apprcierions quelle soit teste

Chapitre 7. Infrastructure de scurit Debian


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

96

-f1 wc -c < /var/lib

echo echo "Vrification des sources dans /etc/apt/sources.list :" echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" echo (echo "Vous devriez vous assurer que les distributions que vous tlchargez" echo "sont bien celles que vous pensez tlcharger, et quelle sont aussi " echo "jour que vous pourriez lesprer (testing et unstable ne devraient pas" echo "tre dsynchronises de plus dun jour ou deux, stable-updates pas plus" echo "de quelques semaines ou un mois)." ) | 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 " * Pas de fichier Release au premier niveau" >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 Origine : $origline/$lablline" echo " o Suite : $suitline/$codeline" echo " o $dateline" echo " o $dscrline" if [ "${dist%%/*}" != "$suitline" -a "${dist%%/*}" != "$codeline" ]; then echo " * Attention : $dist tait demande, $suitline/$codeline a t obtenue" fi lynx -reload -dump "${url}/dists/${dist}/Release.gpg" >/dev/null 2>&1 wget -q -O Release.gpg "${url}/dists/${dist}/Release.gpg"

gpgv --status-fd 3 Release.gpg Release 3>&1 >/dev/null 2>&1 | sed -n "s/^\[GNUPG:\] //p" | (okay=0; err=""; while rea if [ "$gpgcode" = "GOODSIG" ]; then if [ "$err" != "" ]; then echo " * Sign par ${err# } clef : ${rest#* }" else echo " o Sign par : ${rest#* }" okay=1 fi err="" elif [ "$gpgcode" = "BADSIG" ]; then echo " * Mauvaise signature par : ${rest#* }" err="" elif [ "$gpgcode" = "ERRSIG" ]; then echo " * Impossible de vrifier la signature par identifiant de clef : ${rest %% *}" err="" elif [ "$gpgcode" = "SIGREVOKED" ]; then err="$err Rvoque" elif [ "$gpgcode" = "SIGEXPIRED" ]; then err="$err Expire"

Chapitre 7. Infrastructure de scurit Debian


fi done if [ "$okay" != 1 ]; then echo " * Pas de signature valable" >Release fi)

97

fi okaycomps="" for comp in $comps; do if [ "$ty" = "deb" ]; then X=$(checkit "echo "${baseurl}/dists/${dist}/${comp}/binary-${arch}/Release" | sed s,//*,_,g" "${comp}/bin Y=$(checkit "echo "${baseurl}/dists/${dist}/${comp}/binary-${arch}/Packages" | sed s,//*,_,g" "${comp}/bi if [ "$X $Y" = "OK OK" ]; then okaycomps="$okaycomps $comp" else echo " * Problmes avec $comp ($X, $Y)" fi elif [ "$ty" = "deb-src" ]; then X=$(checkit "echo "${baseurl}/dists/${dist}/${comp}/source/Release" | sed s,//*,_,g" "${comp}/source/Rele Y=$(checkit "echo "${baseurl}/dists/${dist}/${comp}/source/Sources" | sed s,//*,_,g" "${comp}/source/Sour if [ "$X $Y" = "OK OK" ]; then okaycomps="$okaycomps $comp" else echo " * Problmes avec le composant $comp ($X, $Y)" fi fi done [ "$okaycomps" = "" ] || echo " o Okay:$okaycomps" echo done echo "Rsultat" echo "~~~~~~~~" echo allokay=true cd /tmp/apt-release-check diff <(cat BAD MISSING NOCHECK OK | sort) <(cd /var/lib/apt/lists && find . -type f -maxdepth 1 | sed s,^\./,,g | grep _ | sort) cd /tmp/apt-release-check if grep -q ^ UNVALIDATED; then allokay=false (echo "Les fichiers suivants de /var/lib/apt/lists nont pas t valids." echo "Cela peut soit tre une simple indication inoffensive que ce script" echo "est bogu ou pas jour, soit un indicateur de porte ouverte aux" echo "paquets de type chevaux de Troie sur le systme." ) | fmt echo sed s/^/ / < UNVALIDATED echo fi if grep -q ^ BAD; then allokay=false (echo "Les contenus des fichiers suivants de /var/lib/apt/lists ne" echo "correspondent pas ce qui tait attendu. Cela peut signifier que" echo "ces sources ne sont pas jour, quil y a un problme darchive," echo "ou que quelquun est en train dutiliser le miroir pour distribuer" echo "des chevaux de Troie." if am_root; then echo "Les fichiers ont t renomms avec lextension .FAILED et" echo "seront ignors par 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 "Les fichiers suivants de /var/lib/apt/lists manquaient. Cela" echo "pourrait vous faire manquer des mises jours de paquets vulnrables." ) | fmt echo sed s/^/ / < MISSING echo fi if grep -q ^ NOCHECK; then allokay=false (echo "Les contenus des fichiers suivants de /var/lib/apt/lists nont pas" echo "pu tre valids cause dun manque de fichier Release sign, ou" echo "dun manque dentre approprie dans un fichier Release sign. Cela" echo "signifie probablement que les mainteneurs de ces sources sont" echo "ngligents, mais pourrait signifier que ces sources sont en cours" echo "dutilisation pour distribuer des chevaux de Troie." if am_root; then echo "Les fichiers ont t renomms avec lextension .FAILED et" echo "seront ignors par apt."

Chapitre 7. Infrastructure de scurit Debian


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 Tout semble se passer correctement ! echo fi rm -rf /tmp/apt-release-check

98

Vous pourriez devoir ajouter le correctif suivant pour Sid car md5sum ajoute un - aprs la somme quand lentre provient de lentre standard :
@@ -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 @@ return fi X="md5sum < /var/lib/apt/lists/$FILE wc -c < /var/lib/apt/lists/$FILE" X="echo "$X" | sed s/^ *//;s/ */ /g" + X="echo "$X" | sed s/-//;s/^ *//;s/ */ /g" if [ "$X" != "$Y" ]; then echo "$FILE" >>BAD echo "Problme"

7.5.4

Vrication de distribution pour les sources non Debian

Notez que, lors de lutilisation de la dernire version dapt (avec apt scuris), 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. Cest 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 :
$ 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.5.5

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 dont aucun Packages na jamais exist, pour quils puissent tre utiliss 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 intgres au .deb lui-mme. Debian a dj la capacit de faire cela actuellement, mais il ny a aucun projet de mettre en place une charte ou dautres outils puisque la signature de larchive est prfre. Ces outils sont disponibles aux utilisateurs et aux administrateurs darchive qui pourraient prfrer utiliser ce schma. Les dernires versions de dpkg ( partir de la version 1.9.21) contiennent 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. Seconde note : les signatures des dveloppeurs sont actuellement enleves lors de lentre du paquet dans larchive car la mthode actuellement prfre est par vrication de distribution comme dcrit prcdemment.

99

Chapitre 8

Outils de scurit dans Debian


FIXME : Besoin de plus de contenu. Debian fournit un certain nombre doutils qui peuvent rendre un systme Debian apte une utilisation scurise, y compris la protection des systmes dinformation au travers de pare-feu (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 chiffrement intgrs la distribution principale (main). OpenSSH et GNU Privacy Guard font partie de linstallation par dfaut et le chiffrement fort est maintenant prsent dans les navigateurs web, les serveurs web, les bases de donnes, etc. Une intgration plus pousse du chiffrement 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 hors des tats-Unis.

8.1

Outils dvaluation des vulnrabilits distance

Les outils fournis dans Debian pour effectuer une valuation des vulnrabilits distance sont : 1 nessus ; raccess ; nikto (en remplacement de whisker). De loin loutil le plus complet et mis jour, nessus est compos dun client (nessus) utilis comme une interface graphique et dun serveur (nessusd) qui lance les attaques programmes. Nessus connait des vulnrabilits distance pour un grand nombre de systmes y compris les appareils 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 fournis 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 disponibles pour tester les CGI et il est capable de dtecter le serveur web utilis an de ne lancer les attaques que si elles 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 comme des scanners de vulnrabilits. Cest le premier type d attaques lances contre des htes distants an de tenter de dterminer les services disponibles. lheure actuelle, Debian fournit : nmap ; xprobe ; p0f ; knocker ;
1. Certains dentre eux sont fournis en installant le paquet harden-remoteaudit.

Chapitre 8. Outils de scurit dans Debian isic ; hping3 ; icmpush ; nbtscan (pour audits SMB ou NetBIOS) ; fragrouter ; strobe (dans le paquet netdiag) ; irpas.

100

Mme si 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 par 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 la prise en charge de NetBIOS, y compris 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 le bogue n 153117 (http://bugs.debian.org/153117) (ITP fragrouter) pour voir sil est inclus. 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 ) dhtes de faon dterminer si le systme de chiers est install correctement, les processus 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 ou 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 dau moins deux ordinateurs, habituellement relis un rseau priv offrant un accs rseau public limit, qui communiquent de faon scurise par lintermdiaire dun 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 chiffrement, 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/).

FIXME : Mettre jour cette information car elle a t crite en pensant FreeSWAN. Vrier le bogue n 237764 et le Message-Id : <200412101215.04040.rmayr@debian.org>.

Chapitre 8. Outils de scurit dans Debian

101

Le paquet OpenSWAN est probablement le meilleur choix dans lensemble tant donn quil promet dtre fonctionnel avec tout matriel grant 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 pris en charge 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 :
Utiliser PPP 2.3.8 nest ncessaire que si vous voulez une authentification et un chiffrement compatible Microsoft MSCHAPv2/MPPE. La raison est que le correctif MSCHAPv2/MPPE actuellement fourni (19990813) est relatif PPP 2.3.8. Si vous navez pas besoin de lauthentification ou du chiffrement 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. Noubliez pas que le chiffrement dans ppptp vous oblige 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/).

8.6

Infrastructure de clefs publiques (PKI)

Linfrastructure de clefs 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 clefs de chiffrement publique et prive pour vrier lidentit de lexpditeur (signature) et garantir la condentialit (chiffrement). 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 ou 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, y compris OpenSSL (pour la gnration de certicats), OpenLDAP (comme rpertoire pour maintenir les certicats), gnupg et openswan (avec la prise en charge de la norme X.509). Cependant, le systme dexploitation ne fournit pas (depuis 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, reportez-vous au livre Open PKI (http://ospkibook. sourceforge.net).

Chapitre 8. Outils de scurit dans Debian

102

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 (cest--dire 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.

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. Cela 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 Internet, clamav-data fournit les chiers de donnes directement. 2 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 fournit 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, y compris 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 avec des passerelles grant 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/) (consultez les bogues n 150698 (ITP oav-scannerdaemon) (http://bugs.debian.org/150698) et n 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 (consultez les ITP).
2. Si 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 depuis le dpt des responsables :
deb http://people.debian.org/~zugschlus/clamav-data/ / deb-src http://people.debian.org/~zugschlus/clamav-data/ /

Chapitre 8. Outils de scurit dans Debian

103

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 Debian 3 . 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 le 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 numriques sont actuellement le seul moyen de vrier quun message 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 : evolution ; mutt ; kmail ; icedove (version sans marque de Mozilla Thunderbird) avec le greffon Enigmail (http://enigmail.mozdev.org/). Ce greffon est fourni par le paquet 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 du client de messagerie choisi en interagissant avec lagent de transport de courrier (MTA).

Les serveurs de clefs permettent de tlcharger des clefs publiques publies pour pouvoir vrier des signatures. Un tel serveur est http://wwwkeys.pgp.net. gnupg peut rcuprer automatiquement des clefs publics qui ne sont pas dj dans votre trousseau (keyring) public. Par exemple, pour congurer gnupg pour utiliser le serveur de clefs ci-dessus, modiez le chier ~/.gnupg/options en ajoutant la ligne suivante : 4
keyserver wwwkeys.pgp.net

La plupart des serveurs de clefs sont lis de tel sorte que, lorsquune clef publique est ajoute un serveur, laddition soit propage tous les autres serveurs de clefs publiques. Le paquet debian-keyring fournit aussi les clefs publiques des dveloppeurs Debian. Les trousseaux gnupg sont installs dans /usr/share/keyrings/. Pour de plus amples renseignements : FAQ de GnuPG (http://www.gnupg.org/documentation/faqs.fr.html) ; Manuel de GNU Privacy Guard (http://www.gnupg.org/gph/fr/manual.html) ; GnuPG Mini Howto (anglais) (http://www.dewinter.com/gnupg_howto/english/GPGMiniHowto.html) ; FAQ de comp.security.pgp (http://www.uk.pgp.net/pgpnet/pgp-faq/) ; Keysigning Party HOWTO (http://www.cryptnet.net/fdp/crypto/keysigning_party/en/keysigning_ party.html).

3. Un paquet nomm f-prot-installer est en fait un programme dinstallation qui tlchargera le logiciel F-prot (http://www.f-prot.com/ products/home_use/linux/) pour linstaller sur le systme. F-prot lui-mme nest pas libre, mais il est gratuit pour lutilisation personnelle. 4. Pour plus dexemples sur la faon de congurer gnupg, consultez /usr/share/doc/mutt/examples/gpg.rc.

Chapitre 8. Outils de scurit dans Debian

104

105

Chapitre 9

Meilleures pratiques de scurit pour les dveloppeurs


Ce chapitre introduit certaines des meilleures pratiques de code scuris pour les dveloppeurs crivant des paquets Debian. Si vous tes vraiment intress par le code scuris, vous devriez lire le HOWTO de programmation scurise pour Linux et UNIX (http://www.dwheeler.com/secure-programs/) de David Wheeler et Secure Coding : Principles and Practices (http://www.securecoding.org) de Mark G. Graff et Kenneth R. van Wyk (OReilly, 2003).

9.1

Meilleures pratiques de vrication et conception scurises

Les dveloppeurs qui empaquettent des logiciels devraient faire de leur mieux pour sassurer que linstallation du logiciel, ou son utilisation, nintroduit pas de risques en matire de scurit la fois au systme o il est install et ses utilisateurs. Pour ce faire, ils devraient faire de leur mieux pour examiner le code source du paquet et dtecter tous les dfauts qui pourraient introduire des bogues de scurit avant de publier le programme ou de distribuer une nouvelle version. Il est reconnu que le cot de correction de bogues augmente aux diffrentes tapes de son dveloppement, il est donc plus facile (et moins coteux) de corriger les bogues lors de la conception quune fois le logiciel dploy et en mode maintenance (plusieurs tudes disent que le cot dans cette dernire phase est soixante fois plus lev). Bien que plusieurs outils essayent de dtecter automatiquement ces dfauts, les dveloppeurs devraient faire leur possible pour se tenir au courant des diffrents types de dfauts de scurit an de les comprendre et tre capable de les remarquer dans le code quils (ou dautres) ont crit. Parmi les bogues de programmation qui conduisent des bogues de scurit, les plus typiques sont les dpassements de tampon (http://fr.wikipedia.org/wiki/Dpassement_de_tampon), les dpassements de chane de formatage, les dpassements de tas et les dpassements dentier (dans les programmes en C ou C++), les conditions de situation de comptition de liens symboliques (http://en.wikipedia.org/wiki/Symlink_race) temporaires (dans les scripts), les traverses de rpertoires (http://en.wikipedia.org/wiki/Directory_traversal) et les injections de commande (sur les serveurs) et scripts intersites (http://fr.wikipedia.org/wiki/Cross-site_scripting), et les bogues dinjection SQL (http://fr.wikipedia.org/wiki/Injection_SQL) (dans le cas des applications orientes web). Pour de plus amples renseignements sur les bogues de scurit, consultez la taxonomie des erreurs de scurit de logiciels (https://www.fortify.com/vulncat/en/vulncat/index.html) de Fortify. Certains de ces problmes pourraient ne pas tre faciles reprer moins dtre un expert dans le langage de programmation utilis par le logiciel, mais certains problmes sont faciles dtecter et corriger. Par exemple, trouver des conditions de situation de comptitions temporaires cause dune mauvaise utilisation de rpertoires temporaires peut se faire facilement en excutant grep -r "/tmp/" . . Ces appels peuvent tre examins et les noms de chiers crits en dur, utilisant des rpertoires temporaires, remplacs par des appels mktemp ou tempfile dans les scripts dinterprteur, File::Temp(3perl) dans les scripts Perl ou tmpfile(3) en C ou C++. Certains outils permettent daider lexamen de scurit du code, comme rats, flawfinder et pscan. Pour de plus amples renseignements, consultez la liste doutils utiliss par lquipe daudit de scurit Debian (http://www.debian. org/security/audit/tools). Lors de lempaquetage, les dveloppeurs de logiciel doivent sassurer de suivre les principes de scurit habituels, y compris : le logiciel sexcute avec le minimum de droits ncessaires :

Chapitre 9. Meilleures pratiques de scurit pour les dveloppeurs

106

le paquet installe des binaires setuid or setgid. Lintian avertira des binaires setuid (http://lintian.debian. org/reports/Tsetuid-binary.html), setgid (http://lintian.debian.org/reports/Tsetgid-binary. html) ou setuid et setgid (http://lintian.debian.org/reports/Tsetuid-gid-binary.html) ; les dmons fournis par le paquet sexcutent avec un utilisateur aux droits restreints (consultez Cration dutilisateurs et de groupes pour les dmons logiciels de la prsente page) ; les tches programmes (cest--dire cron) sexcutant sur le systme ne le sont pas en tant que superutilisateur, et si elle le sont, elles nimplmentent pas de tches complexes. Si vous devez faire lun des deux, assurez-vous que les programmes qui pourraient sexcuter avec des privilges plus levs ont t contrls pour les bogues de scurit. En cas de doute, ou pour obtenir de laide, contactez lquipe daudit de scurit Debian (http://www.debian.org/security/audit/). Pour les binaires setuid ou setgid, suivez la section de la charte Debian sur les droits et propritaires (http://www.debian.org/doc/debian-policy/ch-files.html# s-permissions-owners). Pour de plus amples renseignements, spciques la programmation scurise, assurez vous de lire (ou dindiquer en amont) le HOWTO de programmation scurise pour Linux et UNIX (http://www.dwheeler.com/ secure-programs/) et le portail Build Security In (https://buildsecurityin.us-cert.gov/portal/).

9.2

Cration dutilisateurs et de groupes pour les dmons logiciels

Si le logiciel excute un dmon qui na pas besoin des droits du superutilisateur, vous devez lui crer un utilisateur. Deux types dutilisateurs Debian peuvent tre utiliss par les paquets : avec identiant (UID) statique (attribu par base-passwd ; consultez Les utilisateurs et les groupes du systme dexploitation page 126 pour une liste des utilisateurs statiques dans Debian) et avec identiant dynamique dans lintervalle dvolu aux utilisateurs systme. Dans le premier cas, il faut demander un identiant de groupe ou dutilisateur base-passwd. Une fois lutilisateur disponible, le paquet doit tre distribu avec une dpendance sur la version adquate du paquet base-passwd. Dans le second cas, il faut crer un utilisateur systme en preinst ou en postinst et rendre le paquet dpendant de adduser (>= 3.11). Lexemple de code suivant cre les utilisateur et groupe utiliss par le dmon pour sexcuter quand le paquet est install ou mis niveau :
[...] case "$1" in install|upgrade) # Si le paquet a un fichier default permettant # ladministrateur local dcraser les valeurs par dfaut [ -f "/etc/default/nompaquet" ] && . /etc/default/nompaquet # Valeurs par dfaut correctes : [ [ [ [ -z -z -z -z "$SERVER_HOME" ] && SERVER_HOME=rp_serveur "$SERVER_USER" ] && SERVER_USER=utilisateur_serveur "$SERVER_NAME" ] && SERVER_NAME="Description du serveur " "$SERVER_GROUP" ] && SERVER_GROUP=groupe_serveur

# Groupes auxquels lutilisateur sera ajout ; aucun si non dfini. ADDGROUP="" # crer un utilisateur pour viter dexcuter le serveur en tant # que superutilisateur # 1. Crer le groupe sil nexiste pas if ! getent group | grep -q "^$SERVER_GROUP:" ; then echo -n "Ajout du groupe $SERVER_GROUP.." addgroup --quiet --system $SERVER_GROUP 2>/dev/null ||true echo "fait" fi # 2. Crer un rpertoire personnel sil nexiste pas test -d $SERVER_HOME || mkdir $SERVER_HOME # 3. Crer un utilisateur sil nexiste pas if ! getent passwd | grep -q "^$SERVER_USER:"; then echo -n "Ajout de lutilisateur systme $SERVER_USER.." adduser --quiet \ --system \ --ingroup $SERVER_GROUP \ --no-create-home \ --disabled-password \ $SERVER_USER 2>/dev/null || true echo "fait" fi # 4. Ajuster lentre de mot de passe usermod -c "$SERVER_NAME" \ -d $SERVER_HOME \

Chapitre 9. Meilleures pratiques de scurit pour les dveloppeurs


-g $SERVER_GROUP \ $SERVER_USER # 5. Ajuster les droits des fichiers et rpertoires if ! dpkg-statoverride --list $SERVER_HOME >/dev/null then chown -R $SERVER_USER:adm $SERVER_HOME chmod u=rwx,g=rxs,o= $SERVER_HOME fi # 6. Ajouter lutilisateur au groupe ADDGROUP if test -n $ADDGROUP then if ! groups $SERVER_USER | cut -d: -f2 | \ grep -qw $ADDGROUP; then adduser $SERVER_USER $ADDGROUP fi fi ;; configure) [...]

107

Assurez-vous que le chier de script init.d : dmarre le dmon en abandonnant les droits du superutilisateur : si le logiciel ne fait pas lappel setuid(2) ou seteuid(2) lui-mme, loption --chuid de start-stop-daemon est utilisable. narrte le dmon que si lidentiant utilisateur correspond, loption --user de start-stop-daemon permet de faire cela. ne sexcute pas si lutilisateur ou le groupe nexistent pas :
if ! getent passwd | grep -q "^utilisateur_serveur :"; then echo "Lutilisateur du serveur nexiste pas. Abandon" >&2 exit 1 fi if ! getent group | grep -q "^groupe_serveur :" ; then echo "Le groupe du serveur nexiste pas. Abandon" >&2 exit 1 fi

Si le paquet cre lutilisateur systme, il peut le retirer lors de la purge en postrm. Cela a cependant quelques inconvnients. Par exemple les chiers crs par cet utilisateur seront orphelins et pourraient tre repris par un nouvel utilisateur systme plus tard si le mme identiant utilisateur lui est attribu 1 . Par consquent, retirer les utilisateurs systme lors de la purge nest pas encore obligatoire et dpend des besoins du paquet. En cas de doute, cette action pourrait tre faite en demandant ladministrateur sa prfrence lors du retrait du paquet (cest--dire avec debconf). Le code exemple suivant 2 retire lutilisateur et les groupes crs auparavant seulement, et seulement si, lidentiant utilisateur est dans lintervalle des identiants utilisateur dynamiques attribus pour le systme et que lidentiant de groupe appartient un groupe systme :
case "$1" in purge) [...] # trouver les premier et dernier numros de SYSTEM_UID for LINE in grep SYSTEM_UID /etc/adduser.conf | grep -v "^#"; do case $LINE in FIRST_SYSTEM_UID*) FIST_SYSTEM_UID=echo $LINE | cut -f2 -d = ;; LAST_SYSTEM_UID*) LAST_SYSTEM_UID=echo $LINE | cut -f2 -d = ;; *) ;; esac done # supprimer le compte systme si ncessaire CREATEDUSER="utilisateur_serveur " if [ -n "$FIST_SYSTEM_UID" ] && [ -n "$LAST_SYSTEM_UID" ]; then if USERID=getent passwd $CREATEDUSER | cut -f 3 -d :; then if [ -n "$USERID" ]; then if [ "$FIST_SYSTEM_UID" -le "$USERID" ] && \ [ "$USERID" -le "$LAST_SYSTEM_UID" ]; then echo -n "Suppression de lutilisateur systme $CREATEDUSER" deluser --quiet $CREATEDUSER || true echo "fait" fi fi fi fi # supprimer le groupe systme si ncessaire CREATEDGROUP=groupe_serveur

1. Plusieurs discussions propos de ces inconvnients ont dj eu lieu comme http://lists.debian.org/debian-mentors/2004/10/ msg00338.html et http://lists.debian.org/debian-devel/2004/05/msg01156.html. 2. Cela pourrait ventuellement tre introduit en tant que dh_adduser dans debhelper. Consultez les bogues n 81967 (http://bugs.debian.org/ 81697), n 291177 (http://bugs.debian.org/291177) et n 118787 (http://bugs.debian.org/118787).

Chapitre 9. Meilleures pratiques de scurit pour les dveloppeurs


FIRST_USER_GID=grep ^USERS_GID /etc/adduser.conf | cut -f2 -d = if [ -n "$FIST_USER_GID" ] then if GROUPGID=getent group $CREATEDGROUP | cut -f 3 -d :; then if [ -n "$GROUPGID" ]; then if [ "$FIST_USER_GID" -gt "$GROUPGID" ]; then echo -n "Suppression du groupe $CREATEDGROUP" delgroup --only-if-empty $CREATEDGROUP || true echo "fait" fi fi fi fi [...]

108

Lexcution de programmes avec un utilisateur ayant des droits restreints assure quaucun problme de scurit ne pourra endommager tout le systme. Cela suit aussi le principe du minimum de droits. Songez aussi limiter les droits dans les programmes avec dautres mcanismes que lexcution en tant que non superutilisateur 3 . Pour de plus amples renseignements, consultez le chapitre Minimiser les droits (http://www.dwheeler.com/secure-programs/ Secure-Programs-HOWTO/minimize-privileges.html) du livre HOWTO de programmation scurise pour Linux et UNIX.

3. Vous pouvez mme fournir une politique SELinux pour cela.

109

Chapitre 10

Avant la compromission
10.1 Maintenez le 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 correctifs ds quils 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 (cest--dire installer des services supplmentaires dans leur compte local).

10.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 le systme. Cest particulirement vrai sur un systme expos (cest--dire connect Internet) et qui fournit un service. Dans ce cas, les administrateurs systme devraient surveiller attentivement les sources dinformations connues pour tre les premiers informs lorsquune faille pouvant affecter un service critique est dtecte. Cela signie habituellement au moins sabonner la liste de diffusion des annonces, au site web du projet ou au 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 la version testing maintient un gestionnaire de la scurit (http://security-tracker.debian.net/) qui contient toutes les vulnrabilits connues avant mme dtre corriges dans les paquets Debian. Linformation est obtenue depuis plusieurs sources publiques et contient les failles connues disponibles laide des bases de donnes de vulnrabilit ou du systme de suivi des bogues de Debian (http://www.debian.org/Bugs/). Les administrateurs peuvent chercher les problmes de scurit connus 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 fournit des interfaces avec moteur de recherche (par nom CVE (http://cve.mitre.org) et nom de paquet) et dautres outils (comme debsecan, consultez Vrication automatique des problmes de scurit avec debsecan page 111) utilisent ces bases de donnes pour fournir des informations sur les vulnrabilits qui nont pas encore t rsolues pour un systme donn. Les administrateurs consciencieux peuvent utiliser ces renseignements pour dterminer les failles de scurit pouvant 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 suivies par lquipe de scurit de Debian devraient tre traites par une annonce de scurit Debian (DSA) et seront disponibles pour tous les utilisateurs (consultez Mettre jour le systme en permanence page suivante). Une fois que les problmes de scurit sont rsolus et annoncs, ils ne seront plus afchs par le systme de

Chapitre 10. Avant la compromission

110

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. Remarquez cependant que les renseignements suivis par lquipe de suivi en scurit de testing ne concernent que les failles connues (cest--dire dj rendues publiques). Parfois, lquipe de scurit Debian peut grer et prparer des DSA pour des paquets en fonction de renseignements non publics quils ont obtenus sur des listes de diffusions restreintes, par le dcouvreur de la faille ou par les dveloppeurs du logiciel. Ainsi, ne vous tonnez pas de dcouvrir des problmes de scurit dans une annonce qui ne sont jamais apparus dans le systme de suivi des vulnrabilits.

10.1.2

Mettre jour le systme en permanence

Vous devriez effectuer des mises jour de scurit rgulirement. La plupart des stratagmes sont bass sur des failles connues qui nont pas t corriges temps, comme lexplique ce papier de 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 31. Vrication par soi-mme la disponibilit de mises jour de scurit 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 le systme comme dcrit en Faire une mise jour de scurit page 31, il suft de 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... ]

Redmarrez ensuite les services dont les bibliothques ont t mises jour si cest le cas. Remarque : consultez Faire une mise jour de scurit page 31 pour de plus amples renseignements sur les mises jour de bibliothques (et de noyau). La premire ligne tlchargera la liste des paquets disponibles depuis les 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 signaler les paquets tlcharger ou installer. partir de ce rsultat, vous pouvez en dduire les paquets corrigs dans Debian et disponibles en 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 constater 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 ces paquets sont ncessaires, vous devriez aller en http://security.debian.org et vrier les alertes de scurit Debian (DSA) 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 le systme doit tre redmarr aprs une mise jour du noyau. Vrication de mises jour sur 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 le systme et les installer. Cest 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. Par consquent, si le systme est congur correctement pour recevoir les mises jour de scurit

Chapitre 10. Avant la compromission

111

comme dcrit en Faire une mise jour de scurit page 31 et quune tche cron 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 > Mises jour, ou en excutant /usr/bin/software-properties. Si le systme tlcharge quotidiennement la liste des paquets, mais ne tlcharge pas les paquets eux-mmes, le 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 (consultez Vrication automatique des mises jour avec cron-apt de la prsente page). Vous pouvez aussi simplement vrier vous-mme les mises jour en utilisant cette application. Les utilisateurs de lenvironnement KDE prfreront probablement installer adept et adept-notifier. Ils fournissent des fonctionnalits similaires, mais ne sont pas installs par dfaut.

Vrication automatique des mises jour avec cron-apt Une autre mthode pour des mises jour de scurit automatiques 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 tlcharger les nouveaux paquets. Il peut galement tre congur pour envoyer un courrier ladministrateur systme. Remarquez que vous pourriez vrier la version de distribution comme dcrit en Vrication par version de distribution page 91 pour mettre jour automatiquement le systme (mme si vous ne tlchargez que les paquets). Sinon, vous ne pouvez pas tre certain que les paquets tlchargs proviennent rellement dune source de conance. Pour de plus amples renseignements, consultez debian-administration.org/articles/162). le site dadministration de Debian (http://www.

Vrication automatique des problmes de scurit avec debsecan Le programme debsecan value ltat de la scurit par rapport aux mises jour de scurit non effectues et aux vulnrabilits sans correctif alors que cron-apt ne fournit quun rapport sur les mises jour non effectues. debsecan obtient les renseignements 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, comme dcrit en Surveillance des failles de scurit page 109, il aide plus efcacement les administrateurs suivre les failles de scurit. En installant le paquet debsecan, et si ladministrateur laccepte, une tche cron excutera priodiquement debsecan et notiera lutilisateur choisi lorsquun paquet vulnrable est dtect. Lemplacement de la base de donnes des vulnrabilits est aussi paramtrable lors de linstallation et peut ensuite tre modi dans le chier /etc/default/debsecan. Cest pratique pour les systmes sans accs direct Internet qui doivent tlcharger les nouvelles informations depuis un miroir local pour avoir un seul chemin de mise jour de la base de donnes des vulnrabilits. Remarquez toutefois que lquipe de scurit suit beaucoup de failles, y compris des problmes peu dangereux qui pourraient 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 indiquera toutes les failles, ce qui peut en faire un outil plus verbeux que les autres outils dcrits prcdemment. Pour plus dinformations, veuillez consulter le site de lauteur (http://www.enyo.de/fw/software/debsecan/).

Chapitre 10. Avant la compromission Autres mthodes de mises jour de scurit

112

Le paquet apticron, comme apt-cron, vriera les mises jour et enverra des messages ladministrateur. Pour plus dinformations, veuillez consulter le site dadministration de Debian (http://www.debian-administration.org/ articles/491). Vous pourriez galement jeter un il secpack (http://clemens.endorphin.org/secpack/), un programme non ofciel pour effectuer des mises jour de scurit depuis security.debian.org crit par Fruhwirth Clemens, qui vrie les signatures ou encore le module dextension Nagios check_debian_updates.sh (http://www.unixdaemon.net/nagios_ plugins.html#check_debian_packages) crit par Dean Wilson.

10.1.3

vitez la branche unstable

moins de vouloir passer du temps corriger les paquets vous-mme quand une faille survient, vous ne devriez pas utiliser la branche unstable de Debian pour des systmes en production. La raison principale est labsence de mises jour de scurit pour unstable (consultez Comment est assure la scurit pour les versions testing et unstable ? page 134). Certains problmes de scurit peuvent en fait apparatre dans unstable et pas dans la distribution stable. Cela est d aux nouvelles fonctionnalits ajoutes constamment aux applications fournies, ainsi quaux nouvelles applications qui peuvent ne pas encore avoir t testes en profondeur. Pour effectuer des mises jour de scurit dans la branche unstable, vous risquez de devoir 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 aux problmes importants. Remarquez que vous pouvez utiliser le systme de suivi de scurit (dcrit en Surveillance des failles de scurit page 109) pour suivre les failles de scurit affectant cette branche.

10.1.4

Suivi en scurit de la branche testing

Si vous utilisez la branche testing, plusieurs problmes sont 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 soccupe de 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 pourrait ajouter 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 modications 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 ncessaire pour y entrer. Ce comportement peut changer selon ltat de publication de la distribution. Quand une nouvelle version est imminente, lquipe de scurit ou les responsables de paquet peuvent fournir des mises jour directement dans testing. De plus, lquipe en charge de la scurit de Debian testing (http://secure-testing-master.debian.net) peut publier des annonces de scurit de testing ( Debian Testing Security Advisories ou DTSA) pour les paquets de la branche testing si un problme de scurit doit tre immdiatement corrig dans cette branche sans attendre la procdure normale (ou que la procdure normale est bloque par dautres paquets). Les utilisateurs voulant tirer partie de ce suivi devraient ajouter les lignes suivante /etc/apt/sources.list (au lieu des lignes indiqu en Faire une mise jour de scurit page 31) :
deb http://security.debian.org testing/updates main contrib non-free # Cette ligne permet de tlcharger aussi les paquets source deb-src http://security.debian.org testing/updates main contrib non-free

Pour de plus amples renseignements sur ce suivi, veuillez lire lannonce (http://lists.debian.org/ debian-devel-announce/2006/05/msg00006.html). Ce suivi a ofciellement commenc en septembre 2005 (http://lists.debian.org/debian-devel-announce/2005/09/msg00006.html) dans un dpt spar avant dtre intgr larchive de scurit principale.

Chapitre 10. Avant la compromission

113

10.1.5

Mises jour automatiques dans un systme Debian GNU/Linux

Tout dabord, les mises jour automatiques ne sont pas vraiment recommandes car les administrateurs devraient vrier les DSA et comprendre limpact de toute mise jour de scurit donne. Si vous voulez mettre jour le systme automatiquement, vous devriez suivre les conseils suivants. Congurer apt pour interdire la mise jour des paquets garder dans 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 (consultez 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 Vrication automatique des mises jour avec cron-apt page 111 et lactiver pour installer les paquets rcuprs, soit ajouter une entre cron vous-mme pour excuter la mise jour quotidiennement, par exemple :
apt-get update && apt-get -y upgrade

Loption -y forcera apt rpondre automatiquement oui aux questions lors de la mise jour. Dans certains cas, vous pourriez prfrer loption --trivial-only --assume-yes (qui est quivalent de -y). 1 Congurer cron pour que debconf ne pose pas de question pendant les mises jour, qui pourront ainsi tre faites de faon non interactive. 2 Vrier les rsultats de lexcution de cron envoyes au superutilisateur (sauf si la variable denvironnement MAILTO est modie dans le script). Une alternative plus sre peut tre dutiliser loption -d (ou --download-only) pour tlcharger les paquets ncessaires sans les installer. Puis, si lexcution de cron indique que le systme doit tre mis jour, cela peut tre fait par ladministrateur. Pour accomplir ces tches, le systme doit tre congur correctement pour tlcharger les mises jour de scurit comme dcrit en Faire une mise jour de scurit page 31. Cependant, cela nest pas recommand pour unstable sans analyse attentive, car vous pourriez placer le systme dans un tat inutilisable si un bogue srieux sintroduit dans un paquet important et est install sur le systme. testing est un peu plus sre de ce ct car les bogues srieux ont une meilleure chance dtre dtects avant que le paquet nentre dans la branche testing (cependant, vous pourriez navoir aucune mise jour de scurit disponible). Si vous utilisez 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 et avec loption --target-release dapt-get pour ne mettre jour que les paquets que de la nouvelle distribution. 3

10.2

Tests dintgrit priodiques

En vous basant sur les informations de base gnres aprs linstallation (cest--dire linstantan dcrit dans Prendre un instantan ( snapshot ) du systme page 60), vous pourriez 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 (cest--dire des faux ngatifs) produit, par exemple, par 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 55) sil nest pas possible de dconnecter le systme. Cependant, des prcautions devraient tre prises pour utiliser une base de donnes dintgrit en lecture seule
1. Vous pourriez aussi utiliser loption --quiet (-q) pour rduire la sortie dapt-get, ce qui vitera la gnration de message si aucun paquet nest install. 2. Remarquez que certains paquets pourraient ne pas utiliser debconf et les mises jour seront bloques car les paquets attendront une rponse de ladministrateur pendant la conguration. 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 CD autonome (Live CD), comme Knoppix Std (http://www.knoppix-std.org/) contenant la fois les outils dintgrit de chier et la base de donne du systme.

Chapitre 10. Avant la compromission

114

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.

10.3

Mise en place de dtection dintrusion

Debian contient certains outils pour la dtection dintrusion qui permettent de dfendre le systme local ou dautres systmes du mme rseau. Ce type de dfense est important si le systme est trs critique ou si vous tes vraiment paranoaque. Les approches de dtection dintrusion les plus communes sont la dtection statistique danomalies 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 dalerte et raction. Un systme de dtection dintrusion est inutile si personne nest prvenu. Quand une attaque particulire est dtecte, la plupart des outils de dtection dintrusion vont soit journaliser lvnement avec syslogd, soit envoyer des courriers au superutilisateur (le destinataire du courrier est habituellement congurable). Un administrateur doit congurer convenablement les outils pour viter les fausses alertes. Les alertes peuvent galement indiquer une attaque en cours et ne seraient pas trs utiles un jour plus tard, puisque lattaque pourrait dj 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 dinformations intressante est la liste de vrication de dtections dintrusion du CERT (http://www.cert. org/tech_tips/intruder_detection_checklist.html).

10.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 journaliseur qui dtecte les attaques selon un dictionnaire de signatures dattaque. Il dtecte diverses attaques et sondes, comme des dbordements de capacit, des scans dissimuls de ports, des attaques CGI, des sondes SMB, etc. snort dispose galement dune capacit dalerte en temps rel. Vous pouvez utiliser snort pour un certain nombre dhtes du rseau ainsi que pour lhte local. Cet outil 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, regardez 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 utiliss sur le systme. Vous pourriez rechercher des vrications supplmentaires spciques ces services. Dautres outils plus simples peuvent tre utiliss pour dtecter les attaques rseaux. portsentry est un paquet intressant pour informer lorsquun scan du rseau est effectu sur site. Dautres outils comme ippl ou iplogger permettent de 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 essayer chacun de ces outils avec le paquet Debian idswakeup, un gnrateur de fausses alertes et qui inclut un grand nombre de signature dattaques communes.

10.3.2

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.

Chapitre 10. Avant la compromission

115

tiger est un ancien outil de dtection dintrusion qui a t port sous Debian depuis la distribution Woody. tiger fournit un ensemble de vrications de problmes communs lis aux failles de scurit, il vrie la robustesse des mots de passe, les problmes de systme de chiers, les processus de communications et dautres faons de compromettre le compte du superutilisateur. Ce paquet contient de nouvelles vrications de scurit spciques Debian, y compris les vrications de sommes de contrle MD5 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 quotidiennement, en gnrant un compte-rendu 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. Consultez Utiliser et personnaliser logcheck page 49. De plus, des paquets scrutant lintgrit du systme de chiers (consultez Vrier lintgrit des systmes de chiers page 55) peuvent tre utiles dans la dtection danomalies dans un environnement scuris. Une intrusion effective modiera probablement certains chiers du systme de chiers local 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.

10.4
10.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 priphriques additionnels comme une carte rseau ou une carte son sans avoir recompiler le noyau entirement. Cependant certains pirates peuvent utiliser les LKM 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 source 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 donner des informations exactes propos des processus actuels du systme.

10.4.2

Dtection des rootkits

Il existe deux approches pour dfendre le systme contre les rootkits LKM, une dfense proactive et une dfense ractive. La dtection peut tre simple et sans douleur ou difcile et fatigante 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 pour 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, certains altrent mme directement /dev /kmem (la mmoire du noyau) pour se rendre indtectables. Debian GNU/Linux fournit quelques paquets utiliser pour mettre en place une dfense proactive : lcap 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 le superutilisateur). 6 De vieilles informations sur ces fonctionnalits sont 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 besoin de toutes ces fonctionnalits de noyau sur un systme GNU/Linux, vous pourriez dsactiver la prise en charge des modules chargeables lors de la conguration du noyau. Pour dsactiver la prise en charge des modules chargeables, positionnez simplement CONFIG_MODULES=n lors de ltape de conguration de construction du noyau ou dans le chier .config. Cela prvient des rootkits LKM mais vous ne pourrez plus utiliser les modules avec le noyau GNU/Linux. La dsactivation des modules peut surcharger le noyau, rendant la gestion du chargement ncessaire.
5. 28 fonctionnalits existent, y compris : CAP_BSET, CAP_CHOWN, CAP_FOWNER, CAP_FSETID, CAP_FS_MASK, CAP_FULL_SET, CAP_INIT_EFF_SET, CAP_INIT_INH_SET, CAP_IPC_LOCK, CAP_IPC_OWNER, CAP_KILL, CAP_LEASE, CAP_LINUX_IMMUTABLE, CAP_MKNOD, CAP_NET_ADMIN, CAP_NET_BIND_SERVICE, CAP_NET_RAW, CAP_SETGID, CAP_SETPCAP, CAP_SETUID, CAP_SYS_ADMIN, CAP_SYS_BOOT, CAP_SYS_CHROOT, CAP_SYS_MODULE, CAP_SYS_NICE, CAP_SYS_PACCT, CAP_SYS_PTRACE, CAP_SYS_RAWIO, CAP_SYS_RESOURCE, CAP_SYS_TIME et CAP_SYS_TTY_CONFIG. Elles peuvent tre toutes dsactives pour renforcer le noyau. 6. Vous navez pas besoin dinstaller lcap pour faire cela, mais cest plus facile que de congurer /proc/sys/kernel/cap-bound soi-mme.

Chapitre 10. Avant la compromission Dfense ractive

116

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.

10.5

Ides gniales ou 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). Conformment larticle PAM du phrack 56, ce qui est bien avec PAM, cest qu il nest limit que par votre imagination . Cest vrai. Imaginez une connexion de superutilisateur 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, procurez-vous 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 rgles de pare-feu adquate, faites-en une image ISO amorable et gravez-la sur un CD. 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 sur le rseau. Il est impossible pour des intrus dobtenir un accs en lecture et criture sur ce systme et toute modication ralise par un intrus sera dsactive avec un redmarrage du systme. Dsactiver la prise en charge des modules. Comme dcrit auparavant, une fois dsactive lutilisation des modules du 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 du noyau modis. Journalisation par cble srie (contribution de Gaby Schilders). Tant que les serveurs ont des ports srie, imaginez une machine ddie la journalisation pour un certain nombre de serveurs. Le systme de journalisation serait dconnect du rseau, et connect aux serveurs par 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 CD ou DVD et transfrez-y les chiers journaux quand le chier journal atteint la capacit du support. Maintenant il ne manque plus quun graveur avec chargeur de CD automatique. . . Pas autant copie en dur que la journalisation directe vers limprimante, mais cette mthode peut grer de larges volumes et les CD prennent moins despace de stockage. Modiez les attributs de tous les chiers avec chattr (tir du Tips-HOWTO crit par Jim Dennis). Tout de suite aprs avoir install et congur initialement le 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 marquer larchive comme immuable. Cette stratgie permettra de limiter les dgts possibles une fois connect en superutilisateur. Cela empchera dcraser des chiers avec un oprateur de redirection mal plac, de rendre le systme inutilisable avec une espace mal place dans une commande rm -rf (il est toujours possible de faire pas mal de dgts aux donnes, mais les bibliothques et binaires seront mieux protgs). Cela limite aussi la ralisation dun grand nombre dexploitations de faille de scurit et de dnis de service (car beaucoup dentre eux dpendent de lcrasement dun chier par les actions dun programme SETUID qui ne fournit aucune invite de commandes). 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. Remarquez que cette stratgie empche aussi de mettre jour les paquets du systme car les chiers existants ne peuvent tre remplacs, vous pourriez donc avoir un mcanisme pour dsactiver lattribut immuable sur tous les binaires juste avant de faire un apt-get update. Couper 2 ou 4 ls du cble rseau 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

Chapitre 10. Avant la compromission ou systme de stockage de carte de crdit.

117

10.5.1

Construction dun pot de miel

Un pot de miel est un systme conu pour apprendre aux administrateurs systme les techniques de sondage et dexploitation des attaquants. 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 parefeu 7 qui contrle le pot de miel et un certain type de dtecteur dintrusion rseau, placez-le sur Internet et attendez. Prenez soin de vous assurer dtre averti temps (consultez Limportance des journaux et des alertes page 49) si le systme est victime dune exploitation pour que vous puissiez prendre des mesures appropries et mettre un terme la compromission aprs en avoir assez vu. Voici quelques paquets et problmes considrer lors de la conguration de pot de miel : la technologie pare-feu dont vous aurez besoin (fournie par les noyaux Linux) ; syslog-ng pour envoyer les journaux du pot de miel vers un serveur de journalisation systme distant ; snort pour congurer la capture de tout le trac rseau arrivant sur le pot de miel et dtecter les attaques ; osh, un interprteur de commande restreint scurit amliore et SETUID root avec journalisation (consultez larticle de Lance Spitzner rfrenc ci-dessous) ; tous les dmons utiliser pour le serveur factice pot de miel. Selon le type dattaque 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 (consultez Vrier lintgrit des systmes de chiers page 55) et la bote outils du lgiste (The Coroners Toolkit (tct)) pour faire des audits aprs lattaque ; 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 le noyau soit avec kernel-patch-xen, soit avec kernel-patch-uml, ou encore installer lun des noyaux prcompils disponibles depuis Debian Lenny. Vous pouvez en lire plus sur la construction des pots de miel dans lexcellent article Construire un pot de miel (http://www.net-security.org/text/articles/spitzner/honeypot.shtml) de Lance Spizner (dans la srie des connaissez votre ennemi ). De mme, le projet Honeynet (http://project.honeynet.org/) fournit des informations utiles sur la faon de congurer un pot de miel et de contrler les rsultats dune attaque.

7. Vous utiliserez gnralement un pare-feu pont pour que le pare-feu lui-mme ne soit pas dtectable, consultez Conguration dun pare-feu pont page 145.

Chapitre 10. Avant la compromission

118

119

Chapitre 11

Aprs la compromission (la rponse lincident)


11.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, la 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 par une porte drobe (backdoor), pourraient tre capables de dtecter cet vnement et dy ragir. Voir un rm -rf / sexcuter au moment de dbrancher 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. Cela 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) 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 linvite de commande fournie par les disquettes dinstallation (Alt+F2 pour latteindre) pour analyser 1 le systme. La mthode 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 pour construire un tel CD 2 . Vous pourriez galement trouver le CD Caine (http://www.caine-live. net/) (Computer Aided Investigative Environment) utile ici, car il sagit dun CD autonome activement dvelopp 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 en utilisant sa propre slection de paquets Debian et mkinitrd-cd (vous devrez donc lire la documentation fournie avec celui-ci pour faire vos propres CD). 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 la marche suivre aprs une intrusion, reportez-vous aux documents Incident Handling white papers de SANS (http://www.sans.org/reading_room/whitepapers/ incident/) ou Steps for Recovering from a UNIX or NT System Compromise du CERT (http://www.cert.org/tech_ tips/win-UNIX-system_compromise.html). Certaines questions gnrales sur la faon de grer un systme Debian GNU/Linux compromis sont galement disponibles dans Le systme est vulnrable ! (En tes-vous certain ?) page 131.
1. 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. 2. En fait, cest loutil utilis pour construire les CD pour le projet Gibraltar (http://www.gibraltar.at/) (un pare-feu sur un CD autonome bas sur la distribution Debian).

Chapitre 11. Aprs la compromission (la rponse lincident)

120

11.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 support sr. Les CD Debian GNU/Linux peuvent tre utiles pour 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 ailleurs si possible (ventuellement sur un serveur de chiers par NFS ou FTP). Par la suite, vous pourrez analyser les informations pendant que le systme compromis est hors-ligne ou rinstall. Si vous tes certain que la seule compromission est un cheval de Troie dans lun des modules du noyau, vous pouvez tenter dexcuter le noyau partir du CD 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.

11.3

Contacter le 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 le CERT local en cas dincident de scurit qui a conduit une compromission systme. Les personnes du CERT local peuvent vous aider le rcuprer. Fournir au 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, les nouveaux outils dattaque utiliss. Ces renseignements sont utiliss 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 consulter les rgles de compte-rendu 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, comme 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).

11.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 pour effectuer 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 fournie pour plus dinformations. Ces utilitaires, ainsi que quelques autres, sont disponibles dans Sleuthkit et Autopsy (http://www.sleuthkit.org/) de Brian Carrier. Ils permettent lanalyse post mortem dune image des disques par une interface Web. Dans Debian, vous trouverez les paquets sleuthkit (les outils) et autopsy (linterface graphique). 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). Le bulletin de Brian Carrier, The Sleuth Kit Informer (http://www.sleuthkit.org/informer/index.php), est galement une trs bonne
3. 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), SWITCH-CERT (http://www.switch.ch/ cert/) (Suisse), TWCERT/CC (http://www.cert.org.tw) (Tawan) et CERT/CC (http://www.cert.org) (tats-Unis).

Chapitre 11. Aprs la compromission (la rponse lincident)

121

source dastuces pour les analyses post mortem. Finalement, le Honeynet Challenges (http://www.honeynet.org/ misc/chall.html) est une excellente faon de peauner vos comptences en analyse post mortem puisquils contiennent des attaques relles contre des pots de miel et procurent des ds qui vont de lanalyse post mortem de disques durs lanalyse des journaux des pare-feu et la capture de paquets. Pour obtenir des renseignements sur les paquets danalyse post mortem dans Debian, consultez Debian Forensics (http://forensics.alioth.debian.org/). 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 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/)).

11.4.1

Analyse des programmes malveillants (malware)

Dautres outils permettant 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. ldd (dans libc6), strings et objdump (tous deux dans binutils) font aussi partie des outils frquemment utiliss. Pour faire lautopsie de binaires suspects ou contenant des portes drobes rcuprs dun systme compromis, vous devriez utiliser un environnement scuris (par exemple, dans une image bochs, xen ou un environnement chroot en utilisant un compte ayant peu de droits 4 ). Le systme pourrait tre victime de la porte drobe et compromis son tour si vous ne prenez pas garde ! 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.

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 11. Aprs la compromission (la rponse lincident)

122

123

Chapitre 12

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.

12.1
12.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, consultez les statistiques de US-CERT (http://www.cert.org/stats/cert_stats.html) ou gnrez des statistiques en utilisant la base de donnes nationale de vulnrabilits (http://nvd.nist.gov/statistics.cfm) (anciennement ICAT). Est-ce que ces donnes sont utiles ? Plusieurs facteurs sont considrer pour linterprtation des donnes, mais remarquez quelles ne permettent pas de comparer les failles dun systme dexploitation par rapport un autre. 1 Rappelez-vous galement que certaines failles signales concernant Debian ne sappliquent qu la branche unstable (cest--dire non publie).

Debian est-elle mieux scurise que dautres distributions Linux (comme Red Hat, SuSE, etc.) ? Peu de grandes diffrences existent 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, Xorg, gcc, zlib, etc. sont tous communs entre les distributions Linux. Par exemple, Red Hat a jou de malchance et a livr une version stable quand truc tait en version 1.2.3, o une faille scurit a t dcouverte plus tard. Debian, dun autre ct, a t plus chanceuse de livrer truc 1.2.4, qui contient 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. Beaucoup de collaboration existe entre les quipes de scurit respectives des distributions Linux majeures. Les mises jour de scurit connues sont rarement, voire jamais, laisses non corriges par un distributeur. La connaissance dune faille de scurit nest jamais cache un autre distributeur, tout comme les corrections sont habituellement coordonnes en amont ou par le CERT (http://www.cert.org). Par consquent, les mises jour de scurit ncessaires sont habituellement diffuss en mme temps et 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 quelques autres aspects de la scurit dans Debian considrer. Debian fournit plus doutils de scurit que les autres distributions, consultez Outils de scurit dans Debian page 99.
1. Par exemple, partir de certaines donnes, Windows NT semblerait plus sr que Linux, ce qui est une assertion discutable. Aprs tout, les distributions Linux fournissent habituellement beaucoup plus dapplications par rapport Windows NT de Microsoft. Ces problmes de failles comptabilises sont mieux dcrits dans Pourquoi des logiciels libres ? Regardez les chiffres ! (http://www.dwheeler.com/oss_fs_why.html#security) de David A. Wheeler.

Chapitre 12. Foire Aux Questions (FAQ)

124

Linstallation standard de Debian est plus petite (moins de fonctionnalits) 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 de Lion (http://www.sophos.com/virusinfo/analyses/linuxlion.html) et Ramen (http://www.sophos.com/virusinfo/analyses/linuxramen.html)). 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.

12.1.2

De nombreux bogues Debian sont dans Bugtraq, cela la rend-elle plus vulnrable ?

Debian distribue un grand nombre, en augmentation constante, de paquets logiciels, probablement plus que la plupart des systmes dexploitation propritaires. Par consquent le risque est plus grand de trouver des logiciels victimes de failles de scurit exploitables que sur les systmes contenant moins de logiciels. De plus en plus de personnes examinent le code source la recherche de failles. De nombreux annonces sont lies des audits de code source effectus sur des composants logiciels majeurs livrs dans Debian. Lorsquun de ces audits de code source fait ressortir une faille majeur, elle est rpare et une alerte est envoye aux listes comme celle de BugTraq. Les bogues prsents dans la distribution Debian affectent galement dautres distributeurs et distributions. Vriez la partie Debian specic : yes/no en haut de chaque annonce (DSA).

12.1.3

Debian possde-t-elle une certication relative 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. Au moins deux distributions Linux sont actuellement certies diffrents niveaux EAL (http://fr.wikipedia.org/ wiki/Evaluation_Assurance_Level). Remarquez que certains des tests CC sont en cours dintgration dans le Linux Testing Project (http://ltp.sourceforge.net) disponible dans le paquet Debian ltp.

12.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.

12.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.). Cela peut tre droutant pour ladministrateur dbutant lorsquil essaie de dterminer loutil adapt son besoin. Le meilleur choix dans une situation donne dpend dun quilibre entre les fonctionnalits et la scurit ncessaires. Voici quelques questions se poser pour choisir parmi des paquets semblables. Est-ce que le logiciel est maintenu en amont ? De quand date la dernire version ? Le paquet est-il mr ? Le numro de version nindiquera vraiment rien concernant sa maturit. Essayez de tracer lhistoire du logiciel. 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 ncessaires ? Fournit-il plus que le ncessaire ?
2. 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 slectionner des prols de scurit ou en utilisant des assistants pour congurer des pare-feu personnels.

Chapitre 12. Foire Aux Questions (FAQ)

125

12.1.6

Comment mieux scuriser le service XYZ dans Debian ?

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

12.1.7

Comment supprimer toutes les informations de version pour les services ?

Si vous ne voulez pas que des utilisateurs se connectent au dmon POP3, par exemple, et rcuprent des renseignements sur le systme, vous pourriez supprimer (ou modier) les versions afches aux utilisateurs. 3 Faire cela dpend du logiciel que vous utilisez pour un service donn. Par exemple, dans postfix, vous pouvez placer la bannire SMTP suivante ans /etc/postfix/main.cf :
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)

Dautres logiciels ne sont pas aussi faciles modier. SSH devra tre recompil pour pouvoir modier la version afche. Prenez garde ne pas supprimer la premire partie (SSH-2.0) de la bannire, car les clients lutilisent pour identier les protocoles pris en charge par le paquet.

12.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, simplement cause du manque de ressources pour contrler 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 cheval de Troie dans un paquet sans moyen de le vrier. Mme sil tait introduit dans une branche Debian, il serait impossible de couvrir toutes les situations imaginables dans lesquelles le cheval de Troie pourrait agir. Cest pourquoi Debian a une clause de licence de non garantie . 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. Installer des logiciels non tests dans un systme critique nest pas recommand (si vous ne pouvez pas fournir laudit de code ncessaire). Dans tous les cas, si des failles de scurit taient intgres 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.

12.1.9

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

Vous pouvez bien sr modier les permissions Debian par dfaut du systme. La rgle actuelle concernant les chiers journaux et les chiers de conguration est quils doivent tre lisibles par tous les utilisateurs sauf sils fournissent des informations sensibles. Soyez attentifs si vous faites des modications car : des processus pourraient ne plus pouvoir crire dans des chiers journaux si leurs permissions ont t restreintes ; certains applications peuvent ne pas fonctionner si le chier de conguration dont elles dpendent est illisible. Par exemple, si vous supprimez la permission en lecture pour tous les utilisateurs de /etc/samba/smb.conf, le programme smbclient ne pourra pas fonctionner pour un utilisateur normal. FIXME : Vrier si cest crit dans la Charte. Certains paquets (par exemple, les dmons FTP) semblent ncessiter diffrentes permissions.

12.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
3. Notez que cest de la scurit par lobscurit et ne vaudra probablement pas leffort long terme.

Chapitre 12. Foire Aux Questions (FAQ)

126

le systme, vous pouvez les renforcer en 750. Pour les utilisateurs, veuillez lire Limiter laccs aux informations dautres utilisateurs page 47. Ce l (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.

12.1.11

Aprs linstallation de grsec ou dun pare-feu, jai commenc recevoir beaucoup de messages de console ! Comment les supprimer ?

Si vous recevez des messages en console et que /etc/syslog.conf est congur pour les rediriger dans des chiers ou dans un TTY spcial, vous pourriez voir des messages envoys directement en console. Le niveau de journalisation en console par dfaut est 7 quel que soit le noyau, donc tous les messages avec une priorit infrieure apparatront dans la console. En gnral, les pare-feu (la rgle LOG) et dautres outils de scurit journalisent des priorits infrieures donc les messages sont envoys directement en console. Pour rduire les messages envoys en console, vous pouvez utiliser dmesg (loption -n, consultez dmesg(8)), qui examine et contrle le tampon anneau du noyau. Pour corriger cela aprs le prochain redmarrage, modiez /etc/init.d/klogd en substituant :
KLOGD=""

par :
KLOGD="-c 4"

Utilisez un nombre plus petit pour -c si vous les voyez toujours. Une description des diffrents niveaux de journalisation est disponible 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 dbogage */

12.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 (identiant 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 ayant un UID appropri. Si vous navez pas lintention dinstaller de nouveaux services, vous pouvez supprimer sans problme ces utilisateurs qui ne possdent aucun chier sur le systme et 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 4 (assurezvous de lexcuter en tant que superutilisateur, tant donn quun utilisateur ordinaire pourrait ne pas avoir les droits ncessaires pour accder certains rpertoires sensibles) :
cut -f 1 -d : /etc/passwd | while read i; do find / -user "$i" | grep -q . || echo "$i"; done

Ces utilisateurs sont fournis par base-passwd. Vous trouverez dans sa documentation plus dinformations sur la manire dont ces utilisateurs sont grs dans Debian. Voici la liste des utilisateurs par dfaut (avec un groupe correspondant). root : cest (typiquement) le superutilisateur.
4. Prenez garde, car cela parcourt tout le systme. Si vous avez beaucoup de disques et partitions, vous pourriez rduire sa porte.

Chapitre 12. Foire Aux Questions (FAQ)

127

daemon : quelques dmons sans droit ont besoin de pouvoir crire 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 : comme bin. Toutefois, /dev/vcs* et /var/spool/cups appartiennent au groupe sys. sync : linterprteur de commandes 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 depuis la console mme sans compte sur le systme. games : de nombreux jeux sont SETGID games pour pouvoir crire dans les chiers des meilleurs scores. Cest 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 de /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 nouvelles et autres programmes associs (comme suck) utilisent lutilisateur et le groupe news de diffrentes faons. Les chiers dans la le dattente des nouvelles appartiennent souvent lutilisateur et au groupe news. Les programmes comme inews qui peuvent tre utiliss pour envoyer des nouvelles sont typiquement SETGID news. uucp : lutilisateur et le groupe uucp sont utiliss par le sous-systme UUCP. Les chiers de le dattente et de conguration lui appartiennent. Les utilisateurs du groupe uucp peuvent excuter uucico. proxy : comme daemon, cet utilisateur et ce groupe sont utiliss par certains dmons (en particulier les dmons de mandataire) qui ne possdent pas didentiant utilisateur et qui nont pas besoin de possder des chiers. Par exemple, le groupe proxy est utilis par pdnsd et squid est excut en tant quutilisateur proxy. majordom : majordomo a un identiant utilisateur 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 web ne devrait pas appartenir cet utilisateur, sinon un serveur Internet compromis serait en 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 ou restauration peut tre localement dlgue quelquun sans avoir lui donner tous les droits du superutilisateur. operator : cest historiquement (et pratiquement) le seul compte utilisateur qui peut se connecter distance, sans dpendre de NIS ou NFS. list : les archives des listes de diffusion 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 bogue dans ircd, il se SETUID 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. Les autres groupes suivants nont pas dutilisateur associ. adm : 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 leur permettre dcrire sur les TTY dautres personnes. disk : accs brut aux disques. Quasiment quivalent laccs superutilisateur. 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 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 les modems comme rpondeurs. cdrom : utilis localement pour donner certains utilisateurs un accs aux lecteurs de CD.

Chapitre 12. Foire Aux Questions (FAQ)

128

oppy : utilis localement pour donner certains utilisateurs un accs aux lecteurs de disquettes. tape : utilis localement pour donner certains utilisateurs un accs aux lecteurs de bandes. sudo : les membres de ce groupe nont pas besoin de fournir un mot de passe lors de lutilisation de sudo. Consultez /usr/share/doc/sudo/OPTIONS. audio : utilis localement pour donner certains utilisateurs un accs aux priphriques audio. src : ce groupe possde les codes source, y compris les chiers de /usr/src. Il peut tre utilis pour permettre un utilisateur de manipuler les codes source du systme. shadow : /etc/shadow est lisible par ce groupe. Certains programmes ayant besoin daccder ce chier sont SETGID shadow. utmp : les membres de ce groupe peuvent crire dans /var/run/utmp et dans chiers similaires. Les programmes qui ncessitent lcriture sont SETGID utmp. video : utilis localement pour donner certains utilisateurs un accs aux priphriques vido. staff : autorise les utilisateurs ajouter des modications au systme local (/usr/local, /home) sans avoir les droits du superutilisateur. comparer au groupe adm plus apparent la surveillance et la scurit. users : alors 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 des chiers password et group, vous pouvez essayez de rcuprer de ce problme en utilisant update-passwd (consultez update-passwd(8)).

Quelle est la diffrence entre les groupes adm et staff ? Le groupe adm est normalement celui des administrateurs et leur permet de lire les journaux dactivits sans utiliser su. Le groupe staff est gnralement pour les administrateurs systme secondaires an de faire des choses dans /usr /local et de crer des rpertoires dans home.

12.1.13

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

Le comportement par 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 (cest--dire users ). Le schma Debian rsout 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 correct est automatiquement attribu aux chiers crs dans ce rpertoire. Cela facilite le travail sur plusieurs projets sans modier les groupes ou les umask pour travailler 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 un nouvel utilisateur est cr. Positionnez galement USERS_GID au GID du groupe users auquel appartiennent tous les utilisateurs.

12.1.14

Questions concernant les services et les ports ouverts

Pourquoi tous les services sont-ils activs lors de linstallation ? Cest un compromis entre la prsence de scurit et la facilit dutilisation. Contrairement OpenBSD, qui dsactive tous les services non activs par ladministrateur, Debian GNU/Linux activera tous les services installs moins de les dsactiver (consultez Dsactivation de services dmon page 26 pour plus de renseignements). Aprs tout, vous avez install ces services de votre propre chef, nest-ce pas ? De nombreuses discussions sur les listes de diffusion Debian (sur debian-devel et debian-security) ont eu lieu sur linstallation standard. Cependant, il ny a pas de consensus ce jour (mars 2002) sur la solution adopter.

Chapitre 12. Foire Aux Questions (FAQ) Puis-je retirer inetd ?

129

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 (consultez Dsactivation de services dmon page 26), soit retirer le paquet en utilisant equivs. Pourquoi le port 111 est-il ouvert ? 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 ncessaire pour savoir quand 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 en Scurisation des services RPC page 77. Dans les versions du paquet portmap ultrieures 5-5, le portmapper peut tre en fait install en ncoutant que localhost (en modiant /etc/default/portmap). quoi sert identd (port 113) ? Le service identd est un service dauthentication du 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. Cest 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. Des discussions compltes ont eu lieu sur la scurit didentd (consultez 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 multiutilisateur 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 une rgle de dni, sinon la communication un serveur utilisant identd pourrait tre en attente jusqu lexpiration dun dlai (consultez les problmes sur le rejet ou le dni (http://logi.cc/linux/reject_or_deny.php3)). Des services utilisent les ports 1 et 6, quels sont ces services et comment les enlever ? Si la commande netstat -an afche :
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:* State 7 7

Aucun processus ncoute sur les ports 1 et 6. En fait, un processus coute sur une socket raw (brut) pour les protocoles 1 (ICMP) et 6 (TCP). Un tel comportement est courant pour les chevaux de Troie et pour certains systmes de dtection dintrusions comme iplogger et portsentry. Si ces paquets sont installs, supprimez-les simplement. Sinon, essayez loption -p (processus) de netstat pour voir le processus lcoute. Le port XYZ est ouvert, puis-je le fermer ? Bien sr que vous pouvez, les ports laisss ouverts doivent adhrer la politique de scurit du site concernant les services publiques disponibles pour les autres systmes. Vriez sils sont ouvert par inetd (consultez Dsactivation dinetd ou de ses services page 27) 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 aider scuriser la 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) empcher les services dtre 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, consultez Dsactivation de services dmon page 26.

Chapitre 12. Foire Aux Questions (FAQ)

130

12.1.15

Problmes courants de scurit

Jai perdu mon mot de passe et je ne peux plus accder au systme ! Les dmarches pour rcuprer le systme dpendent des diffrentes procdures appliques pour limiter laccs lilo et au BIOS. Si les deux accs sont limits, vous devez dsactiver les fonctionnalits du BIOS (dmarrer uniquement depuis le disque dur) avant de commencer. Si vous avez galement oubli le mot de passe du BIOS, vous devrez ouvrir le systme et retirer manuellement la pile du BIOS. Une fois activ lamorage depuis un CD 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 la partition /root ; diter (la disquette de secours de Debian 2.2 est livre avec ae, Debian 3.0 est livre avec nano-tiny qui est similaire vi) /etc/shadow et modier la ligne :
root:asdfjl290341274075:XXXX:X:XXXX:X::: (X=nimporte quel nombre)

par :
root::XXXX:X:XXXX:X:::

Cela retirera le mot de passe superutilisateur 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 superutilisateur (avec un mot de passe vide). Cela fonctionnera sauf si le systme est congur plus strictement, par exemple sans autorisation des connexions avec mot de passe vide ou des connexions du superutilisateur partir de la console. Si ces caractristiques ont t introduites, vous devrez passer en mode utilisateur unique. Si LILO a t restreint, vous devrez relancer lilo aprs la rinitialisation du superutlisateur prcdente. Cest assez rus puisque /etc/lilo.conf devra tre modi car le systme de chiers racine est alors un disque virtuel et non le vrai disque dur. Une fois que LILO nest plus restreint, vous pouvez : presser lune des touches Alt, Maj ou Ctrl juste avant que le BIOS systme ne nisse, pour obtenir linvite de LILO ; entrer linux single, linux init=/bin/sh ou linux 1 linvite ; cela donnera accs une invite de commandes un mode utilisateur unique (un mot de passe sera demand, mais vous le connaissez dj) ; remonter en lecture/criture la partition racine (/), en utilisant la commande de montage :
mount -o remount,rw /

modier le mot de passe du superutilisateur avec passwd (tant superutilisateur, lancien mot de passe ne sera pas demand).

12.1.16

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

Par exemple, si vous voulez mettre en place un service POP, vous navez pas besoin de congurer un compte dutilisateur pour chaque 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), consultez la documentation (pour commencer, consultez Authentication utilisateur : PAM page 38) et congurez le service en activant PAM pour utiliser la mthode que vous avez choisi. Cest fait en ditant les chiers de /etc/pam.d/ pour les 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 le 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 en congurant les modules PAM. Par exemple, avec une base de donnes contenant les attributs de table suivants :
(user_id, user_name, realname, shell, password, UID, GID, homedir, sys, pop, imap, ftp)

Chapitre 12. Foire Aux Questions (FAQ)

131

En modiant les attributs de service en champs boolens, vous pouvez les utiliser pour permettre ou interdire laccs aux diffrents services avec 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".

12.2
12.2.1

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


Le scanneur X de vrication des failles indique que le 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 rtroporte), certains outils ont tendance croire quun systme Debian mis jour est vulnrable alors quil ne lest pas. Si vous pensez que le systme est jour des correctifs de scurit, vous pourriez utiliser les rfrences croises des bases de donnes des failles de scurit publies avec les DSA (consultez Alertes de scurit Debian page 87) pour liminer les faux positifs, si loutil utilis inclut des rfrences CVE.

12.2.2

Une attaque apparat dans les chiers journaux du systme. Le systme est-il compromis ?

Une trace dune attaque ne veut pas toujours dire que le systme a t compromis et vous devriez effectuer les tapes habituelles pour dterminer si le systme est vraiment compromis (consultez Aprs la compromission (la rponse lincident) page 119). Mme si le systme ntait pas vulnrable lattaque journalise, un attaquant dtermin pourrait avoir utilis une autre faille en plus de celles dtectes.

12.2.3

Dtranges lignes MARK apparaissent dans les journaux : le systme est-il compromis ?

Les lignes suivantes pourraient apparatre dans les 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 le systme na pas une charge importante (ou beaucoup de services actifs), ces lignes peuvent apparatre dans les journaux. Cest pour indiquer que le dmon syslogd fonctionne correctement. De syslogd(8) :
-m interval Syslogd garde dans un journal une marque dhorodatage rgulirement. Lintervalle par dfaut entre deux lignes -- MARK -- est de 20 minutes. Cela peut tre modifi par cette option. Positionner lintervalle 0 le dsactive compltement.

12.2.4

Des utilisateurs utilisant su apparaissent dans les journaux : le systme est-il compromis ?

Vous pouvez trouver ce genre de lignes dans les 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 by (UID=0)

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 9 root test -e /usr/sbin/anacron || run-parts --report * * * /etc/cron.daily $ grep nobody /etc/cron.daily/* find:cd / && updatedb --localuser=nobody 2>/dev/null

Chapitre 12. Foire Aux Questions (FAQ)

132

12.2.5

possible SYN ooding apparat dans les journaux : le systme est-il attaqu ?

Si vous voyez ce genre dentres dans les 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 cookies. cookies. cookies. cookies.

Vriez le nombre de connexions au serveur en utilisant netstat, par exemple :


linux:~# netstat -ant | grep SYN_RECV | wc -l 9000

Cela peut indiquer une attaque par dni de service (DoS) sur le port X du systme (trs certainement sur un service public comme un serveur web ou un serveur de courrier). Vous devriez activer TCP syncookies dans le noyau, consultez Congurer syncookies page 56. Cependant, notez quune attaque par dni de service peut inonder le rseau mme si vous pouvez lempcher de planter les systmes ( cause de la rarfaction de descripteurs de chiers, le systme peut ne plus rpondre avant que les connexions TCP expirent). Le seul moyen efcace pour arrter cette attaque est de contacter le fournisseur daccs rseau.

12.2.6

Des sessions superutilisateur tranges apparaissent dans les journaux : le systme est-il compromis ?

Ce genre dentres peut apparatre dans le 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 le programme responsable de ces tches, vriez les entres dans : /etc/crontab, /etc/cron.d, /etc/crond.daily et la crontab du superutilisateur dans /var/spool/cron/crontabs.

12.2.7

Le systme a t victime dune intrusion, que faire ?

Plusieurs tapes sont prendre en compte en cas dintrusion. Vriez que le systme est jour avec les correctifs de scurit pour les failles publies. Si le systme est vulnrable, les risques de compromission relle du systme 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/). Consultez ce document, en particulier la section Aprs la compromission (la rponse lincident) page 119. Demandez de laide. La liste de diffusion debian-security permet de demander conseil sur la manire de rcuprer ou corriger le systme. Informez le CERT (http://www.cert.org) local (sil existe, sinon vous pourriez contacter le CERT directement). Cela peut ou non vous aider, mais au minimum, cela informera le CERT des attaques en cours. Cette information est trs prcieuse pour dterminer les outils et attaques utiliss par la communaut blackhat.

12.2.8

Comment pister une attaque ?

En regardant les journaux (sils nont pas t modis), en utilisant un systme de dtection dintrusions (consultez Mise en place de dtection dintrusion page 114), traceroute, whois et outils similaires (y compris des analyses post-mortem) vous pourriez trouver la source de lattaque. La raction face ces informations dpend uniquement des 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 12. Foire Aux Questions (FAQ)

133

12.2.9

Le programme X dans Debian est vulnrable, que faire ?

Tout dabord, vriez 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, elle peut donc dj tre consciente du problme. Ne lancez pas dautres actions si lannonce est sur http://security.debian.org. Si rien na t publi, veuillez envoyer un message propos des paquets concerns avec une description aussi dtaille que possible de la vulnrabilit rencontre (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.

12.2.10

Le numro de version pour un paquet indique une version vulnrable !

Au lieu de mettre jour vers une nouvelle version, Debian rtroporte le correctif de scurit dans la version de la distribution stable. La raison dagir ainsi est simple : cela permet dassurer quune version a le moins de modications possible, de cette manire les choses ne changeront pas ou ne se briseront pas cause dune mise jour de scurit. Vous pouvez vrier quune version scurise du paquet est utilise en regardant le journal de modications du paquet ou en comparant le numro exact de version (version amont et rvision Debian) avec celui indiqu dans lalerte de scurit Debian ( Debian Security Advisory ).

12.2.11

Logiciels spciques

ProFTPD est vulnrable une attaque de dni de service Ajoutez DenyFilter \*.*/ au chier de conguration, pour plus dinformations, consultez http://www.proftpd. org/bugs.html. Aprs linstallation de portsentry, de nombreux ports sont ouverts. Il sagit simplement du mode de fonctionnement de portsentry. Il ouvre environ 20 ports non utiliss pour tenter de dtecter les scans de ports.

12.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 jusqu janvier 2006 et fournit des rponses dautres questions souvent poses sur la liste de diffusion debian-security.

12.3.1

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

Cest le bulletin dinformations envoy 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-security-announce) 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).

12.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 le 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.

Chapitre 12. Foire Aux Questions (FAQ)

134

12.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.

12.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. Cest 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. Cela veut dire que passer une nouvelle version amont nest pas une bonne solution. Au lieu de cela, les modications pertinentes devraient tre rtroportes. Habituellement, les responsables amont veulent bien aider. Sinon lquipe de scurit Debian peut peut-tre aider. 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 arrive, il peut tre ncessaire de passer une nouvelle version amont, mais cela doit obligatoirement tre coordonn avec lquipe de scurit auparavant.

12.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. Les mises jour de scurit ont un but : fournir un correctif une faille de scurit. Elles ne permettent pas dajouter des modications supplmentaires dans la publication stable sans passer par la procdure normale de mise jour de publication.

12.3.6

Que signie local (remote) ?

Certaines annonces couvrent des vulnrabilits qui ne peuvent pas tre identies par le schma habituel dexploitation local ou distance. Certaines vulnrabilits ne peuvent pas tre exploites distance, cest--dire ne correspondent pas un dmon qui coute sur un port rseau. Si elles peuvent tre exploites par des chiers particuliers qui pourraient tre fournis par le rseau alors que le service vulnrable nest pas connect en permanence au rseau, local (remote) est alors crit. De telles vulnrabilits sont en quelque sorte la fois locale et distance, et concernent souvent des archives qui pourraient tre fournies par le rseau, par exemple en tant que pice jointe un courrier lectronique ou depuis une page de tlchargement.

12.3.7

Le numro de version pour un paquet indique une version vulnrable !

Consultez Le numro de version pour un paquet indique une version vulnrable ! page prcdente.

12.3.8

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 suivre correctement. Si vous dsirez un serveur scuris (et stable), nous vous encourageons fortement rester sur une version stable. Cependant, il y a du travail de fait dans cette direction, avec la formation dune quipe en charge de la scurit de testing (http://secure-testing-master.debian.net/) qui a commenc offrir un suivi en scurit pour testing, et dune certaine faon, pour unstable. Pour de plus amples renseignements, veuillez consulter Suivi en scurit de la branche testing page 112.

Chapitre 12. Foire Aux Questions (FAQ)

135

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 rtroportage). Vous pouvez consulter les vulnrabilits publique concernant les publications testing et unstable sur le systme de suivi en scurit (http://security-tracker.debian.net/tracker/).

12.3.9

Je possde un ancienne version de Debian, est-elle suivie 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.

12.3.10

Comment testing reoit-elle les mises jour de scurit ?

Les mises jour de scurit migrerons de la distribution unstable vers testing. Elles sont gnralement envoyes avec une priorit haute, ce qui rduit le temps dattente deux jours. Aprs cette priode, les paquets migreront automatiquement vers testing, tant donnes quils sont construits pour toutes les architectures et que leurs dpendances sont disponibles dans testing. Lquipe en charge de la scurit de testing (http://secure-testing-master.debian.net/) prpare aussi des correctifs de scurit disponibles dans leur dpt quand un processus de migration normal nest pas assez rapide.

12.3.11

Comment la scurit est-elle gre pour contrib et non-free ?

La rponse courte est : elle ne lest pas. contrib et non-free ne font pas ofciellement partie de la distribution Debian et ne sont pas publis, et ne sont de fait pas suivis par lquipe en charge de la scurit. Certains paquets de non-free sont distribus dans source ou sans licence permettant le distribution de versions modies. Dans ces cas, aucun correctif de scurit ne peut tre ralis. Sil est possible de corriger le problme, et que le mainteneur du paquet ou quelquun dautre fournit des paquets correctement mis jour, alors lquipe de scurit les traitera normalement et publiera une annonce.

12.3.12

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

En fait il y en a. Plusieurs miroirs ofciels existent, implments laide dalias DNS. Le but de security.debian.org est de mettre disposition les mises jour de scurit le plus rapidement et facilement possible. Encourager lutilisation de miroirs non ofciels ajouterait un niveau de complexit qui nest gnralement pas ncessaire et qui pourrait provoquer une certaine frustration si ces miroirs ne sont pas gards jour.

12.3.13

Jai vu la DSA 100 et la DSA 102, mais o est 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 prendre en charge 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.

12.3.14

Jai essay de tlcharger un paquet faisant partie dune annonce de scurit, mais jobtiens une erreur chier non trouv .

Si une correction de bogue plus rcente remplace un paquet plus ancien de security.debian.org, il y a de fortes chances que lancien paquet soit retir pendant que le nouveau est install. Par consquent, vous obtiendrez cette erreur de chier non trouv . Nous ne voulons pas distribuer de paquets avec des bogues de scurit plus longtemps quabsolument ncessaire. Veuillez utiliser les paquets de la dernire annonce de scurit, qui sont annoncs sur la liste de diffusion debian-securityannounce (http://lists.debian.org/debian-security-announce). Il vaut mieux simplement excuter apt-get update avant de mettre jour le paquet.

Chapitre 12. Foire Aux Questions (FAQ)

136

12.3.15

Comment joindre lquipe de scurit ?

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

12.3.16

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

entre

security@debian.org

et

debian-

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 5 (cest--dire ne sont pas archivs sur le site 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).

12.3.17

Je crois avoir trouv un problme de scurit, que dois-je faire ?

Si vous vous rendez-compte dun problme de scurit, dans un paquets que vous maintenez ou non, veillez contacter lquipe de scurit. Si lquipe de scurit conrme la vulnrabilit et que dautres distributeurs sont aussi potentiellement vulnrables, ils seront contacts. Si la vulnrabilit nest pas encore publique, lquipe essayera de coordonner lannonce avec les autres distributeurs, de telle sorte que les distributions principales soient synchronises. Si la vulnrabilit est dj publiquement connue, noubliez pas de soumettre un rapport de bogue dans le systme de suivi de bogue Debian, et de ltiqueter security.

12.3.18

Comment puis-je aider lquipe de scurit Debian ?

En contribuant ce document, en rsolvant les FIXME 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. Contrler les applications dans Debian ou aider rsoudre des bogues de scurit et signaler les problmes security@debian.org. Dans tous les cas, sil vous plat, passez en revue chaque problme avant de les signaler security@debian.org. Si vous tes capable de fournir des correctifs, 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.

12.3.19

Qui compose lquipe de scurit ?

Lquipe de scurit Debian est constitue de plusieurs membres et assistant (http://www.debian.org/intro/ organization). Lquipe de scurit elle-mme invite tout le monde se joindre lquipe.

12.3.20

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 contenant du code malveillant, tant donn que ces vrications sont plutt impossibles raliser 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.
5. La publication des archives de la liste debian-private (http://www.debian.org/vote/2005/vote_002) a cependant t vote en 2005, ce qui pourrait rendre certains messages publiques lavenir.

Chapitre 12. Foire Aux Questions (FAQ)

137

12.3.21

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 prises en charge 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 prises en charge 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 (consultez Alertes de scurit Debian page 87) publies sur le site web de scurit (http://security.debian.org) et les mtadonnes 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.

12.3.22

Pendant combien de temps les mises jour de scurit sont-elles fournies ?

Lquipe de scurit essaye de suivre la distribution stable pendant environ un an aprs la publication de la distribution stable suivante, sauf si une autre distribution stable a t publi dans lanne. Ce nest pas possible de suivre trois distributions, cest dj bien assez difcile avec deux.

12.3.23

Comment puis-je contrler lintgrit des paquets ?

Ce processus consiste contrler la signature du chier Release laide de la clef publique (disponible en http: //ftp-master.debian.org/ziyi_key_2006.asc, en remplaant 2006 par lanne en cours) utilise pour larchive. Le chier Release contient les sommes de contrle MD5 des chiers Packages et Sources qui contiennent respectivement les sommes de contrle MD5 des paquets binaires et des paquets source. Des instructions dtailles sur la faon de contrler lintgrit des paquets peuvent tre obtenues en La signature de paquet dans Debian page 89.

12.3.24

Que faire si un paquet est cass suite une mise jour de scurit ?

Premirement, vous devez essayer de comprendre pourquoi le paquet est dfaillant et comment il interagit avec la mise jour de scurit. Ensuite, prenez contact avec lquipe en charge de la scurit sil sagit de quelque chose de srieux ou bien le responsable de la distribution stable sil sagit de quelque chose de moins grave. Nous parlons ici de paquets quelconques qui cessent de fonctionner aprs une mise jour de scurit dun autre paquet. Si vous ne parvenez pas identier la cause du problme, mais que vous connaissez le correctif, parlez-en galement lquipe en charge de la scurit. Il est toutefois possible quon vous renvoie vers le responsable de la distribution stable.

Chapitre 12. Foire Aux Questions (FAQ)

138

139

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 consultez Liste des contrles de conguration page 141. 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 par tches (task). Slectionnez les mots de passe cachs (shadow). Passer les paquets en revue avec dselect et retirer les paquets non ncessaires 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 31. Appliquer les suggestions prsentes dans ce manuel concernant les quotas par utilisateur, les dnitions des connexions et lilo. Faire une liste de services actifs sur le 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 ( excuter en tant que superutilisateur). Vous devriez faire attention car lsof peut traduire le mot LISTEN en fonction des paramtres rgionaux. An de retirer les services non ncessaires, dterminer avant tout les paquets fournissant ces services et la faon de les dmarrer. Cette tche peut tre facilement ralise en vriant le programme qui coute la socket , lexemple suivant le montre en utilisant ces outils et dpkg :
#!/bin/sh # FIXME : cest du vite fait, mal fait # de script plus robuste for i in sudo lsof -i | grep LISTEN | pack=dpkg -S $i |grep bin |cut -f 1 echo "Le service $i est install par init=dpkg -L $pack |grep init.d/ if [ ! -z "$init" ]; then echo "et dmarr par $init" fi done ; remplacer par un bout cut -d " " -f 1 |sort -u ; do -d : | uniq $pack";

Une fois les services indsirables trouvs, supprimer le paquet (avec dpkg --purge) ou utiliser update-rc.d (consultez Dsactivation de services dmon page 26) de faon le retirer du systme de dmarrage. Pour les services inetd (dmarrs par le superdmon), vrier les services activs dans /etc/inetd.conf avec :
$ grep -v "^#" /etc/inetd.conf | sort -u

et dsactiver ceux qui ne sont pas ncessaires en commentant la ligne qui les inclut dans /etc/inetd.conf, en supprimant le paquet ou en utilisant update-inetd. Si des services sont encapsuls ( wrapped ) (ceux utilisant /usr/sbin/tcpd), vrier que les chiers /etc /hosts.allow et /etc/hosts.deny sont congurs daprs les rgles de services. Si le serveur utilise plus dune interface externe, vous pourriez limiter les services pour nen couter quune seule. Par exemple, pour un accs FTP interne, paramtrez le dmon FTP pour ncouter que sur linterface dsire et non toutes les interfaces (cest--dire 0.0.0.0 :21). Redmarrez la machine ou passez en mode utilisateur unique puis revenez en mode multiutilisateur avec :
# init 1 (...) # init 2

Vriez que les services sont maintenant disponibles et, si ncessaire, rptez les tapes ci-dessus. Installez maintenant les services ncessaires si ce nest pas encore fait et congurez les correctement. Utilisez la commande dinterprteur suivante pour dterminer lutilisateur utilis pour excuter chaque service dispo-

Chapitre A. La procdure de durcissement tape par tape nible :


# 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 dmarr en tant quutilisateur $user"; done

140

Pensez modier les utilisateur et groupe lanant ces services pour un couple utilisateur et groupe donn, et utilisez ventuellement 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 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 : tous les chiers installs par le paquet (consultez la sortie de dpkg -L) fournissant le service ainsi que les paquets dont il dpend peuvent tre ncessaires dans lenvironnement chroot. Des renseignements sur la mise en place dun environnement chroot pour le programme ssh sont disponibles en Environnement de chroot pour SSH page 155. Rpter les tapes ci-dessus an de vrier que seuls les services dsirs sont en cours dexcution et quils fonctionnent avec une combinaison utilisateur et 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 de rseau et dhte comme snort et logcheck. Rpter ltape du scanner de rseau et vrier que le systme de dtection dintrusion fonctionne correctement.

Pour les personnes vraiment paranoaques, les considrations suivantes sont envisager. Ajouter au systme des possibilits de pare-feu, 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 droits dutilisateurs, les chiers setuid et le gel des changements dans le systme en utilisant le systme de chiers ext2.

141

Annexe B

Liste des contrles de conguration


Cette annexe rcapitule brivement les points des autres sections de ce manuel sous une forme condense de liste de contrles. Cest un petit rsum pour ceux qui ont dj lu le manuel. Dautres listes de contrles sont 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 : Cest 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 depuis disquette, CD, etc. dans le BIOS du systme. 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. Partitionnement. Sparer les donnes que 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 pour les partitions ext2 ou ext3 telles que /home ou /tmp. Hygine pour les mots de passe et la scurit des connexions. Choisir un bon mot de passe pour le superutilisateur. Activer les mots de passe cachs et MD5. Installer et utiliser PAM. Ajouter la prise en charge de MD5 PAM et sassurer (de manire gnrale) que 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 superutilisateur puisse se connecter localement. Indiquer galement les consoles (ttys) autorises dans /etc/security/access.conf et congurer gnralement ce chier pour limiter au maximum les connexions du superutilisateur. Ajouter pam_limits.so pour dnir des limites par utilisateur. Modier /etc/pam.d/passwd : augmenter la taille minimale du mot de passe (6 caractres par exemple) et activer MD5. Ajouter ventuellement le groupe wheel /etc/group ; ajouter lentre pam_wheel.so group=wheel au chier /etc/pam.d/su. Pour les contrles personnaliss par utilisateur, utiliser les entres appropries de pam_listle.so. Avoir un chier /etc/pam.d/other et mettre en place une scurit resserre. Dnir des limites dans /etc/security/limits.conf (remarquez que /etc/limits nest pas utilis si vous utilisez PAM). Resserrer /etc/login.defs ; de mme, si vous activez MD5 ou PAM, assurez-vous de faire galement les modications dans ce chier. Resserrer /etc/pam.d/login Dsactiver laccs FTP au superutilisateur dans le chier /etc/ftpusers. Dsactiver la connexion rseau du superutilisateur ; utiliser su(1) ou sudo(1) (considrer linstallation du paquet sudo). Utiliser PAM pour imposer des contraintes supplmentaires sur les connexions ? Autres problmes locaux de scurit. Modications du noyau (consultez Conguration des options rseau du noyau page 56). Correctifs du noyau (consultez Les utilitaires pour ajouter des correctifs au noyau page 51).

Chapitre B. Liste des contrles de conguration

142

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 avec uniquement le droit dajout et des chiers de conguration invariants en utilisant chattr (systmes de chiers ext2 ou ext3 uniquement). Mettre en place une vrication dintgrit des chiers (consultez Vrier lintgrit des systmes de chiers page 55). Installer debsums. Impression de tous les chiers journaux sur une imprimante locale ? Graver la conguration sur un CD amorable et dmarrer dessus ? Dsactiver les modules pour le noyau ? Restreindre les accs rseaux. Installer et congurer ssh (considrer PermitRootLogin No dans /etc/ssh et PermitEmptyPasswords No ; dautres suggestions sont galement dans le texte). Dsactiver ou supprimer in.telnetd sil est install. 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 comme xinetd ou rlinetd). Dsactiver les autres services inutiles ; FTP, DNS, HTTP, etc. ne devraient pas tre dmarrs si vous nen avez pas besoin et tre surveills rgulirement sinon. Dans la plupart des cas, les courriers lectroniques devraient tre fonctionnels, mais congurs uniquement pour la livraison locale. Pour les services ncessaires, nutilisez pas simplement les programmes usuels, recherchez des versions plus scurises disponibles dans Debian (ou depuis tout autre source). Peu importe celle choisie, assurez-vous de bien comprendre les risques induits. Mettre en place des prisons chroot pour les utilisateurs et dmons extrieurs. Congurer un pare-feu et lencapsulation TCP (consulter hosts_access(5)) ; considrer lastuce pour /etc /hosts.deny dans le texte. Si FTP est disponible, mettre en place un serveur FTP qui sera toujours dmarr dans un environnement chroot dans le rpertoire personnel de lutilisateur. Si X est disponible, dsactiver lauthentication xhost et utiliser plutt ssh ; de faon encore plus scurise, dsactiver X distance si possible (ajouter -nolisten tcp la ligne de commande de X et dsactiver XDMCP dans le chier /etc /X11/xdm/xdm-config en affectant la valeur 0 requestPort). Dsactiver laccs distant aux imprimantes. Chiffrer toute session IMAP ou POP par SSL ou ssh ; installer ventuellement stunnel pour fournir ce service aux utilisateurs de courrier 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 (excuter dans une prison chroot ; excuter en tant que peudo-utilisateur non superutilisateur). Installer tiger ou un outil similaire de dtection dintrusion rseau. Installer snort ou un outil similaire de dtection dintrusion rseau. Faire sans NIS et RPC si possible (dsactiver portmap). Problmes de rglement. Expliquer aux utilisateurs les tenants et aboutissants des rgles. Lorsque vous interdisez quelque chose habituellement disponible sur dautres systmes, fournissez-leur une documentation qui explique comment arriver aux mmes rsultats de faon plus scurise. Interdire lutilisation de protocoles qui utilisent des mots de passe en clair (telnet, rsh et similaire ; FTP, IMAP, HTTP, etc.) Interdire les programmes qui utilisent la SVGAlib. Utiliser les quotas de disque. Rester inform 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/. Se rappeler priodiquement dexcuter apt-get update ; apt-get upgrade (mettre en place peut-tre une tche cron ?) comme expliqu dans Faire une mise jour de scurit page 31.

143

Annexe C

Paramtrage dun IDS autonome


Un systme Debian autonome peut tre facilement congur en tant que systme de dtection dintrusion (IDS) avec snort et une interface web pour analyser les alertes de dtection dintrusion : installer un systme de base Debian sans slectionner de paquets supplmentaires ; installer une version de Snort avec prise en charge de base de donnes et congurer lIDS pour journaliser les alertes dans la base de donnes ; tlcharger et installer BASE (Basic Analysis and Security Engine) ou ACID (Analysis Console for Intrusion Databases). Le congurer pour utiliser la mme base de donnes que Snort ; tlcharger et installer les paquets ncessaires 1 . BASE est actuellement empaquet pour Debian dans acidbase et ACID est empaquet sous le nom dacidlab 2 . Les deux paquets fournissent une interface web graphique la sortie de Snort. part linstallation de base, vous aurez aussi besoin dun serveur web (comme apache), un interprteur PHP et une base de donnes relationnelle (comme postgresql ou mysql) o Snort enregistrera ses alertes. 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 secteur du rseau analyser. Le serveur web devrait tre congur pour ncouter que sur linterface connecte au rseau de gestion. Les deux interfaces devraient tre congures dans le chier de conguration standard Debian /etc/network /interfaces. Une adresse (sur le rseau de gestion) peut tre congure normalement. Lautre interface doit tre congure pour tre dmarre lorsque le systme dmarre, mais sans adresse dinterface. La dnition dinterface suivante peut tre utilise :
auto eth0 iface eth0 inet manual up ifconfig $IFACE 0.0.0.0 up up ip link set $IFACE promisc on down ip link set $IFACE promisc off down ifconfig $IFACE down

Ce qui prcde congure une interface pour lire tout le trac du rseau dans une conguration dissimule (stealth). Cela empche le systme NIDS dtre une cible directe dans un rseau hostile car les dtecteurs nont pas dadresse IP sur ce rseau. Remarquez cependant que certains bogues ont exist sur la partie dtecteurs de NIDS (consultez par exemple DSA-297 (http://www.debian.org/security/2003/dsa-297) sur Snort) et des dpassements de tampon distants pourraient mme tre dclenchs par le traitement de paquet rseau. Vous pouvez aussi consulter le HOWTO de statistiques de Snort (http://www.faqs.org/docs/Linux-HOWTO/ Snort-Statistics-HOWTO.html) et la documentation disponible sur le site ofciel de Snort (http://www.snort. org/docs/).

1. Typiquement les paquets ncessaires seront installs par lintermdiaire des dpendances. 2. Il est aussi disponible au tlchargement depuis http://www.cert.org/kb/acid/, http://acidlab.sourceforge.net et http://www. andrew.cmu.edu/~rdanyliw/snort/.

Chapitre C. Paramtrage dun IDS autonome

144

145

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 installer sur le serveur en utilisant dpkg. Une fois le nouveau noyau compil et install, installez le paquet bridge-utils. Une fois ces tapes acheves, vous pouvez terminer la conguration du pont. La section suivante prsente deux congurations diffrentes possibles pour le pont, chacune avec une carte rseau hypothtique et les commandes ncessaires.

D.1

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

La premire conguration utilise le pont comme un pare-feu avec traduction dadresse rseau (NAT) qui protge un serveur et les clients du rseau interne. Voici ci-dessous un diagramme de la conguration du rseau :
Internet ---- routeur ---- pont (62.3.3.25) (62.3.3.26 gw 62.3.3.25 / 192.168.0.1) | | |---- serveur web | (62.3.3.27 gw 62.3.3.25) | rseau ---- Zipowz (192.168.0.2 gw 192.168.0.1)

Les commandes suivantes prsentent une faon de congurer ce pont.


# Crer 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

Chapitre D. Conguration dun pare-feu pont


# Activer linterface Ethernet /sbin/ifconfig eth0 0.0.0.0 /sbin/ifconfig eth1 0.0.0.0 # # # # # # Configurer le pont Ethernet Le pont sera correct et invisible (pare-feu transparent). Il est invisible traceroute et la passerelle relle est conserve sur les autres machines. La passerelle pourrait aussi tre configure sur le pont et tre choisie comme nouvelle passerelle pour les autres machines.

146

/sbin/ifconfig br0 62.3.3.26 netmask 255.255.255.248 broadcast 62.3.3.31 # Cette IP interne est ajoute pour crer la traduction dadresse ip addr add 192.168.0.1/24 dev br0 /sbin/route add default gw 62.3.3.25

D.2

Un pont fournissant des fonctionnalits de pare-feu

Une seconde possibilit est un systme mis en place comme un pare-feu transparent pour un rseau avec un espace dadresses IP publiques.
Internet ---- routeur ---- pont (62.3.3.25) (62.3.3.26) | | |---- serveur web | (62.3.3.28 gw 62.3.3.25) | |---- serveur de courriers (62.3.3.27 gw 62.3.3.25)

Les commandes suivantes prsentent une faon de congurer ce pont.


# Crer 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 # Activer linterface Ethernet /sbin/ifconfig eth0 0.0.0.0 /sbin/ifconfig eth1 0.0.0.0 # # # # # # Configurer le pont Ethernet Le pont sera correct et invisible (pare-feu transparent). Il est invisible traceroute et la passerelle relle est conserve sur les autres machines. La passerelle pourrait aussi tre configure sur le pont et tre choisie comme nouvelle passerelle pour les autres machines.

/sbin/ifconfig br0 62.3.3.26 netmask 255.255.255.248 broadcast 62.3.3.31

Si vous excutez un traceroute vers le serveur de courriers Linux, vous ne verrez pas le pont. Si vous voulez accder au pont avec ssh, vous devez utiliser une passerelle ou dabord vous connecter sur un autre serveur comme le serveur de courriers , puis ensuite vous connecter sur le pont par 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 congurations.
iptables -F FORWARD iptables -P FORWARD DROP iptables -A FORWARD -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -m state \ --state INVALID -j DROP iptables -A 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 certains VIRUS trs rapidement iptables -I FORWARD -j DROP -p tcp -s 0.0.0.0/0 -m string \ --string "cmd.exe"

Chapitre D. Conguration dun pare-feu pont


# Bloquer 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 courriers Linux # Autoriser 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 ACCEPT # Autoriser le serveur de courriers se connecter lextrieur # Remarque : ce nest *pas* ncessaire pour les connexions prcdentes # (rappel : 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 # Autoriser les connexions HTTP (80) avec le serveur web iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 62.3.3.28/32 --dport 80 \ -j ACCEPT # Autoriser les connexions HTTPS (443) avec le serveur web iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 62.3.3.28/32 --dport 443 \ -j ACCEPT # Autoriser les connexions sortantes du serveur web # Remarque : ce nest *pas* ncessaire pour les connexions prcdentes # (rappel : filtrage tat) et peut tre supprim. iptables -A FORWARD -p tcp -s 62.3.3.28/32 -d 0/0 -j ACCEPT

147

Chapitre D. Conguration dun pare-feu pont

148

149

Annexe E

Exemple de script pour changer linstallation par dfaut de BIND


Ce script automatise la procdure de modication dinstallation par dfaut du serveur de noms bind version 8 pour quil ne fonctionne pas en tant que superutilisateur. Remarquez que bind version 9 dans Debian fait dj cela par dfaut 1 , et que vous devriez plutt lutiliser que bind version 8. Ce script est laiss pour des raisons historiques et montre comment automatiser ce type de modications globales du systme. Le script crera les utilisateur et groupe dnis pour le serveur de noms et modiera la fois /etc/default /bind et /etc/init.d/bind pour que le programme soit excut en tant que cet utilisateur. Utilisez-le avec la plus grande attention car il na pas t test rigoureusement. Vous pouvez aussi crer lutilisateur vous-mme et utiliser le correctif disponible pour le script dinitialisation par dfaut attach au rapport de bogue n 157245 (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=157245).
#!/bin/sh # Modifier la configuration par dfaut du BIND v8 de Debian pour quil # sexcute en tant quutilisateur et groupe non superutilisateur. # # Ne pas utiliser cela avec la version 9, utiliser plutt debconf pour le # configurer. # # Attention : ce script na pas t test rigoureusement, veuillez # vrifier les modifications effectues 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, restaurer le systme si la modification choue echo "Attention : restauration de la configuration prcdente car il" echo " est impossible de la modifier correctement." echo "Attention : veuillez vrifier le script $INITDERR." mv $INITD $INITDERR cp $INITDBAK $INITD }

USER=named GROUP=named INITD=/etc/init.d/bind DEFAULT=/etc/default/bind INITDBAK=$INITD.preuserchange INITDERR=$INITD.changeerror AWKS="awk /\/usr\/sbin\/ndc reload/ { print \"stop; sleep 2; start;\"; noprint = 1; } /\\\\$/ { if ( noprint != 0 ) { noprint = nop [ id -u -ne 0 ] && { echo "Ce script doit tre excut en tant que superutilisateur" exit 1

1. Depuis la version 9.2.1-5. Cest--dire depuis Debian Sarge.

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


} RUNUSER=ps eo user,fname |grep named |cut -f 1 -d " " if [ "$RUNUSER" = "$USER" ] then echo "Attention : le dmon de serveur de noms est dj excut en tant" echo " que $USER." echo "Erreur : ce script ne modifiera pas la configuration." exit 1 fi if [ ! -f "$INITD" ] then echo "Erreur : ce systme na pas de $INITD (ce que ce script tente de" echo " modifier)" RUNNING=ps eo fname |grep named [ -z "$RUNNING" ] && \ echo "Erreur : en fait, le dmon de serveur de noms nest mme pas en" echo " cours dexcution (est-il install ?)" echo "Erreur : aucune modification ne sera apporte au systme." exit 1 fi # Vrifier si les options sont dj configures if [ -e "$DEFAULT" ] then if grep -q ^OPTIONS $DEFAULT; then echo "Erreur : le fichier $DEFAULT a dj des options configures." echo "Erreur : aucune modification ne sera apporte au systme." fi fi # Vrifier si le groupe named existe if [ -z "grep $GROUP /etc/group" ] then echo "Cration du groupe $GROUP :" addgroup $GROUP else echo "Attention : le groupe $GROUP existe dj. Il ne sera pas cr." fi # Pareil pour lutilisateur if [ -z "grep $USER /etc/passwd" ] then echo "Cration de lutilisateur $USER :" adduser --system --home /home/$USER \ --no-create-home --ingroup $GROUP \ --disabled-password --disabled-login $USER else echo "Attention : lutilisateur $USER existe dj. Il ne sera pas cr." fi # Modifier le script init.d # Dabord faire une sauvegarde (vrifier quil ny en a pas dj une) if [ ! -f $INITDBAK ] then cp $INITD $INITDBAK fi # Puis lutiliser pour la modifier cat $INITDBAK | eval $AWKS > $INITD # Enfin placer les options dans le fichier /etc/default/bind cat >>$DEFAULT <<EOF # Utiliser lutilisateur dfini pour excuter bind OPTIONS="-u $USER -g $GROUP" EOF echo "Attention : le script $INITD a t modifi, tentative de test des" echo " modifications." echo "Redmarrage du dmon named (vrification des erreurs en cours)." $INITD restart if [ $? -ne 0 ] then echo "Erreur : restore exit 1 fi

150

chec du redmarrage du dmon."

RUNNING=ps eo fname |grep named if [ -z "$RUNNING" ] then echo "Erreur : named nest pas en cours dexcution, cest sans doute" echo " d un problme avec les modifications." restore exit 1 fi # Vrifier que named fonctionne comme prvu RUNUSER=ps eo user,fname |grep named |cut -f 1 -d " " if [ "$RUNUSER" = "$USER" ] then

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


echo "Tout sest bien pass, named semble maintenant fonctionner en tant" echo " que $USER." else echo "Erreur : le script a chou modifier automatiquement le systme." echo "Erreur : named fonctionne actuellement en tant que $RUNUSER." restore exit 1 fi exit 0

151

Le script prcdent, excut sur le bind (version 8) personnalis de Woody (Debian 3.0), modiera le chier initd aprs cration de lutilisateur et du groupe named .

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

152

153

Annexe F

Mise jour de scurit protge par un pare-feu


Aprs une installation standard, un systme peut toujours avoir 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 Internet pour les tlchargements. Cependant, ds que vous vous connecter Internet, vous exposez le systme. Si lun des services locaux est vulnrable, votre systme peut mme tre compromis avant la n de la mise jour ! Cela peut sembler paranoaque, mais 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 (cest--dire, 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 ellemme. Lexemple ci-dessous montre comment mettre en place des telles fonctionnalits de pare-feu, ne permettant que les connexions security.debian.org et en journalisant toutes les autres. Lexemple suivant permet de congurer un jeu de rgles de pare-feu restreint. Excutez ces commandes depuis une console locale (pas distance) pour limiter les risques de vous enfermer hors du systme.
# iptables -F # iptables -L Chain INPUT (policy ACCEPT) target prot opt source Chain FORWARD (policy ACCEPT) target prot opt source

destination

destination

Chain OUTPUT (policy ACCEPT) target prot opt source destination # 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 -P INPUT DROP # iptables -P FORWARD DROP # iptables -P OUTPUT DROP # 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,ESTABLISHED ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 LOG all -- anywhere anywhere LOG level warning 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 warning

Remarque : lutilisation dune rgle DROP dans la chane INPUT est la chose la plus correcte faire, mais soyez particulirement attentif lorsque cest fait aprs avoir nettoy la chane depuis une connexion distante. Lors dun test des jeux de rgles de pare-feu distance, il est prfrable dexcuter un script avec le jeu de rgles de pare-feu (au lieu dintroduire les rgles une une depuis la ligne de commande) et, par prcaution, de garder une porte drobe 1 congure pour pouvoir
1. Par exemple knockd. Sinon, il est possible douvrir une autre console et forcer le systme conrmer que quelquun est prsent de lautre ct, et rinitialiser la chane de pare-feu en absence de conrmation. Le script de test suivant pourrait servir :
#!/bin/bash while true; do read -n 1 -p "Y a-t-il quelquun ? " -t 30 ayt if [ -z "$ayt" ] ; then break fi done # Rinitialiser

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

154

ractiver laccs au systme en cas derreur. Ainsi, il ne sera pas ncessaire de se dplacer pour corriger un jeu de rgles de pare-feu bloquant. FIXME : cela ncessite un DNS oprationnel puisquil est ncessaire pour rsoudre security.debian.org. security.debian.org pourrait tre ajout /etc/hosts mais cest un nom canonique pour plusieurs htes (il y a plus dun miroir de scurit). FIXME : cela ne fonctionnera quavec les URL HTTP car FTP peut avoir besoin du module ip_conntrack_ftp ou dutiliser le mode passif.

la chane de pare-feu, lutilisateur nest pas disponible echo echo "Rinitialisation de la chane de pare-feu" iptables -F iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT exit 1

Bien sr, toutes les portes drobes devraient tre dsactives avant de placer le systme en production.

155

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 interprteur de commande distant pour les utilisateurs. Cest pourquoi vous devrez galement considrer les applications que les utilisateurs auront le droit dutiliser dans lenvironnement. Deux options existent pour congurer une invite de commande distance restreinte : chrooter les utilisateurs SSH, en congurant correctement le dmon SSH pour chrooter un utilisateur aprs lauthentication juste avant de lui fournir une invite de commande. Chaque utilisateur peut avoir son propre environnement ; chrooter le serveur SSH, puisque lapplication SSH est elle mme chroote, tous les utilisateurs sont chroots dans lenvironnement dni. La premire option a lavantage de permettre davoir la fois des utilisateurs chroots ou non, en absence dapplication setuid dans les chroots de lutilisateur, il est plus difcile de sen chapper. Cependant, vous pourriez congurer des chroots spciques chaque utilisateur ce qui est plus dlicat (car cela ncessite une coopration de la part du serveur SSH). La seconde option est plus facile congurer, et protge dune exploitation du serveur SH lui-mme (puisquil est galement dans le chroot) mais il sera limit de telle sorte que tous les utilisateurs partageront le mme environnement chroot (impossible de congurer un environnement chroot par utilisateur).

G.1

Chrooter les utilisateur SSH

Le serveur SSH peut tre congur pour chrooter un ensemble dutilisateurs dnis dans une invite de commande possdant un jeu dapplications disponibles limit.

G.1.1

Utilisation de 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 1 :
session required pam_chroot.so

congurer un environnement de chroot correct. Vous pouvez essayer dutiliser les scripts disponibles en /usr/share /doc/libpam-chroot/examples/, utiliser le programme makejail 2 ou mettre en place un environnement Debian minimal avec debootstrap. Assurez-vous que lenvironnement contient les priphriques ncessaires 3 ; 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 ;
1. Loption debug permet denvoyer la progression du module la facilit authpriv.notice. 2. Vous pouvez crer un environnement bash trs limit avc les dnitions Python suivante pour makejail, en crant simplement le rpertoire /var /chroots/users/truc et un chier bash.py avec le contenu suivant :
chroot="/var/chroots/users/truc" cleanJailFirst=1 testCommandsInsideJail=["bash Excuter ensuite makejail bash.py pour crer lenvironnement de lutilisateur ls"] en /var/chroots/users/truc.

Pour tester

lenvironnement, excuter : # chroot /var/chroots/users/truc/ .

ls bin dev etc lib proc sbin usr

3. Dans certains cas, les priphriques /dev/ptmx et /dev/pty* et le sous-rpertoire /dev/pts/. Excuter MAKEDEV dans le rpertoire /dev de lenvironnement chroot devrait sufre pour les crer sils nexistent pas. Avec les noyaux (version 2.6) qui crent dynamiquement les chiers de priphrique, vous devrez crer les chiers /dev/pts/ vous-mme et leur attribuer les droits ncessaires.

Chapitre G. Environnement de chroot pour SSH

156

congurer SSH : suivant la version dOpenSSH, lenvironnement chroot pourrait fonctionner directement sans effort, ou non. Depuis 3.6.1p2 la fonction do_pam_session() est appele aprs que sshd ait abandonn ses droits, mais puisque chroot() a besoin des droits du superutilisateur, il ne fonctionnera pas avec la sparation de droits activs. Dans les versions plus rcentes dOpenSSH, cependant, le code PAM a t modi et do_pam_session est appel avant labandon des droits donc il fonctionnera mme avec la sparation de droits active. Si vous devez le dsactiver, modiez /etc /ssh/sshd_config ce cette faon :
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. 4 Sans dsactiver la sparation de droits, un /etc/passwd qui intgre lUID de lutilisateur dans le chroot sera ncessaire pour faire fonctionner correctement la sparation de droits. Si la sparation de droits est dnie yes est que la version dOpenSSH ne se comporte pas correctement, il faudra la dsactiver. Si non, les utilisateurs qui essayent de se connecter au serveur et en tant chroots par ce module verront ceci :
$ ssh -l user user@servers Connection to Connection to server password: server closed by remote host. server closed.

Cest parce que le dmon SSH, qui est excut en tant que sshd , nest pas capable de faire lappel systme chroot(). Pour dsactiver la sparation de droits, il faut modier les chier de conguration /etc/ssh/sshd_config comme dcrit prcdemment. Remarquez quen absence dun des lments suivants, les utilisateurs ne pourront pas se connecter au chroot : le systme de chiers /proc doit tre mont dans le chroot des utilisateurs ; les priphriques /dev/pts/ ncessaires doivent exister. Si les chiers sont crs automatiquement par le noyau utilis, il faut les crer vous-mme dans le /dev/ du chroot ; le rpertoire personnel de lutilisateur doit exister dans le chroot, sinon le dmon SSH sarrtera. Tous ses problmes peuvent tre dbogus en utilisant le mot-clef debug dans la dnition PAM de /etc/pam.d/ssh. En cas de problme, il peut tre utile dactiver aussi le mode de dbogage sur le client. Note : ces renseignements sont galement disponibles (et peut-tre plus jour) dans /usr/share/doc/libpam-chroot /README.Debian.gz, veuillez consulter ce chier pour obtenir des renseignements jour avant dentreprendre les tapes ci-dessus.

G.1.2

Appliquer des correctifs au serveur SSH

Le serveur sshd de Debian ne vous autorisera pas restreindre les mouvements des utilisateurs par le serveur tant donn que celui-ci est dpourvu de la fonction chroot que le programme commerciale sshd2 possde (utilisation de ChrootGroups ou ChrootUsers , consultez sshd2_config(5)). Toutefois, un correctif est disponible pour le faire sur le rapport de bogue n 139047 (http://bugs.debian.org/139047). Il 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. Aprs avoir appliqu le correctif, modiez /etc/passwd en changeant le chemin du rpertoire des utilisateurs (avec lindicateur spcial /./) :
utilisateurjean:x:1099:1099:Jean Dupont Utilisateur:/home/michel/./:/bin/bash

Cela restreindra la fois les accs distants au shell, ainsi que la copie par 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

2 root 8 guest

root guest

4096 mars 4096 mars

18 13:36 . 15 16:53 ..

4. 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


-r-xr-xr-x -r-xr-xr-x -r-xr-xr-x -rwxr-xr-x -r-xr-xr-x -r-xr-xr-x lrwxrwxrwx 1 1 1 1 1 1 1 root root root root root root root root root root root root root root 531160 43916 16684 23960 9916 24780 4 fvr. nov. nov. mars juil. nov. mars 6 22:36 bash 29 13:19 ls 29 13:19 mkdir 18 13:36 more 26 2001 pwd 29 13:19 rm 30 16:29 sh -> bash

157

./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

root guest root root root root

root guest root root root root

4096 4096 54 428 44 52

mars mars mars mars mars mars

15 15 15 15 15 15

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

. .. group hosts passwd shells

./lib: total 1848 drwxr-xr-x drwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--

2 8 1 1 1 1 1 1 1 1 1 1 1 1

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

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

mars mars mars mars mars mars mars mars mars mars mars mars mars mars

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 libnss_files.so.2 libpam.so.0 libpthread.so.0 librt.so.1 libutil.so.1 libwrap.so.0

./usr: total 16 drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x

4 8 2 2

root guest root root

root guest root root

4096 4096 4096 4096

mars mars mars mars

15 15 15 15

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

. .. bin lib

./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

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

mars mars mars mars mars mars mars mars

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 drwxr-xr-x -rw-r--r--rw-r--r--rwxr-xr-x

2 4 1 1 1

root root root root root

root root root root root

4096 4096 771088 54548 23096

mars mars mars mars mars

15 15 15 15 15

15:37 13:00 13:01 13:00 15:37

. .. libcrypto.so.0.9.6 libz.so.1 sftp-server

G.2

Chrooter le serveur SSH

Si un chroot est cr pour inclure les chiers du serveur SSH, par exemple /var/chroot/ssh, le serveur SSH chroot serait dmarr avec cette commande :
# chroot /var/chroot/ssh /sbin/sshd -f /etc/sshd_config

Cela ferait dmarrer le dmon sshd dans le chroot. Pour faire cela, il faut dabord prparer le contenu du rpertoire /var /chroot/ssh pour inclure la fois le serveur SSH et tous les utilitaires dont les utilisateurs se connectant ce serveur pourraient avoir besoin. Dans ce cas, vous devez vous assurer quOpenSSH utilise la sparation de droits (ce qui est le cas par dfaut) en ayant la ligne suivante dans le chier de conguration /etc/ssh/sshd_config :
UsePrivilegeSeparation yes

De cette faon, le dmon distant fera aussi peu de choses que possible de mme que le superutilisateur donc mme en cas de bogue, le chroot ne sera pas compromis. Remarquez que, contrairement au cas de la conguration dun chroot par

Chapitre G. Environnement de chroot pour SSH

158

utilisateur, le dmon SSH est excut dans le mme chroot que les utilisateurs, donc il y a au moins un processus potentiel excut en tant que superutilisateur qui pourrait schapper du chroot. Remarquez aussi que pour permettre SSH de fonctionner cet endroit, la partition o le rpertoire du chroot existe ne doit pas tre monte avec loption nodev. Avec cette option, lerreur suivante se produira : PRNG is not seeded car /dev/urandom ne fonctionne pas dans le chroot.

G.2.1

Conguration dun systme minimal (la manire vraiment simple)

Utilisez debootstrap pour congurer un environnement minimal qui ninclut que le serveur SSH. Pour faire cela, il suft de crer un chroot comme dcrit dans la section Systme protg (chroot) de la Rfrence Debian (http:// www.debian.org/doc/manuals/reference/ch09#_chroot_system). Cette mthode est sre de fonctionner (tous les composants ncessaires seront dans le chroot) mais cotera de lespace disque (une installation minimale de Debian reprsente plusieurs milliers de mgaoctets). Ce systme minimal pourrait aussi intgrer des chiers setuid quun utilisateur dans le chroot pourrait utiliser pour sen chapper si lun dentre eux peut tre utiliser pour une augmentation de droits.

G.2.2

Crer lenvironnement automatiquement (la manire simple)

Vous pouvez facilement crer un environnement restreint avec le paquet makejail puisquil prend automatiquement soin de tracer le dmon serveur (avec strace), et lexcute dans 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, crez simplement /var/chroot /sshd et excutez la commande suivante :
# makejail /usr/share/doc/makejail/examples/sshd.py

Cela congurera la chroot dans le rpertoire /var/chroot/sshd. Remarquez que ce chroot ne sera pas compltement fonctionnel avant de : monter le systme de chiers procfs dans /var/chroot/sshd/proc. makejail le montera tout seul, mais si le systme redmarre, il faudra le remonter en excutant :
# mount -t proc proc /var/chroot/sshd/proc

Il peut aussi tre mont automatiquement en modiant /etc/fstab pour ajouter cette ligne :
proc-ssh /var/chroot/sshd/proc proc none 0 0

faire couter syslog sur le priphrique /dev/log dans le chroot. Pour faire cela, il faut modier /etc/default /syslogd pour ajouter -a /var/chroot/sshd/dev/log la dnition de la variable SYSLOGD. Consultez le chier dexemple pour savoir quels autres modications doivent tre ralises dans lenvironnement. Certaines de ces modications, 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. Remarquez quen utilisant la sparation de droits, lutilisateur sshd doit exister dans ces chiers. Lenvironnement dexemple suivant a t (lgrement) test dans Debian 3.0 et est construit avec le chier de conguration fourni par le paquet et inclut le paquet fileutils :
. |-| | | | | | | | | | | | | | | | | |

bin |-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|--

ash bash chgrp chmod chown cp csh -> /etc/alternatives/csh dd df dir fdflush ksh ln ls mkdir mknod mv rbash -> bash

Chapitre G. Environnement de chroot pour SSH


| |-- rm | |-- rmdir | |-- sh -> bash | |-- sync | |-- tcsh | |-- touch | |-- vdir | |-- zsh -> /etc/alternatives/zsh | -- zsh4 |-- dev | |-- null | |-- ptmx | |-- pts | |-- ptya0 (...) | |-- tty | |-- tty0 (...) | -- urandom |-- etc | |-- 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 | |-- 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 | |-- 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

159

Chapitre G. Environnement de chroot pour SSH


| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-| |-| | | | | | | | | | | | | | | | | | | | | | | | | | | | -|-|-|-|-|--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 |-- 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

160

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 rpertoire, 733 fichiers

Avec Debian 3.1, il faut sassurer que lenvironnement inclus aussi les chiers communs pour PAM. Les chiers suivants doivent tre copis dans le chroot si makejail ne la pas fait :
$ ls /etc/pam.d/common-* /etc/pam.d/common-account /etc/pam.d/common-auth

/etc/pam.d/common-password /etc/pam.d/common-session

G.2.3

Crer soi-mme lenvironnement (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

Chapitre G. Environnement de chroot pour SSH Ledesma, est un listing exemple des chiers dans un environnement de chroot pour ssh dans Debian Woody (3.0) : 5
.: 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 -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 drwxr-xr-x -rw-------rw-r--r--rw-r--r--rw-r--r--

161

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 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 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* 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 9 1 1 1 1

root root root root root root

root root root root root root

4096 Jun 4 12:35 ./ 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

5. Remarquez quil 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 modier les chiers /etc /passwd ou /etc/shadow.

Chapitre G. Environnement de chroot pour SSH


-rw-r--r-- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root drwxr-xr-x 2 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root drwxr-xr-x 2 root root -rw-r----- 1 root root -rw------- 1 root root -rw-r----- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rw------- 1 root root -rw-r--r-- 1 root root -rw------- 1 root root -rw-r--r-- 1 root root -rw------- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root ./etc/pam.d: total 24 drwxr-xr-x 2 root root drwxr-xr-x 4 root root lrwxrwxrwx 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root ./etc/security: total 32 drwxr-xr-x 2 root root drwxr-xr-x 4 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -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 ./lib/security: total 668 drwxr-xr-x 2 root root drwxr-xr-x 3 root root -rwxr-xr-x 1 root root -rwxr-xr-x 1 root root 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

162

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

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 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/

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*

Chapitre G. Environnement de chroot pour SSH


-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 -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 ./sbin: total 3132 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 ./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 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 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* 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* 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*

163

2 9 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

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//

Chapitre G. Environnement de chroot pour SSH

164

165

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 peut aussi tre chroot en utilisant http://www.modsecurity.org qui est disponible dans libapache-mod-security (pour Apache 1.x) et libapache2-mod-security (pour 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.
$ 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 (par exemple dnissez les 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. Consultez 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"]

Chapitre H. Environnement de chroot pour Apache


users=["chrapach"] groups=["chrapach"] packages=["apache", "apache-common"] userFiles=["/etc/password", "/etc/shadow"] groupFiles=["/etc/group", "/etc/gshadow"] forceCopy=["/etc/hosts", "/etc/mime.types"]

166

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. Copiez les pages du site web et les journaux dans la prison. Ces chiers ne sont pas copis automatiquement (consultez 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/default/syslogd, 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) 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 ;;

Chapitre H. Environnement de chroot pour Apache

167

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

FIXME : Est-ce que le premier processus Apache devrait tre lanc avec un autre utilisateur que root (cest--dire ajouter 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/ 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 indiquer 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 chrapach chrapach chrapach chrapach chrapach 0.0 189 190 191 192 193 1.1 0.0 0.0 0.0 0.0 0.0 2936 1436 ? S 1.1 2960 1456 1.1 2960 1456 1.1 2960 1456 1.1 2960 1456 1.1 2960 1456 04:03 0:00 /usr/sbin/apache ? S 04:03 0:00 /usr/sbin/apache ? S 04:03 0:00 /usr/sbin/apache ? S 04:03 0:00 /usr/sbin/apache ? S 04:03 0:00 /usr/sbin/apache ? 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 de la liste ci-dessus (2e colonne ; 189 par exemple). La liste des entres pour une arborescence restreinte devraient tre ainsi :
drwxr-sr-x drwxrwsr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x dr-xr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x 10 root staff 240 Dec 2 16:06 . 4 root staff 72 Dec 2 08:07 .. 2 root root 144 Dec 2 16:05 bin 2 root root 120 Dec 3 04:03 dev 5 root root 408 Dec 3 04:03 etc 2 root root 800 Dec 2 16:06 lib 43 root root 0 Dec 3 05:03 proc 2 root root 48 Dec 2 16:06 sbin 6 root root 144 Dec 2 16:04 usr 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 cela est que la mise en place dune prison nest pas trs difcile et que le serveur peut tre mis jour avec seulement deux lignes :
apt-get update && apt-get install apache makejail /etc/makejail/apache.py

H.3

Consultez galement

Si vous recherchez plus dinformations, vous pouvez envisager ces sources dinformations sur lesquelles les informations prsentes sont bases : page daccueil de makejail (http://www.floc.net/makejail/), ce programme a t crit par Alain Tesio

You might also like