You are on page 1of 129

Administration et Scurisation des Systmes Linux & BSD1

Par DUPONT Sbastien dupont_s@epita.fr 3 janvier 2003

A gnre par L TEXet sous licence GNU FDL (Free Documentation License) rgulirement mis a jour et disponible au format PDF en cliquant sur les liens suivants: miroir1, miroir2

1 Documentation

TABLE DES MATIRES

1 2 3

Introduction Les diffrentes distributions Linux & BSD Premire Approche des distributions Linux & BSD 3.1 Manipulation du disque dur . . . . . . . . . . . . . 3.2 Systme de chiers. . . . . . . . . . . . . . . . . . 3.3 Installation dun systme *BSD : OpenBSD . . . . 3.4 Utilisations du SHELL . . . . . . . . . . . . . . . 3.5 Les diteurs vi et Emacs . . . . . . . . . . . . . . 3.6 Commandes de bases : . . . . . . . . . . . . . . . 3.6.1 les aides. . . . . . . . . . . . . . . . . . . 3.6.2 Manipulation des chiers et des rpertoires. 3.6.3 Les outils de recherche. . . . . . . . . . . . 3.6.4 Commandes sur les processus. . . . . . . . 3.6.5 Commandes sur les priphriques. . . . . . 3.6.6 Commandes de connexion distance. . . . . 3.6.7 Autres commandes systme. . . . . . . . .

6 7 9 9 12 13 14 15 17 17 17 20 21 22 23 24 26 26 26 27 27 28 28 31 31

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

Administration des Systme Linux & *BSD 4.1 Les diffrents rpertoires. . . . . . . . . . . . . . . . 4.2 Commandes dadministration . . . . . . . . . . . . . 4.2.1 utilisateurs et groupes . . . . . . . . . . . . 4.2.2 Conguration Rseau . . . . . . . . . . . . . 4.3 tapes du dmarrage dun systme *BSD . . . . . . 4.4 tapes du dmarrage dun systme Linux . . . . . . 4.5 {Ds}installation de programmes sous Linux/BSD . 4.5.1 {Ds}installation de programmes sous Linux 2

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

Administration et Scurisation des systmes Linux/BSD 4.6 4.5.2 {Ds}installation de programmes sous *BSD . . . . Les chiers de Conguration . . . . . . . . . . . . . . . . . 4.6.1 /etc/rc.d/init.d/ sous Linux . . . . . . . . . . . . . . 4.6.2 /etc/inetd.conf sous *BSD ou /etc/xinetd sous Linux 4.6.3 /etc/passwd . . . . . . . . . . . . . . . . . . . . . . 4.6.4 /etc/master.passwd ou /etc/shadow . . . . . . . . . . 4.6.5 /etc/group . . . . . . . . . . . . . . . . . . . . . . . 4.6.6 /etc/fstab . . . . . . . . . . . . . . . . . . . . . . . 4.6.7 /etc/syslog.conf . . . . . . . . . . . . . . . . . . . . 4.6.8 /etc/hosts . . . . . . . . . . . . . . . . . . . . . . . 4.6.9 /etc/resolv.conf . . . . . . . . . . . . . . . . . . . . 4.6.10 /etc/services . . . . . . . . . . . . . . . . . . . . . . 4.6.11 /etc/sudoers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3 32 33 33 33 34 35 36 36 38 39 40 40 41 43 43 44 44 45 45 46 47 48 50 52 52 53 55 57 57 58 59 60 62 66 66 67 67 67 70 70 70 72

Administration Rseaux 5.1 La scurit du systme . . . . . . . . . . . . . . . . 5.2 IP Aliasing . . . . . . . . . . . . . . . . . . . . . . 5.3 Installation dun client/serveur SSH . . . . . . . . . 5.4 Mise en place dun serveur mail. SMTP . . . . . . . 5.4.1 Mise en place de Postix . . . . . . . . . . . . 5.4.2 Mise en place de Sendmail . . . . . . . . . . 5.4.3 sendmail.mc personnalis . . . . . . . . . . 5.4.4 sendmail.mc compatible avec Cyrus-Imapd . 5.5 installation & conguration dApache . . . . . . . . 5.6 installation & conguration dApache scuris . . . . 5.7 installation dun serveur ftp . . . . . . . . . . . . . . 5.8 installation du proxy Squid . . . . . . . . . . . . . . 5.9 installation dun serveur samba . . . . . . . . . . . . 5.10 installation dun serveur pop3{s} . . . . . . . . . . . 5.11 Installation dun serveur imap{s} . . . . . . . . . . . 5.11.1 Installation dun serveur imap U.Washington 5.11.2 Installation dun serveur imap Cyrus . . . . 5.12 installation dun serveur DHCP . . . . . . . . . . . . 5.13 installation de NFS . . . . . . . . . . . . . . . . . . 5.14 installation dun serveur NIS . . . . . . . . . . . . . 5.14.1 sous NetBSD . . . . . . . . . . . . . . . . . 5.15 installation dun serveur LDAP . . . . . . . . . . . . 5.16 installation dun serveur CVS . . . . . . . . . . . . . 5.17 installation dun DNS . . . . . . . . . . . . . . . . . 5.18 Mise en place dun VPN . . . . . . . . . . . . . . . 5.19 les chiers hosts.allow et hosts.deny . . . . . . . . . 5.20 installation dun Firewall . . . . . . . . . . . . . . . 5.20.1 Conguration de Netlter (IPtables) . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

Table des matires 5.20.2 Conguration de pf (packet lter) . . . . 5.20.3 Conguration du ltrage IP (IPchains) . . 5.21 la translation dadresses : NAT ou IPmasquerade 5.22 Outils de conguration . . . . . . . . . . . . . . 5.22.1 installation de webmin . . . . . . . . . . 6 . . . . . . . . . . . . . . . . . . . .

dupont_s@epita.fr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 83 85 88 88 90 90 90 90 90 91 92 93 93 94 94 94 95 96 96 96 97 97 98 98 98 99 100 100 101 101 101 102 103 109 109 109 110 110 110

Les outils des Hackers 6.1 Les diffrents types dattaque . . . . . . . . . . . . 6.1.1 Cartographie des vulnrabilits . . . . . . . 6.1.2 SUID/SGID . . . . . . . . . . . . . . . . . 6.1.3 Le crackage par mot de passe . . . . . . . 6.1.4 Le snifng des mots de passe et des paquets 6.1.5 LIP spoong . . . . . . . . . . . . . . . . 6.1.6 Les scanners . . . . . . . . . . . . . . . . 6.1.7 Les chevaux de Troie . . . . . . . . . . . . 6.1.8 Les vers . . . . . . . . . . . . . . . . . . . 6.1.9 Les trappes . . . . . . . . . . . . . . . . . 6.1.10 Les bombes logiques . . . . . . . . . . . . 6.1.11 Le TCP-SYN ooding . . . . . . . . . . . 6.1.12 Le Nuke . . . . . . . . . . . . . . . . . . . 6.1.13 Le Flood . . . . . . . . . . . . . . . . . . 6.1.14 Le Spamming . . . . . . . . . . . . . . . . 6.1.15 Les virus . . . . . . . . . . . . . . . . . . 6.1.16 Attaque du Display . . . . . . . . . . . . . Les solutions de dfense 7.1 Les dtecteurs dintrusion IDS . . . . . . . . . 7.1.1 snort . . . . . . . . . . . . . . . . . . 7.1.2 aide . . . . . . . . . . . . . . . . . . . 7.2 Les outils de diagnostique . . . . . . . . . . . 7.2.1 Nessus . . . . . . . . . . . . . . . . . 7.2.2 Dsniff . . . . . . . . . . . . . . . . . . 7.3 les outils de cryptage et dauthentication . . . 7.3.1 IPsec . . . . . . . . . . . . . . . . . . 7.3.2 Utilisation de Kerberos . . . . . . . . . 7.3.3 Signature scuris de mail avec GnuPG La recette magique dun systme scuris... 8.1 fonctionnalites de la machine. . . . . . 8.2 Le disque Dur . . . . . . . . . . . . . . 8.3 les Programmes . . . . . . . . . . . . . 8.4 les droits utilisateurs . . . . . . . . . . 8.5 les services . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

Administration et Scurisation des systmes Linux/BSD 9 Cryptographie 9.1 Scurit relative de la Cryptographie . . . . . . 9.2 Performance des diffrents algorithmes . . . . 9.3 Diffrents Types de Cryptographie . . . . . . . 9.3.1 Lalgorithme RSA . . . . . . . . . . . 9.4 Protocoles scuriss. OpenSSL. . . . . . . . . 9.4.1 Fonctionnement dun protocol scuris. 9.4.2 Lencodage dans SSL . . . . . . . . . . 9.4.3 La ngociation dans SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5 111 111 111 113 113 113 113 114 115 117 117 117 117 118 119 119 120 120 121 121 123 123 123 124

10 Astuces 10.1 Rcupration du passe Root. . . . . . . . . . . . . . . . . . . . 10.1.1 Rcupration du passe Root sous Linux. . . . . . . . . . 10.1.2 Rcupration du passe Root sous BSD . . . . . . . . . . 10.2 Recompilation du Noyau . . . . . . . . . . . . . . . . . . . . . 10.3 export DISPLAY . . . . . . . . . . . . . . . . . . . . . . . . . 10.4 Serveur RPMS pour Mandrake . . . . . . . . . . . . . . . . . . 10.5 Mail 100% anonymes . . . . . . . . . . . . . . . . . . . . . . 10.6 Connexion SSH sans mot de passe . . . . . . . . . . . . . . . . 10.7 mirroring OpenBSD-current Mandrake-cooker . . . . . . . . . . 10.8 Manipulation des images ISO & Gravure . . . . . . . . . . . . 10.9 Signature et vrication dintgrit des chiers via MD5/GnuPG 10.9.1 via MD5 . . . . . . . . . . . . . . . . . . . . . . . . . 10.9.2 via GnuPG . . . . . . . . . . . . . . . . . . . . . . . . 10.10Rinstallation de lilo sans disquette . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

11 Historique des changements 127 11.1 DONE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 11.2 TODO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 12 A propos 128

CHAPITRE 1 Introduction

but de cette documentation1 est de fournir les explications de base an dadministrer et de scuriser les systmes Linux et *BSD nous nous baserons sur les distributions OpenBSD 3.1, Mandrake 8.2, RedHat et Debian, mais cela devrait tout de mme convenir pour les systmes GNU/Linux et *BSD en gnral, les mthodes de conguration restant sensiblement les mmes. Pour le reste il est indispensable de considrer que la scurit dun systme ne se limite pas une scurisation de chaques services, mais une scurisation chaques niveaux, en effet si le serveur est laiss dans un endroit non scuris il sera alors possible en le reboutant de la faire dmarrer par un simple CD de boot et ainsi de modi avec les droits root toutes les donnes souhaites. De la mme faon si des comptes utilisateurs utilisent des mots de passe simple voir inexistant il sera possible par lintermdiaire dune attaque par dictionnaires force brut dobtenir laccs au compte. De plus il est indispensable de ne faire quune conance relative au Firewall, qui resteront toujours une rustine. En effet, une rcente faille de scurit sur le client mail mutt a bien dmontr cela. De plus il existe certaines failles notamment sur Netlter (iptables) qui peuvent tre exploites par simple dtection de rewall. Pour conclure il ne sera jamais possible dobtenir une scurisation totale dun serveur, nanmoins il sera toujours possible dviter un maximum de failles par une bonne administration dune systme et par une politique paranoaque sur les services autoriss.

Vous pourrez trouver une version de cette documentation rgulirement mise a jour en cliquant sur le lien suivant Administration & et scurisation des systmes Linux/BSD

CHAPITRE 2 Les diffrentes distributions Linux & BSD

F IG . 2.1: Debian : Systme le plus stable des distributions linux, mais relativement difcile administrer, il bncie dune mthode de mise jours trs rpute (semblable a urpmi de Mandrake)

F IG . 2.2: Mandrake Linux : La seule distribution Franaise.... systme user friendly utilisation la plus simplie possible pour lutilisateur. bncie galement dans trs grand de nombre de paquetages, et dune mise jour trs rapide (cooker). La Mandrake se base sur la technologie RPM dvelopp par RedHat. La Mandrake est particulirement recommande si votre poste bncie de matriel rcent nanmoins il faudra utiliser les outils de conguration avec modration si vous comptez lutiliser en tant que serveur.

F IG . 2.3: Suse : Distribution Allemande. utilise le systme Yast pour la conguration trs critiqu car non GPL... un comble ! ! !

dupont_s@epita.fr F IG . 2.4: RedHat Linux : Compromis stabilit/facilit le plus utilis pour les serveurs rseaux GNU/Linux, dans les universits par exemple. Nanmoins celle ci ne disposant nativement de programme tel que urpmi de Mandrake ou diskdrake elle reste un peu moins agrable a administrer.

F IG . 2.5: FreeBSD : Trs utilise par les serveur car supporte les architectures multiprocesseurs. Relativement simple administrer. Utilis par Yahoo et par hotmail jusque rcemment. Possde un grand nombre de paquetages.

F IG . 2.6: NetBSD : Cest le systme qui supporte le plus grand nombre de plate-forme diffrentes. Relativement difcile administrer car aucun outil de conguration Possde galement un trs grand nombre de paquetages.

F IG . 2.7: OpenBSD : Le systme le plus scuris et le plus stable. Relativement difcile administrer, possde moins de paquetages (encore que ...) car tous les paquetages subissent une audition complte et bien souvent des correctifs. Cest donc la distribution la plus recommande si vous souhaitez faire un serveur rseau scuris. Cest galement OpenBSD qui est le crateur de Openssh. liste des paquetages disponibles : http ://www.openbsd.org/3.1_packages/i386.html

CHAPITRE 3 Premire Approche des distributions Linux & BSD

3.1

Manipulation du disque dur


E disque dur se dcompose en deux types de partition, les partitions primaires

et les partitions logiques. les partitions primaires sont limites au nombre de 4. Parmi ces partitions vous pouvez en dsigner une en tant que partition tendue lintrieur de laquelle vous pouvez mettre des partions logiques (entre 15(SCSI) et 63(IDE)). Partitions Primaires & tendues Il nexiste pas de recommandation spciale par rapport au nombre de partitions primaires, nanmoins il en faudra au minimum une si vous souhaitez installer un systme Windows ou *BSD, leur nombre peut donc varier entre 0 et 4. Lors de votre choix de partitionnement il est tout de mme prfrable dy inclure une partition tendue an de ne pas tre rapidement limit par le nombre de partition. En ce qui concerne les systmes Linux il peuvent sinstaller aussi bien sur des partitions primaires que sur des partitions logiques, ce qui nest malheureusement pas le cas des *BSD qui doivent imprativement se situer sur une partition primaire. Partitions Logiques Les partitions logiques, qui sont contenues par la partition tendue, sont beaucoup moins restrictives que les partitions primaires, en effet il est possible de crer sur les disques IDE jusqu 63 partitions et 15 pour les disques SCSI. Le MBR (Master Boot Record) Les premiers secteurs du disque physique sont occups par le MBR (Master Boot Record). Cest une zone qui se situe avant la premire partition physique, et qui est 9

3.1. Manipulation du disque dur

dupont_s@epita.fr

trs petite ( 512 octets seulement). Cette zone a un rle vital pour le disque dur. Elle est partage en deux parties : La Table des Partitions Ce sont des donnes. Cest l que sont enregistres les informations concernant les quatre partitions primaires : emplacement, taille, proprits (cache, amorable). Si on efface ces donnes, le PC ne sait plus o sont situes les partitions, et toutes les donnes sont donc perdues, bien que les donnes elles mme naient pas t effaces. Cest de cette table des partitions que vient la limite des 4 partitions primaires possibles. Le systme damorage Cest un programme excut par le BIOS au dmarrage du PC qui a pour rle de lancer le systme dexploitation du PC. Pour cela, le programme stock dans le MBR excute en ralit le secteur boot de la partition principale o est install le systme dexploitation dmarrer. Parfois, sur cette zone, des programmes autres que celui par dfaut sont installs. Cest par exemple le cas de LILO (Linux Loader) et de System Commander. Ces programmes laissent lutilisateur le choix du systme dmarrer. Il se peut que ces programmes soient trop volumineux pour tre entirement copi dans le MBR, comme cest le cas pour System Commander. Dans ce cas, le MBR peut dmarrer le gestionnaire qui est alors stock sur une partition primaire sous forme de chiers. (SYSCOM.SYS pour system commander). Il est alors ncessaire que la partition soit accessible. Si vous voulez rinstaller le systme par dfaut dans le MBR, vous devez taper la

Administration et Scurisation des systmes Linux/BSD

11

commande FDISK /MBR sous DOS. Ceci remettra le systme damorage par dfaut, sans pour autant effacer la table des partitions. Ceci sert par exemple dsactiver un gestionnaire damorage comme LILO du MBR, o supprimer un virus qui est situ dans le programme damorage du MBR. Le systme damorage par dfaut, celui qui est rinstall quand on tape FDISK /MBR, a pour rle dexcuter le secteur boot de la partition ACTIVE. (Voir proprits dune partition).

Structure du secteur de partition principal Adresse (hexa) Contenu 000 Programme de partition 1BE 1CE 1DE 1EE 1FE 1re entre dans la table de partition 2me entre dans la table de partition 3me entre dans la table de partition 4me entre dans la table de partition AA55 (code didentication)

Type Code 446 o max. 16 octets 16 octets 16 octets 16 octets 2 octets

On constate ici quil ne peut pas y avoir plus de 4 partitions primaires. Structure dune entre dans la table de partition Adresse (hexa) Contenu 00 tat de la partition : - 00 : partition non active - 80 : partition active 01 Tte o commence la partition 02 Secteur et cylindre o commence la partition 04 Type de partition 05 Tte o nit la partition 06 Secteur et cylindre o nit la partition 08 Distance en secteurs entre secteur de partition et secteur de boot de la partition 0C Nombre de secteurs de la partition

Type 1 octet

1 octet 2 octet 1 octet 1 octet 2 octets 4 octets 4 octets

Une partition tendue se compose dune nouvelle table de partition, de structure identique celle de la table principale, permettant ainsi un chanage vers des partitions supplmentaires "encapsules" la suite.

Type de partition

3.2. Systme de chiers.


0 Vide 1 FAT12 2 root XENIX 3 util XENIX 4 FAT16 <32M 5 tendue 6 FAT16 7 HPFS/NTFS 8 AIX 9 AIX amorcable a Gestionnaire d b Win95 FAT32 c Win95 FAT32 (LB e Win95 FAT16 (LB f Win95 Etdue (LB 10 OPUS 11 FAT12 cach 12 Diagnostics Com 14 FAT16 cach <32 16 FAT16 cach 17 HPFS/NTFS cach 18 AST SmartSleep 1b Win95 FAT32 cac 1c Win95 FAT32 cac 1e Win95 FAT16 cac 24 NEC DOS 39 Plan 9 3c Reprise Partiti 40 Venix 80286 41 Amorce PPC PReP 42 SFS 4d QNX4.x 4e QNX4.x 2me par 4f QNX4.x 3me par 50 OnTrack DM 51 OnTrack DM6 Aux 52 CP/M 53 OnTrack DM6 Aux 54 OnTrackDM6 55 EZ-Drive 56 Golden Bow 5c Priam Edisk 61 SpeedStor 63 GNU HURD ou Sys 64 Novell Netware 65 Novell Netware 70 DiskSecure Mult 75 PC/IX 80 Old Minix 81 Minix / ancien 82 change Linux 83 Linux 84 Lecteur C : cach 85 Linux tendu 86 Ensemble de vol 87 Ensemble de vol 8e Linux LVM 93 Amoeba 94 Amoeba BBT 9f BSD/OS a0 Hibernation Thi a5 FreeBSD a6 OpenBSD a7 NeXTSTEP a9 NetBSD b7 BSDI fs b8 Swap BSDI

dupont_s@epita.fr
bb Boot Wizard hid c1 DRDOS/sec (FATc4 DRDOS/sec (FATc6 DRDOS/sec (FATc7 Syrinx da Non-FS data db CP/M / CTOS / . de Dell Utility df BootIt e1 Accs DOS e3 R/O DOS e4 SpeedStor eb BeOS fs ee EFI GPT ef EFI (FAT-12/16/ f0 Linux/PA-RISC b f1 SpeedStor f4 SpeedStor f2 DOS secondaire fd Detection auto fe LANstep ff BBT

Secteur boot dune partition Chaque partition contient un secteur de boot sur ses premiers secteurs. Le secteur de boot est la partition, ce que le MBR est au disque dur : Elle contient deux parties : 1. Des donnes qui indiquent les proprits de la partition, comme par exemple le nom de volume, ou le systme de chiers. 2. Un programme damorage qui dmarre le systme dexploitation. Si la partition contient un systme dexploitation, le programme stock sur le secteur de boot sert le dmarrer. Le secteur de boot doit tre excut par le programme du MBR. Si la partition nest pas amorable, elle contient gnralement un programme qui afche un message derreur comme "Pas de systme dexploitation", au cas o cette partition serait excute.

3.2

Systme de chiers.

Le systme de chier *BSD porte le nom de ffs (fast le system), cest un systme de chier parfaitement stable mais qui fait preuve de lenteur par rapport ceux utiliss sous Linux (ext2, ext3, reiserfs ....) Systmes de Fichiers Journaliss La plupart des systmes de chiers modernes utilisent des techniques de journalisation empruntes au monde des bases de donnes pour amliorer la reprise sur incident. Les transactions sont crites squentiellement sur une partie du disque appele /journal/ ou /log/ avant de les crire sur disque leur place dnitive dans le systme de chiers. Les mises en oeuvres varient dans le contenu crit dans le journal. Certaines ny mettent que les meta-donnes, alors que dautres y enregistrent toutes les critures.

Administration et Scurisation des systmes Linux/BSD

13

Maintenant, si un plantage survient avant quune entre de journal ne soit valide, les donnes originales sont toujours sur disque et vous avez uniquement perdu vos dernires modications. Si le plantage intervient pendant lupdate (i.e. aprs la validation de lentre du journal), lentre du journal rete ce qui aurait d tre fait. Et au ramorage du systme, il na qua rejouer les transactions du journal, et terminer l*update* qui a t interrompu. Dans les deux cas, vous avez des donnes valides, et non une partition inutilisable. Et comme le temps de reprise sur incident associ cette approche journalise, le systme est utilisable dans les quelques secondes qui suivent. Il est aussi important de noter que lutilisation dun systme de chiers jounalis ne rend pas compltement obsolte lemploi dun programme de vrication dintgrit (fsck). Des erreurs matrielles ou logicielles peuvent corrompre de faon alatoire quelques blocs du systme de chiers, interdisant une rcupration grce au journal de transactions. Les principaux systmes de chiers journalis ext3fs Aujourdhui intgr dans les principales distributions Linux. Avantage : supporte les montages en ext2fs. Reiserfs Systmes de chiers performant. Inconvnient : impossibilit de convertir une partition existante. JFS dIBM Systmes de chiers particulirement adapt aux installations de tailles importantes. Inconvnient : trop de dpendance envers AIX. XFS de silicon Graphics Supporte les trs gros systmes de chiers 18 millions de Tera. Inconvnient : trop de dpendance envers IRIX. Conclusion Pour plus de tranquillit de ce point de vue, il est prfrable dutiliser les systmes de chiers proposs par dfaut. donc ext2fs pour les anciennes versions, et ext3fs depuis la Mandrake8.2 et la RedHat 7.2. Remarque Les systmes de chiers Windows que sont msdos, fat32 (vfat), et NTFS sont parfaitement supports sous Linux. nanmoins NTFS reste par dfaut accessibles en lecture seul (sauf si recompilation noyau.).

3.3

Installation dun systme *BSD : OpenBSD

Les systmes *BSD font parti des systmes les plus complexes installer particulirement NetBSD et OpenBSD car dune part ils sadressent a des utilisateurs ex-

3.4. Utilisations du SHELL

dupont_s@epita.fr

priments et dautre part les dveloppeurs de ces systmes prfrent travailler leur stabilit et leurs fonctionnalites que leur accessibilit. De plus en dehors de FreeBSD, lors de linstallation il ne sera possible dinstaller quun systme minimal sans packages supplmentaires. Il existe des documentations sur linstallation des diffrents *BSD, que vous pourrez consulter en cliquant sur les liens suivants : Documentation sur linstallation dOpenBSD Documentation sur linstallation de NetBSD Documentation sur linstallation de FreeBSD

3.4

Utilisations du SHELL

Il existe une dizaine de shells diffrents, les plus connus sont : sh shell de base avec aucune fonctionnalit avanc ksh shell plus volu que sh mais reste restreint bash shell le plus utilis car trs rapide et possde des fonctionnalites tel que la compltions, etc.. zsh le shell le plus volu, de plus en plus utilis car il possde des fonctionnalites trs pratique tel que : la compltions de la suite de chaque commandes par ex : rpm -i apac + [tab] va directement complter par rpm -i apache....rpm les shells disposent de variables denvironnement tel que le PATH, le PROMPT mais aussi des alias, etc... voici un exemple du contenu dun .zshrc : export PROMPT="....." alias petra=ssh root@petra alias e=emacsclient -n export PATH=/usr/local/bin :/sbin/ :/usr/X11R6/bin :/bin la variable PROMPT permet de personnaliser lapparence de la ligne de commande. la variable PATH permet dinclure des rpertoires de recherche pour trouver les chiers excutables. exemples :

Administration et Scurisation des systmes Linux/BSD (seb@ramses)[ ]-% sudo vipw sudo : vipw : command not found (seb@ramses)[ ]-% export PATH=$PATH :/usr/sbin (seb@ramses)[ ]-% sudo vipw root :x :0 :0 :root :/root :/bin/zsh bin :x :1 :1 :bin :/bin : daemon :x :2 :2 :daemon :/sbin : adm :x :3 :4 :adm :/var/adm : lp :x :4 :7 :lp :/var/spool/lpd : sync :x :5 :0 :sync :/sbin :/bin/sync shutdown :x :6 :0 :shutdown :/sbin :/sbin/shutdown ....

15

Cet exemple met en valeur le fait que si la variable PATH venait a tre modie on aurait de la mme faon un problme de scurit potentiel, en effet si quelquun venait modier le PATH par PATH=/tmp/bin :$PATH :/usr/sbin nimporte qui disposant des droits sufsant sur /tmp pourrait alors usurper toute les commandes excuter par lutilisateur, les consquences pourrait tre dsastreuses pour le cas de root. Remarques Dans la variable PROMPT le caractre : ^[ est un caractre dchappement. Il se construit sous Emacs par la suite de touches (Ctrl+q) + ESC

3.5

Les diteurs vi et Emacs

diteur VI vi est un des diteurs les plus lger. il est en gnral un alias de vim sous Linux. Avantages vi (vim) permet la coloration syntaxique de nombreux chiers de conguration. indispensable en environnement limit. extrmement lger. Inconvnients utilisation un peu moins naturelle que sous Emacs. commandes de base

3.5. Les diteurs vi et Emacs :w :wq :q ! i o ESC / $ u sauve. sauve et quitte. quitte sans sauver. mode insertion(dition) . passe une ligne passe en mode insertion. quitte le mode insertion. recherche. nd de ligne. undo.

dupont_s@epita.fr

diteur Emacs

Avantages personnalisable volont. permet des macros extrmement puissantes. intgrations complte de certaines commandes telles que diff, cvs, jeux, ispell etc .... intgration du reader de mail/news gnus connu comme les plus performant des clients mail. Inconvnients Plus lourd et donc plus long lancer que vi. conguration par dfaut gnralement limite. commandes de base Ctrl+x+s Ctrl+x+f Ctrl+x+c Ctrl+w Ctrl+y Alt+w Ctrl+s Ctrl+Shift+/ Alt+Shift+/ sauve. ouvrir. quitte. couper le texte slectionn. coller copier. recherche. undo. compltions.

conguration les chiers de conguration de Emacs sont /.emacs et /.Xdefaults. Ex : /.emacs (global-font-lock-mode t) Permet la colorisation syntaxique (transient-mark-mode t) Permet la mise en surbrillance de la zone slectionne (global-set-key [f1] buffer-menu) permet dassocier une touche une action.

Administration et Scurisation des systmes Linux/BSD Ex : /.Xdefaults


emacs*verticalScrollBars : emacs*menuBar : emacs*toolBar : emacs*foreground : emacs*background : emacs*bitmapIcon : emacs*popup*Font : emacs*popup*Foreground : emacs*popup*Background : emacs*menubar*Font : emacs*menubar*Foreground : emacs*menubar*Background : emacs*dialog*Foreground : emacs*dialog*Background : emacs*geometry : off off off white black true 7x13 wheat DarkSlateBlue 7x13 wheat DarkSlateBlue wheat DarkSlateBlue 80x58+160+50 dsactivation de la barre de dlement dsactivation de la barre de menu dsactivation de la barre des options couleur de la police couleur du fond taille de la fonte des popup

17

3.6
3.6.1

Commandes de bases :
les aides.

man man est la commande la plus utile du systme car elle permet de connatre toutes les options possibles de chaques commandes. Ex : man ls On notera que les man sont toujours mis jour sous les diffrents BSD ce qui pas toujours le cas sous linux. info Semblable au man mais est aujourdhui le format ofciel de documentation sous Linux. whatis Comme son nom lindique permet davoir une description succincte sur un programme. HOWTO le Howto est une particularit linux, qui explique comment installer ou congurer certaines programmes, fonctionnalites ou services. On trouve gnralement ces documentations au format HTML dans /usr/share/doc/HOWTO

3.6.2

Manipulation des chiers et des rpertoires.

Dans les systmes de chier Linux/Unix tous les chiers sont dnis selon trois types de droits :

3.6. Commandes de bases : les droits attribus au propritaire du chier sur le chier, les droits attribus au groupe du chier sur le chier, et enn les droits attribus pour tous les autres sur le chier.

dupont_s@epita.fr

Ensuite pour chacun de ces type on attribuera de la mme faon trois types de droits : les droits de lecture. (=4 ou r pour read) les droits dcriture. (=2 ou w pour write) et enn les droits dexecution. (=1 ou x pour excution) Ainsi lors dun ls -l /bin/ls on pourra voir apparatre la ligne : -rwxr-xr 1 seb users 15 Aug 15 14 :02 hello_world.pl

Nous allons donc dcrire la signication de chacun des champs signicatifs de cette ligne : rwxr-xr Sur ce premier champ apparaissent les droits du chier que lon pourra dcomposer de la faon suivante : rwx pour le propritaire : r : le propritaire pourra lire ce chier. w : le propritaire pourra modier ce chier. x : le propritaire pourra excuter ce chier. r-x pour le groupe : r : le groupe pourra lire ce chier. - : le groupe ne pourra pas modier ce chier. x : le groupe excuter ce chier. r pour les autres : r : les autres pourront lire ce chier. - : les autres ne pourront pas modier ce chier. - : les autres ne pourront pas excuter ce chier. seb le propritaire du chier. users le groupe du chier. 15 Aug 14 :02 date de cration du chier. hello_world.pl nom du chier.

ls ls permet de visualiser les chiers contenus dans le rpertoire courant. Les options usuelles sont :

Administration et Scurisation des systmes Linux/BSD -l -R -a -h -F afchages de toutes les informations sur le chier. afche galement les chiers des sous rpertoires. afche les chiers commenant par un . ie : cachs human readable afche les nom des rpertoires avec / aprs leurs noms. afche les nom des chiers excutables avec * aprs leurs noms. afche les nom des liens avec & aprs leurs noms.

19

cd cd : change directory ie : changer de rpertoire cd ou cd : permet daccder au rpertoire de lutilisateur cd - : permet de retourner au prcdent rpertoire.

mv move signie dplacer ou renommer mv toto.txt toto2.txt : le chier toto.txt sera renommer en toto2.txt mv toto.txt tmp/ : le chier toto.txt sera dplac dans le rpertoire tmp/

pwd afche le rpertoire courant. mkdir cration dun rpertoire. mkdir rpertoire mkdir -p /home/seb/tmp/devel/test permet de crer les rpertoires rcursivement. rmdir suppression dun rpertoire sil est vide si celui nest pas vide il faut utiliser la commande : rm -rf rpertoire chmod permet de changer les permissions sur un chier ou sur rpertoire. Chaque chiffre est interprt de la mme faon : 1 pour lexcution 2 pour lcriture 3 pour la lecture On peut cumuler les droits en ajoutant ces chiffres. Ainsi, si le premier chiffre du paramtre est 6, il correspond alors 4+2 soit la lecture(4) et lcriture

3.6. Commandes de bases :

dupont_s@epita.fr

chmod 777 chier : droits de lecture, dcriture, dexcution pour tout le monde. (dangereux). chmod +s chier : positionne le bit SUID a un, cest a dire que si un utilisateur a sufsamment de droits pour pouvoir excuter ce programme alors le systme considrera que cest le propritaire du chier qui laura excut. Cest lune des failles de scurit les plus exploites par les crackers, Exemple : si root utilise la commande chmod +s /bin/cat : Alors nimporte quel utilisateur pourra afcher Le contenu de nimporte quel chier du systme : cat /etc/shadow chown permet de changer lutilisateur et le groupe propritaire dun chier : Ex : chown seb.users chier chier appartiendra dsormais lutilisateur seb et au group users. il est galement possible de lappliquer rcursivement avec loption -R : Ex : chown seb.users rep

du La commande du permet entre autres de connatre la taille dun rpertoire par blocs dun Ko. Nanmoins il est possible1 dy ajouter loption -h2 pour rendre le rsultat plus explicite.

3.6.3

Les outils de recherche.

nd permet de trouver un chier a partir dun rpertoire donn : nd / -name httpd.conf permet de retrouver le chier httpd.conf en cherchant dans tous les rpertoires depuis la racine. nd / -user root -a (perm -4000 -o -perm -2000 ) print cette commande permet dafcher tous les chiers ayant les droits SUID et appartenant a root du systme.

locate beaucoup plus rapide que nd, car il utilise une base de donne pour trouver un chier. Pour mettre a jour cette base de donne il suft en tant que root de lancer la commande :
1 2

dans la majorit des systmes human readable, ie comprhensible par un humain soit en Ko, Mo, Go

Administration et Scurisation des systmes Linux/BSD updatedb sous Linux /usr/libexec/locate.updatedb sous bsd pour chercher un chier il suft donc de taper : locate httpd.conf pour en trouver loccurrence. PS : se programme se situe dans le rpm slocate

21

grep Permet entre autre de rechercher une chaine de caractre dans un chier : grep toto chier.txt grep -r toto * pour faire une recherche en incluant les chiers des sous rpertoires. grep permet aussi de faire une recherche depuis la sortie standart : ls |grep toto dans cet exemple nous recherchons un cher dans le rpertoire courant dont le nom contient toto. Aussi on pourra lui demander de nafcher que les rsultats qui ne correspondent pas la recherche demande avec loption -v : ls |grep -v toto dans cet exemple nous recherchons un cher dans le rpertoire courant dont le nom ne contient pas toto.

3.6.4

Commandes sur les processus.

top montre les principaux processus du systme. utilisation : $> top ps utilitaire permettant de voir les processus actifs du systme. utilisation : $> ps -ax Remarque : Ces commandes permettent de connatre le pid des processus, ce qui permet de les utiliser en complment de kill. kill commande qui permet denvoyer un signal un processus : 1 2 3 6 9 14 15 HUP (hang up) INT (interrupt) QUIT (quit) ABRT (abort) KILL (non-catchable, non-ignorable kill) ALRM (alarm clock) TERM (software termination signal) Re-dmarrage

force larrt

3.6. Commandes de bases : exemple : kill -9 pid_processus

dupont_s@epita.fr

3.6.5
df

Commandes sur les priphriques.

df (display free disk space), permet de connatre ltat dutilisation dune partition monte. on utilise gnralement df avec loption -h ("Human-readable" output) pour afcher ces statistiques en Byte, Kilobyte, Megabyte, Gigabyte, Terabyte, Petabyte, Exabyte, plutt quen inode moins facile estimer. mount/umount permet de monter et de dmonter des partitions : Ex : mount -t ext2 /dev/hda7 /home -t ext2 cette option permet de spcier le type de partition pour une partition Linux (ext2), Windows (vfat), dos (msdos), cdrom(iso9660) .... numro de la partition ou du volume rpertoire dans lequel on va monter la partition cest dire le rpertoire partir duquel les chiers seront accessibles.

/dev/hda7 /home

Il possible dajouter des options supplmentaires tel que : nosuid : noexec : ... ne permet lexcution des chiers suid dans cette partition ou ce volume. ne permet aucune excution.

dd dd - Convertir un chier en le copiant. dd copie un chier (par dfaut, depuis lentre standard vers la sortie standard) en permettant de slectionner la taille de bloc, et deffectuer des conversions. Il lit son entre bloc par bloc, en utilisant la taille des blocs dentre mentionne (par dfaut 512 octets). Si loption bs=octets est prsente, et si aucune autre conversion que sync, noerror ou notrunc nest indique, il crit la quantit de donnes lues (qui peut tre plus petite que celle demande) dans un bloc de sortie indpendant. Ce bloc a exactement la mme taille que les donnes lues, sauf si la conversion sync a t rclame, auquel cas les donnes sont compltes avec des octets nuls, ou des espaces (voir plus bas). Options

Administration et Scurisation des systmes Linux/BSD if=chier Lire les donnes depuis le chier indiqu plutt que depuis lentre standard. Ecrire les donnes dans le chier mentionn, et non pas sur la sortie standard. Si conv=notrunc nest pas indiqu, le chier est initialement tronqu la taille spcie par seek= (0 octets si seek= nest pas fourni). Lire le nombre indiqu doctets en une fois. Par dfaut 512. crire le nombre indiqu doctets en une fois. Par dfaut 512. Lire et crire le nombre indiqu doctets en une fois. A priorit sur ibs et obs. (et indiquer bs nest pas quivalent indiquer la mme valeur pour ibs et obs du moins lorsquaucune autre conversion que sync, noerror et notrunc nest indique, car cela indique que chaque bloc dentre doit tre copi dans un bloc de sortie indpendant, sans regrouper les blocs plus courts). Indique la taille des blocs pour les conversion block et unblock. Ignorer le nombre indiqu de blocs (dont la taille est fournie par ibs) au dbut de la lecture. Ignorer le nombre indiqu de blocs (dont la taille est fournie par ibs) au dbut de lcriture. Copier seulement le nombre indiqu de blocs (dont la taille est fournie par ibs), et non pas tout jusqu la n du chier.

23

of=chier

ibs=nombre

obs=nombre

bs=nombre

cbs=nombre

skip=nombre

seek=nombre

count=nombre

3.6.6

Commandes de connexion distance.

ssh commande qui permet de se connecter de faon scuris ( les donnes qui transitent seront cryptes entre les deux machines). Ex : ssh toto@192.168.0.1

3.6. Commandes de bases :

dupont_s@epita.fr

scp commande qui permet de copier de faon scuris un chier ou un rpertoire sur le compte dune autre machine. Ex : scp chier toto@192.168.0.1 :. scp -r rpertoire toto@192.168.0.1 :.

3.6.7

Autres commandes systme.

tar et gzip tar est un utilitaire qui permet de concatner plusieurs chiers en un seul, mais ne les compressent pas. Cest pourquoi il est souvent utilis en parallle de gzip. Ainsi pour concatner plusieurs chiers en un seul il suft de taper : tar cvf chier.tar rpertoire ou tar cvfz chier.tar.gz rpertoire si lon souhaite en plus compresser ces chiers De mme pour dcompacter ce chier on tapera : tar xvf chier.tar dans le cas dun chier avec une extension tar tar xvfz chier.tar.gz dans le cas dun chier avec une extension tar.gz. chroot permet de dplacer la racine dun systme. Ex : chroot rpertoire NOTA : Cette commande est trs utilises pour scuris un serveur. En effet lors dattaque sur un serveur ftp ou http, une personne mal intentionne naura aucun moyen de passer root (ce qui est le pire des cas) sur le systme en entier, il sera limit au rpertoire chroot. vipw commande utilis pour modi les attributs de chaques utilisateurs : seb :$2a$06$M :1000 :10 : :0 :0 : :/home/seb :/bin/zsh on trouvera dans lordre : le login le mot de passe crypt uid : numro de lutilisateur gid : numro du groupe ...

Administration et Scurisation des systmes Linux/BSD rpertoire HOME de lutilisateur et enn shell par dfaut pour lutilisateur.

25

CHAPITRE 4 Administration des Systme Linux & *BSD

4.1

Les diffrents rpertoires.

Une autre particularit intressante du monde Unix/Linux est la hirarchisation des diffrents rpertoires. / /bin /dev /sbin /usr /var /tmp /etc /lib /home racine commandes de base contient tous les liens vers les priphriques contient toutes les commandes rserves a ladministrateur. contient tous les programmes contient les logs/pages web/ mail ... accessible en lecture/criture pour tous le monde contient tous les chiers de conguration contient les librairies de base contient toutes les donnes utilisateur De plus pour Linux : image du noyau et des priphriques installs contient le kernel ainsi que la procdure de dmarrage

/proc /boot

4.2

Commandes dadministration

Par convention il est prfrable de ne pas modier les chiers /etc/passwd et /etc/master.passwd manuellement, de plus pour ce faire il existe une pliade dutilitaires. 26

Administration et Scurisation des systmes Linux/BSD

27

4.2.1

utilisateurs et groupes

Utilisateurs Pour ajouter des utilisateurs il existe deux comandes : useradd et groupadd Nous utiliserons ici la commande useradd (identiques sous Linux ou BSD) useradd [-c commentaire] [-d rep_perso] [-e date_expiration] [-f inactive_time] [-g groupe_initial] [-G groupe[,...]] [-m [-k rep_squelette] | -M] [-p mot_de_passe] [-s shell] [-u uid [ -o]] [-n] [-r] login

Il est galement possible de changer les variables par dfaut avec la commande useradd -D useradd -D [-g groupe_defaut] [-b rep_perso_defaut] [-f inactivite] [-e date_expiration_defaut] [-s shell_defaut]

De mme que pour les variables par dfaut il est possible de modier les chiers squelettes, cest dire les chiers qui sont placs dans le rpertoire $HOME durant la cration du compte. Ces chiers sont placs dans le rpertoire /etc/skel

Groupes De la mme faon pour ajouter un groupe il existe la commande groupadd

4.2.2

Conguration Rseau

La commande la plus importante de conguration rseau est ifcong en effet elle permet : ifcong ifcong -a eth0 192.168.1.10 netmask 255.255.255.0 afche la liste des priphriques rseaux congure la carte eth0 avec ladresse IP 192.168.1.10 et avec le netmask 255.255.255.0 afche la conguration de la carte eth0

ifcong

eth0

Remarque : Sur les systmes Linux les cartes rseaux sont rfrencs par eth0,eth1,... , alors que sur les systmes BSD elles sont rfrencs par leurs noms de driver, par exemple pour

4.3. tapes du dmarrage dun systme *BSD

dupont_s@epita.fr

les cartes 3com le systme les dsignera par xl0,xl1,... pour les DLink par leur driver via-rhine vr0,vr1,...

4.3

tapes du dmarrage dun systme *BSD

Sur les diffrents *BSD les tapes de dmarrage sont dnis dans deux chiers principaux, il sagit de /etc/rc.conf et /etc/rc.local. Typiquement il faudra simplement rpondre aux questions poses dans /etc/rc.conf et ajouter des commandes ou des scripts personnels dans /etc/rc.local.

4.4

tapes du dmarrage dun systme Linux

Nous verrons dans cette section quelles sont les diffrentes tapes de dmarrage des *BSD. Ainsi durant le processus de boot on passera par les tapes suivantes : 1. Aprs le chargement du MBR lilo va donner la main au kernel. 2. Le kernel sinitialise, accde au "initial ram disk" et donne la main au chargeur initrd, qui va permettre de charger des modules supplmentaires avant daccder au systme (le droulement de cette tape est dcrit dans le chier linuxrc). Au dmarrage du noyau, celui-ci dcompresse et monte le contenu du chier initrd.img sur le disque virtuel /dev/ram0. Pour accder ce pseudo systme de chiers on peut procder de la faon suivante : (a) cp /boot/initrd.img /tmp (b) cd /tmp (c) mv initrd.img initrd.gz (d) gunzip initrd.gz (e) mkdir img (f) mount -t ext2 initrd img -o loop=/dev/loop0 (g) cd img (h) cat linuxrc 3. Aprs linitialisation des modules, Linux accde la partition racine. la limite, un systme Linux nest compos que dun kernel et dun interprteur de commande (/bin/sh) : Un gros DOS ! Un micro systme *BSD (un BSD sur une disquette) aura gnralement un petit script /etc/rc qui fera un initialisation minimum et ensuite lancera la tche principale.

Administration et Scurisation des systmes Linux/BSD

29

4. /sbin/init prend la relve Le travail initial du kernel, cest de prparer laccs au systme de chier et de donner la main /sbin/init. Cet utilitaire est prsent sur tout les systmes Unix. partir du chier /etc/inittab, /sbin/init va dmarrer les diffrents processus ncessaire lopration dun systme multi-usagers. 5. /etc/inittab Le chier /etc/inittab a un format relativement simple. Outre des commentaires (ligne dbutant par le caractre #), il contient une commande par ligne. Chaque ligne a le format suivant : (a) Identicateur Cest gnralement une squence de deux lettres identiant uniquement cette ligne. /sbin/init utilise cet identicateur lorsquil rapporte des erreurs. (b) Runlevels Chaque commande est associ un ou plusieurs groupes appel "run levels". Les "run levels" sont identis par un numro de 0 6. La dnition exacte de chaque niveau peut varier dune distribution lautre. Les 7 niveaux dexcution classiques : 0 halte 1 mode utilisateur unique 2 mode multi-utilisateurs sans gestion NFS 3 mode multi-utilisateurs 4 sans effet 5 mode X11 6 Re-dmarrage (c) Attribut Modes dexcution (liste non exhaustive) : once la commande nest excute quune fois off la commande nest pas excute wait attente de lexcution de la commande boot la commande doit sexcuter durant lamorage, le niveau est ignor bootwait idem mais le boot ne se poursuit quaprs la n de la commande ctraltdel la commande est appele lors de lappui sur Ctrl+Alt+Del initdefault mode dexcution de Linux Remarque : Dans le chier /etc/inittab on trouvera la ligne suivante :
# Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking)

4.4. tapes du dmarrage dun systme Linux


# 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:3:initdefault:

dupont_s@epita.fr

Cest donc cette ligne quil faudra modier si lon veut dmarrer en mode graphique(5) ou en mode console(3) comme cest le cas dans cet exemple. Ainsi si votre niveau de dmarrage est le niveau 3, il vous faudra modier le rpertoire /etc/rc3.d an dajouter ou de supprimer des services :

(seb@kset)[~]-% ls /etc/rc3.d K15httpd K35vncserver K65identd K15postgresql K45arpwatch K70aep1000 K16rarpd K45named K70bcm5820 K20nfs K46radvd K74ntpd K25squid K50snmpd K74ypserv K34yppasswdd K50snmptrapd K74ypxfrd K35smb K50tux S05kudzu

S08ip6tables S08ipchains S08iptables S09isdn S10network S12syslog S13portmap

S14nfslock S56rawdevices S95anacron S17keytable S56xinetd S95atd S20random S60lpd S97rhnsd S25netfs S80sendmail S98wine S26apmd S85gpm S99local S28autofs S90crond S55ssh\index{ssh}d S90xfs

Pour le service httpd par exemple on observe que celui commence par un K, qui dtermine si le service est activ (S) ou non (K) (Start ou Kill), suivit par un chiffre 15 qui prcise le niveau dordre dexcution (ici le service network et activ avant portmap). Pour le reste si le nom ne vous parait pas assez explicite vous pouvez par la commande ls -l voir sur quel chier il pointe, dans le cas K15httpd on aura donc le chier : lrwxrwxrwx 1 root root 15 mai 11 16 :25 /etc/rc3.d/K15httpd -> ../init.d/httpd De mme il est possible de visualiser lensemble des services disponibles selon le runlevel par la commande chkcong list. Remarque on peut trs bien faire un mode rescue qui se contentera douvrir un shell au dmarrage, pour cela il sufra dajouter /etc/lilo.conf : image=/boot/vmlinuz-2.4.18 label=maintenance root=/dev/hda5 append="init=/bin/zsh" read-only Aprs quoi il sufra dexcuter la commande lilo pour que les changements soient pris en compte au prochain dmarrage.

Administration et Scurisation des systmes Linux/BSD

31

4.5
4.5.1

{Ds}installation de programmes sous Linux/BSD


{Ds}installation de programmes sous Linux

la commande rpm (Gestionnaire de Paquetages Red Hat) rpm est un puissant gestionnaire de paquetages, qui peut tre utilis pour construire, installer, interroger, vrier, mettre jour, et dsinstaller des paquetages de logiciels individuels. Un paquetage consiste en une archive de chiers, et en de linformation sur ce paquetage, incluant le nom, la version et la description du paquetage. rpm -ivh paquetage.rpm rpm -Uvh paquetage.rpm rpm -ql paquetage rpm -e paquetage rpm -qa Options disponibles : force nodeps installation du paquetage. mise du paquetage. listes des chiers qui seront installs par le paquetage. dsinstallation du paquetage. liste de tous les paquetages installs.

force linstallation du paquetage. ne vrie pas les dpendances du paquetage.

la commande apt-get de Debian apt-get install installe les paquetages en grant les dpendances. avec la plus solide des rputation en ce qui concerne les upgrade.

apt-get install paquetage apt-get remove paquetage apt-cache search chier apt-get update apt-get upgrade

installation du paquetage avec gestion des dpendances. dsinstallation du paquetage avec gestion des dpendances. permet de trouver le paquetage dorigine dun chier. mise a jour de la liste des paquetages sur les diffrentes sources listes dans /etc/apt/sources.list slectionne automatiquement tous les paquetages qui doivent tre mis jour selon les paquetages dj installs et les paquetages lists dans les divers mdias enregistrs.

la commande urpmi de Mandrake urpmi installe les paquetages de la mme faon que la commande rpm mais gre en plus les dpendances. On peut comparer son utilisation avec le apt-get install de Debian.

4.5. {Ds}installation de programmes sous Linux/BSD urpmi paquetage urpme paquetage urpmf chier Options disponibles : force nodeps auto-select

dupont_s@epita.fr

installation du paquetage avec gestion des dpendances. dsinstallation du paquetage avec gestion des dpendances. urpmf permet de trouver le paquetage dorigine dun chier.

force linstallation du paquetage. ne vrie pas les dpendances du paquetage. slectionne automatiquement tous les paquetages qui doivent tre mis jour selon les paquetages dj installs et les paquetages lists dans les divers mdias enregistrs.

4.5.2

{Ds}installation de programmes sous *BSD

Il existe deux mthodes dinstallation sous BSD (NetBSD, FreeBSD, OpenBSD) Installation des paquetages pr-compils Tout comme pour les RPMS, il existe un utilitaire permettant dinstaller directement les paquetages : pkg_add paquetage.tgz pkg_delete paquetage pkg_info paquetage installation du paquetage avec gestion des dpendances. dsinstallation du paquetage avec gestion des dpendances. permet dafcher les informations relatives au paquetage concern.

De la mme faon que pour les RPMS pkg_add va rechercher les dpendances dans le rpertoire mme o lancera linstallation. A noter pour la dsinstallation de paquetage il est prfrable dutiliser le shell zsh car il permettra une compltions du nom du paquetage tel quil est reconnu par le systme. (indispensable sil lon ne veut pas passer son temps a rechercher le nom exact du paquetage.)

Installation des paquetages depuis les ports La deuxime particularit des BSD est de pouvoir installer automatiquement les diffrents paquetages, dpendance comprises, depuis les sources, celles-ci se situent dans un chier nomm ports.tar.gz. NOTA : ce chier contient la fois les Makeles et les patch raliss par lquipe des dveloppeurs *BSD, par contre, ce chier ne contient pas les sources proprement dites du paquetage mais elles seront tlcharges automatiquement. Vous laurez compris il sera prfrable davoir une connexion haut-dbit si vous souhaitez utiliser cette mthode dinstallation...

Administration et Scurisation des systmes Linux/BSD

33

Ainsi Il faudra dans un premier temps dcompresser ce chier avec la commande : tar xvfz ports.tar.gz -C /usr Ensuite si vous souhaitez installer le paquetage zsh vous devrez procder comme suit : cd /usr/ports/shells/zsh make make install NOTA : si vous ne souhaitez pas installer le paquetage mais simplement crer le chier zsh.tgz (utilisable avec) pkg_add il faudra taper la place de make install : make package Vous pourrez ainsi rcuprer le paquetage dans le rpertoires : /usr/ports/packetages/i386/All ou encore dans le rpertoire : /usr/ports/packetages/i386/shells

4.6
4.6.1

Les chiers de Conguration


/etc/rc.d/init.d/ sous Linux

le rpertoire /etc/rc.d/init.d/ contient tous les scripts de dmarrage des diffrents services. Pour dmarrer un service on lancera typiquement la commande : /etc/rc.d/init.d/nom_service start ou vous tes dj dans le rpertoire /etc/rc.d/init.d/ ./nom_service start bien sr les possibilites de ces scripts shell dinitialisation ne sarrtent pas a start : au minimum vous pourrez trouver start et stop, et en gnral vous trouverez : start, stop, status, restart, condrestart, reload.

4.6.2

/etc/inetd.conf sous *BSD ou /etc/xinetd sous Linux

inetd (respectivement xinted) dmarre les programmes fournissant des services Internet. Au lieu de dmarrer ces services au moment de linitialisation du systme, et de les laisser inactifs jusqu ce quil y ait une demande de connexion, on ne dmarre que inetd et celui ci coute sur tous les ports ncessaires aux services lists dans ses

4.6. Les chiers de Conguration

dupont_s@epita.fr

chiers de conguration. Lorsquune requte arrive, inetd dmarre le service correspondant. cause de la faon dont il fonctionne, inetd (comme xinetd) est aussi appel le super-serveur. Les services lists dans les chiers de conguration de inetd ou xinetd peuvent tre spars en 2 groupes. Les services du premier groupe sont dit multi-threaded et ils ncessitent que le processus pre cre un nouveau processus pour chaque nouvelle demande de connexion. Chaque processus gre alors une connexion. Pour de tels services, inetd continue dcouter pour prendre en charge de nouvelles demandes de connexions, et de lancer de nouveaux processus. Dun autre ct, le deuxime groupe est compos des services pour lesquels un seul dmon prend en charge toute les nouvelles requtes de connexion. De tels services sont appels single-threaded et inetd ne prendra plus en charge les requtes destines ce serveur tant que le serveur sera en service. Les services de cette catgorie sont habituellement de type datagramme. Jusqu prsent, la seule raison de lexistence dun super-serveur tait de prserver les ressources systme en vitant de crer de nombreux processus dont la plupart ne seront actifs que trs peu de temps. Tout en remplissant ces fonctions, inetd tire parti de lide du super-serveur pour ajouter des fonctionnalits telle que le contrle daccs et le logging. De plus, inetd ne se restreint pas aux services lists dans le chier /etc/services. Par consquent, tous le monde peut utiliser inetd pour dmarrer des services personnaliss.

4.6.3

/etc/passwd

Passwd est un chier de texte qui contient la liste des comptes sur le systme, ainsi que des informations utiles sur ces comptes, comme lidentication de lutilisateur, du groupe, le rpertoire personnel, le shell,etc. Actuellement, il est de plus en plus recommand dutiliser des systmes de masquage des mots de passe, comme shadow avec lequel le chier /etc/passwd contient des * la place des mots de passe, et o ces derniers sont stocks sous forme crypte dans /etc/shadow qui nest lisible que parle Super-utilisateur. Il doit y avoir, dans le chier des mots de passe, une ligne par utilisateur, avec le format suivant : account :passwd :UID :GID :GECOS :directory :shell Les divers champs sont les suivants : account Le nom que lutilisateur utilisera pour se connecter, il ne devrait normalement pas contenir de majuscules password La reprsentation encrypte (optionnelle) du mot de passe.

Administration et Scurisation des systmes Linux/BSD UID LID numrique de lutilisateur. GID LID numrique du groupe principal de lutilisateur.

35

GECOS Ce champ est optionnel et na quun rle informatif. Il contient gnralement le nom complet de lutilisateur. directory Le rpertoire de connexion de lutilisateur (variable d environnement $HOME). shell Le programme excuter aprs la phase de connexion (par dfaut /bin/sh). Si ce chier nexiste pas, lutilisateur ne pourra pas se connecter avec login(1).

4.6.4

/etc/master.passwd ou /etc/shadow

/etc/shadow contient les mots de passe crypts des utilisateurs ou plus exactement, le rsultat du cryptage dune chane de longueur nulle avec le mot de passe comme cl de cryptage ainsi quventuellement des informations sur lge des mots de passe : Nom de login. mot de passe crypt. Nombre de jours couls depuis le 1er janvier 1970 jusquau dernier changement de mot de passe Nombre de jours durant lesquels le mot de passe est encore valide Nombre de jours aprs lesquels le mot de passe doit tre chang. Nombre de jours avant lexpiration du mot de passe impliquant lavertissement de lutilisateur Nombre de jours aprs lexpiration provoquant la dsactivation du compte Numro du jour depuis le 1er janvier 1970 partir duquel le compte a t dsactiv Champs rserv Le champs mot de passe doit tre rempli. Le mot de passe crypt comprend 13 24 caractres pris dans lalphabet rduit a-z, A-Z, 0-9, . et /. Si le nombre minimum de jours requis est plus grand que le nombre maximum de jours de valid, ce mot de passe ne peut pas tre chang par lutilisateur. Un compte est considr comme inactif et est dsactiv si le mot de passe nest pas chang dans lintervalle spci aprs lexpiration du mot de passe. Un compte est galement dsactiv le jours indiqu quelque soit les autres informations dexpiration. Cette information est prioritaire sur toutes les autres champs prsents dans /etc/passwd. Ce chier ne doit pas tre accessible en lecture par les utilisateurs normaux an de maintenir la scurit des mots de passe, en particuliers contre les attaques aux dictionnaires.

Remarque Sur les systmes *BSD le chier /etc/shadow est remplac par le chier /etc/master.passwd

4.6. Les chiers de Conguration

dupont_s@epita.fr

4.6.5

/etc/group

/etc/group est un chier ASCII qui dnit les groupes auxquels appartient chaque utilisateur. Il y a une ligne par groupe, et chaque ligne a le format : nom_du_groupe :mot_de_passe :GID :liste_utilisateurs Les champs sont les suivants : nom_du_group Le nom du groupe. mot_de_passe Le mot de passe encrypt du groupe. Si ce champ est vide (presque toujours), aucun mot de passe nest ncessaire. GID LID numrique du groupe. liste_utilisateurs Tous les noms des membres du groupe, spars par des virgules.

4.6.6

/etc/fstab

Le chier fstab contient des informations sur les diffrents systmes de chiers. fstab est uniquement lus par les programmes, jamais crit. Cest la responsabilit de ladministrateur de crer et de maintenir ce chier correctement. Chaque systme de chier est dcrit sur une ligne indpendante. Les champs contenus sur chaque ligne sont spars par des espaces ou des tabulations. Lordre des enregistrements au sein de fstab est important car fsck(8), mount(8), et umount(8) utilisent squentiellement les enregistrements de fstab pour effectuer leurs travaux. les lignes fstab se compose comme suit : 1. Le premier champ (fs_spec), dcrit le priphrique bloc ou le systme de chiers distant a monter. 2. Le second champ (fs_le), indique le point de montage du systme de chier. Pour les partitions de swap ce champ doit tre spci comme none (aucun). 3. Le troisime champ (fs_vfstype), dcrit le type de systme de chiers. Le systme supporte actuellement les types suivants (et peut-tre dautres, voir /proc/lesystems) : ext2 systme de chiers local, noms de chiers longs, i-noeuds dtaills, et beaucoup dautres avantages. ext3 systme de chiers local, noms de chiers longs, i-noeuds dtaills, systme de chiers journalis. xiafs systme de chiers local, noms de chiers longs, i-noeuds dtaills, et dautres avantages.

Administration et Scurisation des systmes Linux/BSD msdos systme de chiers local pour les partitions MS-DOS. vfat systme de chiers local pour les partitions FAT32. NTFS systme de chiers local pour les partitions NTFS. HPFS systme de chiers local pour les partitions HPFS. ISO9660 systme de chiers local pour les CD-ROM. NFS systme de chiers distant par rseau. swap partition de disque utilise pour le swapping.

37

4. Si vfs_fstype est mentionn comme ignore, lenregistrement nest pas trait. Ceci permet de visualiser aisment les partitions non utilises. 5. Le quatrime champ (fs_mntops), indique des options de montage associes au systme de chiers. Il sagit dune liste doptions spares par des virgules. Il contient au moins le type de montage, suivi ventuellement doptions appropries au type de systme de chiers. async Toutes les entres/sorties sur le systme de chiers seront asynchrone. auto Peut tre mont par largument -a. defaults Utilisation des options par dfaut : rw, suid, dev, exec, auto, nouser, et async. dev Interprter les chiers spciaux de priphriques prsents sur le systme de chiers. exec Permettre lexcution de chiers binaires. noauto Ne peut tre mont quexplicitement (linvocation de mount avec largument -a ne montera pas le systme de chiers). nodev Ne pas interprter les chiers spciaux de priphriques prsents sur le systme de chiers. noexec Ne pas permettre lexcution de chiers binaires sur le systme de chiers mont. Ceci peut tre utile sur un serveur qui contient des chiers binaires pour des architectures autres que la sienne. nosuid Ne pas tenir compte des bits Set-UID ou Set-GID. nouser Ne pas autoriser dutilisateur ordinaire (non root) monter le systme de chiers. Cest le comportement par dfaut. remount Remonter un systme de chiers dj mont. Ceci est utilis pour changer les attributs de montage, principalement pour autoriser lcriture sur un systme en lecture seule. ro Montage du systme en lecture seule. rw Montage du systme en lecture/criture. suid Prendre en compte les bits Set-UID ou Set-GID des chiers se trouvant sur le systme mont.

4.6. Les chiers de Conguration

dupont_s@epita.fr

sync Toutes les entres/sorties sur le systme de chiers seront synchrones. user Autoriser les utilisateurs ordinaires (non root) monter le systme de chiers. Ceci entrane lutilisation des options noexec, nosuid, et nodev ( moins quelles ne soient explicitement surcharges, comme dans une ligne doption user,exec,dev,suid). 6. Le cinquime champ (fs_freq), est utilis par la commande dump(8) pour dterminer quels sont les systmes de chiers sauvegarder. Si le cinquime champ est absent ou vaut zro, dump supposera quil ne faut pas sauvegarder ce systme. 7. Le sixime champ (fs_passno), est utilis par le programme fsck(8) pour dterminer lordre de vrication des systmes de chiers au moment du dmarrage. Le systme de chiers racine doit avoir un champ fs_passno de valeur 1, et les autres un fs_passnode de valeur 2. Les systmes partageant le mme contrleur seront vris squentiellement, et ceux utilisant diffrents contrleurs seront vries simultanment pour utiliser le paralllisme offert par le matriel. Si le sixime champ est absent ou vaut zro, fsck ne vriera pas ce systme de chiers.

4.6.7

/etc/syslog.conf

Le service syslog sert a logger diverse informations dans des chier. Il est trs utile pour la scurit de votre machine car de nombreuse information sont enregistrer (les tentatives de connexion les services dmarrer.), son fonctionnement est congurable au travers du chier /etc/syslog.conf. Il contient deux champ ,le slecteur et laction. Le slecteur se compose de deux champs appeler facility et priority. Les valeur de facility identie le sous systme qui a mis le message. Les type dnis (dans /usr/include/syslog.h.) sont auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security (pareil que auth), syslog, user, uucp et de local0 a local7. Notons que security est obsolte et que mark est rserve a un usage interne. Largument priority sert a dnir le niveau de dtails de se qui doit tre logu. Les valeurs possible sont : debug, info , notice, warning, err , crit, alert, emerg.
# Various entry auth,authpriv.* *.*;auth,authpriv.none user.*

/var/log/auth.log -/var/log/syslog -/var/log/user.log

# Log anything (except mail) of level info or higher. # Dont log private authentication messages! *.info;mail.none;;news.none;authpriv.none -/var/log/messages # The authpriv file has restricted access. authpriv.* # Mail logging mail.=debug;mail.=info;mail.=notice

/var/log/secure

-/var/log/mail/info

Administration et Scurisation des systmes Linux/BSD


mail.=warn mail.err # Kernel logging kern.=debug;kern.=info;kern.=notice kern.=warn kern.err -/var/log/mail/warnings -/var/log/mail/errors

39

-/var/log/kernel/info -/var/log/kernel/warnings /var/log/kernel/errors

# Save mail and news errors of level err and higher in a # special file. uucp,news.crit -/var/log/spooler # Save boot messages also to boot.log local7.* *.info;mail.none;authpriv.none authpriv.* /dev/tty7 *.warn;*.err /dev/tty7 kern.* /dev/tty7 mail.* /dev/tty8 /dev/tty7

-/var/log/boot.log

4.6.8

/etc/hosts

hosts - Correspondances statiques de noms dhtes. Il sagit dun chier de texte simple qui associe les adresses IP avec les noms dhtes, une ligne par adresse IP. Pour chaque hte, une unique ligne doit tre prsente, avec les informations suivantes : Adresse_IP Nom_ofciel [Alias...] Les divers champs de la ligne sont spars par un nombre quelconque despaces ou de tabulations. Le texte commenant avec un caractre "#" et stendant jusqu la n de la ligne est considr comme un commentaire, et est donc ignor. Les noms dhtes peuvent contenir nimporte quel caractre imprimable autres que les dlimiteurs de champs, les saut de ligne ou le caractre de commentaire. Les alias permettent de disposer de noms diffrents, dorthographe simplies, de surnoms plus courts, ou de noms dhtes gnrique (comme localhost). Le systme Berkeley Internet Name Domain (BIND) implmente un serveur de noms Internet pour les systmes Unix. Il remplace le chier /etc/hosts ou la recherche des noms dhtes, et libre un hte de la ncessit de disposer dun chier /etc/hosts complet et jour. Dans les systmes modernes, mme si la table des htes a t remplace par DNS, ce mcanisme est encore largement employ pour :

Exemple : 127.0.0.1 localhost 192.168.1.217 foo.nomomaine.org foo 205.230.163.103 www.opensource.org

4.6. Les chiers de Conguration

dupont_s@epita.fr

4.6.9

/etc/resolv.conf

Le chier /etc/resolv.conf se compose de deux informations importantes que sont : nameserver qui dnit la machine sur laquelle devront tre transmisent les requtes DNS cest dire les machines permettant de transformer les adresses telles que www.google.fr en adresse IP. On voit ici quil est possible dusurper une adresse par une autre, il sera donc indispensable dutiliser une machine de conance. la deuxime information importante est search qui permettra de dnir le(s) domaines de recherche des adresses, ainsi lorsque lon tapera ssh seb@machine la recherche va donc se faire de prfrence avec lextension : ssh seb@machine.domain domain tant le champ suivant la valeur search.

4.6.10

/etc/services

services est un chier de texte ASCII fournissant une correspondance entre un nom intelligible dcrivant un service Internet et lensemble numro de port / protocole utilis. Chaque programme rseau devrait consulter ce chier pour obtenir le numro de port et le protocole sous-jacent au service quil fournit. Les fonctions de la bibliothque C getservent(3), getservbyname(3), getservbyport(3), setservent(3), et endservent(3) permettent dinterroger ce chier depuis un programme. Les numros de ports sont affects par le IANA (Internet Assigned Numbers Authority), et leur politique actuelle consiste assigner la fois les protocoles TCP et UDP chaque numro de port. Ainsi la plupart des services auront deux entres, mme si elles nutilisent que le protocole TCP. Les numros de ports en-dessous de 1024 ne peuvent tre assigns une socket que par un programme Super-User (voir bind(2), tcp(7), et udp(7).) Cest ainsi que les clients se connectant sur ces ports de petits numros peuvent tre srs que le service correspondant est une implmentassions standard et non pas le bricolage dun utilisateur. La prsence dune ligne indiquant un service dans le chier services ne signie pas ncessairement que le service en question est disponible sur la machine. Notez que tous les services rseau ne sont pas obligatoirement lancs par inetd ou xinetd, et donc pas toujours dans xinetd.d ou inetd.conf. En particulier les serveurs de News (NNTP) et de courrier (SMTP) sont souvent initialiss par le systme dans les scripts de dmarrage. Chaque ligne dcrivant un service est de la forme service-name port/protocole [alias ...] voici un exemple simpli des entres dans /etc/services :
ftp-data ftp ssh\index{ssh} ssh 20/tcp 21/tcp 22/udp # default ftp data port 22/tcp

Administration et Scurisation des systmes Linux/BSD


telnet 23/tcp # 24 - private \index{smtp} 25/tcp # 26 - unassigned domain 53/tcp domain 53/udp bootps 67/tcp bootps 67/udp bootpc 68/tcp bootpc 68/udp www 80/tcp www 80/udp pop3 110/tcp pop3 110/udp sftp 115/tcp nntp 119/tcp imap 143/tcp imap 143/udp irc 194/tcp irc 194/udp imap3 220/tcp imap3 220/udp # new for imap ssl imaps 993/tcp pop3s 995/tcp https 443/tcp nfsd 2049/udp nfsd 2049/tcp # # Unofficial services # rsync 873/tcp mysql 3306/tcp pserver 2401/tcp # secure http (SSL) # NFS server # NFS server

41

mail nameserver nameserver # BOOTP server # BOOTP client http # WorldWideWeb HTTP # HyperText Transfer Protocol # POP version 3 # name-domain server

readnews untp imap2 imap2

# # # #

USENET News Transfer Protocol Internet Message Access Proto Internet Message Access Proto Internet Relay Chat

# Interactive Mail Access # Protocol v3

nfs nfs

# rsync server # MySQL

4.6.11

/etc/sudoers

Sudo permet un utilisateur dexcuter une commande en tant que super-utilisateur (ou autre), comme il la t spci dans le chier /etc/sudoers. Par dfaut il sera demander le mot de passe de lutilisateur, mais il reste possible de le dsactiver comme on peut le voir dans lexemple suivant : # User privilege specication root ALL=(ALL) ALL # %wheel ALL=(ALL) ALL # Same thing without a password # %wheel ALL=(ALL) NOPASSWD : ALL seb ALL=(ALL) NOPASSWD : ALL Remarque sudo est un programme facilitant les commandes super-utilisateur nanmoins cest

4.6. Les chiers de Conguration

dupont_s@epita.fr

un programme SUID dangereux. Qui a fait rcemment lobjet dune faille de scurit via buffer-overow.

CHAPITRE 5 Administration Rseaux

5.1

La scurit du systme
N

systme dexploitation nest jamais able 100%. Ainsi, des failles ont t dceles sous Linux en terme de gestion rseau. Par exemple, avec la commande inetd, il tait possible de faire planter un serveur Linux qui accepte les connexions TCP, par ooding (inondation) de requtes vers celui-ci. Une cinquantaine de requtes font que le serveur va refuser les connexions inetd, parce que le serveur aura plant. Cela marche pour tous les services sous inetd, donc ftpd, identd... Bien videmment, ds que cette faille fut dcele, une nouvelle version corrige du noyau et des applications avait corrig ce problme. Ds que le noyau est modi, il est ncessaire de le recompiler et de redmarrer la machine pour prendre en compte les nouveaux paramtres : pratiquement, ces mises jour doivent donc tre ralises en dehors des heures dutilisation de la machine. Dans le cas dune machine Linux congure en routeur , il ne faudra mettre jour le noyau uniquement si une faille importante mettant en jeu la scurit du rseau est dcele, la trop grande frquence des mises jour pouvant nuire srieusement aux utilisateurs du rseau. Pour rajouter des fonctions particulires au noyau sans avoir recompiler obligatoirement ce dernier, on utilise des modules. Ce sont des morceaux de code chargs dynamiquement, permettant dajouter des pilotes de priphriques matriels, des protocoles rseaux... Les modules sont excuts dans lespace mmoire du noyau : ils possdent un contrle total de la machine, ils peuvent dtourner ou crer un appel systme. Les modules ont la fois des avantages et des inconvnients :

43

5.2. IP Aliasing

dupont_s@epita.fr

ils permettent aux administrateurs doptimiser la scurit du systme : mettre jour un pilote, surveillance de lactivit du systme (chiers LOG), ils permettent galement aux pirates dattaquer la scurit du systme : appels systme nfastes, accs aux chiers LOG (modications, suppression), changement des droits, lancement de processus cachs, mise en place de portes drobes... Pour plus dinformations sur les modules, consulter le site suivant : http ://dione.ids.pl/ lcamtuf/pliki.html : de nombreuses sources de modules ou de patchs noyaux pour Linux 2.0.3x ou 2.2.x, la majorit en polonais malheureusement.

5.2

IP Aliasing

LIP aliasing est fonctionnalit trs intressante qui permet daffecter plusieurs IP la mme carte rseau. Le seul problme viens du fait que lon ne pourra pas affecter les rgles sur ces interfaces au rewall, en effet Netlter (IPtables) ne le supporte pas. Il sera donc ncessaire de donner des rgles sur les adresses IP ce qui affaiblira la abilit et la rapidit de celui-ci. Systme Linux BSD commande ifcong eth0 :1 192.168.1.45 netmask 255.255.255.0 ifcong xl0 192.168.1.45 netmask 255.255.255.0 alias

Nota sous Linux il sufra donc dajouter :1, :2 la n de la carte rseau concerne. Sous *BSD il sufra de mettre alias la n de la commande ifcong.

5.3

Installation dun client/serveur SSH

Installation du serveur SSH SSH (Secure Shell, port 22) est un aujourdhui la faon la plus utilise pour se connecter sur une autre machine. En effet lors de la connexion le mot de passe ainsi que les donnes sont cryptes, ce qui vite aux sniffer de pouvoir capturer les mots de passe et les donnes transitants sur le rseau. installation Systme RedHat Mandrake Debian OpenBSD commande dinstallation rpm -Uvh openssh-server-*.rpm urpmi openssh-server apt-get install openssh par defaut inclus par defaut.(car crateur !) dmarrage du service service sshd start /etc/rc.d/init.d/sshd start /etc/rc.d/init.d/sshd start /sbin/sshd

Administration et Scurisation des systmes Linux/BSD

45

conguration le chier de conguration se trouve dans /etc/ssh/sshd_cong les options les plus intressantes sont : #Port 22 spcie le port que le serveur doit utiliser. Protocol 2,1 Protocol utilis #LoginGraceTime 600 Temps de connexion maximum #PermitRootLogin yes permet ou interdit la connexion root #RSAAuthentication yes Mthode dauthentication. #AuthorizedKeysFile .ssh/authorized_keys chier utilis pour lautologin #PermitEmptyPasswords no permet ou non les mots de passe vide X11Forwarding yes permet ou non dexporter le DISPLAY Remarques Il plus que prfrable dajouter ces lignes votre sshd_cong : ClientAliveInterval 15 ClientAliveCountMax 3 an dviter quune connexion morte (ex : client dbranch) ne fasse lobjet dune rcupration de session. Connexion SSH sur une autre machine ssh toto@192.168.0.2

NOTA : 1. Pour les connections ssh sans donner de mot de passe (ex. scripts de backups) vous trouverez toute la procdure dans la section Astuces/Connexion SSH sans mot de passe.

5.4

Mise en place dun serveur mail. SMTP

SMTP (Simple Mail Transfer Protocol, port 25), cest le protocole utilis pour envoyer des mails. le standart reste sendmail compte tenu de sa stabilit en environnement intensif. Nanmoins nous tudierons dautres serveurs de mail tels que postx qui sont inclus par defaut sur certaines distributions, mme sils ne disposent pas de la solidit de sendmail.

5.4.1

Mise en place de Postix

installation

5.4. Mise en place dun serveur mail. SMTP Systme RedHat Mandrake Debian OpenBSD NetBSD commande dinstallation rpm -Uvh postx-*.rpm urpmi postx apt-get install exim sendmail inclus par defaut. sendmail inclus par defaut.

dupont_s@epita.fr

dmarrage du service service postx start /etc/init.d/postx start /etc/init.d/exim start /usr/sbin/sendmail -L sm-mta -bd -q30m /etc/rc.d/sendmail start

Conguration de Postix An dobtenir un serveur de base il vous faudra modier simplement le chier /etc/postx/main.cf : 1. dcommenter la ligne commenant par #myhostname = 2. myhostname = nom_de_votre_machine 3. /etc/rc.d/init.d/postx start

5.4.2

Mise en place de Sendmail

installation Systme RedHat Mandrake Debian OpenBSD NetBSD commande dinstallation rpm -Uvh sendmail-*.rpm urpmi sendmail apt-get install sendmail sendmail inclus par defaut. sendmail inclus par defaut. dmarrage du service service postx start /etc/init.d/postx start /etc/init.d/exim start /usr/sbin/sendmail -L sm-mta -bd -q30m /etc/rc.d/sendmail start

Conguration de Sendmail La conguration de sendmail livre avec Linux/BSD convient des sites directement connects lInternet. Modier /etc/mail/sendmail.cf la main est gnralement considr comme une occupation de puriste. La version 8 de sendmail saccompagne dune nouvelle manire de gnrer les chiers de conguration avec le prprocesseur m4, grce auquel le travail de conguration la main se fait un niveau dabstraction plus lev. Ainsi pour congurer sendmail vous pourrez vous inspirer du chier sendmail.mc ci-dessous. Cette version a t congure pour un NetBSD-1.6 il vous faudra donc modier certains des champs : ce sera le cas par exemple pour lemplacement du chier cf.m4 include(/usr/share/sendmail/m4/cf.m4)

Administration et Scurisation des systmes Linux/BSD ou encore le champ dnissant le type dOS utilis : OSTYPE(bsd4.4)dnl

47

Vous aurez srement remarqu les dnl la n des champs, il sont en effet ncessaire si vous voulez que sendmail accepte le chier gnr. On peut sen passer mais il faudra alors sassurer quil nexiste pas despace en n de ligne. Enn une fois ce chier personnalis il sufra de tapper la commande : m4 sendmail.mc > /etc/mail/sendmail.cf pour gnr le chier sendmail.cf utilis par sendmail.

5.4.3

sendmail.mc personnalis

divert(-1) dnl les lignes commencent par dnl napparaiteront pas dnl dans le fichier sendmail.cf gnr contrairement aux dnl lignes commenant par un dise. divert(0)dnl #___________________ Version __________________________________________________ include(/usr/share/sendmail/m4/cf.m4) VERSIONID($Id: secubook.tex,v 1.2 2002/12/27 01:01:25 seb Exp $) OSTYPE(bsd4.4)dnl #___________________ Options Diverses ________________________________________ # # ne fait pas de requtes dns ?? FEATURE(nocanonify) # Message daccueil lors de connection a sendmail # par defaut on a: ($j Sendmail $v/$Z; $b) # confSMTP_LOGIN_MSG($j Sendmail $Z; $b bienvenue ...) # !!! DONT Work !!! Cw samaro.org # #___________________ Restrictions daccs _____________________________________ # FEATURE(masquerade_envelope)dnl # FEATURE(always_add_domain)dnl # FEATURE(redirect)dnl # # FEATURE(relay_entire_domain) # # accepte de relayer le courrier uniquement # depuis les htes de /etc/hosts FEATURE(relay_hosts_only)dnl # # accepte de relayer les mails des utilisateurs+domaines # nappartenant pas au serveur. FEATURE(accept_unqualified_senders)dnl # # Utilisateurs ayant le droit de modifier le champ From: # lors de lenvoie dun mail: FEATURE(use_ct_file)dnl

5.4. Mise en place dun serveur mail. SMTP

dupont_s@epita.fr

define(confCT_FILE,/etc/mail/trusted-users)dnl # # gestion liste noire: consulte rbl.maps.vix.com # avant daccepter le mail. # on peut spcifier un autre serveur FEATURE(rbl, rbl.hote.org) FEATURE(dnsbl) # # permet davoir un accs simplifie aux htes, les rgles # sont: OK (accepte), RELAY (accepte de relayer), REJECT (rejette) # DISCARD (ignore). exemple: # toto@toto.fr REJECT # free.fr OK # ... # base gnre par makemap hash /etc/mail/access.db < /etc/mail/access # FEATURE(access_db)

#___________________ domaines virtuels ________________________________________ # # permet daccepter les mails dautres domaines FEATURE(use_cw_file) # # permet de spcifier les domaines en question # dans le fichier /etc/virtualnames # exemple: # free.fr # ... # define(confCW_FILE,/etc/mail/virtualnames) # Il est galement possible de rediriger tout un domaine virtuel # vers un seul utilisateur ou plusieurs: # makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable FEATURE(virtusertable) # # La configuration se fait dans le fichier /etc/mail/virtusertable # exemple: # @toto.org seb # test@titi.fr john #______________________________________________________________________________ # MAILER(local) MAILER(smtp)

5.4.4

sendmail.mc compatible avec Cyrus-Imapd

divert(-1) dnl les lignes commencent par dnl napparaiteront pas dnl dans le fichier sendmail.cf gnr contrairement aux dnl lignes commenant par un dise. divert(0)dnl #___________________ Version __________________________________________________ include(/usr/share/sendmail/m4/cf.m4) VERSIONID($Id: secubook.tex,v 1.2 2002/12/27 01:01:25 seb Exp $) OSTYPE(bsd4.4)dnl

#___________________ ssi cyrus_________________________________________________

Administration et Scurisation des systmes Linux/BSD


# ne laisser ces lignes ssi on utilise cyrus-imapd define(confBIND_OPTS,-DNSRCH -DEFNAMES) define(confLOCAL_MAILER, cyrus)

49

#___________________ Options Diverses ________________________________________ # # ne fait pas de requtes dns ?? FEATURE(nocanonify) # Message daccueil lors de connection a sendmail # par defaut on a: ($j Sendmail $v/$Z; $b) # confSMTP_LOGIN_MSG($j Sendmail $Z; $b bienvenue ...) # !!! DONT Work !!! Cw samaro.org # #___________________ Restrictions daccs _____________________________________ # FEATURE(masquerade_envelope)dnl # FEATURE(always_add_domain)dnl # FEATURE(redirect)dnl # # FEATURE(relay_entire_domain) # # accepte de relayer le courrier uniquement # depuis les htes de /etc/hosts FEATURE(relay_hosts_only)dnl # # accepte de relayer les mails des utilisateurs+domaines # nappartenant pas au serveur. FEATURE(accept_unqualified_senders)dnl # # Utilisateurs ayant le droit de modifier le champ From: # lors de lenvoie dun mail: FEATURE(use_ct_file)dnl define(confCT_FILE,/etc/mail/trusted-users)dnl # # gestion liste noire: consulte rbl.maps.vix.com # avant daccepter le mail. # on peut spcifier un autre serveur FEATURE(rbl, rbl.hote.org) FEATURE(dnsbl) # # permet davoir un accs simplifie aux htes, les rgles # sont: OK (accepte), RELAY (accepte de relayer), REJECT (rejette) # DISCARD (ignore). exemple: # toto@toto.fr REJECT # free.fr OK # ... # base gnre par makemap hash /etc/mail/access.db < /etc/mail/access # FEATURE(access_db)

#___________________ domaines virtuels ________________________________________ # # permet daccepter les mails dautres domaines FEATURE(use_cw_file) # # permet de spcifier les domaines en question # dans le fichier /etc/virtualnames # exemple: # free.fr # ...

5.5. installation & conguration dApache


# define(confCW_FILE,/etc/mail/virtualnames) # Il est galement possible de rediriger tout un domaine virtuel # vers un seul utilisateur ou plusieurs: # makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable FEATURE(virtusertable) # # La configuration se fait dans le fichier /etc/mail/virtusertable # exemple: # @toto.org seb # test@titi.fr john

dupont_s@epita.fr

#______________________________________________________________________________ # MAILER(local) MAILER(smtp) #______________________________________________________________________________ # a dcommenter pour que les mail arrive directement # dans cyrus si les rgles: # LOCAL_RULE_0 # Rbb + $+ < @ $=w . > $#cyrusbb $: $1 # ne sont pas acceptes: #define(CYRUS_MAILER_FLAGS,A5@S) #define(confLOCAL_MAILER,cyrus) MAILER(cyrus) #___________________ ssi cyrus_________________________________________________ LOCAL_RULE_0 Rbb + $+ < @ $=w . > $#cyrusbb $: $1

5.5

installation & conguration dApache

Apache est un serveur HTTP (Hyper Transfert Protocol, port 80), il est aujourdhui le serveur web le plus utilis sur internet.

installation Systme RedHat Mandrake Debian OpenBSD commande dinstallation rpm -Uvh apache-*.rpm urpmi apache apt-get install apache apache inclus par defaut. dmarrage du service service httpd start /etc/init.d/httpd start /etc/init.d/httpd start httpd

httpd.conf le chier de conguration le plus important pour la conguration dapache est httpd.conf que lon trouvera sur les diffrentes distributions :

Administration et Scurisation des systmes Linux/BSD Systme RedHat Mandrake Debian OpenBSD emplacement de httpd.conf /etc/httpd/conf/httpd.conf /var/www/conf/httpd.conf rpertoire du serveur /var/www/html /var/www/htdocs

51

lintrieur de ce chier on trouvera les principales variables que sont : ServerRoot /etc/httpd DocumentRoot /var/www/html ErrorLog logs/error_log ServerAdmin root@localhost DirectoryIndex index.html LoadModule User et Group HostNameLookups (on/off) Port le chemin o trouver les chiers de conguration. le chemin par dfaut pour trouver les chiers du site. lemplacement ou crire les logs derreur. mail de ladministrateur du site. Dnie lordre de prfrence des chiers ouvrir dans chaques rpertoires. permet dajouter un module Apache (ec : php, etc...) Nom et Groupe sous lequel tournera Apache indique Apapche sil doit rechercher systmatiquement les noms des htes (peut ralentir les requtes) cest le numro de port que Apache coutera. (80)

test de la conguration Pour tester la conguration dApache il existe une option apachectl : apachectl congtest

limitations daccs pour gnrer le chier .htpasswd il suft de taper la commande : htpasswd [-c] .htpasswd username puis chmod 644 .htpasswd ensuite il faut gnrer le chier .htaccess en y insrant : AuthUserFile /var/www/html/private AuthGroupFile /dev/null AuthName TITRE AuthType Basic <limit GET> require valid-user </Limit> puis chmod 644 .htaccess chemin o lon pourra trouver le chier htpasswd si lon utilise pas de group on note /dev/null titre de la fentre de dialogue

5.6. installation & conguration dApache scuris

dupont_s@epita.fr

5.6

installation & conguration dApache scuris

Cration du certicat DSA du serveur (sous OpenBSD) cd /etc/ssl openssl dsaparam 1024 -out dsa1024.pem openssl req -x509 -nodes -newkey dsa :dsa1024.pem -out /etc/ssl/dsacert.pem -keyout /etc/ssl/private/dsakey.pem Cration du certicat RSA pour le serveur web (sous OpenBSD) cd /etc/ssl openssl genrsa -out /etc/ssl/private/server.key 1024 openssl req -new -key /etc/ssl/private/server.key -out /etc/ssl/private/server.csr Enn on auto-signe notre certicat.... openssl x509 -req -days 365 -in /etc/ssl/private/server.csr -signkey /etc/ssl/private/server.key -out /etc/ssl/server.crt Dmarrage du serveur web avec support SSL (sous OpenBSD) Il suft de replacer, dans le chier /etc/rc.conf, la ligne httpd_ags= par httpd_ags=-DSSL ou de lancer en ligne de commande httpd -DSSL.

5.7

installation dun serveur ftp

FTP (File Transfer Protocol, port 21), comme son nom lindique cest le protocole utilis pour le transfert de chiers. Le serveur FTP le plus rpandu aujourdhui est wuftpd, nanmoins compte tenu des rcents gros problmes de scurit il est conseill dutiliser une version rcente. installation Systme RedHat Mandrake Debian OpenBSD commande dinstallation rpm -Uvh proftpd-*.rpm urpmi proftpd inclus par defaut inclus par defaut. nanmoins il faudra ajouter un utilisateur ftp : useradd -m ftp dmarrage du service service proftpd start /etc/init.d/proftpd start dcommentez la ligne ftp dans inetd.conf dcommentez la ligne ftp dans inetd.conf

Remarque : Pour les Distributions BSD et Debian il sufra de redmarrer le service inetd pour dmarrer le serveur : kill -HUP cat /var/run/inetd.pid

Administration et Scurisation des systmes Linux/BSD

53

serveur ftp normal Ensuite si lon souhaite restreindre laccs de certains utilisateurs, il suft dajouter un entr au chier /etc/ftpusers pour que celui ne puisse plus accder au serveur ftp.
root@ramses /etc # more ftpusers root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody

serveur ftp anonyme anonftp est un path qui permet de se connecter en mode anonyme dans le rpertoire /var/ftp. Systme RedHat Mandrake Debian OpenBSD commande dinstallation rpm -Uvh anonftp-*.rpm urpmi proftpd-anonymous inclus par defaut inclus par defaut. il suft de modier le chier /etc/inetd.conf et dajouter -AUS la n de la ligne contenant ftp, le rpertoire par defaut sera celui de lutilisateur ftp

Remarque : Pour se connecter en mode anonyme, il suft lors de la phase dauthentication dentrer anonymous et comme mot de passe votre adresse mail

5.8

installation du proxy Squid

Un serveur proxy permet dacclrer lapparition des pages web sur le navigateur. en effet il utilise une partie du disque dur comme cache et vite ainsi daller chercher une page identique plusieurs fois sur le serveur distant. SQUID est le plus populaire des proxy sous Linux/Unix dune grande stabilit, il supporte les protocoles FTP, HTTP, gopher, SSL. il permet de plus une authentication des clients par login/pass utile si lon ne souhaite pas utiliser lIPmasquerade. SQUID permet aussi dinterdire laccs certaines pages.

5.8. installation du proxy Squid Installation Systme RedHat Mandrake Debian OpenBSD commande dinstallation rpm -Uvh squid-*.rpm urpmi squid apt-get install squid pkg_add squid-*.tgz dmarrage du service service squid start /etc/init.d/squid start /etc/init.d/squid start /usr/local/bin/squid

dupont_s@epita.fr

Conguration Voici un exemple de conguration de squid : (/etc/squid/squid.conf) : http_port 3128 hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin no_cache deny QUERY cache_mem 40 MB cache_dir ufs /var/squid/cache 500 16 256 cache_access_log /var/squid/logs/access.log cache_log /var/squid/logs/cache.log acl all src 0.0.0.0/0.0.0.0 acl localnet src 192.168.0.0/255.255.0.0 acl manager proto cache_object acl Safe_ports port 80 21 443 1025-65535 acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl CONNECT method CONNECT http_access allow localnet http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access deny all icp_access allow all cache_mgr seb@mail_administrateur.fr visible_hostname cache.domain.org port utilis pour le serveur.

taille maximum alloue dans la mmoire vive !. rpertoire ou placer le cache.

dnition de la source all dnition de localnet

dnition de localhost ports scuriss permissions pour localnet permissions pour localhost

Proxy transparent. Un proxy transparent est un proxy que les clients nauront pas besoin de congurer. En effet le va automatiquement rediriger tous les paquets a destination du port 80 vers ladresse IP du proxy sur le port du proxy (dans notre cas 3128). Nanmoins il sera indispensable dajouter ces lignes au chier de conguration de squid.

Administration et Scurisation des systmes Linux/BSD httpd_accel_with_proxy on httpd_accel_uses_host_header on httpd_accel_host localnet httpd_accel_host virtual httpd_accel_host CACHE

55

Navigation anonyme. Pour liminer un maximum dinformations sur les clients il est possible de restreindre les balises normalement envoyes aux diffrents serveurs, pour cela il sufra dajouter ces lignes a la n du chier /etc/squid/squid.conf. anonymize_headers allow Allow Authorization Cache-Control anonymize_headers allow Content-Encoding Content-Length anonymize_headers allow Content-Type Date Expires Host anonymize_headers allow If-Modied-Since Last-Modied anonymize_headers allow Location Pragma Accept anonymize_headers allow Accept-Encoding Accept-Language anonymize_headers allow Content-Language Mime-Version anonymize_headers allow Retry-After Title Connection anonymize_headers allow Proxy-Connection Remarque An de crer la zone de cache il faudra effectuer la commande squid -z sur les systmes *BSD.

5.9

installation dun serveur samba

Samba est un systme de chier rseaux permettant de partager des chier entre des systmes Linux et Windows cest un portage des chiers partags sous Windows. Il est ainsi possible de partager des rpertoires ou des imprimantes avec des systmes Windows.

Installation Systme RedHat Mandrake Debian OpenBSD commande dinstallation rpm -Uvh samba-*.rpm urpmi samba apt-get install samba pkg_add samba-*.tgz dmarrage du service service samba start /etc/init.d/smbd start /etc/init.d/nmbd start /etc/init.d/smbd start /usr/local/libexec/smbd -D /usr/local/libexec/nmbd -D

5.9. installation dun serveur samba /etc/smb.conf [global] server string = Linux Samba Server workgroup = SAMARO smb passwd le = /etc/samba/smbpasswd security = user

dupont_s@epita.fr

# nom du serveur

# share permet la connexion # dutiliateurs qui nexistent # pas sur le serveur.

allow hosts = 192.168.0. 127. dns proxy = no encrypt passwords = yes null passwords = yes log le = /var/log/samba/log.%m printing = cups load printers = yes printcap name = lpstat max log size = 50 [homes] comment = Home Directories browseable = no writable = yes [patage] comment = documents partages path = /var/docs writable = yes public = yes browseable = yes [printers] comment = Lexmark under linux browseable = yes printable = yes public = yes directory = /tmp

# permet la comptabilit entre # windows et linux

# denit le type dimprimante #partage de toutes les imprimantes # imprimantes congures # ici qui seront prises en compte

#description #permet lcriture #aucun mot de passe nest demand # apparat dans le rseau du client #description de limprimante # le partage est une imprimante #rpertoire qui va servir de spool

/etc/samba/smbpasswd pour ajouter un utilisateur on tape simplement en tant que root : smbpasswd -a utilisateur on obtiendra ainsi :

Administration et Scurisation des systmes Linux/BSD seb :1000 :90F4B09D49F396ABBA2CF1C :[U ] :LCT-3C909D46 root :0 :C9DA7B438 :CC870177CA0JJHGD :[U ] :LCT-3C9CEB3C

57

5.10

installation dun serveur pop3{s}

POP (Post Ofce Protocol, port 110), fournit de base par la majorit de fournisseurs daccs Internet, POP permet de rcuprer son courrier sur un serveur distant. Il moins volu que IMAP qui permet en plus de stocker et de trier son courrier directement sur le serveur. Installation Systme RedHat Mandrake Debian OpenBSD commande dinstallation rpm -Uvh gnu-pop3d-*.rpm urpmi gnu-pop3d inclus par defaut. inclus par defaut. dmarrage du service service xinetd restart /etc/init.d/xinetd restart via /etc/inetd.conf via /etc/inetd.conf

utilisation Pour congurer ce service il suft dditer les chiers *pop3* du rpertoire /etc/xined.d Remarques Il est bien sur recommand dutiliser pop3s par rapport pop3, en effet an dviter les problmes de snifng qui sont extrmement performants pour les accs non scuriss. De plus il ne sera pas ncessaire dinstaller un serveur pop3 si vous comptez installer un serveur imap car les serveurs imap possdent par defaut un serveur pop3. Cration du certicat (sous OpenBSD) cd /etc/ssl openssl req -new -x509 -nodes -out ipop3d.pem -keyout ipop3d.pem -days 3650

5.11

Installation dun serveur imap{s}

IMAP (Internet Message Access Protocol, port 143), IMAP permet de stocker de classer et de trier son courrier directement sur le serveur. Lavantage de ce protocole est de limit les transferts rseaux et dtre compatible avec tous les clients de messagerie actuels (ie que vous utilisiez gnus ou outlook vous garderez et utiliserez vos dossiers de la mme faon). Il existe aujourdhui deux types de serveurs le premier, trs simple mettre en place,

5.11. Installation dun serveur imap{s}

dupont_s@epita.fr

a t dvelopp par lUniversit de Washington, il est recommand si vous souhaitez avoir un serveur de ce type sans trop deffort, nanmoins il existe de nombreuses failles de scurit et nest donc pas recommand en environnement entreprise. Le deuxime, la fois un peu plus compliqu a installer mais aussi et surtout trs stable, plus scuris (SASL) et prvu pour soutenir de grosses charges est Cyrus Imapd, dvelopp par lUniversit Carnegie Mellon. En plus du reste Cyrus Imapd supporte les acl (tires du NTFS) et qui permet dtablir des droits plus dtaills par chiers, il sera possible en effet dajouter des droits de lecture seule pour certains utilisateurs, etc. Les acl permettent de donner les droits : l lookup : lutilisateur peut voir quune mailbox existe. r read : lutilisateur peut lire et copier les messages de la mailbox. s seen : voir et garde par utilisateur ltat lu. w write : lutilisateur peut modier ltat du message sauf seen et deleted. i insert : lutilisateur peut insrer un nouveau message dans la mailbox. p post : lutilisateur peut poster depuis un message de la mailbox. c create : lutilisateur peut crer, renommer les sous-dossiers. d delete : lutilisateur peut supprimer des messages. a administrer : lutilisateur peut changer les acl de la mailbox.

5.11.1

Installation dun serveur imap U.Washington

Installation Systme RedHat Mandrake Debian OpenBSD commande dinstallation rpm -Uvh imap-*.rpm urpmi imapd apt-get install wu-imapd. pkg_add imap-wu-*.tgz dmarrage du service service imapd start /etc/init.d/imapd start /etc/init.d/imapd start via /etc/inetd.conf

Remarques mme remarque que pour pop3, prfrez imaps imap autant que possible. Cration du certicat (sous OpenBSD) cd /etc/ssl openssl req -new -x509 -nodes -out imapd.pem -keyout imapd.pem -days 3650 Ce serveur stocke les messages dans le $HOME de lutilisateur.

Administration et Scurisation des systmes Linux/BSD

59

5.11.2

Installation dun serveur imap Cyrus

Installation Systme RedHat Mandrake Debian OpenBSD NetBSD commande dinstallation rpm -Uvh cyrus-imapd-*.rpm urpmi cyrus-imapd apt-get install cyrus-imapd. non dispo pkg_add cyrus-imap-*.tgz dmarrage du service non inclus par defaut /etc/init.d/imapd start /etc/init.d/imapd start /etc/rc.d/cyrus start

Mise en place sous NetBSD 1. cration du chier /usr/pkg/etc/imapd.conf : congdirectory : /var/imap partition-default : /var/spool/imap sieveusehomedir : true hashimapspool : false partition-news : /var/spool/imap-news newsspool : /var/spool/news admins : cyrus sasl_pwcheck_method : saslauthd tls_cert_le : /var/imap/server.pem tls_key_le : /var/imap/server.pem 2. mise en place du rpertoire de conguration : cd /var mkdir imap chown cyrus imap chgrp mail imap chmod 750 imap 3. mise en place du rpertoire de stockage : cd /var/spool mkdir imap chown cyrus imap chgrp mail imap chmod 750 imap 4. si vous souhaitez utiliser sieve : cd /usr mkdir sieve chown cyrus sieve chgrp mail sieve chmod 750 sieve

5.12. installation dun serveur DHCP 5. script dinitialisation : su cyrus /usr/pkg/cyrus/bin/mkimap exit

dupont_s@epita.fr

6. Ne pas oublier de modier la conguration de sendmail an que les messages naillent plus dans /var/mail mais directement dans les dossiers IMAP : il faudra donc ajouter a votre sendmail.mc : dene(confLOCAL_MAILER, cyrusv2) MAILER(cyrusv2) Cration du certicat (sous NetBSD) cd /var/imap openssl req -new -x509 -nodes -out server.pem -keyout server.pem -days 365

5.12

installation dun serveur DHCP

conguration dynamique des htes et le protocole de dmarrage par Internet (BOOTP). DHCP permet des htes appartenant un rseau TCP/IP de demander et dobtenir laffectation dadresses IP, mais aussi de dcouvrir les informations relatives au rseau auquel ils sont rattachs. BOOTP fournit des fonctionnalits similaires, mais avec quelques restrictions. Le protocole DHCP permet un hte, qui est inconnu de ladministrateur rseau, dobtenir laffectation dune nouvelle adresse IP parmi un ensemble dadresses pour ce rseau. Pour ce faire, ladministrateur du rseau alloue un ensemble dadresses dans chaque sous-rseau et les dclare dans le chier dhcpd.conf(5). Au dmarrage, dhcpd lit le chier dhcpd.conf et stocke en mmoire la liste des adresses disponibles dans chaque sous-rseau. Lorsquun client demande une adresse en utilisant le protocole DHCP, dhcpd lui en attribue une. Chaque client reoit son adresse en concession : la concession expire au bout dune dure choisie par ladministrateur (par dfaut, une journe). Les clients qui ont reu une adresse sont supposs renouveler la concession avant expiration, pour pouvoir continuer lutiliser. Une fois que la dure de la concession sest coule, le client titulaire nest plus autoris utiliser ladresse IP quil avait reue. Pour garder la trace des concessions accordes en dpit des redmarrages du serveur, dhcpd inscrit la liste des concessions attribues dans le chier dhcpd.lease(5). Avant daccorder une concession un hte, dhcpd enregistre lattribution dans ce chier et sassure que le contenu du chier est recopi sur le disque. Ceci permet dtre sr que, mme dans le cas dun crash systme, dhcpd noubliera rien dune concession qui a t accorde. Au dmarrage, aprs avoir lu le chier dhcpd.conf, dhcpd lit le chier dhcpd.leases pour mettre jour sa mmoire propos des concessions qui ont t accordes.

Administration et Scurisation des systmes Linux/BSD Installation Systme RedHat Mandrake Debian OpenBSD commande dinstallation rpm -Uvh dhcp-server-*.rpm urpmi dhcp-server apt-get install dhcpd par defaut dmarrage du service service dhcpd start /etc/init.d/dhcpd start /etc/init.d/dhcpd start dhcpd nom_carte

61

conguration /etc/dhcpd.conf server-identier ns.exemple.fr ; default-lease-time 36000 ; max-lease-time 144000 ; ddns-update-style interim ; deny unknown-clients ;

subnet 172.253.111.0 netmask 255.255.255.0 { range 172.253.111.32 172.253.111.127 ; option domain-name "g11.epita.fr" ; option domain-name-servers 172.253.111.1 ; option routers 172.253.111.1 ; option subnet-mask 255.255.255.0 ; ddns-updates on ; ddns-domainname "ns.exemple.fr" ; # ddns-rev-domainname "in-addr.arpa" ;

host pdc { hardware ethernet 00 :48 :54 :12 :6c :b1 ; xed-address 172.253.111.3 ; } host service { hardware ethernet 00 :48 :54 :12 :72 :83 ; xed-address 172.253.111.2 ; } } Remarques loption deny unknown-clients va permettre de refuser toute connexion aux htes ayant une adresse MAC diffrente de service et mail.

5.13. installation de NFS

dupont_s@epita.fr

5.13

installation de NFS

NFS est un service trs utilis, il permet pour un client dutiliser un rpertoire sur un serveur distant de la mme faon que sil sagiss dune partition locale. Les 3 chiers de conguration principaux sont /etc/exports, /etc/hosts.deny et /etc/hosts.allow. Installation Systme RedHat Mandrake Debian OpenBSD commande dinstallation rpm -Uvh nfs-utils-*.rpm urpmi nfs-utils apt-get install nfs par defaut dmarrage du service

conguration Le chier /etc/exports sert de liste de contrle daccs pour les systmes de chiers exporter aux clients NFS. Il est utilis la fois par le dmon de montage NFS mountd(8) et par le dmon serveur NFS nfsd(8). Le format de ce chier est similaire celui de SunOS, exports, avec plusieurs options supplmentaires. Chaque ligne correspond un point de montage, et une liste de machines, ou de noms de sous-rseaux autorises monter le systme de chiers situ en ce point. Une liste ventuelle de paramtres est mise entre parenthses aprs le nom de machine. Les lignes blanches sont ignores, et un # indique un commentaire stendant jusqu la n de la ligne. Options gnrales : secure Cette option rclame que les requtes proviennent dun port Internet de numro infrieur IPPORT_RESERVED (1024). Elle est en service par dfaut. Pour la dsactiver, introduire le mot-cl insecure. Nautorise que des requtes en lecture-seule sur ce volume NFS. Le comportement par dfaut autorise galement les requtes en criture, ce que lon peut galement mentionner explicitement en utilisant loption rw. Convertit les liens symboliques absolus (dont le contenu commence par un slash) en lien relatifs en ajoutant le nombre ncessaire de "../" pour aller de lemplacement du lien la racine du serveur. Cette option a une smantique assez subtile, parfois surprenante lorsque la hirarchie nest pas monte la racine. Laisse les liens symboliques tels quils sont. Cest lattitude par dfaut.

ro

link_relative

link_absolute

Administration et Scurisation des systmes Linux/BSD

63

Correspondance des UID nfsd effectue les contrles daccs aux chiers du serveur en se basant sur les UID et GID fournis avec chaque requte RPC NFS. Lutilisateur sattend pouvoir accder ses chiers sur le serveur NFS exactement comme il y accderait sur un systme de chiers normal.

Ceci ncessite que les mmes UID et GID soient utiliss sur le serveur et sur la machine cliente. Ce nest pas toujours vrai, et mme parfois indsirable.

Il est souvent trs gnant que le Super-User dune machine cliente soit trait comme le Super-User lorsquil accde aux chiers du serveur. Pour viter ceci, lUID 0 (root) est normalement transform en un autre UID : par exemple en UID anonyme nobody. Ce mode opratoire sappelle root squashing et est le comportement par dfaut. On peut le supprimer avec loption no_root_squash.

De plus, nfsd vous permet dindiquer des UIDs ou GIDs arbitraires qui seront transforms en utilisateur anonymes. Enn, vous pouvez mme transformer les requtes de tous les utilisateurs en UIG et GID anonymes avec loption all_squash .

Pour tre utilis dans des sites o les UIDs varient suivant les machines, nfsd fournit une mthode de conversion dynamique des UIDs du serveur en UIDs du client et inversement. Ceci est mis en service avec loption map_daemon et utilise le protocole RPC UGID. Il faut que le dmon de conversion ugidd(8) soit actif sur le client.

Voici une liste complte des options de conversion :

5.13. installation de NFS root_squash

dupont_s@epita.fr

Transforme les requtes des UID/GID 0 en UID/GID anonymes. Ceci ne sapplique pas aux autres UID/GID sensibles comme bin. no_root_squash Ne pas transformer les UID/GID 0. Cette option est particulirement utiles pour les stations sans disque. squash_uids Cette option prcise une liste dUIDs ou de GIDs qui sont convertis en utilisateurs anonymes. Une liste valide dUIDs se et squash_gids prsente ainsi : squash_uids=0-15,20,25-50 Habituellement la liste convertir est plus simple, comme dans : squash_uids=0-100 all_squash Convertit tous les UID/GID en utilisateurs anonymes. Utiles pour exporter avec NFS des rpertoires publics de FTP, des rpertoires de News, etc... Loption inverse est no_all_squash, qui sapplique par dfaut. map_daemon Cette option active la conversion dynamique des UID/GID. Chaque UID dune requte NFS sera transform en UID quivalent sur le serveur, et lUID des rponses NFS subira la transformation inverse. Ceci ncessite que le dmon rpc.ugidd(8) soit en fonctionnement sur le client. La conguration par dfaut est map_identity, qui laisse les UIDs intacts. Les options de squash sappliquent que la conversion dynamique soit utilise ou non. anonuid Ces options donne explicitement lUID et le GID du compte et anongid anonyme. Ceci est surtout utiles pour les clients PC/NFS, o lon dsire que toutes les requtes semblent provenir dun utilisateur. Cest le cas de lentre /home/joe dans lexemple ci-dessous, qui transforme toutes les requtes en UID 150 (probablement celle de lutilisateur joe). Fichiers exemple :

chier /etc/exports / maitre(rw) conance(rw,no_root_squash) /projects proj*.local.domain(rw) /usr *.local.domain(ro) /home/joe pc001(rw,all_squash,anonuid=150,anongid=100) /pub (ro,insecure,all_squash) chier /etc/hosts.deny On va interdire toutes les machines qui ne sont pas autorise explicitement dans le /etc/hosts.allow. ALL : ALL interdira laccs a tous les services depuis toutes machines.

Administration et Scurisation des systmes Linux/BSD

65

chier /etc/hosts.allow portmap :192.168.1.34 lockd :192.168.1.34 mountd :192.168.1.34 rquotad :192.168.1.34 statd :192.168.1.34 La premire ligne exporte lensemble du systme de chiers vers les machines matre et conance. En plus des droits dcriture, toutes conversions dUID est abandonne pour lhte conance. La deuxime et la troisime lignes montrent des exemples de noms dhtes gnriques. La quatrime ligne montre une entre pour le client PC/NFS prsent plus haut. La dernire ligne exporte un rpertoire public de FTP, tous les htes dans le monde, en effectuant les requtes sous le compte anonyme. Loption insecure permet laccs aux clients dont limplmentassion NFS nutilise pas un port rserv.

Sous OpenBSD La philosophie reste la mme nanmoins on va observer quelques petits changements dont voici un exemple : /home -alldirs -mapall=root -network 192.168.0.1 -mask 255.255.255.0 avec -alldirs pour autoriser les clients a monter nimporte quel sous rpertoire. -mapall=root pour que toutes les modications soient considres comme tant faite par root. -network 192.168.0.1 pour nautoriser que 192.168.0.1 comme client. mask 255.255.255.0 pour spcier le masque de rseaux.

utilisation En tant que client on peut monter un volume nfs par la commande : mount -t nfs 192.168.1.217 :/home/nfs /nfs on peut aussi linclure directement dans le chier /etc/fstab : server :/usr/local/pub /pub nfs rsize=8192,wsize=8192,timeo=14,intr scurisation Le problme de NFS est que la seule limitation que lon peut appliquer au niveau du rseau est bas sur ladresse IP du client, qui peut tre usurpe par la technique du spoong. Il est donc indispensable de renforcer cette scurit par des rgles de an den limiter laccs aux rseaux dont on peut avoir conance.

5.14. installation dun serveur NIS

dupont_s@epita.fr

5.14
5.14.1

installation dun serveur NIS


sous NetBSD

modication du chier : /var/yp/Makele.yp DIR=/etc/NIS Ensuite on remplace la ligne : all : passwd aliases $AMDMAPS ethers group hosts ipnodes netgroup networks rpc services protocols netid par : all : passwd aliases group hosts netgroup rpc services protocols netid ensuite mkdir /etc/NIS cd /etc cp passwd master.passwd hosts group rpc services protocols NIS bien sur il ne faut pas oublier de dnir le domaine sil nexiste pas domainename mondomain.fr ypinit -m mondomain.fr ensuite : cd /var/yp make enn pour /etc/rc.conf, an que le serveur puisse tre dmarrer en mme temps que le systme. rpcbind=YES ypbind=YES ypserv=YES yppasswdd=YES

Administration et Scurisation des systmes Linux/BSD

67

5.15 5.16 5.17

installation dun serveur LDAP installation dun serveur CVS installation dun DNS

Le systme bind (Berkeley Internet Named Domain) est une implmentassion de DNS (Domain Name Server), qui permet de traduire les noms des machines en adresses IP, par exemple lorsque vous tapez www.wanadoo.fr votre navigateur va faire une recherche DNS pour obtenir :

;; ANSWER SECTION: wanadoo.fr.

55083

IN

193.252.19.142

Nous verrons ainsi dans cette section comment congurer un tel serveur en prenant pour exemple un cas concret.

Installation Systme RedHat Mandrake Mandrake OpenBSD

commande dinstallation rpm -Uvh bind-*.rpm urpmi bind apt-get install bind9 pkg_add bind-9*.tgz

dmarrage du service servine named start /etc/init.d/named start /etc/init.d/bind9 start /usr/local/sbin/named -u named -t /var/namedb

Remarque : OpenBSD : bind-4 est install par defaut nanmoins il est prfrable dinstaller la version 9.2.

conguration

named.conf

5.17. installation dun DNS options { directory "/namedb" ; }; zone "." in { type hint ; le "root.cache" ; }; zone "127.IN-ADDR.ARPA" { type master ; notify no ; le "127.rev" ; }; zone "wanadoo.fr" { type master ; notify no ; le "wanadoo.fr" ; }; zone "0.168.192.in-addr.arpa" { type master ; notify no ; le "0.168.192.rev" ; };

dupont_s@epita.fr

wanadoo.fr

Administration et Scurisation des systmes Linux/BSD $TTL 3600 @ IN SOA wanadoo.fr. hostmaster.wanadoo.fr. ( 200202049 ; serial, todays date + todays serial 8H ; refresh, seconds 2H ; retry, seconds 1W ; expire, seconds 1D ) ; minimum, seconds ; NS wanadoo.fr. MX 10 mail.wanadoo.fr. TXT "wanadoo.fr... " localhost A 127.0.0.1 petra A 192.168.0.1 wanadoo.fr. A 212.198.192.215 ns CNAME wanadoo.fr. www CNAME wanadoo.fr. imap CNAME wanadoo.fr. pop CNAME wanadoo.fr. smtp CNAME wanadoo.fr.

69

0.168.192.rev $TTL 86400 ; 1 day @ IN SOA petra.wanadoo.fr. root.wanadoo.fr. ( 200202044 ; Serial 8H ; Refresh 2H ; Retry 1W ; Expire 1D ) ; Minimum IN NS petra.wanadoo.fr. 1 IN PTR petra.wanadoo.fr.

5.18. Mise en place dun VPN

dupont_s@epita.fr

5.18

Mise en place dun VPN

Pour se faire nous utiliserons un programme trs utilis, stable et scuris(128 bits) nomm vtun. Pour de amples informations rendez-vous sur http ://vtun.sourceforge.net commande dinstallation dmarrage du programme Systme RedHat rpm -Uvh vtun-*.rpm service vtund start Mandrake urpmi vtun /etc/init.d/vtund start Debian apt-get install vtun /etc/init.d/vtund start OpenBSD pkg_add vtun.*.tgz

5.19

les chiers hosts.allow et hosts.deny

Comme dans toute politique de dfense correcte, il est prfrable de tout interdire puis dautoriser service par service.
(root@petra)[/etc]-# cat hosts.deny ALL: ALLl

ALL : 192.168.0.3 On autorise tous les services pour les postes ALL : 192.168.0.35 192.168.0.3 et 192.168.0.35 smtp : ALL accs depuis tous les postes. sshd : ALL http : ALL sendmail : ALL domain : ALL portmap : 192.168.0.0/255.255.255.0 depuis tous les postes du rseau 192.168.0 Pour tester ces rgle on pourra utiliser /usr/sbin/tcpdmatch
$> tcpdmatch sshd www.wanadoo.fr ... access: granted ou encore $> tcpdmatch in.telnetd www.wanadoo.fr ... access: denied

5.20

installation dun Firewall

Avant de commencer il faudra diffrencier plusieurs cas :

Administration et Scurisation des systmes Linux/BSD

71

le premier est la conguration du rewall sous kernel 2.2* auquel cas il faudra utiliser ipchains. le second sous kernel 2.4* auquel cas il faudra utiliser netlter avec iptables. enn sous OpenBSD3.0 avec lutilisation de pf (packet lter and NAT subsystems). Dans le cas dune version de Mandrake > Mandrake8.0, on utilisera netlter (iptables). Le rewall agit comme un goulot dtranglement par lequel toutes les machines dun rseau doivent passer pour communiquer avec lextrieur. Il existe deux grandes familles de rewalls : les rewalls IP ou ltrants ils fonctionnent au niveau paquet (niveau 3 du modle OSI). Ils sont conus pour contrler le ux de paquets en fonction de ladresse IP dorigine, ladresse IP de destination, ainsi que le port et linformation de type de paquet contenue dans chacun de ceux-ci. Ils permettent une bonne scurit face aux diffrentes attaques. les rewalls dits proxy ils fonctionnement au niveau applicatif, et font passer les requtes dun rseau lautre : ils permettent ainsi laccs indirect a internet. Linconvnient ici est que chaque utilisateur doit congurer manuellement son navigateur web ou son client FTP pour communiquer avec lextrieur via le proxy. Au contraire, un rewall ltrant permet un accs transparent pour lutilisateur, tout en assurant une bonne scurit, puisque lon peut totalement contrler le ux qui le traverse. Nous nous concentrerons essentiellement sur le premier type de rewall. Les proxys seront prsents dans la dernire partie de lexpos traitant des autres dveloppements applicatifs possibles sous Linux. Conguration

Architecture La gure prcdente reprsente une architecture classique de rseau dentreprise derrire un rewall. On y distingue : 1. Internet, auquel lentreprise est relie par le routeur du fournisseur daccs, 2. une DMZ (DeMilitarised Zone ou zone dmilitarise) qui contient les serveurs publics de lentreprise : serveur web internez, serveur mail, serveur de chiers public etc., 3. lintranet de lentreprise, zone prive et protge de lentreprise. Physiquement, la machine sur laquelle tourne le rewall comporte trois cartes Ethernet, connectes au routeur, au LAN de la DMZ, et au LAN priv de lentreprise. nous supposerons pour le reste de cette section que le rseau a pour paramtres :

5.20. installation dun Firewall

dupont_s@epita.fr

address : 192.168.1.1 netmask : 255.255.255.0 network : 192.168.1.0 broadcoast : 192.168.1.255

5.20.1

Conguration de Netlter (IPtables)

Installation Systme RedHat Mandrake Debian OpenBSD commande dinstallation rpm -Uvh iptables-*.rpm urpmi iptables il faudra utiliser un noyau 2.4 iptables nexiste pas sous OpenBSD dmarrage du service /etc/init.d/iptables start /etc/init.d/iptables start

Le problme est que le rewall par defaut sur Mandrake et RedHat est pour des raisons de compatibilit ipchains. Il va donc tre ncessaire darrter ipchains avant de pouvoir utiliser iptables, pour se faire : /etc/init.d/ipchains stop rmmod ipchains An de vrier que le noyau supporte a t compil avec loption Netlter, il faut vrier que ip_conntrack & ip_tables apparaissent bien avec la commande dmesg. dmesg | grep ip_conntrack

Administration et Scurisation des systmes Linux/BSD dmesg | grep ip_tables sinon : # # # # # # modprobe modprobe modprobe modprobe modprobe modprobe ip_tables ip_nat_ftp ip_nat_irc iptable_filter iptable_mangle iptable_nat

73

Si on a besoin de pouvoir forwarder les paquets IP (dans la plupart des cas), il sera ncessaire dexcuter cette commande : # echo 1 > /proc/sys/net/ipv4/ip_forward Utilisation Dans la conguration de base les paquets passent par trois chanes de rgles : INPUT : par laquelle passent tous les paquets entrant par une interface. FORWARD : par laquelle passent tous les paquets qui sont transmis dune interface une autre. OUTPUT : par laquelle passent tous les paquets avant de sortir dune interface. Les quatres comportements les plus courants sont : ACCEPT : On laisse passer le paquet. REJECT : On rejette le paquet et on envoie le paquet derreur associ. LOG : Enregistre une notication du paquet dans syslog. DROP : Le paquet est ignor aucune rponse nest envoy. Voici les principales options de iptables : N : Cration dune nouvelle chane. X : Suppression dune chane vide. P : Changement de la politique par dfaut dune chane. L : liste les rgles dune chane. F : limine toutes les rgles dune chane. Enn pour les modications de chanes : A : ajoute une rgle la n dune chane. I : Insre une nouvelle rgle a une position donne. R : Remplace une rgle donne dans une chane. D : Efface une rgle dans une chane (numro dordre ou rgle) Exemples Pour nater sur linterface eth0 : echo 1 > /proc/sys/net/ipv4/ip_forward

5.20. installation dun Firewall iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE Pour crer un proxy transparent : iptables -t nat -A PREROUTING -s ! 192.168.1.1 -i eth0 -p tcp dport 80 -j REDIRECT to-port 3128 Pour supprimer les rgles actives : iptables -F iptables -F -t nat iptables -X

dupont_s@epita.fr

An dempcher les ping des autres machines : iptables -A INPUT -s 192.168.1.217 -p icmp icmp-type echo-reply -j DROP An de supprimer la premire rgle : iptables -D INPUT 1 An de refuser tout trac TCP sauf ce qui provient de ladresse IP 192.168.1.217 sera traduite par la commande suivante : iptables -A INPUT -p tcp source ! 192.168.1.217 -j DENY An de spcier un protocole : tcp, udp, icmp, all (tous) -> -p protocol iptables -A INPUT -p icmp -j DENY An de spcier la source : -s source iptables -A INPUT -p tcp -s 192.168.42.42 -j ACCEPT An de spcier une adresse destination : -d destination iptables -A FORWARD -p tcp -d 10.1.0.1 -j ACCEPT An de spcier une interface dentre : -i in-interface iptables -A INPUT -p icmp -i eth0 -j DENY An de spcier une interface de sortie : -o out-interface iptables -A OUTPUT -p icmp -o eth0 -j DENY An de spcier le port source ou une plage de ports : sport source-port : iptables -A INPUT -p tcp sport 80 -j ACCEPT iptables -A INPUT -p udp sport 80 -j DROP iptables -A OUTPUT -p tcp -m multiport sport 3128,21,1000 -j DROP iptables -A OUTPUT -p tcp sport 1024 :2042 -j ACCEPT An de spcier le port destination : dport destination-port

Administration et Scurisation des systmes Linux/BSD iptables -A INPUT -p tcp dport 110 -j DENY iptables -A INPUT -p udp dport 110 -j DENY iptables -A INPUT -p tcp -m multiport dport 110,4242,119 -j DROP iptables -A INPUT -p tcp sport 4925 :4633 -j ACCEPT Pour rediriger sur la DMZ : iptables -t nat -A PREROUTING -d 42.42.42.42 -p tcp dport 80 -j DNAT to-destination 192.168.1.2 :80 Rgle SSH : iptables -A INPUT -i eth1 -s 192.168.2.42 -m state state NEW,ESTABLISHED -p tcp dport 22 -j LOG_ACCEPT iptables -A OUTPUT -o eth1 -d 192.168.2.42 -m state state ESTABLISHED -p tc sport 22 -j LOG_ACCEPT

75

############### exemple de conf pour iptables ##################### # !/bin/sh ## Information sur le rseau. INTERNALIF="eth1" # carte donnant sur le rseau interne. INTERNALNET="192.168.1.0/24" # IP Rseau Interne. INTERNALBCAST="192.168.1.255" # IP Broadcast. EXTERNALIF="eth0" #carte donnant sur lextrieur. EXTERNALIP="1.2.3.4" # Adresse IP externe ncessaire en cas de DNAT ## Suppression de toutes les rgles : iptables -F INPUT # rgles sur les paquets entrants iptables -F OUTPUT # rgles sur les paquets sortants iptables -F FORWARD # rgles sur le Forwarding/masquerading iptables -t nat -F # rgles sur le Nat ##Modication des rgles tcp/ip du noyau. #Disabling IP Spoong attacks. echo 2 > /proc/sys/net/ipv4/conf/all/rp_lter # Ne pas rpondre aux pings broadcast echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # autorisation du forwarding echo 1 >/proc/sys/net/ipv4/ip_forward # Blockage routage echo 0 >/proc/sys/net/ipv4/conf/all/accept_source_route

5.20. installation dun Firewall # Suppression des timestamps. echo 0 > /proc/sys/net/ipv4/tcp_timestamps # autorisation des SYN Cookies echo 1 > /proc/sys/net/ipv4/tcp_syncookies # empche les redirections echo 0 >/proc/sys/net/ipv4/conf/all/accept_redirects echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses # autorise les adresses IP dynamiques echo "1" > /proc/sys/net/ipv4/ip_dynaddr # Log pacquets avec des adresses impossibles. echo 1 >/proc/sys/net/ipv4/conf/all/log_martians #Set out local port range echo "32768 61000" >/proc/sys/net/ipv4/ip_local_port_range

dupont_s@epita.fr

# Rduit les DoS en rduisant les timeouts echo 30 > /proc/sys/net/ipv4/tcp_n_timeout echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time echo 1 > /proc/sys/net/ipv4/tcp_window_scaling echo 0 > /proc/sys/net/ipv4/tcp_sack echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog ## Mise en place des rgles de base. # rejet des mauvais paquets : trop courts, les paquets # TCP et UDP ayant zro comme source ou comme destination, # taille nulle ou trop grande, paquets fragments # pour plus dinfo http ://www.linux-mag.com/2000-01/bestdefense_02.html iptables -A INPUT -m unclean -j DROP iptables -A FORWARD -m unclean -j DROP iptables -A INPUT -m state state INVALID -j DROP iptables -A FORWARD -m state state INVALID -j DROP # autorise toutes les connections sur linterface interne iptables -A INPUT -i lo -j ACCEPT # Refuse les connections depuis linterface interne vers lextrieur. iptables -A INPUT -d 127.0.0.0/8 -j REJECT # trafc illimit depuis le rseau interne. iptables -A INPUT -i $INTERNALIF -s $INTERNALNET -j ACCEPT # autorise tunnel IPV6.

Administration et Scurisation des systmes Linux/BSD #iptables -A INPUT -p ipv6 -j ACCEPT # autorise tunnel IPSEC. #iptables -A INPUT -p 50 -j ACCEPT # autorise tous paquets depuis le serveur ipsec vers le rseau interne. #iptables -A FORWARD -i ipsec0 -o $INTERNALIF -j ACCEPT # Refuse tous paquets depuis lextrieur prtendant tre du rseau interne. iptables -A INPUT -i $EXTERNALIF -s $INTERNALNET -j REJECT

77

## ICMP # ne pas faire suivre les pings de lextrieur vers le rseau interne. iptables -A FORWARD -p icmp icmp-type echo-request -o $INTERNALIF -j REJECT #protection contre le ping ood. iptables -A INPUT -p icmp icmp-type echo-request -m limit limit 1/s -j ACCEPT iptables -A INPUT -p icmp icmp-type echo-request -j DROP

# Refuse licmp vers une adresse de broadcast. iptables -A INPUT -p icmp -d $INTERNALBCAST -j DROP # autorise tout autre icmp. iptables -A INPUT -p icmp -j ACCEPT # autorise les connections tablies. iptables -A INPUT -m state state ESTABLISHED,RELATED -j ACCEPT # Refuse de rediriger les paquets samba iptables -A FORWARD -o $EXTERNALIF -p tcp dport 137 -j REJECT iptables -A FORWARD -o $EXTERNALIF -p tcp dport 138 -j REJECT iptables -A FORWARD -o $EXTERNALIF -p tcp dport 139 -j REJECT iptables -A FORWARD -o $EXTERNALIF -p udp dport 137 -j REJECT iptables -A FORWARD -o $EXTERNALIF -p udp dport 138 -j REJECT iptables -A FORWARD -o $EXTERNALIF -p udp dport 139 -j REJECT iptables -A INPUT -i $EXTERNALIF -p udp dport 137 -j REJECT # Autorise tous les autres paquets a tre forward iptables -A FORWARD -o $EXTERNALIF -i $INTERNALIF -j ACCEPT iptables -A FORWARD -i $EXTERNALIF -m state state ESTABLISHED,RELATED -j ACCEPT

5.20. installation dun Firewall

dupont_s@epita.fr

# autorise les requtes DHCP en tant que client. #iptables -A INPUT -p udp -d 255.255.255.255 dport 68 -j ACCEPT # autorise les requtes DHCP en tant que serveur. #iptables -A INPUT -i $INTERNALIF -p tcp sport 68 dport 67 -j ACCEPT #iptables -A INPUT -i $INTERNALIF -p udp sport 68 dport 67 -j ACCEPT # autorise les requtes vers les serveur DNS contenus # dans /etc/resolv.conf : #cat /etc/resolv.conf | #awk / nameserver/ {print $2} | #xargs -n1 iptables -A INPUT -p udp sport 53 -j ACCEPT -s # autorise les paquets entrant pour les diffrents services lists : iptables -A INPUT -p tcp dport 20 -j ACCEPT # ftp-data iptables -A INPUT -p tcp dport 21 -j ACCEPT # ftp iptables -A INPUT -p tcp dport 22 -j ACCEPT # ssh #iptables -A INPUT -p tcp dport 23 -j ACCEPT #telnet # autorise les paquets destination du serveur de mail mais les limitent # 1 par seconde pour viter les attaques de type DoS. iptables -A INPUT -p tcp dport 25 syn -m limit limit 1/s limit-burst 10 -j ACCEPT iptables -A INPUT -p tcp dport 25 syn -j DROP iptables -A INPUT -p tcp dport 25 -j ACCEPT # DNS iptables -A INPUT -p tcp dport 53 -j ACCEPT iptables -A INPUT -p udp dport 53 -j ACCEPT # http iptables -A INPUT -p tcp dport 80 -j ACCEPT # POP3 #iptables -A INPUT -p tcp dport 110 -j ACCEPT # Imaps iptables -A INPUT -p tcp dport 993 -j ACCEPT # identd #iptables -A INPUT -p tcp dport 113 -j ACCEPT # https iptables -A INPUT -p tcp dport 443 -j ACCEPT #pserser iptables -A INPUT -p tcp dport 2401 -j ACCEPT # autorise les paquets destination du serveur VNC ce qui nest pas forcement # une bonne ide. #iptables -A INPUT -p tcp dport 5801 -j ACCEPT

Administration et Scurisation des systmes Linux/BSD #iptables -A INPUT -p tcp dport 5901 -j ACCEPT #iptables -A INPUT -p tcp dport 6001 -j ACCEPT

79

## DNAT #iptables -A PREROUTING -t nat -i $EXTERNALIF -p tcp # -d $EXTERNALIP dport 80 -j DNAT to 192.168.0.10 :80 #iptables -A FORWARD -i $EXTERNALIF -p tcp -d 192.168.0.10 dport 80 -j ACCEPT #iptables -A PREROUTING -t nat -i $EXTERNALIF -p tcp # -d $EXTERNALIP dport 25 -j DNAT to 192.168.0.10 :25 #iptables -A FORWARD -i $EXTERNALIF -p tcp -d 192.168.0.10 dport 25 -j ACCEPT # Certains services doivent tre loggs et refuss #iptables -A INPUT -p tcp dport 1433 -m limit -j LOG # log-prex "Firewalled packet : MSSQL " #iptables -A INPUT -p tcp dport 1433 -j DROP #iptables -A INPUT -p tcp dport 6670 -m limit -j LOG # log-prex "Firewalled packet : Deepthrt " #iptables -A INPUT -p tcp dport 6670 -j DROP #iptables -A INPUT -p tcp dport 6711 -m limit -j LOG # log-prex "Firewalled packet : Sub7 " #iptables -A INPUT -p tcp dport 6711 -j DROP # log-prex "Firewalled packet : BO " #iptables -A INPUT -p tcp dport 31337 -j DROP iptables -A INPUT -p tcp dport 6000 -m limit -j LOG log-prex "Firewalled packet : XWin " iptables -A INPUT -p tcp dport 6000 -j DROP # traceroutes iptables -A INPUT -p udp dport 33434 :33523 -j DROP iptables -A INPUT -p tcp dport 113 -j REJECT # Ne pas logger les paquets igmp iptables -A INPUT -p igmp -j REJECT # Ne pas logger les requtes http{s} iptables -A INPUT -p tcp dport 80 -j REJECT iptables -A INPUT -p tcp dport 443 -j REJECT # Si les paquets ne correspondent a aucunes des rgles on les # log et on les rejettes iptables -A INPUT -p tcp syn -m limit limit 5/minute -j LOG log-prex "Firewalled packet :"

5.20. installation dun Firewall

dupont_s@epita.fr

iptables -A FORWARD -p tcp syn -m limit limit 5/minute -j LOG log-prex "Firewalled packet :" # Rejet iptables -A INPUT -p tcp -j REJECT reject-with tcp-reset iptables -A INPUT -p all -j DROP iptables -A FORWARD -p tcp -j REJECT reject-with tcp-reset iptables -A FORWARD -p all -j DROP # autorise tout de mme si elles se dirigent vers lextrieur iptables -A OUTPUT -j ACCEPT # Masquerage des connections internes vers lextrieur iptables -A POSTROUTING -t nat -o $EXTERNALIF -j MASQUERADE exit 0 Exemple de script pour iptables

5.20.2

Conguration de pf (packet lter)

Pour toute information complmentaire vous pourrez consulter le OpenBSD Packet Filter HOWTO ladresse : http ://www.inebriated.demon.nl/pf-howto/html commandes de base Pour activer vos rgles aprs avoir complt le chier de conguration /etc/pf.conf activation pfctl -f /etc/pf.conf dsactivation pfctl -F all

############### exemple dun chier /etc/pf.conf ##################### ext_if="xl0" int_if="vr0" unroutable="{ 127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 255.255.255.255/32 }" services_tcp="{ smtp, submission, domain, auth, www, https, > 1024 }" services_udp="{ domain }" ipv6_net="{ 2001 :470 :1f00 :ffff : :245, 2001 :470 :1f00 :390 :0 :0 :0 :0/64 }" # See pf.conf(5) for syntax and examples # My external interface is kue0 (62.65.145.30, my only routable address) and # the private network is 10.0.0.0/8, for which im doing NAT. Theres an

Administration et Scurisation des systmes Linux/BSD # IPv6 tunnel, too. # normalize all packets scrub out all scrub in all # nat private network to single routable address nat on $ext_if inet from 192.168.1.0/24 to any -> $ext_if # redirect https connections from work to sshd #rdr on $ext_if inet proto tcp from 0.0.0.0 # to $ext_if port 443 -> $ext_if port 22 #rdr on $int_if inet proto tcp from 0.0.0.0 # to $int_if port 443 -> $ext_if port 22 # block and log everything by default block out log all block in log all block return-rst out log inet proto tcp all block return-rst in log inet proto tcp all block return-icmp out log inet proto udp all block return-icmp in log inet proto udp all # unltered interfaces pass out quick on { lo0, enc0, $int_if } all pass in quick on { lo0, enc0, $int_if } all # ============================================== # common rules for all ltered interfaces # ============================================== # silently drop noise block return-rst in quick proto tcp from any to any port { 111, 6000, 6667 } block return-icmp in quick proto udp from any to any port { 137 } # silently drop TCP non-SYN packets (only SYNs create state) block out quick proto tcp all ags /S block in quick proto tcp all ags /S # ============================================== # external interface (all external IPv4 trafc)

81

5.20. installation dun Firewall

dupont_s@epita.fr

# ============================================== # block and log outgoing packets that dont have my address as source, they are # either spoofed or something is miscongured (NAT disabled, for instance), # we want to be nice and dont send out garbage. block out log quick on $ext_if inet from !$ext_if to any # silently drop broadcasts (ADSL noise) block in quick on $ext_if inet from any to { 255.255.255.255, 62.65.145.31 } # block and log incoming packets from reserved address space and invalid # addresses, they are either spoofed or miscongured, we cant reply to # them anyway (hence, no return-rst). block in log quick on $ext_if inet from $unroutable to any # ICMP pass out on $ext_if inet proto icmp from $ext_if to any icmp-type 8 code 0 keep state pass in on $ext_if inet proto icmp from any to $ext_if icmp-type 8 code 0 keep state # UDP pass out on $ext_if inet proto udp from $ext_if to any keep state pass in on $ext_if inet proto udp from any to $ext_if port $services_udp keep state # TCP pass out on $ext_if inet proto tcp from $ext_if to any ags S/SA keep state pass in on $ext_if inet proto tcp from any to $ext_if port $services_tcp ags S/SA keep state # other protocols (IPv6 tunnel) pass out on $ext_if inet proto ipv6 from $ext_if to 64.71.128.82 keep state pass in on $ext_if inet proto ipv6 from 64.71.128.82 to $ext_if keep state # ============================================== # tunnel interface (all external IPv6 trafc) # ============================================== # ICMP pass out on gif0 inet6 proto ipv6-icmp from $ipv6_net to any

Administration et Scurisation des systmes Linux/BSD ipv6-icmp-type echoreq keep state pass in on gif0 inet6 proto ipv6-icmp from any to $ipv6_net ipv6-icmp-type echoreq keep state # UDP pass out on gif0 inet6 proto udp from $ipv6_net to any keep state pass in on gif0 inet6 proto udp from any to $ipv6_net port $services_udp keep state # TCP pass out on gif0 inet6 proto tcp from $ipv6_net to any ags S/SA keep state pass in on gif0 inet6 proto tcp from any to $ipv6_net port $services_tcp ags S/SA keep state

83

5.20.3

Conguration du ltrage IP (IPchains)

Installation RedHat Mandrake rpm -Uvh ipchains-*.rpm urpmi ipchains

Les ipchains Linux sont une rcriture du code pare-feu IPv4 de Linux (en grande partie inspir de BSD) ainsi que de ipfwadm qui tait lui-mme une rcriture du ipfw de BSD, je crois. Il est indispensable dadministrer les ltres de paquets IP dans les noyaux Linux versions 2.1.102 et au-del. On travaille avec les chanes par noms. Il existe au dbut trois chanes prdnies input, output et forward, quil est impossible de supprimer. On peut crer des chanes personnelles. Des rgles peuvent ensuite tre ajoutes et supprimes de ces ensembles de rgles. Les oprations ncessaires pour travailler sur les chanes sont les suivantes : 1. cration dune nouvelle chane (-N) ; 2. suppression dune chane vide (-X) ; 3. modication de la spcication pour une chane prdnie (-P) 4. liste des rgles dune chane (-F) ; 5. remise zro des compteurs de paquets et doctets de toutes les rgles dune chane (-Z). Il existe diffrentes mthodes pour manipuler les rgles lintrieur des chanes : 1. ajout dune nouvelle rgle dans une chane (-A) ; 2. insertion dune nouvelle rgle une position donne dune chane (-I) ; 3. remplacement dune rgle une position donne dune chane (-R) ; 4. suppression dune rgle une position donne dune chane (-D) ;

5.20. installation dun Firewall

dupont_s@epita.fr

5. suppression de la premire rgle correspondante dans une chane (-D). Il existe quelques oprations pour le masquage qui se trouvent dans ipchains dans lattente dun bon emplacement pour les placer : 1. liste des connexions actuellement masques (-M -L) ; 2. positionnement du temps dexpiration du masquage (-M -S). Il y a quelques dtails de chronologie qui interviennent dans la modication des rgles de pare-feu. Si lon nest pas sufsamment prudent, il est possible de laisser passer quelques paquets pendant la mise en place des modications. Une approche simpliste est la suivante : # ipchains -I input 1 -j DENY # ipchains -I output 1 -j DENY # ipchains -I forward 1 -j DENY ... ralisation des modication ... # ipchains -D input 1 # ipchains -D output 1 # ipchains -D forward 1 Cela interdit tout passage de paquet durant les modications. Voici une copie des rgles de pare-feu qui prcdent dans IPchains : # !/bin/sh # # rc.rewall # ## Tout vider et repartir du debut /sbin/ipchains -F input /sbin/ipchains -F output /sbin/ipchains -F forward ## Redirection pour le mandatement transparent de HTTP #$IPCHAINS -A input -p tcp -s 192.1.2.0/24 -d 0/0 80 -j REDIRECT 8080 ## Cration de nos propres chanes /sbin/ipchains -N ma-chaine # On autorise le courriel entrant vers le serveur /sbin/ipchains -A ma-chaine -s 0.0.0.0/0 smtp -d 192.1.2.10 1024 :-j ACCEPT # On autorise les connexions courriel vers lextrieur /sbin/ipchains -A ma-chaine -s 192.1.2.10 -d 0.0.0.0/0 smtp -j ACCEPT # On autorise les connexions web entrantes vers le serveur /sbin/ipchains -A ma-chaine -s 0.0.0.0/0 www -d 192.1.2.11 1024 : -j ACCEPT

Administration et Scurisation des systmes Linux/BSD

85

# On autorise les connexions web vers lextrieur /sbin/ipchains -A ma-chaine -s 192.1.2.0/24 1024 : -d 0.0.0.0/0 www -j ACCEPT # On autorise le trac DNS /sbin/ipchains -A ma-chaine -p UDP -s 0.0.0.0/0 dns -d 192.1.2.0/24 -j ACCEPT ## Si on utilise le masquage # On ne masque pas le trac interne /sbin/ipchains -A forward -s 192.1.2.0/24 -d 192.1.2.0/24 -j ACCEPT # On ne masque pas linterface externe directe /sbin/ipchains -A forward -s 199.1.2.0/24 -d 0/0 -j ACCEPT # On masque tout paquet interne qui sort /sbin/ipchains -A forward -s 192.1.2.0/24 -d 0/0 -j MASQ ## On interdit tout le reste /sbin/ipchains -P my-chains input DENY Il ne faut pas sarrter l. Ce nest pas un pare-feu trs puissant et je suis sr quil y a dautres services que vous souhaiteriez fournir. nouveau, lisez le IPCHAINSHOWTO.

5.21

la translation dadresses : NAT ou IPmasquerade

La fonction de translation dadresses est trs utile pour rendre invisibles de lextrieur les machines dun rseau local ayant un plan dadressage priv. Cette fonction est gnralement implmente sur un routeur ou ventuellement un rewall dans le cas dun systme fdr. Ce dernier apparat comme tant alors le seul systme utilisant la connexion internet. Ceci permet doptimiser lutilisation du plan dadressage, avec un cot moindre, car il suft davoir une seule connexion internet pour plusieurs machines. La diffrence entre la NAT et un proxy applicatif rside dans le fait quun proxy agit comme un intermdiaire entre Internet et les machines connectes au LAN. Cest trs bien, cependant chaque application que vous voudrez excuter sur votre machine et qui devra se connecter Internet travers le serveur proxy DEVRA savoir comment utiliser un proxy. Toutes les applications ne savent pas faire a (et spcialement les jeux). De plus, il ny a pas des proxies applicatifs pour tous les services Internet actuels. La NAT fait correspondre de manire transparente votre rseau interne une adresse donne pour quil puisse se connecter Internet. Le seul avantage en termes de scurit utiliser un proxy par rapport la NAT est que le proxy peut possder des fonctionnalits de scurit, et peut ltrer le trac daprs le contenu, pour protger votre machine Windows contre un virus macro, ou pour protger votre logiciel client contre les dbordements de tampon...etc. La maintenance de ce type de ltres est sou-

5.21. la translation dadresses : NAT ou IPmasquerade vent lourde. En terme de scurit rseau, le protocole NAT : 1. est transparent pour les ordinateurs du domaine,

dupont_s@epita.fr

2. cache lensemble des machines du rseau derrire la passerelle, qui apparat comme tant le seul systme connect Internet, 3. permet une scurit accrue, car il nexiste aucun moyen pour quelquun de lextrieur, daccder aux machines internes. En effet lextrieur ne voit quune seule machine : la passerelle sur laquelle est implmente NAT. La machine Linux sur laquelle sera install le protocole NAT devra raliser les fonctionnalits suivantes : 1. la table NAT doit avoir une entre pour chaque association statique, an que chaque poste puisse avoir accs Internet, 2. Une double traduction est effectue par le routeur NAT : 3. dans le sens interne vers externe : adresse locale interne vers adresse globale interne adresse globale externe vers adresse locale externe 4. dans le sens externe vers interne : adresse locale externe vers adresse globale externe adresse globale interne vers adresse locale interne 5. ladministrateur spcie le pool dadresses locales internes traduire et le pool dadresses globales internes, 6. chaque fois quun paquet avec une adresse IP locale franchit le routeur NAT, il reoit une adresse prise dans le pool des adresses globales, 7. cette traduction reste effective tant que la table NAT nest pas nettoye ou que la priode de traduction nest pas expire. Dans ce cas, un paquet provenant du mme hte doit obtenir une nouvelle adresse du pool dadresses globales. Avantages et inconvnients de NAT Du point de vue de la scurit, NAT cache lidentit relle des machines. Il nest pas possible didentier lidentit dun paquet dont ladresse IP a t traduite de faon dynamique. Cet avantage est intressant pour les sites dsirant se protger de lextrieur. Par contre, NAT casse le modle IP de bout en bout : la perte de traabilit de bout en bout rend la recherche impossible en cas de piratage provoque par une machine interne. De manire gnrale, toute application spciant ladresse IP dans la partie des donnes (et non pas dans len-tte) ne fonctionne pas avec NAT.

Administration et Scurisation des systmes Linux/BSD

87

NAT rduit les possibilits de communications scurises : impossible de traduire des donnes cryptes. Il faut dans ce cas utiliser ladressage statique avec une adresse globale. Enn, le multicast nest actuellement pas support par NAT : il est possible de recevoir du trac multicast mais une source interne ne peut pas mettre. Une parade consiste contourner le NAT, avec lutilisation du mode sparse du protocole PIM (Protocol Independent Multicast) : identication de la source (interne) un point de rendez-vous (Core) situ lextrieur du rseau local protg par NAT. PIM Sparse Mode est analogue au protocole CBT (Core-Based Tree).

Conguration On supposera que votre rseau local est en 192.168.1.X Premire tape diter le chier /etc/syscong/network NETWORKING=yes FORWARD_IPV4=true HOSTNAME=tavel.kervao.fr DOMAINNAME=kervao.fr GATEWAY= GATEWAYDEV=

noyau 2.2.x 1. diter/crez le chier /etc/rc.d/rc.rewall (ou /etc/rc.d/rc.local si diffrent de Mandrake) et ajouter la n, les lignes suivantes : ipchains -P forward DENY ipchains -A forward -s 192.168.13.0/24 -j MASQ 2. Reboutez votre machine 3. Pour voir si lIP Masquerade est bien pris en compte, tapez : ipchains -L forward Vous devriez avoir :
Chain forward (policy DENY): target prot opt source MASQ all ------ 192.168.13.0/24 destination anywhere n/a ports

Par ailleurs le chier /proc/sys/net/ipv4/ip_forward doit contenir un 1.

5.22. Outils de conguration

dupont_s@epita.fr

noyau 2.4.x Pour les noyaux 2.4.X il vous faudra installer le package iptables : (urpmi iptables) Crer un chier /etc/rc.d/rc.rewall contenant :
echo 1 > iptables iptables iptables iptables ou #!/bin/sh # Load the NAT module (this pulls in all the others). modprobe iptable_nat # Turn on IP forwarding echo 1 > /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter # In the NAT table (-t nat), Append a rule (-A) after routing (POSTROUTING) # which says to MASQUERADE the connection (-j MASQUERADE). iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE # Allows forwarding specifically to our LAN iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT /proc/sys/net/ipv4/ip_forward -A FORWARD -i eth1 -o eth2 -j ACCEPT -A FORWARD -i eth2 -o eth1 -j ACCEPT -t nat -A PREROUTING -p tcp -d 0.0.0.0/0 --dport 80 -j DNAT --to 192.168.2.178:3128 -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Pour prendre en compte les modifs vous pouvez excuter le chier qui a des droits dexcution (700). /etc/rc.d/rc.rewall Remarque : Il existe un outil graphique pour raliser lIPmasquerade, cest drakgw, mais il est fortement conseill de ne pas lutiliser (attribution dune adresse IP arbitraire, installation dun serveur DNS, NIS, et DHCP ! !).

5.22
5.22.1

Outils de conguration
installation de webmin

Webmin (Administration par Web, port 10000) est un utilitaire puissant de conguration systme et Rseaux par interface web. Installation RedHat Mandrake OpenBSD rpm -Uvh webmin-*.rpm urpmi webmin Pour linstaller sous openbsd il va falloir utiliser les ports soit cd /usr/ports/sysutils/webmin && make install

Administration et Scurisation des systmes Linux/BSD utilisation pour accder cette interface il suft de tapper dans votre navigateur prfr : http ://localhost :10000

89

Remarques il est prfrable de dsactiver cet outils si lon ne lutilise pas. En effet mme sil reste possible den limiter laccs et de le protger par un rewall. la moindre faille correspondrait un accs racine. De plus trs rcemment un grave problme de scurit a t dcouvert.

CHAPITRE 6 Les outils des Hackers

6.1 Les diffrents types dattaque


6.1.1 Cartographie des vulnrabilits
Cette opration consiste dterminer le systme dexploitation, les services ouverts ainsi que leur version an de pouvoir dterminer les ventuelles failles et les exploiter. Un des outils les populaire et les plus puissant est nmap. Il permet entre autres le half-scan (sans tablir de connexion) nmap -sS IP_du_serveur ou encore, le ngerprinting (dtection dOS) nmap -sS -O IP_du_serveur

6.1.2

SUID/SGID

S-bit positionn pour lutilisateur Les processus sous Linux sexcute avec lidentiant de lutilisateur (user-ID). Ceci leur donne accs aux ressources ( chier etc ...) auxquelles lutilisateur a accs. Lidentiant effectif est celui qui dtermine les accs aux chiers.
find / -user root -a \( -perm -4000 -o -perm -2000 \) -print

6.1.3

Le crackage par mot de passe

La manire la plus classique par laquelle un hacker va essayer dobtenir un mot de passe est lattaque avec un dictionnaire. Dans ce genre dattaque, le hacker utilise un dictionnaire de mots et de noms propres, et il les essaie un un pour vrier si le 90

Administration et Scurisation des systmes Linux/BSD

91

mot de passe est valide. Ces attaques se font avec des programmes qui peuvent deviner des milliers de mots de passe la seconde, mme quand ceux-ci sont hachs. Ce procd est dautant plus facile quil lui permet de tester des variations sur les mots : mots crits lenvers, majuscules et minuscules, ajout de chiffres la n du mot... Cet article en anglais dcrit le fonctionnement dun logiciel de crackage par mot de passe, et fournit les noms de quelques logiciels les plus utiliss par les Hackers. http ://www.xphys.tuwien.ac.at/ mike/security/network-security.html

6.1.4

Le snifng des mots de passe et des paquets

Si un hacker ne peut pas deviner un mot de passe, il a dautres outils pour lobtenir. Une faon qui est devenue assez populaire est le snifng. La plupart des rseaux utilisent la technologie de broadcast (comme Ethernet). En pratique, tous les ordinateurs sauf le destinataire du message vont sapercevoir que le message ne leur est pas destin et vont donc lignorer. Mais par contre, beaucoup dordinateurs peuvent tre programms pour regarder chaque message qui traverse le rseau (mode promiscuit). Il existe des programmes qui utilisent ce procd et qui capturent tous les messages qui circulent sur le rseau en reprant les mots de passe. Si quelquun se connecte un ordinateur travers un rseau (telnet, rlogin, ftp...), alors cette personne risque contre son gr de donner son mot de passe. Cest pourquoi il existe une menace srieuse pour les personnes qui se connectent sur des ordinateurs distants, o les mots de passe apparaissent en clair dans la trame. Les programmes de snifng les plus connus sont Esniff et TCPDump. Mais un sniffer peut tout aussi bien tre bnque ladministrateur rseau, puisquil permettrait de dceler avant les Hackers les failles de scurit de son rseau. Ethereal v0.8.12 sous Linux permet de journaliser les vnements dnis par ladministrateur. Il est en outre compatible avec les journaux de LOG des routeurs Cisco (Cisco Secure IDS iplog les). Ethereal est tlchargeable ladresse suivante : http ://www.ethereal.com/ Voici ci-dessous une liste dautres sniffers disponibles dans le commerce : 1. ATM Sniffer Network Analyzer : http ://www.networkassociates.com dcode plus de 250 protocoles. 2. Shomiti Systems Century LAN Analyzer : http ://www.shomiti.com supporte le standard Ethernet et fonctionne sous Windows 95/98 et NT. 3. PacketView de Klos Technologies : ftp.klos.com/demo/pvdemo.zip ce sniffer est bas sur DOS, idal pour les environnements Ethernet. 4. Network Probe 8000 : http ://www.netcommcorp.com fait une analyse denviron 13 protocoles dont TCP/IP, Microsoft, NFS, Novell. 5. LANWatch http ://www.guesswork.com marche sous DOS, Windows 9x et NT. 6. EtherPeek : http ://www.aggroup.com pour Windows et plates-formes Macintosh.

6.1. Les diffrents types dattaque

dupont_s@epita.fr

7. Ethload : sniffer qui permet de surveiller les sessions rlogin et telnet tlchargeable sur : http ://www.computercraft.com/noprogs/ethld104.zip 8. Linux sniffer : sniffer de mots de passe uniquement, en langage C La meilleure dfense contre lattaque de sniffers est lutilisation dun protocole de chiffrement comme SSL (Secure Socket Layer).

6.1.5

LIP spoong

Ladresse IP dun ordinateur est ladresse qui est utilise pour reconnatre un ordinateur sur internet. Un des principaux problmes est quen utilisant le routage source dIP, lordinateur du hacker peut se faire passer pour un ordinateur connu. Le routage source dIP est une option qui peut tre utilise pour spcier une route directe une destination et renvoyer le chemin de retour lexpditeur. La route peut inclure lutilisation dautres routeurs ou de serveurs qui nauraient normalement pas t utiliss pour faire suivre les paquets la destination nale. Voici un exemple qui montre comment ceci peut tre utilis de faon ce que lordinateur de lintrus apparaisse comme tant lordinateur certi par le serveur : 1. lagresseur change ladresse IP de son ordinateur pour faire croire quil est un client certi par le serveur, 2. il va ensuite construire une route source jusquau serveur qui spciera le chemin de retour direct que les paquets IP devront prendre pour aller au serveur et quils devront prendre pour retourner lordinateur de lagresseur en utilisant le client certi comme dernire tape dans la route vers le serveur, 3. lagresseur envoie une requte client au serveur en utilisant la route source, 4. le serveur accepte la requte du client comme si elle provenait directement du client certi et retourne une rponse au client, 5. le client, utilisant la route source, faire suivre le paquet lordinateur de lagresseur. Beaucoup de machines Unix acceptent les paquets de route source et les redirigent comme la route source lindique. Beaucoup de routeurs acceptent galement les paquets de route source bien que certains dentre eux peuvent tre congurs pour bloquer ces paquets. Le routeur, pour des raisons de scurit, ne devra pas accepter le routage source. Une autre manire encore plus simple pour spoofer un client est dattendre que le systme client ait teint sa machine et de se faire passer ensuite pour ce dernier. Les entreprises utilisent souvent des PC et le protocole TCP/IP et NFS pour se connecter des serveurs Unix et obtenir un accs aux rpertoires et aux chiers du serveur. Comme NFS utilise uniquement les adresses IP pour authentier les clients, un intrus pourrait congurer un PC avec le mme nom et la mme adresse IP quun autre ordinateur, et alors essayer de lancer des connexions au serveur Unix comme sil tait le vrai client. Ceci est trs simple raliser et ressemblerait une attaque de lintrieur.

Administration et Scurisation des systmes Linux/BSD

93

Le routeur devra donc refuser les connexions dune machine ayant la mme adresse IP quune machine interne, mais se trouvant lextrieur du rseau local. Les e-mails sont particulirement sujets au spoong car ils sont faciles raliser. Les courriers lectroniques sans lajout dune signature lectronique ne peuvent pas tre dorigine able. Il est facile par Telnet de se connecter directement au port SMTP du systme (port 25). Le serveur recevant ces commandes fait conance cette personne si elle sidentie. Do le fait que le courrier lectronique peut lui aussi tre spoof facilement en entrant une adresse dexpditeur diffrente de ladresse relle. On peut donc sans aucun privilge falsier ou spoofer le courrier lectronique. Dautres services comme le DNS peuvent aussi tre spoofs mais avec toutefois plus de difcults que le courrier lectronique. Ces services reprsentent une crainte qui mrite dtre considre quand on les utilise. Le routeur rewall devra tenir rgulirement jour ses chiers LOG an de contrler toute tentative de piratage. De plus, ces chiers LOG devront tre scuriss pour viter toute modication malveillante.

6.1.6

Les scanners

Un scanner est un programme qui permet de savoir quels ports sont ouverts sur une machine donne. Les Hackers utilisent les scanners pour savoir comment ils vont procder pour attaquer une machine. Leur utilisation nest heureusement pas seulement malsaine, car les scanners peuvent aussi permettre de prvenir une attaque. Le plus connu des scanners rseau est WS_Ping ProPack, que lon peut trouver sur http ://www.ipswitch.com/french/wsping.html Les chiers LOG gnrs par les scanners ne doivent pas tre modiables par un pirate.

6.1.7

Les chevaux de Troie

Un cheval de Troie est un programme qui se cache lui-mme dans un autre programme apparemment au-dessus de tout soupon. Quand la victime (lutilisateur normal) lance ce programme, elle lance par l mme le cheval de Troie cach. Actuellement, les chevaux de Troie les plus utiliss sont : Back Orice 2000, Backdoor, Netbus, Subseven, Socket de Troie. La mthode la plus efcace pour se protger de ces programmes nfastes est dutiliser un bon antivirus comme Norton 2000 ou Network Associates. Des programmes spciques permettent galement de scruter toute tentative de connexion sur les ports scruts. Lockdown 2000 est le plus connu dentre eux : une fois une tentative de connexion dtecte, il fait un traceroute sur lIP qui a tent la connexion. La version 4 possde en bibliothque 488 signatures de Troyans. La machine Linux devra tre quipe dun antivirus permettant de reprer non seulement les virus, mais galement les chevaux de Troie.

6.1. Les diffrents types dattaque

dupont_s@epita.fr

6.1.8

Les vers

Un ver est un programme capable de se propager et de sauto-reproduire sans lutilisation dun programme quelconque ni dune action par une personne. Sur chaque ordinateur o il agit, le ver cre une nouvelle liste de machines distantes cibles. En parallle, le ver : 1. essaie de trouver les mots de passe des comptes utilisateurs, 2. essaie dentrer dans chaque machine cible en se faisant passer pour un utilisateur de la machine attaquante (aprs avoir crack le mot de passe utilisateur), et en utilisant un ancien bug dans le protocole nger, qui permet de savoir quels sont les usagers connects sur une machine distante ou sur quelle machine est connect un utilisateur donn. Les attaques de vers sont toutefois trs rares parce que les serveurs sur internet sont de plus en plus performants (Windows NT Server ou Apache), mais cest toujours une mthode utilise par les hackers quand un nouveau bug est dcouvert dans un systme dexploitation. Les vers permettent aux agresseurs dattaquer un maximum de sites en peu de temps. Le routeur rewall ne doit pas sattarder ltrer les vers : cest la qualit du systme dexploitation qui doit permettre denrayer toute attaque de vers.

6.1.9

Les trappes

Une trappe est un point dentre dans un systme informatique qui passe au-dessus des mesures de scurit normales. Cest gnralement un programme cach ou un composant lectronique rendant le systme de protection inefcace. De plus, la trappe est souvent active par un vnement ou une action normale (exemple : trappe dans les premires versions de Internet Explorer 5). Pareillement au type dattaque prcdent, les trappes sont des programmes qui ne peuvent pas tre dtects au niveau IP, mais au niveau application (signature). Cest donc le rle de lantivirus et du systme dexploitation de dtruire les trappes.

6.1.10

Les bombes logiques

Ce sont des dispositifs programms dont le dclenchement seffectue un moment dtermin en exploitant la date du systme, le lancement dune commande, ou nimporte quel appel au systme. Les bombes logiques doivent tre repres au niveau applicatif, par un antivirus performant.

Administration et Scurisation des systmes Linux/BSD

95

6.1.11

Le TCP-SYN ooding

Quand un client essaie dtablir une connexion TCP sur un serveur, le client et le serveur changent une squence de messages. Cette connexion technique sapplique toutes les connexions TCP/IP (Telnet, web, e-mails...). Le systme client commence par envoyer un message SYN (pour synchronisation) au serveur. Le serveur renvoie alors un accus de rception du SYN : SYN-ACK au client. Le client nit alors par tablir la connexion en rpondant par un ACK. La connexion (au niveau 4 du modle OSI) entre le client et le serveur est donc ouverte et le service dchange de donnes peut sexcuter. La faille vient du fait quau moment o le serveur a renvoy un accus de rception du SYN (SYN- ACK), le serveur mais na pas encore reu le ACK du client. Cest alors une connexion dite semi- ouverte. Le serveur construit dans sa mmoire systme une structure de donnes dcrivant toutes les connexions courantes. Cette structure de donnes est de taille nie, ce qui veut dire quil peut se crer un dpassement de capacit (overow) en crant intentionnellement trop de connexions partiellement ouvertes. Le fait de crer ces semi-connexions sans se faire reprer est facilement ralisable avec lIP spoong. Lordinateur de lagresseur envoie des messages SYN au serveur victime ; ceux-ci paraissent provenir dun ordinateur bien dni mais font rfrence un systme client qui nest pas capable de rpondre au message SYN-ACK. Ce qui veut dire que le message ACK nal ne sera jamais envoy au serveur victime. Ces semi-connexions dans la structure de donnes du serveur victime vont ventuellement crer un dbordement dans cette structure et le serveur sera incapable daccepter dautres connexions tant que la table ne sera pas vide. Normalement, il y a un systme de time-out associ chaque connexion ouverte, donc les semi-connexions devraient expirer et le serveur victime rcuprer de la place libre dans sa mmoire pour dautres connexions. Toutefois, le systme agresseur peut simplement continuer envoyer des paquets dont lIP est spoofe plus vite que le serveur victime puisse expirer les semi-connexions. Dans la plupart des cas, la victime dune telle attaque aura des difcults accepter toute nouvelle connexion. Dans ces cas, lattaque naffectera pas les connexions dj existantes ou la capacit crer des connexions de lintrieur vers lextrieur. Par contre, dans certains cas, le serveur aura puis toutes ses ressources mmoires, et pourra planter et donc tre rendu inoprant. La localisation de lattaque est trs souvent obscure parce que les adresses IP des paquets SYN envoys sont rarement plausibles. Quand le paquet arrive au serveur victime, il ny a aucun moyen de dterminer sa vritable source. Comme internet fait suivre les paquets sur une adresse de destination, le seul moyen de valider la source dun paquet est dutiliser le ltrage. Avec la technologie actuelle du protocole IP, il est impossible dliminer tous les paquets spoofs. Mais il existe quelques solutions pour rduire le nombre de paquets spoofs et sortant du rseau. Le routeur devra limiter les entres linterface externe, en naccordant pas le droit

6.1. Les diffrents types dattaque

dupont_s@epita.fr

dentre un paquet qui a une adresse source du rseau interne. Il peut aussi tre bon de ltrer les paquets sortants qui ont une adresse source diffrente du rseau interne an de prvenir une attaque dIP spoong provenant du rseau interne. La combinaison de ces deux types de ltrage doit empcher les agresseurs extrieurs denvoyer des paquets prtendant provenir du rseau interne. Cela doit galement empcher les paquets provenant du rseau interne de prtendre venir de lextrieur du rseau. LIP spoong et le SYN-ooding sont actuellement les deux principaux problmes de la scurit sur Internet.

6.1.12

Le Nuke

Les Nukes sont des plantages du systme dexploitation ds des pirates qui connaissent votre adresse IP, et qui utilisent un bug du systme. Les Nukes font gnralement planter le systme et il ne reste plus qu rebouter. Avec Linux, et sa particularit dtre en Open Source, les failles du systme se rsolvent delles- mmes, puisque ce sont les utilisateurs qui dtectent et corrigent les failles. Le temps de latence entre la dtection de la faille et sa rparation est donc plus court quavec les autres systmes dexploitation, ce qui rduit potentiellement les possibilits dattaques. Il faudra donc raliser une veille technologique du systme Linux, et tlcharger les patchs de correction et de mise jour.

6.1.13

Le Flood

Le Flood consiste envoyer trs rapidement de gros paquets dinformations la machine routeur ( condition davoir un PING trs court, comme cest le cas pour un RLE), ce qui risque de faire planter la machine (Ping Of Death : message ICMP de 64 ko qui faisait planter Windows). Une solution consiste avoir une bonne gestion de la fentre danticipation TCP, et denvoyer autant que faire se peut des messages ICMP de rduction de fentre.

6.1.14

Le Spamming

Le Spamming consiste envoyer plusieurs milliers de messages identiques une bote aux lettres pour la faire saturer. En effet, les mails ne sont pas directs, ainsi lorsque le courrier sera relev, celui-ci mettra beaucoup trop de temps et la bote aux lettres sera alors inutilisable. Le routeur rewall pourra cependant dtecter les tentatives de Spamming, en sniffant les paquets IP arrivants, et en remarquant une trop grande frquence dans la rception dun mme message (taille du paquet, adresses source et destination identiques).

Administration et Scurisation des systmes Linux/BSD

97

6.1.15

Les virus

Les constructeurs de rewalls tendent maintenant fournir avec leurs produits une solution antivirus complte, qui permet de ltrer les attaques logicielles comme les chevaux de Troie, les vers, les trappes et les bombes logiques. Les lments actifs du rseau sont dsormais de vritables remparts contre une plthore dattaques, quelles soient au niveau rseau ou au niveau applicatif. Cela rend la tche des administrateurs rseau plus simple, car toutes les fonctions de scurit sont fdres sur un seul et mme quipement, plus robuste et entirement administrable. Les lments composant le rseau ne sont pas les seuls remparts aux attaques. Le systme dexploitation garantit un niveau de scurit supplmentaire vis--vis des attaques de type virus, nuke ou trappes. Cest pourquoi nous nous intressons maintenant laspect scurit de Linux.

6.1.16

Attaque du Display

Comment protger sa session X ? Dans le chier .xsession (si vous en avez un dans la racine), mettre les lignes suivantes : # Inhibe toute connexion xhost Utiliser xauth pour modier le chier dautorisation .Xauthority. Exemple : % xauth list xauth : creating new authority le /home/user/.Xauthority % xauth Using authority le /home/user/.Xauthority xauth> ? Commands : add exit extract help info list merge nextract nlist nmerge quit remove source ? xauth> list the-pilgrim :0 MIT-MAGIC-COOKIE-1 383242...... xauth> remove the-pilgrim :0 1 entries removed xauth> list xauth> quit Le chier .Xauthority doit avoir les droits rw- Une fois connects, il ne faut pas laisser votre terminal sans surveillance. Quelquun peut changer les droits de vos comptes/chiers, charger des images, etc.

CHAPITRE 7 Les solutions de dfense

7.1
7.1.1

Les dtecteurs dintrusion IDS


snort

Snort est un systme de dtection dintrusion rseau en sources ouvertes, capable deffectuer lanalyse du trac en temps rel et de la journalisation de paquets sur des rseaux IP. Il peut effectuer de lanalyse de protocoles, de la recherche / correspondance de contenu et peut tre utilis pour dtecter une varit dattaques et de scans, tels que des dbordements de tampons, des scans de ports furtifs, des attaques CGI, des scans SMB, des tentatives didentication dOS, et bien plus. Snort utilise un lan gage de rgles exible pour dcrire le trac quil devrait collecter ou laisser passer, ainsi quun moteur de dtection qui utilise une architecture modulaire de plu gin. Snort possde aussi des capacits modulaires dalertes temps rel, incorporant des plugins dalerte et de journalisation pour syslog, de chiers textes en ASCII, de sockets UNIX, de messages WinPopup des clients Windows en utilisant smbclient de Samba, de base de donnes (Mysql/PostgreSQL/Oracle/ODBC) ou XML. Snort a trois utilisations principales. Il peut tre utilis comme un simple renieur de paquets comme tcp dump(1), un enregistreur de paquets (utile pour dboguer le trac rseau, etc), ou comme un complet systme de dtection dintrusion rseau. Snort journalise les paquets dans le format binaire tcp dump(1) , vers une base de donnes ou dans le format ASCII dcod de Snort vers une "hirarchie" de rpertoires de journalisation qui sont nomms daprs ladresse IP du systme "tranger".

98

Administration et Scurisation des systmes Linux/BSD Systme RedHat Mandrake Debian OpenBSD commande dinstallation rpm -Uvh snort-*.rpm urpmi snort apt-get install snort pkg_add snort.*.tgz dmarrage du programme service snortd start /etc/init.d/snortd start /etc/init.d/snortd start snort -A full -D

99

Sous OpenBSD Vous pourrez trouver la liste des rgles a utiliser dans le rpertoire /usr/local/share/examples/snort ensuite il faudra : 1. copier le chier /usr/local/share/examples/snort/snort.conf dans /etc 2. modier le chier /etc/snort.conf et remplacer la ligne : var RULE_PATH ./ par var RULE_PATH /usr/local/share/examples/snort 3. ensuite : mkdir /var/log/snort 4. enn pour lancer snort il sufra de tapper la commande : /usr/local/bin/snort -A full -D -c /etc/snort.conf et directement linclure dans le chier /etc/rc.local pour quil soit lanc a chaque dmarrage.

7.1.2

aide

Aide est un trs puissant dtecteur dintrusion systme en effet il va tout dabord cartographier (faire une prise dempreinte) tous les chiers sensibles du systme et ensuite vrier la faon dont il ont t modis, ainsi si celle-ci ne semble pas correcte alors aide va signaler toute les modications effectues. Systme RedHat Mandrake Debian OpenBSD commande dinstallation rpm -Uvh aide-*.rpm urpmi aide apt-get install aide pkg_add aide.*.tgz dmarrage du programme service aide start /etc/init.d/aide start /etc/init.d/aide start aide check

Pour se faire : 1. il va tre ncessaire de crer une base de donne sur le systme existant avec la commande : aide init. 2. ensuite la base de donne utilise tant /var/db/aide.db il sera ncessaire de copier /var/db/aide.db.new gnre par aide init : cp /var/db/aide.db.new /var/db/aide.db 3. enn aide check pour lancer la vrication qui donnera la liste des chiers modis.

7.2. Les outils de diagnostique

dupont_s@epita.fr

7.2
7.2.1

Les outils de diagnostique


Nessus

Nessus est loutil indispensable pour un adminstrateur rseau, en effet celui-ci vous permettra deffectuer un audit complet de votre systme en recensant par exemple les problme lis certaines versions de vos diffrents serveurs. Ainsi la n du scan un rapport clair sera gnr. Pour se faire il faudra procd comme suit : 1. nessus-adduser 2. nessus-mkcert 3. lancer le serveur : nessusd sous BSD ou /etc/init.d/nessusd start sous linux 4. ensuite il faudra vous connecter en tant que client avec la commande nessus 5. slectionner les plugins souhaits pour le scan et enn choisir la machine a scanner en cliquant sur longlet target selection.

Connexion avec le login cr par la commande nessus-adduser

Selection des plugins a utiliser durant le scan

Administration et Scurisation des systmes Linux/BSD

101

Selection de la cible a scanner

7.2.2

Dsniff

dsniff est une collection de programmes permettant dauditer un rseau et deffectuer des tests dintrusion ainsi dans cette collection on pourra noter la prsence de : 1. dsniff, 2. lesnarf, 3. mailsnarf, 4. urlsnarf, 5. et webspy qui permettrons dcouter passivement le rseau an den extraire les donnes les plus intressantes on verra ainsi apparatre tous les logins/passe, les contenus des mails qui transitent sur le rseau ! !. dans le cas ou tout serait reli par un hub par exemple. Il existe une deuxime collection de programmes : arpspoof, dnsspoof, et macoff qui facilitent linterception du trac rseau normalement non accessible un attaquant. Enn sshmitm et webmitm qui permeteront de rediriger les sessions SSH et HTTPS en se basant sur certaines anciennes failles.

7.3
7.3.1

les outils de cryptage et dauthentication


IPsec

IPsec vise prvenir les diverses attaques rendues possibles par le protocole IP, notamment empcher un adversaire despionner les donnes circulant sur le rseau ou de se faire passer pour autrui an daccder des ressources ou donnes protges.

7.3. les outils de cryptage et dauthentication

dupont_s@epita.fr

Dans ce but, IPsec peut fournir, suivant les options slectionnes, tout ou partie des services de scurit suivants : Condentialit des donnes et protection partielle contre lanalyse du trac. Les donnes transportes ne peuvent tre lues par un adversaire espionnant les communications. En particulier, aucun mot de passe, aucune information condentielle ne circule en clair sur le rseau. Il est mme possible, dans certains cas, de chiffrer les en-ttes des paquets IP et ainsi masquer, par exemple, les adresses source et destination relles. On parle alors de protection contre lanalyse du trac. Authenticit des donnes et contrle laccs continu. Lauthenticit est compose de deux services, gnralement fournis conjointement par un mme mcanisme : lauthentication de lorigine des donnes et lintgrit. Lauthentication de lorigine des donnes garantit que les donnes reues proviennent de lexpditeur dclar. Lintgrit garantit quelles nont pas t modies durant leur transfert. La garantie de lauthenticit de chaque paquet reu permet de mettre en oeuvre un contrle laccs fort tout au long dune communication, contrairement un contrle daccs simple louverture de la connexion, qui nempche pas un adversaire de rcuprer une communication son compte. Ce service permet en particulier de protger laccs des ressources ou donnes prives. Protection contre le rejeu La protection contre le rejeu permet de dtecter une tentative dattaque consistant envoyer de nouveau un paquet valide intercept prcdemment sur le rseau. Ces services sont bass sur des mcanismes cryptographiques modernes qui leur confrent un niveau de scurit lev lorsquils sont utiliss avec des algorithmes forts.

7.3.2

Utilisation de Kerberos

Systme de scurit et dauthentication des utilisateurs du rseau local du MIT. Il ne semble pas avoir t pirat depuis sa mise en service, il y a une dizaine dannes. Le protocole Kerberos permet un chiffrement de lensemble des transactions entre applications adapts pour lutiliser. On trouve des versions dites kerberises des outils telnet, ftp, fetchmail... Ce protocole fonctionne sur un contrle de lidentit des clients, qui peuvent obtenir par la suite des tickets pour sauthentier auprs des diffrents services prsents

Administration et Scurisation des systmes Linux/BSD

103

sur le rseau. Toutes les transactions passant par Kerberos sont chiffres, ce qui rsout un ensemble de problmes de scurit. En revanche, le systme impose sur les utilisateurs une certaine lourdeur, et, en dpit de sa abilit, ne peut tre recommand partout. Ce module dtaille le fonctionnement du protocole Kerberos, et son implmentassion sous Linux. Il dcrit les modalits dutilisation de Kerberos et de sa conguration, ainsi que les inconvnients quil occasionne. Ce module est susceptible dintresser les administrateurs de rseaux ncessitant une haute scurit, et ceux dsireux de dcouvrir la conception dun protocole scuris et les parades possibles aux problmes de scurit.

7.3.3

Signature scuris de mail avec GnuPG

Introduction a GnuPG Pourquoi utiliser GPG ? Si lintrt de crypter ces chiers et ces mails ne prsente que peu dattrait pour le grand public ne dsirant pas a jouer a James Bond, la cryptographie offre dautres avantages plus tangibles comme par exemple : * Possibilit de signer un mail : en effet GPG permet simplement a quelquun disposant de votre clef publique, (nous reviendrons plus tard sur les concepts de cls prive et publique), de vrier que vous tes vraiment la personne layant envoy. La cryptographie dans ce cas-ci remplit la fonction de signature numrique * Possibilit de certier un mail : il est aussi possible par le mme mcanisme que le prcdent de certier que le contenu du mail na pas t modie depuis son envoi. Il sagit donc ici dun scelle virtuel. La signature se prsentera sous la forme dun attachement a votre mail et sera donc interprte par votre client mail sil le supporte et ignore dans le cas contraire. Votre mail restera lisible comme par avant. GPG permet aussi bien sur de crypter des mails et des chiers. Comment a marche ? GPG sappuie sur des algorithmes a base de mcanismes de clef prive et publique. Sans rentrer dans trop de dtails qui ne sont pas dans loptique de ce tip, signalons juste que des messages crypte avec votre clef prive sera dcrypter avec votre clef publique (Ceci est une grosse conceptualisation pour une explication plus en profondeur et correcte se rendre ici). Vous ne donnerez donc que votre clef publique a des tierces personnes, votre clef prive ne sera jamais divulgue do un norme gain de scurit par rapport a un systme avec une seule clef. Ceci est pour la partie technique, mais le systme repose sur un concept tout aussi important, les rseaux de ?Trusted keys ?. En effet, mme si vous pouvez vrier la signature dun mail rien ne vous garantie que la personne qui vous la envoyer existe

7.3. les outils de cryptage et dauthentication

dupont_s@epita.fr

vraiment et que son identit correspond. Pour cela, par exemple pendant les runions de LUG ou autre, les personnes schangent leurs ngerprint tout en vriant leurs papiers didentits. Puis ils ?signent ? les clefs quils ont vrier. Quand on rcupre une clef dun serveur, on peut voire la liste des personnes ayant garantie lidentit de la personne. donc si par exemple, la clef a t signe par quelquun en qui vous avez conance, vous pouvez considrer la clef comme valide. Il se cre donc un rseau de conance. Installation de GPG Conguration initiale de GPG : Tout dabord il vous faudra gnrer votre clef : excuter GPG une premire fois pour que les chiers de conguration soit cre, $> gpg gpg : /home/seb/.gnupg : directory created gpg : /home/seb/.gnupg/options : new options le created gpg : you have to start GnuPG again, so it can read the new options le Puis une seconde fois pour gnrer les trousseaux de clefs prives et publiques. $> gpg gpg : /home/seb/.gnupg/secring.gpg : keyring created gpg : /home/seb/.gnupg/pubring.gpg : keyring created Enn excutez : $> gpg gen-key Please select what kind of key you want : (1) DSA and ElGamal (default) (2) DSA (sign only) (4) ElGamal (sign and encrypt) Your selection ? Tapez juste [entrer] a ce prompt DSA keypair will have 1024 bits. About to generate a new ELG-E keypair. minimum keysize is 768 bits default keysize is 1024 bits highest suggested keysize is 2048 bits What keysize do you want ? (1024) Pareil, restez avec le choix par dfaut.

Administration et Scurisation des systmes Linux/BSD Requested keysize is 1024 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for ? (0) Idem, votre clef sera dnitive par dfaut. Key does not expire at all Is this correct (y/n) ? Taper [entrer] aprs avoir vrier si les options sont correctes. You need a User-ID to identify your key ; the software constructs the user id from Real Name, Comment and Email Address in this form : Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de> ? Real name : Il suft ici de taper son prnom et nom. mail address : | Assez explicite Comment : Cest la place idale pour y mettre votre nickname Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit | Appuyer sur (O) si vous tes satisfait. You need a Passphrase to protect your secret key. Enter passphrase : Et voila enn le moment tant attendu ou vous entrerez votre mot de passe, vu que celui ci vous servira a protger votre identit, veuillez choisir un mot de passe assez facile a retenir pour que vous nayez pas a la noter quelque part et assez complexe pour viter que quelquun ne la devine, une mot de passe compose de caractres alphanumriques en mixed case est parfait dans ces cas la. | We need to generate a lot of random bytes. It is a good idea to perform

105

7.3. les outils de cryptage et dauthentication

dupont_s@epita.fr

some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation ; this gives the random number generator a better chance to gain enough entropy. .+++++++++++++++..+++++++++++.+++++++++++++ ++.++++++++++++++++++++.++++++++++.+++++++ ++++++++......<+++++>..+++++................. ..................+++++ public and secret key created and signed. Et voila vos clefs ont t cres. Maintenant ditez /.gnupg/options et dcommentez la ligne : #keyserver wwwkeys.nl.pgp.net Vous pouvez videment mettre un autre serveur si vous disposez de son adresse. Il sagit maintenant denvoyer votre clef sur le serveur pour que les personnes voulant rcuprer votre clef publique naura besoin que de votre ID. Voyons tout dabord plus en dtail ces diffrents termes : tapez : $> gpg list-keys Normalement il devrait y avoir une seule clef, la votre. /home/seb/.gnupg/pubring.gpg pub 1024D/19E27067 2001-10-15 Seb (#####) <##########> sub 1024g/B0418883 2001-10-15

1024D = la longueur de la clef 19E27067 = votre User ID. et maintenant vous pouvez faire un $> gpg ngerprint 19E27067* pub 1024D/19E27067 2001-10-15 Seb (#####) <#########<> Key ngerprint = 767C 7E76 7142 FF87 .... 8788 7F47 .... 19E2 7067 sub 1024g/B0418883 2001-10-15 Vous avez srement remarqu que les 8 derniers caractres de votre ngerprint contient votre ID. Donc, si vous voulez donner votre clef a quelquun il faudra lui donner votre n-

Administration et Scurisation des systmes Linux/BSD

107

gerprint entier mais il naurait qua entrer votre ID et vrier le reste du ngerprint. pour cela il faut videment que votre clef soit sur un serveur, les serveurs sont relies entre eux a la manire des serveurs dns, il suft donc de lenvoyer sur un des serveur. $> gpg send-key 19E27067* Ajout de clef : Vous avez rcuprer le ngerprint dun ami, aprs avoir vrier ses papiers didentits (cette vrication est obligatoire pour un fonctionnent du rseaux des ?trusted key ?). Une fois devant votre ordinateur faites : $> gpg recv-key son_id (rappel : son ID est les 8 derniers caractres de son ngerprint pour une clef 1024D) Puis : $> gpg ngerprint son_id et vrier si le ngerprint correspond bien a celui quil vous a donne. Maintenant que vous pouvez conrmer que son identit correspond bien a sa clef vous pouvez la signer $> gpg sign-key son_id Et nalement, il faut faire savoir au serveur que vous avez signer la clef $> gpg send-key son_id Ajout dun UID : Il arrive souvent quune mme personne ait plusieurs comptes mails par exemple, un pour le travail, un personnel etc ... Dans ce cas gpg permet dassocier plusieurs UID a la mme personne. Pour cela il suft de faire : $> gpg edit-key votre_id

7.3. les outils de cryptage et dauthentication la, tapez : adduid

dupont_s@epita.fr

A ce moment la, les mmes questions que lors de la cration de la clef seront pose a la diffrence quune nouvelle clef ne sera pas gnre. il suft de taper : save pour quitter et sauvegarder les changements. Vous pouvez voir les changement avec : $> gpg list-key Et il faudra videment mettre a jour la clef dans le serveur : $> gpg send-key votre_id A noter que les nouveaux ids devront tres signe aussi. Intgration dans les clients mails : * Dans Sylpheed : Il suft de dactiver le support gpg dans longlet privacy des options. Rvoquer une clef : Si votre clef est corrompue, plus utilise, ou compromise, il vous la rvoquer, mais pour cela il faut crer un certicat de rvocation. $> gpg gen-revoke user_id Create a rvocation certicate for this key ? Please select the reason for the revocation : 1 = Key has been compromised 2 = Key is superseded 3 = Key is no longer used 0 = Cancel (Probably you want to select 1 here) Your decision ?

CHAPITRE 8 La recette magique dun systme scuris...

Malheureusement et contrairement au titre de ce chapitre la scurit dun systme ne viendra jamais dun logiciel miracle mais bel et bien dune administration aussi paranoaque que possible. Nanmoins il est possible de donner une liste de rgles simples a suivre :

8.1

fonctionnalites de la machine.

Dterminez de faon prcise ce que seront les fonctionnalites ncessaires et sufsantes de chaque machines : comment sera-t-elle connecte au rseau. quels utilisateurs y auront accs. quels programmes ncessaires et sufsants

8.2

Le disque Dur

viter que le puisse remplir le disque dur En effet il est a considrer quil est possible de freezer un systme simplement en remplissant les rpertoires /tmp, /var/log ou encore les rpertoires des logs des diffrents IDS (dtection dintrusion). Cest pourquoi il sera indispensable de rserver des partitions pour ces diffrents rpertoires et mettre en place des quotas pour chaques utilisateurs.

Restreindre les options de montage des diffrentes partitions Dans les options de montage des diffrentes partitions il est possible dy interdire toute excution de programmes, ou lutilisation de chier a permissions SUID/GUID 109

8.3. les Programmes

dupont_s@epita.fr

avec respectivement les options noexec et nosuid. Ce qui pourrait tre le cas par exemple des rpertoires /home/ftp/pub, /mnt/cdrom, etc.

8.3

les Programmes

limiter le nombre de programmes du systme En effet il faut considrer que chaque programme va reprsenter une faille de scurit potentiel supplmentaire. Il sera donc indispensable pour ce faire dinstaller un systme minimal par dfaut puis dajouter un a un les programmes ncessaires en identiant ceux donnant accs a des chiers SUID

la mise a jour Il faut considrer que chaque programme possde une faille de scurit potentiel et que donc elle nira par tre dcouverte cest pourquoi il faudra se tenir inform des mises a jour de scurit.

8.4

les droits utilisateurs

Lutilisateur root ayant un accs illimit a tous les chiers du systme il va donc falloir restreindre voir supprimer les logins de root. Par exemple le supprimer son accs via ssh en ajoutant la ligne PermitRootLogin no au chier /etc/ssh/sshd_cong. Ensuite il est important de vrier lumask par defaut donn par le chier /etc/prole.

8.5

les services

Chaque service tant une porte ouverte sur votre machine

CHAPITRE 9 Cryptographie

9.1

Scurit relative de la Cryptographie


Budget Outil Temps machine circuit prdiffus circuit prdiffus ASIC ASIC ASIC Casser clef de 40 bits Casser clef de 56 bits Cot Temps Cot Temps 1 semaine 0,08 $ 38 ans 5 000 $ 0,08 $ 18 mois 5 000 $ 12 min. 24 sec. 0,08 $ 19 jours 5 000 $ 0,18 sec. 0,001 $ 3 heures 38 $ 0,001 $ 6 min. 38 $ 0.005 sec. 0.0002 sec. 0,001 $ 12 sec. 38 $

Attaquant Hacker PME Grande Ent.

40$ 10K$ 300K$ 300K$ Multinationale 10 M$ Etat (CIA,DST) 300 M$

TAB . 9.1: Source : Matthew Blaze, rapport prsent au snat amricain juin 96

9.2

Performance des diffrents algorithmes


Algorithme des-cbc 3des-cbc cast128-cbc blowsh-cbc twosh-cbc rc5-12-cbc rc5-16-cbc Kbyte/s 11920 4867 9622 15530 17481 11970 9411 111 Mbit/s 95 39 77 124 140 96 75

Rapidit de algorithmes symtrique.

9.2. Performance des diffrents algorithmes rc5-20-cbc rc6-cbc mars-cbc saferk64-cbc saferk128-cbc safersk64-cbc safersk128-cbc skipjack-cbc idea-cbc 7586 8937 5545 6304 4179 5037 4179 1957 4798 61 71 44 50 34 40 33 16 38

dupont_s@epita.fr

Rapidit de algorithmes des tables de hash. HMAC hmac-md5 hmac-sha1 hmac-ripemd160 Rapidit de algorithmes asymtrique. RSA RSA RSA RSA RSA RSA RSA RSA RSA RSA DSA DSA DSA EC-MODP EC-MODP EC-MODP EC-MODP EC-MODP EC-GF2N EC-GF2N EC-GF2N EC-GF2N EC-GF2N 1024 bit keygen 1024 bit encryption 1024 bit decryption 1024 bit signing 1024 bit verication 2048 bit keygen 2048 bit encryption 2048 bit decryption 2048 bit signing 2048 bit verication keygen signing verication keygen ElGamal encrypt ElGamal decrypt DSA sign DSA verify keygen ElGamal encrypt ElGamal decrypt DSA sign DSA verify 0.35 seconds/key 1786 times/second 75 times/second 74 times/second 1991 times/second 2.83 seconds/key 672 times/second 12 times/second 12 times/second 715 times/second 1.23 seconds/key 137 times/second 70 times/second 0.20 seconds/key 45 times/second 90 times/second 87 times/second 44 times/second 0.10 seconds/key 31 times/second 61 times/second 60 times/second 30 times/second Kbyte/s 72178 18366 23080 Mbit/s 577 147 185

Tous ces tests ont t ralis avec un PIII 600Mhz

Administration et Scurisation des systmes Linux/BSD

113

9.3

Diffrents Types de Cryptographie

Algorithmes Cryptographiques (restreint) les donnes sont cryptes/dcryptes par un algorithme. Algorithmes clef secrte les donnes sont cryptes/dcryptes par une clef unique. Algorithmes clef Publique les donnes sont cryptes/dcryptes par deux clefs diffrentes .

9.3.1

Lalgorithme RSA

9.4
9.4.1

Protocoles scuriss. OpenSSL.


Fonctionnement dun protocol scuris.

SSL utilise les fonctionnalits offertes par TCP/IP pour permettre aux couches suprieures daccder un mode daccs scuris. Dans les plus courants utilisant ce mode, on va trouver bien sr HTTP mais aussi LDAP, SMTP, NNTP ou encore IMAP. Les trois fonctionnalits de SSL sont : Authentication du serveur cela permet un utilisateur davoir une conrmation de lidentit dun serveur. En effet un programme client SSL utilise des mthodes de chiffrement cl publique pour vrier si le certicat et lidentit publique fournis par le serveur sont valides et ont t fournis par un fournisseur de certicat prsent dans la liste de ceux connus du client. Cette fonctionnalit est importante dans la mesure o le client doit envoyer des donnes condentielles comme son numro de carte bleue. Authentication du client la technique est ici exactement la mme que pour lauthentication du serveur. Cela peut servir si le serveur envoie des informations importantes un client, qui doit, dans ce cas tre authentier. Chiffrement des donnes toutes les donnes issues de lentit mettrice sont chiffres et dchiffres par lentit rceptrice, ce qui permet de garantir la condentialit des donnes. Un mcanisme permet galement de garantir lintgrit des donnes. Le protocole SSL peut tre divis en 2 sous protocoles : lencodage (record) et la ngociation (handshake). Le premier dnit tout ce qui touche lenvoi des donnes. Le second est utilis pendant toute la phase de ngociation entre le client et le serveur jusqu ce que tous les paramtres soient valids par lun et lautre.

9.4. Protocoles scuriss. OpenSSL.

dupont_s@epita.fr

9.4.2

Lencodage dans SSL

SSL est capable dutiliser diffrents mcanismes de chiffrement crs pour lauthentication, lenvoi de certicats ou ltablissement des cls. Le choix des mcanismes de scurit mis en oeuvre dpend de plusieurs paramtres : la politique de scurit de lentreprise possdant le serveur, la version du protocole SSL ou encore les lois gouvernementales. Le but du sous-protocole de ngociation est en outre dobtenir un accord entre le client et le serveur pour le chiffrement utilis. Lors de la phase de ngociation, le client et le serveur vont se mettre daccord sur le meilleur algorithme de chiffrement utilisable entre les parties. La table ci-dessous rend compte des diffrents algorithmes pouvant tre utiliss : MEILLEURES GARANTIES 3DES qui supporte un chiffrement 168 bits coupl avec SHA-1 pour lintgrit. Ce mcanisme nest autoris qu lintrieur des USA et est appropri aux banques car 3DES est nettement moins rapide que RC4. Support par SSL 2.0 et 3.0 BONNES GARANTIES Ce chiffrement est sufsamment fort pour garantir la plupart des transactions lectroniques RC4 avec un chiffrement 128 bits coupl MD5 pour lintgrit. RC4 est le plus rapide des modes de chiffrement offert. Support par SSL 2.0 et 3.0. RC2 avec un chiffrement 128 bits coupl MD5 pour lintgrit. RC2 est plus lent que RC4 et nest plus support que par SSL 2.0. DES qui permet un chiffrement sur 56 bits coupl avec SHA-1. Ce chiffrement reste moins performant que RC4 ou RC2. Il est support par SSl 2.0 et 3.0 la diffrence que SSL 2.0 utilise MD5 pour authentier les messages. CHIFFREMENT DDIE A LEXPORTATION Cest le chiffrement qui procure la plus haute scurit pour une exportation internationale RC4 avec un chiffrement 40 bits et MD5. Support par SSL 2.0 et 3.0 RC2 avec un chiffrement 40 bits et MD5. Support par SSL 2.0 et 3.0 FAIBLES GARANTIES Ce mcanisme garantit lintgrit des donnes, mais les donnes qui circulent ne sont pas chiffres.

Administration et Scurisation des systmes Linux/BSD

115

MD5 Authentication des messages avec MD5 sans chiffrement. Cette mthode permet seulement de garantir lintgrit des donnes changes. Elle est typiquement utilise dans le cas o le serveur et le client nont aucun chiffrement en commun.

9.4.3 La ngociation dans SSL


Le SSL combine simultanment lutilisation de cls publiques et de cls symtriques. Les cls publiques prives ou cls asymtriques procurent en effet une trs bonne mthode pour lauthentication mais son utilisation est coteuse en terme de bande passante. A loppos, le mcanisme de cl symtrique (identique pour chiffrer et dchiffrer) est extrmement rapide mais pas rellement adapt lauthentication dun tiers. Ainsi SSL va utiliser son protocole de ngociation qui va tre apte partir des cls publiques et prives du client et du serveur dtablir une communication entre les deux entits avec une cl secrte (symtrique) de taille nettement infrieure celle rencontre pour des cls publiques (128 bits contre 1024 ou plus). Mcanisme 1 Le client envoie au serveur sa version du protocole SSL, ses paramtres de chiffrement, des donnes gnres alatoirement et dautres informations dont le serveur a besoin. 2 Le serveur renvoie sa version de SSL, ses paramtres de chiffrement, des donnes gnres alatoirement et dautres informations dont le client a besoin. Le serveur envoie galement son propre certicat, et si le client demande une information ncessitant un certicat, il demande galement un certicat client. 3 Le client utilise les informations envoyes par le serveur pour lauthentier. Si le serveur ne peut pas tre authenti, la connexion na pas lieu. 4 Avec les donnes pralablement changes, le client est en mesure denvoyer au serveur une pr cl secrte, quil chiffre avec la cl publique du serveur. Si le serveur a requis une authentication du client, celui ci (le client) renvoie galement au serveur un bloc de donnes sign ainsi que son certicat. 5 Si le serveur a requis une authentication, il authentie le client. Le serveur utilise alors sa cl prive de faon pouvoir dchiffrer la pr cl secrte. Le serveur effectue alors une suite dactions (galement effectues par le client) pour obtenir une cl secrte partir de la pr cl secrte. 6 Le client et le serveur utilisent la cl secrte pour gnrer des cls de session qui seront les cls symtriques utilises pour le chiffrement, dchiffrement des donnes et lintgrit.

9.4. Protocoles scuriss. OpenSSL.

dupont_s@epita.fr

7 Le client envoie alors un avertissement au serveur le prvenant que les prochains messages seront chiffrs avec la cl de session. Puis il envoie un message chiffr indiquant que la phase de ngociation est termine. 8 Le serveur envoie alors un avertissement au client comme quoi les prochains messages seront chiffrs avec la cl de session. Puis il envoie un message (chiffr cette fois) indiquant que la phase de ngociation est termine. 9 La phase de ngociation est alors termine. Authentication Dans le cas du SSL il est pour le moment assez rare de rencontrer une authentication du client. En effet, la plupart des applications utilises sur Internet ne requirent pas un tel niveau de scurit. De plus, lauthentication du client ressemble trs fortement une authentication du serveur. Lauthentication serveur a lieu comme suit : [pic] 1 Vrication de la date de validit du certicat du serveur. 2 Est-ce que lautorit de certication est une autorit de conance ? Pour vrier cela, chaque client maintien une liste de noms de domaines. Si le nom spci (nom metteur) correspond un nom rentr dans la liste, le client passe ltape suivante. 3 Vrication de la cl publique partir de la signature. Le client vrie la validit de la signature (chiffre avec la cl prive) fournie dans le certicat grce la cl publique qui a t fournie elle aussi dans le certicat. A partir de ce point, le certicat du serveur est considr comme valable. 4 Vrication du nom de domaine du serveur. Cette tape permet de vrier que le nom de domaine du serveur dni dans le certicat correspond bien la mme adresse Internet. Cette tape nest pas obligatoire et dpend de limplmentassion du client SSL. Elle permet cependant dviter quun usurpateur vienne jouer les intermdiaires entre le client et le serveur et se fasse passer pour lun et lautre auprs des deux entits. Vrier la validit du nom de domaine est le seul moyen dviter ce genre de faille qui permet, dans ce cas, la personne malveillante dintercepter les informations transitant pendant la ngociation et donc ultrieurement de prendre la place du client une fois cette phase passe. Pour usurper lidentit du serveur, le pirate devra galement se procurer la cl prive du serveur. 5 Le serveur est maintenant authenti, la phase de ngociation se poursuit.

CHAPITRE 10 Astuces

10.1
10.1.1

Rcupration du passe Root.


Rcupration du passe Root sous Linux.

Sous Linux il vous faudra simplement dmarrer le systme depuis le cdrom dinstallation et slectionner le mode rescue (gnralement disponible en tapant f3 puis rescue ou linux-resuce). Aprs cette tape il suft de monter votre partition racine : # mount /dev/hda5 /mnt ou mount -t ext2 /dev/hda5 /mnt et de la chrooter.(chrooter = dplacer la racine, ie : /mnt/disque5 = /) # chroot /mnt une fois cette opration effectue vous tes dsormais root sur votre linux, il vous sufra donc de tapper la commande passwd pour changer le mot de passe. redmarrer et cest repartit :).

10.1.2

Rcupration du passe Root sous BSD

Sous les diffrents *BSD cest encore plus simple, il suft de tapper sur la barre espace durant le boot. Tapper boot -s ( boot en single user). Tapper mount -o rw / ( accs en criture au systme de chier). et enn Tapper passwd

117

10.2. Recompilation du Noyau

dupont_s@epita.fr

10.2

Recompilation du Noyau
A

recompilation peut reprsenter un lment non ngligeable de ladministration Systme, en effet le noyau par dfaut comporte des options quil ne sont pas forcement ncessaires et ou il serait possible dconomiser un peu de mmoire.

Pour se faire il vous faudra rcuprer la dernire version stable du noyau linux (2.4.19) sur www.kernel.org et de procder comme suit : tar xvfz linux-2.4.19.tar.gz -C /usr/src cd /usr/src/linux make xcong (interface graphique de conguration) make () make bzImage (cration du noyau) make modules (compilation des modules) make modules_install (installation des modules dans /lib/modules) cd /usr/src/linux/arch/i386/boot/ cp bzImage /boot/vmlinuz-new bien sur il est possible et mme plus que probable que vous ayez certains messages derreurs au moment de la compilation, auquel cas il faudra tout reprendre depuis ltape make xcong an de (de)slectionner certaines options. Une fois cette tape termine il vous faudra modier le chier /etc/lilo.conf an de lui indiquer comment dmarrer avec votre nouveau noyau

/etc/lilo.conf ... image=/boot/vmlinuz-new label=linuxnew root=/dev/hda5 initrd=/boot/initrd.img append="devfs=mount" read-only Bien sur vous devez remplacer /dev/hda5 par votre partition racine. Pour nir noubliez pas de tapper la commande lilo qui va rellement modier le message de boot.

Administration et Scurisation des systmes Linux/BSD

119

10.3

export DISPLAY

Le mode graphique sur Linux/BSD utilisant Xfree86 tant beaucoup plus puissant que sur Windows, il permet des manipulations telles que l export DISPLAY. En effet il est possible lorsque lon se connecte sur un serveur distant de lui spcier le DISPLAY quil doit utiliser. Par exemple supposons que souhaitiez utiliser netscape qui existe sur votre serveur mais pas sur votre machine. 1. Autorisation depuis votre poste de manipuler le DISPLAY par le serveur : xhost +IP_du_serveur Ex :
(seb@ramses)[~]-% xhost +192.168.1.217 192.168.1.217 being added to access control list

2. Connexion sur le serveur : ssh login@serveur 3. Exportation du DISPLAY : export DISPLAY=IP_du_client :0.0 4. excuter netscape : netscape 5. Si tout a t congur correctement netscape apparatra sur votre poste client. Remarque : lune des commandes les plus dangereuse aurait t de taper xhost + auquel cas vous auriez autoris tout poste client a prendre possession de votre display, et donc de pouvoir excuter toute les commandes possibles avec vos droit.

10.4

Serveur RPMS pour Mandrake

Le but de cette astuce est de permettre linstallation en rseau dentreprise ou personnel via FTP des paquetages RPMS sans pour autant avoir a donner les diffrents CD Cot Serveur Prrequis serveur FTP Copie des RPMS le choix de lemplacement o copier les chiers est sans relle importance nous conviendrons de copier tous les chiers rpm dans /var/ftp/pub/RPMS : cp /mnt/cdrom/Mandrake/RPMS/* /var/ftp/pub/RPMS

10.5. Mail 100% anonymes cp /mnt/cdrom/Mandrake/RPMS2/* /var/ftp/pub/RPMS etc...

dupont_s@epita.fr

Gnration du hdlist lors de cette tape nous allons gnrer le chier hdlist que nous inclurons par la suite dans le rpertoire /var/ftp/pub/RPMS : urpmi.addmedia all le ://var/ftp/pub/RPMS partir de quoi urpmi va crer le chier /var/lib/urpmi/hdlist.all.cz cp /var/lib/urpmi/hdlist.all.cz /var/ftp/pub/RPMS

Cot Client suppression des anciens mdia : urpmi.removemedia cdrom1 urpmi.removemedia cdrom2 etc... ajout du nouveau mdia : urpmi.addmedia all ftp ://serveur/pub/RPMS with hdlist.all.cz Ainsi, le poste client naura plus qu taper la commande urpmi paquetage pour que tous les chiers de dpendance soient tlcharges et installs automatiquement.

10.5

Mail 100% anonymes

telnet smtp.wanadoo.fr 25 HELO esmtp MAIL FROM : j.chirac@elysee.fr RCPT TO : mail@dequi.fr DATA subject : coucou . QUIT

10.6

Connexion SSH sans mot de passe

Avertissement : cette manoeuvre qui a pour but de simplier les connections peut se rvler extrmement dangereuse si quelquun peut avoir un accs complet a votre compte, ex : admin. syst., etc ... En effet, si vous laissez la passphrase vide alors cette autre personne pourra se connecter partout o vous avez copi votre clef publique il lui faudra simplement rcuprer la clef /.ssh/id_dsa

Administration et Scurisation des systmes Linux/BSD Ccl : Toute votre scurit rsidera sur la scurit de votre compte.

121

le but de la manoeuvre est de copier la clef gnre par ssh dans les chiers /.ssh/authorized_keys /.ssh/authorized_keys2 sur le poste serveur. Lors de la gnration de clef vous devez taper : 1. Gnration des clefs cot client. (a) ssh-kengen pour gnrer les clefs /.ssh/identity et /.ssh/identity.pub pour le protocol ssh1 (b) ssh-kengen -t dsa pour gnrer les clefs /.ssh/id_dsa et /.ssh/id_dsa.pub pour le protocol ssh2 2. ensuite il faut copier ces clefs sur le serveur : (a) Dans le cas ou aucune clef nexiste sur le serveur : i. Si le rpertoire .ssh nexiste pas sur le serveur il faudra pralablement le crer par mkdir .ssh ii. scp .ssh/identity.pub login@serveur :.ssh/authorized_keys iii. scp .ssh/id_dsa.pub login@serveur :.ssh/authorized_keys2 (b) Dans le cas ou une clef existe dj sur le serveur : i. scp .ssh/identity.pub login@serveur :.ssh/keys1 ii. scp .ssh/id_dsa.pub login@serveur :.ssh/keys2 iii. ssh login@serveur iv. cd .ssh v. cat keys1 authorized_keys vi. cat keys2 authorized_keys2 vii. rm keys1 keys2

10.7 10.8

mirroring OpenBSD-current Mandrake-cooker Manipulation des images ISO & Gravure

le but cette astuce et de pouvoir crer, manipuler, graver une image iso. Pour se faire Linux (si cela a t spci lors de compilation du noyau) permet de pouvoir monter un priphrique en loopback.

10.8. Manipulation des images ISO & Gravure

dupont_s@epita.fr

Cration dune image ISO la cration dune image iso sous Linux/*BSD se fait par le programme mkisofs, qui permet toutes les manipulations possibles autour de limage. par exemple pour crer une image non bootage : mkisofs -J -R -o OpenBSD.iso OpenBSD/ de mme pour crer une image bootage : mkisofs -b 3.1/i386/cdrom31.fs -J -R -o OpenBSD.iso OpenBSD/ -b : chier de dmarrage (chemin relatif). -J : extension Joilet (windows) pour les chier de 64 caractres. -R : extention Rock Ridge. -o : nom de limage cre. OpenBSD/ : rpertoire contenant les chiers a inclure. Options supplmentaires : -c boot.catalog : cration du catalogue de boot. -l : permet les noms longs (32 caractres). -r : mets les permissions sur les chiers. -L : permet les noms de chier commenant par un ..

Manipulation dune image ISO Sous Linux mount -t iso9660 image.iso /iso -o loop=loop0 et umount /iso Sous *BSD vncong -c vnd0 image.iso mount -t cd9660 /dev/vnd0c /mnt et umount /mnt vncong -u vnd Sous Solaris mount -F fbk -o ro,type=hsfs /dev/fbk0 :output.iso /mnt et umount /mnt

pour monter limage dans le rpertoire /iso. pour dmonter cette image.

pour monter limage dans le rpertoire /mnt pour dmonter limage

pour monter limage pour dmonter limage

Gravure dune image ISO sur cdrom Pour se faire il faudra commencer par excuter la commande cdrecord scanbus si vous nobtenez pas une liste contenant votre graveur, il vous faudra alors, dans le cas dun graveur IDE, charger le module ide-scsi par la commande modprobe ide-scsi.

Administration et Scurisation des systmes Linux/BSD

123

il vous faudra alors noter le numero du priphrique qui sera ncessaire pour ltape suivante. cdrecord -dev=1,0,0 -speed=12 -v image.iso -dev=1,0,0 : numero du device. -speed=12 : spciant la vitesse de gravure. -v : mode afchant tous les messages. -eject : jection du cdrom aprs gravure. image.iso limage iso que vous voulez graver.

10.9
10.9.1

Signature et vrication dintgrit des chiers via MD5/GnuPG


via MD5

Pour crer une empreinte il suft de tapper la commande : md5sum image.iso bc94f333a9090cc298ab ou pour plusieurs chiers md5sum *.iso bc94f333a9090cc298ab fc94sdfsfd300cc298ab il est possible galement de gnrer le md5 checksum et de le stocker dans un chier par : md5sum *.iso > chier.md5 ensuite pour vrier : md5sum -c chier.md5

10.9.2

via GnuPG

Les signatures PGP reposent sur une mthode appele chiffrage clef publique. Cette mthode permet un dveloppeur ou un groupe de dveloppeurs de signer de manire lectronique un chier ou un message en utilisant une clef secrte ou clef prive. La clef prive ne devra et ne sera jamais divulgue publiquement. Pour vrier une signature, nous utiliserons la petite soeur de la clef prive appele clef publique. Cette dernire est disponible pour tous et habituellement rpertorie dans un serveur de clefs.

10.10. Rinstallation de lilo sans disquette

dupont_s@epita.fr

Dans notre exemple, nous avons besoin de la clef publique correspondant au projet de Kernel Linux. Les dveloppeurs du kernel tant des personnes trs consciencieuses, une page spcique a t mise en place signalant le numro de clef utiliser (http ://www.kernel.org/signature.html) : 0x517D0F0E. Pour poursuivre, il vous faudra utiliser le logiciel GnuPG. Cest cet utilitaire qui vous permettra de rcuprer la clef publique et de vous en servir pour vrier la signature de larchive /linux-2.4.4.tar.gz/. Commenons donc par rcuprer la clef auprs du serveur de clefs :
$ gpg --keyserver wwwkeys.pgp.net --recv-keys 0x517D0F0E gpg: requte de la cl 517D0F0E de wwwkeys.pgp.net... gpg: cl 517D0F0E: cl publique importe gpg: Quantit totale traite: 1 gpg: importe: 1 Ceci fait, nous pouvons vrifier la validit de larchive en combinant toutes les informations (clef public, archive et fichier signature) : $ gpg --verify linux-2.4.4.tar.gz.sign linux-2.4.4.tar.gz gpg: Signature faite sam 28 avr 2001 03:48:04 CEST avec une cl DSA ID 517D0F0E gpg: Bonne signature de "Linux Kernel Archives Verification Key <ftpadmin@kernel.org>" ...

"Bonne signature...", cest parfait, notre archive a t vrie avec succs. Nous pouvons faire conance en son contenu. En ralit, ceci nest pas tout fait exact. Bien quil soit extrmement difcile de "casser" une telle clef, il est toujours possible que quelquun ait pirat le serveur *www.kernel.org* pour y glisser un faux numro de clef ou encore *wwwkeys.pgp.net* pour fournir une fausse clef publique. Bien sr, ceci ne passerait pas inaperu : pas plus que quelques heures et des alertes seraient lances de toute part. Sachez seulement que cela reste toujours possible et quil nexiste pas de scurit absolue. Notez quil existe des interfaces utilisateur trs conviviales pour GnuPG ainsi que des modules vous permettant dautomatiser les vrications depuis votre client ftp et/ou mail. Les serveurs de clefs sont nombreux sur Internet et thoriquement tous relis entre eux. Si vous dsirez rcuprer une clef publique an de vrier la signature de lauteur, il vous sufra de faire une simple recherche avec son nom. Certes, dans la plupart des cas, lauteur spcie son numro de clef sur sa homepage ...

10.10

Rinstallation de lilo sans disquette

Pour ce faire il faudra au pralable se procurer un CD de dmarrage dune version Linux proposant un mode rescue comme Mandrake ou Red Hat. Durant cette rinstallation de lilo, nous supposerons que votre disque dur se trouve en tant que master sur la premire nappe de votre carte mre et donc sur le disque /dev/hda, bien sr il peut en tre autrement :

Administration et Scurisation des systmes Linux/BSD master (matre) sur la premire nappe /dev/hda slave (esclave) sur la premire nappe /dev/hdb master sur la premire nappe /dev/hdc salve sur la premire nappe /dev/hdd premier disque dur SCSI /dev/sda second disque dur SCSI /dev/sdb etc .... 1. dmarrage en boutant avec le CD-ROM. 2. tapez F1 puis rescue au prompt lilo.

125

3. partir de ce moment le systme va se charger depuis le cdrom et crer un systme de chier virtuel directement dans la mmoire. 4. cette tape il vous faudra connatre la partition utilise par Linux (souvent /dev/hda5) ou procder comme suit : (a) Pour connatre lemplacement de votre partition Linux vous allez taper fdisk -l /dev/hda (b) Si vous obtenez quelque chose ressemblant :
root@kset_mdk /home/seb # fdisk -l /dev/hda Disque /dev/hda : 255 ttes, 63 secteurs, 4865 cylindres Unites = cylindres sur 16065 * 512 octets Peripherique Amorce Debut /dev/hda1 1 /dev/hda2 953 /dev/hda3 1577 /dev/hda4 2960 /dev/hda5 2962 /dev/hda6 3638 Fin Blocs 7646908+ a9 5012280 a6 11108947+ c 15314481 5 5429938+ 83 433723+ 82 Id Systeme NetBSD OpenBSD Win95 FAT32 (LBA) Etendue Linux Echange Linux

952 1576 2959 4866 3637 3691

Il y a de trs fortes chances pour que votre partition Linux se situe sur /dev/hda5 vous pourrez donc directement passer la section 5. (c) Par contre si vous obtenez quelque chose ressemblant :
root@kset_mdk /home/seb # fdisk -l /dev/hda Disque /dev/hda : 255 tetes, 63 secteurs, 4865 cylindres Unites = cylindres sur 16065 * 512 octets Peripherique Amorce Debut /dev/hda1 1 /dev/hda2 953 /dev/hda3 1577 /dev/hda4 2960 /dev/hda5 2962 /dev/hda6 3638 /dev/hda8 3692 /dev/hda9 4319 Fin Blocs 7646908+ a9 5012280 a6 11108947+ c 15314481 5 5429938+ 83 433723+ 82 5036314+ 83 4398282 83 Id Systeme NetBSD OpenBSD Win95 FAT32 (LBA) Etendue Linux Echange Linux Linux Linux

952 1576 2959 4866 3637 3691 4318 4866

Mme sil y a de trs fortes chances pour que votre partition Linux se situe sur /dev/hda5 vous devrez monter chacunes de partitions pour vous en assurer, en procdant par exemple de la faon suivante :

10.10. Rinstallation de lilo sans disquette

dupont_s@epita.fr

# mkdir /mnt/disque5 # mkdir /mnt/disque8 # mkdir /mnt/disque9 # mount /dev/hda5 /mnt/disque5 ou mount -t ext2 /dev/hda5 /mnt/disque5 # mount /dev/hda8 /mnt/disque8 # mount /dev/hda9 /mnt/disque9 et ensuite vous allez vous rendre dans chaques partitions /mnt/disque5, /mnt/disque8, /mnt/disque9 an de savoir quelle partition correspond celle qui contient le lilo que vous voulez restaurer. Une fois celle-ci identie vous pourrez vous rendre ltape 6. 5. Dans cette on montera la partition qui contient Linux (si cela nest pas dj fait) par : # mount /dev/hda5 /mnt/disque5 ou mount -t ext2 /dev/hda5 /mnt/disque5 6. Ensuite il faudra chrooter la partition qui contient Linux (chrooter = dplacer la racine, ie : /mnt/disque5 = /) 7. Modier si cela doit ltre le chier lilo.conf par : vi /etc/lilo.conf 8. et enn excuter le programme lilo pour quil se re-installe sur le mbr ou l endoit spcier dans boot=/dev/hda par : # lilo 9. redmarrage de la machine : # reboot 10. partir de ce moment si tout a t excuter correctement vous pourrez redmarrer Linux sans problmes. Remarque

Mandrake 8.2 Le CD-ROM de dmarrage de la Mandrake8.2, permet de restaurer directement lilo dans le menu rescue, par contre si vous vous souhaitez faire des modications sur /etc/lilo.conf ou sur tout autre chier il vous faudra refaire les tapes prcdentes.

CHAPITRE 11 Historique des changements

11.1

DONE
Astuces Administration Rseaux Administration Rseaux Administration Rseaux Intgrit signatures,MD5. IP aliasing. Sendmail normal/cyrus. Cyrus IMAP.

n septembre 2002 : 11 octobre 2002 : 11 octobre 2002 : 22 decembre 2002 :

11.2

TODO
Exemple fstab Iptables, ipf.conf NetBSD & FreeBSD Mise en place de NIS,NYS. Mirroring, apt-get mirroring. Webmail. VPN. IPsec. Protocole RSA. aspell.

Systme Firewall Admin. Reseaux

Crypto Astuces

127

CHAPITRE 12 A propos

Pour toutes remarques ou rectications sur cette documentation merci de menvoyer un mail a ladresse dupont_s@epita.fr avec pour sujet [Cours Administration]. Cette Documentation est sous Licence GNU FDL (Free Documentation License). Elle est lanalogue de la GPL pour les documents (manuels, cours...). Nota : Comme pour la GPL, seule la version anglaise est ofcielle, mais vous pouvez consulter une traduction de Fabien Ninoles.

A Cette Documentation a t ralise sous L TEX.

128

INDEX

Apache, 47, 49, 91 certicats, 49, 55, 57, 105, 110 Cryptographie, 108 CVS, 64 DHCP, 57 DMZ, 68, 72 DNS,named,bind, 64 Dsniff, 98 Emacs, 13 fdisk, 122 rewall, 3, 40, 51, 62, 67, 68 fstab, 33, 62 GnuPG, 100 hosts.allow, 62, 67 hosts.deny, 61, 67 IDS, 95 aide, 96 snort, 95 imap{s}, 54 inetd.conf, 30, 37, 49, 50, 54, 55 ipchains, 68, 80 IPsec, 98 Kerberos, 99 LDAP, 64 lilo, 25, 27, 115, 121, 123 129

Linux, 47, 9, 14, 25, 28, 30, 40 NAT,IPmasquerade, 82 Nessus, 97 NetBSD, 5, 911, 29 Netlter,IPtables, 68, 69 NFS, 59 NIS,NYS, 63 OpenBSD, 3, 5, 9, 10, 29, 77 OpenSSL, 110 pf,packet lter, 68, 77 pop3{s}, 54 recette magique, 106 scp, 21, 118 smtp,sendmail,postx, 42 squid, 50 ssh, 5, 20, 41 vi, 12 VPN, 67 webmin, 85 xinetd, 31

You might also like