Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
22 juillet 2003
1 Documentation
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. . . . . . . . .
3 4 7 7 10 12 12 14 16 16 17 20 21 22 24 24 26 26 26 27 27 28 28 31 31
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
Administration des Systmes 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 34 34 34 35 35 36 37 39 39 40 40 42 43 43 44 44 45 45 46 46 46 46 47 49 51 52 53 54 56 58 59 60 60 62 63 67 67 68 68 68 71
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 Postix Avanc ISP . . . . . . . 5.4.3 Mise en place de Postix avec Cyrus-Imapd . . . 5.4.4 Mise en place de Postix avec Scanner Anti Virus 5.4.5 Mise en place de Sendmail . . . . . . . . . . . . 5.4.6 sendmail.mc personnalis . . . . . . . . . . . . 5.4.7 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 . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Table des matires 5.19 les chiers hosts.allow et hosts.deny . . . . . . . 5.20 installation dun Firewall . . . . . . . . . . . . . 5.20.1 Conguration de Netlter (IPtables) . . . 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 72 74 83 86 88 91 91 93 93 93 93 93 94 95 96 96 97 97 97 97 99 99 99 99 100 101 101 101 102 103 103 104 104 104 105 106
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
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
Administration et Scurisation des systmes Linux/BSD 8 La recette magique dun systme scuris... 8.1 Fonctionnalits de la machine. . . . . . 8.2 Le disque Dur . . . . . . . . . . . . . . 8.3 Les Programmes . . . . . . . . . . . . 8.4 Les droits utilisateurs . . . . . . . . . . 8.5 Les services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 114 114 114 115 115 115 116 116 116 118 118 118 118 119 120 123 123 123 123 124 125 125 126 126 127 127 129 129 130 131
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 . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
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 134 11.1 DONE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 11.2 TODO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 12 A propos 135
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.3, Mandrake 9.1, 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 modier 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 dun 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
Cet ouvrage a pour vocation de permettre dadministrer et de scuriser la fois les systmes Linux et BSD. les principales diffrences de ces systmes rsident la fois dans leurs kernels (noyaux) et dans la licence quils utilisent. Le noyau Linux prsente un grand nombre de fonctionnalites et de drivers, les noyaux BSD bass sur BSD4.4 prsentent un peu moins de fonctionnalites mais le compensent par un code respectant les rgles de lart en la matire ainsi quune stabilit plus importante. Il est not galement que les systmes BSD sont beaucoup plus difciles administrer que les systmes Linux, notamment la gestion des partitions pour le moins non-triviale. F IG . 2.1: Gentoo : Toute dernire mouture linux, cette distribution, dconseille aux dbutants, est la plus performante des linux, celle ci utilise le systme type port des BSD qui permet de recompiler lensemble des programmes en utilisant les options de compilation adaptes la machine hte, celle ci dispose galement dune impressionante liste de programmes disponibles.
dupont_s@epita.fr
F IG . 2.2: Debian : Systme rput comme le plus stable des distributions linux, relativement difcile administrer, il bncie dune mthode de mise jours trs rpute (apt semblable a urpmi de Mandrake). Nanmoins celle ci est de moins en moins mise jour.
F IG . 2.3: Mandrake Linux : La seule distribution Franaise .... systme user friendly utilisation la plus simplie possible pour lutilisateur. Cette distribution bncie galement dun trs grand nombre de paquetages, et dune mise jour trs rapide (cooker). base sur la technologie RPM dveloppe par RedHat. La Mandrake est particulirement recommande si votre poste bncie de matriel rcent.
F IG . 2.4: Suse : Distribution Allemande. Cette distribution utilise le systme Yast pour la conguration du systme (trs controvers car non GPL ... un comble !)
F IG . 2.5: RedHat Linux : Compromis stabilit/facilit le plus utilis pour les serveurs rseaux GNU/Linux, dans les universits ou en entreprise (notamment en version Advanced Server ou Entreprise) . Nanmoins celle ci ne disposant nativement de programme tel que urpmi de Mandrake ou apt de Debian elle reste un peu moins agrable a administrer mme si celle ci dispose dun programme de mise jour la Windows Update.
F IG . 2.6: FreeBSD : Trs utilise par les serveur car supporte les architectures multiprocesseurs. Relativement simple administrer pour un systme BSD. Utilis par Yahoo et par hotmail jusque rcemment. Possde un grand nombre de paquetages.
F IG . 2.7: NetBSD : Cest le systme qui supporte le plus grand nombre de plate-forme diffrentes. Relativement difcile administrer car aucun outil de conguration NetBSD possde galement un trs grand nombre de paquetages. NetBSD est aujoudhui le systme le plus stable BSD/Linux confondus.
F IG . 2.8: OpenBSD : Le systme le plus scuris des distributions BSD/Linux. 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
3.1
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 partitions logiques (entre 15(SCSI) et 63(IDE)). ___________________________________________________________________
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. ___________________________________________________________________
11
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 trs petite ( 512 octets seulement). Cette zone a un rle vital pour le disque dur. Elle est partage en deux parties : ___________________________________________________________________
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,
dupont_s@epita.fr
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 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). ___________________________________________________________________
On constate ici quil ne peut pas y avoir plus de 4 partitions primaires. ___________________________________________________________________
01 02 04 05 06 08 0C
13
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
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 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
___________________________________________________________________
dupont_s@epita.fr
___________________________________________________________________
Reiserfs
JFS dIBM
XFS de SGi
15
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).
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.
3.3
Les systmes *BSD font parti des systmes les plus complexes installer particulirement NetBSD et OpenBSD car dune part, ils sadressent a des utilisateurs expriments 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 ksh bash shell de base avec aucune fonctionnalit avanc shell plus volu que sh mais reste restreint shell le plus utilis car trs rapide et possde des fonctionnalites tel que la compltions, etc..
dupont_s@epita.fr
le shell le plus volu, de plus en plus utilis car il possde des fonctionnalits 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, illustrs par lexemple suivant : (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 .... Cet exemple met en valeur le fait que si la variable PATH venait 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 excutes par lutilisateur, les consquences pourraient tre dsastreuses pour le cas de root.
Remarque : Dans la variable PROMPT le caractre dchappement se construit sous Emacs par la suite de touches (Ctrl+q) + ESC
17
3.5
___________________________________________________________________
diteur VI
Vi est un des diteurs les plus lger. il est en gnral remplac par vim sous Linux. Avantages vi (vim) permet la coloration syntaxique de nombreux chiers de conguration. indispensable en environnement limit. extrmement lger. Inconvnient utilisation un peu moins naturelle que sous Emacs. ________________________________________________________________
commandes de base
: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.
___________________________________________________________________
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
dupont_s@epita.fr
Ctrl+x+s sauve. Ctrl+x+f ouvrir. Ctrl+x+c quitte. Ctrl+w couper le texte slectionn. Ctrl+y coller Alt+w copier. Ctrl+s recherche. Ctrl+Shift+/ undo. Alt+Shift+/ compltions. ________________________________________________________________
conguration
les chiers de conguration de Emacs sont /.emacs et /.Xdefaults. Ex : /.emacs (global-font-lock-mode t) (transient-mark-mode t) (global-set-key [f1] buffer-menu) 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
Permet la colorisation syntaxique Permet la mise en surbrillance de la zone slectionne permet dassocier une touche une action.
19
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. man ls On notera que les man sont toujours mis jour sous les diffrents BSD ce qui nest 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 certains programmes, fonctionnalites ou services. On trouve gnralement ces documentations au format HTML dans /usr/share/doc/HOWTO
dupont_s@epita.fr
3.6.2
Dans les systmes de chier Linux/Unix tous les chiers sont dnis selon trois types de droits : 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. Ensuite pour chacun de ces type on attribuera de la mme faon trois types de droits : lecture. (=4 ou r pour read) criture. (=2 ou w pour write) execution. (=1 ou x pour excution) Ainsi lors dun ls -l 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.
21
___________________________________________________________________
ls
ls permet de visualiser les chiers contenus dans le rpertoire courant. Les options usuelles sont : -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 en nissant par /. afche les nom des chiers excutables en nissant par *. afche les nom des liens en nissant par &.
___________________________________________________________________
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
dupont_s@epita.fr
suppression dun rpertoire sil est vide si celui-ci nest pas vide il faut utiliser la commande : rm -rf rpertoire
___________________________________________________________________
chmod
Permet de changer les permissions sur un chier ou sur un 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 chmod 777 chier Droits de lecture, dcriture, dexcution pour tout le monde. (dangereux). 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.
chmod +s chier
Cette faille de scurit est lune des plus exploites par les crackers, Remarque : 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 : chown seb.users chier
23
chier appartiendra dsormais lutilisateur seb et au group users. il est galement possible de lappliquer rcursivement avec loption -R : 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
___________________________________________________________________
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 jour cette base de donne il suft en tant que root de lancer la commande : updatedb sous Linux ou /usr/libexec/locate.updatedb sous bsd pour chercher un chier il suft donc de taper : locate httpd.conf pour en trouver loccurrence.
1 2
dans la majorit des systmes human readable, ie comprhensible par un humain soit en Ko, Mo, Go
dupont_s@epita.fr
___________________________________________________________________
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
___________________________________________________________________
top
Montre les principaux processus du systme. utilisation : $> top ___________________________________________________________________
ps
Utilitaire permettant de voir les processus actifs du systme. utilisation : $> ps -ax ___________________________________________________________________
kill
commande qui permet denvoyer un signal un processus : 1 HUP (hang up) 2 INT (interrupt) 3 QUIT (quit) 6 ABRT (abort) 9 KILL (non-catchable, non-ignorable kill) 14 ALRM (alarm clock) 15 TERM (software termination signal) Exemple : kill -9 pid_processus Re-dmarrage
force larrt
25
3.6.5
___________________________________________________________________
df
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.
______________________________________ Pour plus de dtails, voir les paragraphes : Montage dune image ISO Systmes de Fichiers Journaliss /etc/fstab
___________________________________________________________________
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
dupont_s@epita.fr
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 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 priori 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 conversions 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.
of=chier
ibs=nombre
obs=nombre
bs=nombre
cbs=nombre
skip=nombre
seek=nombre
count=nombre Copier seulement le nombre indiqu de blocs (dont la taille est fournie par ibs), et non pas tout jusqu la n du chier.
27
3.6.6
___________________________________________________________________
ssh
Commande qui permet de se connecter de faon scurise ( les donnes qui transitent seront cryptes entre les deux machines). ssh toto@192.168.0.1
___________________________________________________________________
scp
Commande qui permet de copier de faon scuris un chier ou un rpertoire sur le compte dune autre machine. scp chier toto@192.168.0.1 :. scp -r rpertoire toto@192.168.0.1 :.
3.6.7
___________________________________________________________________
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
3.6. Commandes de bases : permet de dplacer la racine dun systme. Ex : chroot rpertoire
dupont_s@epita.fr
Remarque : Cette commande est trs utilises pour scuriser 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 utilise pour modier les attributs de chaque utilisateur : 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 ... rpertoire HOME de lutilisateur et enn shell par dfaut pour lutilisateur.
4.1
Une autre particularit intressante du monde Unix/Linux est la hirarchisation des diffrents rpertoires. / /bin /dev /sbin /usr /var /tmp /etc /lib /home /proc /boot 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 tout le monde contient tous les chiers de conguration contient les librairies de base contient toutes les donnes utilisateur image du noyau et des priphriques installs contient le kernel ainsi que la procdure de dmarrage
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. 29
dupont_s@epita.fr
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 -a ifcong 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
31
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 les cartes 3com le systme les dsignera par xl0,xl1,... pour les DLink par leur driver via-rhine vr0,vr1,...
4.3
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
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
dupont_s@epita.fr
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. 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
Administration et Scurisation des systmes Linux/BSD 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. # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id :3 :initdefault : ______________________________________________
33
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
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-ci 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.
dupont_s@epita.fr
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.
4.5
4.5.1
___________________________________________________________________
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. liste des chiers qui seront installs par le paquetage. dsinstallation du paquetage. liste de tous les paquetages installs.
___________________________________________________________________
35
apt-get install installe les paquetages en grant les dpendances. (trs solide rputation pour les upgrade). apt-get install paquetage apt-get remove paquetage apt-cache search chier 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.
apt-get update
apt-get upgrade
___________________________________________________________________
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 les paquetages lists dans les divers mdias enregistrs.
4.5.2
dupont_s@epita.fr
___________________________________________________________________
De la mme faon que pour les RPMS pkg_add va rechercher les dpendances dans le rpertoire mme o il lancera linstallation. A noter pour la dsinstallation de paquetage il est prfrable dutiliser le shell zsh car il permettra une compltion du nom du paquetage tel quil est reconnu par le systme. (indispensable sil lon ne veut pas passer son temps rechercher le nom exact du paquetage.) ___________________________________________________________________
37
Remarque : 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 rpertoire : /usr/ports/packetages/i386/All ou encore dans le rpertoire : /usr/ports/packetages/i386/shells
4.6
4.6.1
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 Bien sr les possibilites de ces scripts shell dinitialisation ne sarrtent pas start, au minimum vous pourrez trouver start et stop, et en gnral vous trouverez : start, stop, status, restart, condrestart, reload.
4.6.2
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 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
dupont_s@epita.fr
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, tout 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 account password UID GID GECOS directory shell Le nom que lutilisateur utilisera pour se connecter, il ne devrait normalement pas contenir de majuscules La reprsentation encrypte (optionnelle) du mot de passe. LID numrique de lutilisateur. LID numrique du groupe principal de lutilisateur. Ce champ est optionnel et na quun rle informatif. Il contient gnralement le nom complet de lutilisateur. Le rpertoire de connexion de lutilisateur (variable d environnement $HOME). Le programme excuter aprs la phase de connexion (par dfaut /bin/sh) si ce chier nexiste pas, lutilisateur ne pourra pas se connecter avec son login.
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 :
39
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 jour indiqu quelque soit les autres informations dexpiration. Cette information est prioritaire sur tous 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 particulier contre les attaques aux dictionnaires. Remarque : Sur les systmes *BSD le chier /etc/shadow est remplac par le chier /etc/master.passwd
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 mot_de_passe GID liste_utilisateurs Le nom du groupe. Le mot de passe encrypt du groupe. Si ce champ est vide (presque toujours), aucun mot de passe nest ncessaire. LID numrique du groupe. Tous les noms des membres du groupe, spars par des virgules.
dupont_s@epita.fr
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 champs (fs_spec), dcrit le priphrique bloc ou le systme de chiers distant a monter. 2. Le second champs (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 champs (fs_vfstype), dcrit le type de systme de chiers. Le systme supporte actuellement les types suivants (et peut-tre dautres, voir /proc/lesystems) : ext2 ext3 xiafs msdos vfat NTFS HPFS ISO9660 NFS swap systme de chiers local, noms de chiers longs, i-noeuds dtaills, et beaucoup dautres avantages. systme de chiers local, noms de chiers longs, i-noeuds dtaills, systme de chiers journalis. systme de chiers local, noms de chiers longs, i-noeuds dtaills, et dautres avantages. systme de chiers local pour les partitions MS-DOS. systme de chiers local pour les partitions FAT32. systme de chiers local pour les partitions NTFS. systme de chiers local pour les partitions HPFS. systme de chiers local pour les CD-ROM. systme de chiers distant par rseau. partition de disque utilise pour le swapping.
4. Si vfs_fstype est mentionn comme ignore, lenregistrement nest pas trait. Ceci permet de visualiser aisment les partitions non utilises. 5. Le quatrime champs (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.
Administration et Scurisation des systmes Linux/BSD async auto defaults dev exec noauto nodev noexec
41
Toutes les entres/sorties sur le systme de chiers seront asynchrone. Peut tre mont par largument -a. Utilisation des options par dfaut : rw, suid, dev, exec, auto, nouser, et async. Interprter les chiers spciaux de priphriques prsents sur le systme de chiers. Permettre lexcution de chiers binaires. Ne peut tre mont quexplicitement (linvocation de mount avec largument -a ne montera pas le systme de chiers). Ne pas interprter les chiers spciaux de priphriques prsents sur le systme de chiers. 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. Ne pas tenir compte des bits Set-UID ou Set-GID. Ne pas autoriser dutilisateur ordinaire (non root) monter le systme de chiers. Cest le comportement par dfaut. 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. Montage du systme en lecture seule. Montage du systme en lecture/criture. Prendre en compte les bits Set-UID ou Set-GID des chiers se trouvant sur le systme mont. Toutes les entres/sorties sur le systme de chiers seront synchrones. 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 champs (fs_freq), est utilis par la commande dump(8) pour dterminer quels sont les systmes de chiers sauvegarder. Si le cinquime champs est absent ou vaut zro, dump supposera quil ne faut pas sauvegarder ce systme. 7. Le sixime champs (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 champs 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 vris simultanment pour utiliser le paralllisme offert par le matriel. Si le sixime champs est absent ou vaut zro, fsck ne vriera pas ce systme de -
dupont_s@epita.fr
4.6.7
/etc/syslog.conf
Le service syslog sert a logger diverses informations dans des chier. Il est trs utile pour la scurit de votre machine car de nombreuses informations sont enregistres (les tentatives de connexion les services dmarrer.), son fonctionnement est congurable au travers du chier /etc/syslog.conf. Il contient deux champs ,le slecteur et laction. Le slecteur se compose de deux champs appeler facility et priority. Les valeurs de facility identie le sous systme qui a mis le message. Les types 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 rserv a un usage interne. Largument priority sert a dnir le niveau de dtails de ce qui doit tre logu. Les valeurs possibles sont : debug, info , notice, warning, err , crit, alert, emerg.
# Various entry auth,authpriv.* *.*;auth,authpriv.none user.*
# 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 mail.=warn mail.err # Kernel logging kern.=debug;kern.=info;kern.=notice kern.=warn kern.err
/var/log/secure
# 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
43
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 gnriques (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 : 127.0.0.1 localhost 192.168.1.217 foo.nomomaine.org foo 205.230.163.103 www.opensource.org
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
/etc/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
dupont_s@epita.fr
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 ssh telnet mail domain domain bootps bootps bootpc bootpc www www pop3 pop3 sftp nntp imap imap irc irc imap3 imap3 20/tcp # default ftp data port 21/tcp 22/tcp 22/udp 23/tcp 25/tcp 53/tcp nameserver # name-domain server 53/udp nameserver 67/tcp # BOOTP server 67/udp 68/tcp # BOOTP client 68/udp 80/tcp http # WorldWideWeb HTTP 80/udp # HyperText Transfer Protocol 110/tcp # POP version 3 110/udp 115/tcp 119/tcp readnews untp # USENET News Transfer Protocol 143/tcp imap2 # Internet Message Access Proto 143/udp imap2 # Internet Message Access Proto 194/tcp # Internet Relay Chat 194/udp 220/tcp # Interactive Mail Access 220/udp # Protocol v3
# new for imap ssl imaps 993/tcp pop3s 995/tcp https nfsd nfsd 443/tcp 2049/udp 2049/tcp # secure http (SSL) nfs # NFS server nfs # NFS server
45
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 un programme SUID dangereux. Qui a fait rcemment lobjet dune faille de scurit via bufferoverow.
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 :
46
47
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 une fonctionnalit trs intressante qui permet daffecter plusieurs IP la mme carte rseau. Le seul problme vient 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
SSH (Secure Shell, port 22) est 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.(crateur) dmarrage du service service sshd start /etc/rc.d/init.d/sshd start /etc/rc.d/init.d/sshd start /sbin/sshd
dupont_s@epita.fr
___________________________________________________________________
Conguration
Le chier de conguration se trouve dans /etc/ssh/sshd_cong les options les plus intressantes sont : #Port 22 Protocol 2,1 #LoginGraceTime 600 #PermitRootLogin yes #RSAAuthentication yes #AuthorizedKeysFile .ssh/authorized_keys #PermitEmptyPasswords no X11Forwarding yes Spcie le port que le serveur doit utiliser. Protocol utilis Temps de connexion maximum Permet ou interdit la connexion root Mthode dauthentication. Fichier utilis pour lautologin Permet ou non les mots de passe vide Permet ou non dexporter le DISPLAY
Remarque : Il est 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
Remarque : 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. ( 10.6)
5.4
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, et qui risque de le remplacer un jour prochain compte tenu de sa solidit et de sa simplicit de conguration.
5.4.1
___________________________________________________________________
Installation
Administration et Scurisation des systmes Linux/BSD Systme RedHat Mandrake Debian Gentoo OpenBSD NetBSD commande dinstallation rpm -Uvh postx-*.rpm urpmi postx apt-get install postx emerge postx sendmail inclus par defaut. sendmail inclus par defaut.
49
dmarrage du service service postx start /etc/init.d/postx start /etc/init.d/postx start rc-update add postx default /usr/sbin/sendmail -L sm-mta bd -q30m /etc/rc.d/sendmail start
___________________________________________________________________
Conguration
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
Mise en place de Postix Avanc ISP Mise en place de Postix avec Cyrus-Imapd Mise en place de Postix avec Scanner Anti Virus
___________________________________________________________________
Installation
Pour ce faire il faudra utiliser le soft Amavis qui permettra de scanner le contenu des mails (html, zip, arj, tgz ...) et ensuite de le coupler avec un antivirus de votre choix (malhereusement encore comercial pour linstant cf. openantivirus) nanmoins il existe des solutions trs sastisfaisantes telles que : Sophos Anti Virus McAfee Panda Anti virus etc ... qui supporte la majorit des systemes Linux/Unix.
5.4.5
___________________________________________________________________
Installation
5.4. Mise en place dun serveur mail. SMTP Systme RedHat Mandrake Debian Gentoo OpenBSD NetBSD commande dinstallation rpm -Uvh sendmail-*.rpm urpmi sendmail apt-get install sendmail emerge sendmail 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 rc-update add sendmail default /usr/sbin/sendmail -L sm-mta bd -q30m /etc/rc.d/sendmail start
___________________________________________________________________
Conguration
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) ou encore le champ dnissant le type dOS utilis : OSTYPE(bsd4.4)dnl 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 gnrer le chier sendmail.cf utilis par sendmail.
5.4.6
sendmail.mc personnalis
51
#___________________ domaines virtuels ________________________________________ # # permet daccepter les mails dautres domaines FEATURE(use_cw_file)
dupont_s@epita.fr
5.4.7
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.16 2003/07/21 10:55:04 seb Exp $) OSTYPE(bsd4.4)dnl
#___________________ ssi cyrus_________________________________________________ # ne laisser ces lignes ssi on utilise cyrus-imapd define(confBIND_OPTS,-DNSRCH -DEFNAMES) define(confLOCAL_MAILER, cyrus)
#___________________ 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 #
53
#___________________ 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) #______________________________________________________________________________ # a dcommenter pour que les mail arrive directement # dans cyrus si les rgles: # LOCAL_RULE_0 # Rbb + $+ < @ $=w . > $#cyrusbb $: $1 # ne sont pas acceptes:
dupont_s@epita.fr
5.5
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 : 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
lintrieur de ce chier on trouvera les principales variables que sont : ServerRoot /etc/httpd DocumentRoot /var/www/html ErrorLog logs/error_log ServerAdmin root@hermes DirectoryIndex index.html LoadModule 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 (ex : php, etc...)
55
Port
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 nutilise pas de groupe on note /dev/null titre de la fentre de dialogue
dupont_s@epita.fr
___________________________________________________________________
5.7
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 wu-ftpd, nanmoins compte tenu des rcents problmes importants 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
57
___________________________________________________________________
___________________________________________________________________
5.8
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
dupont_s@epita.fr
des clients par login/pass utile si lon ne souhaite pas utiliser lIPmasquerade. SQUID permet aussi dinterdire laccs certaines pages. ___________________________________________________________________
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
___________________________________________________________________
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.
dnition de localhost ports scuriss permissions pour localnet permissions pour localhost
59
___________________________________________________________________
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. httpd_accel_with_proxy on httpd_accel_uses_host_header on httpd_accel_host localnet httpd_accel_host virtual httpd_accel_host CACHE ___________________________________________________________________
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 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
Samba est un systme de chier rseaux permettant de partager des chiers 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.
dupont_s@epita.fr
___________________________________________________________________
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
___________________________________________________________________
/etc/smb.conf
[global] server string = Linux Samba Server workgroup = SAMARO smb passwd le = /etc/samba/smbpasswd security = user
# nom du 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
# denit le type dimprimante #partage de toutes les imprimantes # imprimantes congures # ici qui seront prises en compte
Administration et Scurisation des systmes Linux/BSD [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 #description
61
#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 : seb :1000 :90F4B09D49F396ABBA2CF1C :[U ] :LCT-3C909D46 root :0 :C9DA7B438 :CC870177CA0JJHGD :[U ] :LCT-3C9CEB3C
5.10
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 est moins volu quIMAP 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
dupont_s@epita.fr
___________________________________________________________________
Utilisation
Pour congurer ce service il suft dditer les chiers *pop3* du rpertoire /etc/xined.d Remarque : 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.
___________________________________________________________________
5.11
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 limiter 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, 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 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.
Administration et Scurisation des systmes Linux/BSD 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.
63
5.11.1
___________________________________________________________________
Installation
RedHat Mandrake Debian OpenBSD rpm -Uvh imap-*.rpm urpmi imapd apt-get install wu-imapd. pkg_add imap-wu-*.tgz service imapd start /etc/init.d/imapd start /etc/init.d/imapd start via /etc/inetd.conf
Remarque : mme remarque que pour pop3, prfrez imaps imap autant que possible.
___________________________________________________________________
5.11.2
___________________________________________________________________
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
___________________________________________________________________
dupont_s@epita.fr
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. script dinitialisation : su cyrus /usr/pkg/cyrus/bin/mkimap exit 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 votre sendmail.mc : dene(confLOCAL_MAILER, cyrusv2) MAILER(cyrusv2) ___________________________________________________________________
65
5.12
La 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. ___________________________________________________________________
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
___________________________________________________________________
Conguration
/etc/dhcpd.conf
5.13. installation de NFS server-identier ns.exemple.fr ; default-lease-time 36000 ; max-lease-time 144000 ; ddns-update-style interim ; deny unknown-clients ;
dupont_s@epita.fr
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 ; } } Remarque : 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
NFS est un service trs utilis, il permet pour un client dutiliser un rpertoire sur un serveur distant de la mme faon que sil sagissait dune partition locale. Les trois chiers de conguration principaux sont /etc/exports, /etc/hosts.deny et /etc/hosts.allow. ___________________________________________________________________
Installation
Administration et Scurisation des systmes Linux/BSD Systme RedHat Mandrake Debian OpenBSD commande dinstallation rpm -Uvh nfs-utils-*.rpm urpmi nfs-utils apt-get install nfs par defaut dmarrage du service service nfs start /etc/init.d/nfsd start /etc/init.d/nfsd start
67
___________________________________________________________________
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 autoriss 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. ro 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. link_relative 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. link_absolute Laisse les liens symboliques tels quils sont. Cest lattitude par dfaut. ________________________________________________________________
dupont_s@epita.fr
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 : root_squash 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 et convertis en utilisateurs anonymes. Une liste valide dUIDs se squash_gids prsente ainsi : squash_uids=0-15,20,25-50 Habituellement la liste convertir est plus simple, comme dans : squash_uids=0100 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.
69
Ces options donne explicitement lUID et le GID du compte 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. ________________________________________________________________
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 limplmentation NFS nutilise pas un port rserv.
dupont_s@epita.fr
___________________________________________________________________
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 monter nimporte quel sous rpertoire. mapall=root pour que toutes les modications soient considres comme tant faites 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 an den limiter laccs aux rseaux dont on peut avoir conance.
5.14
5.14.1
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
Administration et Scurisation des systmes Linux/BSD 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
71
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
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 :
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
5.17. installation dun DNS Systme RedHat Mandrake Mandrake OpenBSD commande dinstallation rpm -Uvh bind-*.rpm urpmi bind apt-get install bind9 pkg_add bind-9*.tgz
dupont_s@epita.fr 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
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" ; };
73
________________________________________________________________
wanadoo.fr
$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.
________________________________________________________________
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.
dupont_s@epita.fr
5.18
Pour se faire nous utiliserons un programme la fois stable et scuris(128 bits) nomm vtun. Pour de plus amples informations rendez-vous sur http ://vtun.sourceforge.net Systme RedHat Mandrake Debian OpenBSD commande dinstallation rpm -Uvh vtun-*.rpm urpmi vtun apt-get install vtun pkg_add vtun.*.tgz dmarrage du programme service vtund start /etc/init.d/vtund start /etc/init.d/vtund start
5.19
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 : ALL (root@petra)[/etc]-# cat hosts.allow ALL : 192.168.0.3 ALL : 192.168.0.35 smtp : ALL sshd : ALL http : ALL sendmail : ALL domain : ALL portmap : 192.168.0.0/255.255.255.0 On autorise tous les services pour les postes 192.168.0.3 et 192.168.0.35 accs depuis tous les postes.
75
___________________________________________________________________
5.20
Avant de commencer il faudra diffrencier plusieurs cas : 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 : ___________________________________________________________________
dupont_s@epita.fr
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 interne, 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 : address : 192.168.1.1
Administration et Scurisation des systmes Linux/BSD netmask : 255.255.255.0 network : 192.168.1.0 broadcoast : 192.168.1.255
77
5.20.1
___________________________________________________________________
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 dfaut 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 support a t compil avec loption Netlter, il faut vrier que ip_conntrack & ip_tables apparaissent bien avec la commande dmesg. dmesg | grep ip_conntrack 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
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 :
dupont_s@epita.fr
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 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 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
79
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 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
dupont_s@epita.fr
___________________________________________________________________
Administration et Scurisation des systmes Linux/BSD 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
81
_____________________________________________________________ # 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. #iptables -A INPUT -p ipv6 -j ACCEPT _____________________________________________________________ # autorise tunnel IPSEC.
dupont_s@epita.fr
#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 _____________________________________________________________ ## 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
Administration et Scurisation des systmes Linux/BSD _____________________________________________________________ # Autorise tous les autres paquets tre forward iptables -A FORWARD -o $EXTERNALIF -i $INTERNALIF -j ACCEPT iptables -A FORWARD -i $EXTERNALIF -m state state ESTABLISHED,RELATED -j ACCEPT _____________________________________________________________ # 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
83
dupont_s@epita.fr
#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 forcment une bonne ide. #iptables -A INPUT -p tcp dport 5801 -j ACCEPT #iptables -A INPUT -p tcp dport 5901 -j ACCEPT #iptables -A INPUT -p tcp dport 6001 -j ACCEPT _____________________________________________________________ ## 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
Administration et Scurisation des systmes Linux/BSD _____________________________________________________________ # 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 aucune 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 :" 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
85
dupont_s@epita.fr
5.20.2
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 # 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
Administration et Scurisation des systmes Linux/BSD 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) # ============================================== # 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
87
5.20. installation dun Firewall 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
dupont_s@epita.fr
# 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 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
89
5.20.3
___________________________________________________________________
Installation
Systme RedHat Mandrake commande dinstallation rpm -Uvh ipchains-*.rpm urpmi ipchains dmarrage du service
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. 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. 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 :
5.20. installation dun Firewall # 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
dupont_s@epita.fr
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 # 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
Administration et Scurisation des systmes Linux/BSD /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
91
Il ne faut pas sarrter l. Ce nest pas un pare-feu trs puissant (cf. IPCHAINSHOWTO).
5.21
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 une bonne chose, 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 souvent lourde. En terme de scurit rseau, le protocole NAT : 1. est transparent pour les ordinateurs du domaine, 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 :
dupont_s@epita.fr
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 : dans le sens interne vers externe : adresse locale interne vers adresse globale interne adresse globale externe vers adresse locale externe dans le sens externe vers interne : adresse locale externe vers adresse globale externe adresse globale interne vers adresse locale interne 3. Ladministrateur spcie le pool dadresses locales internes traduire et le pool dadresses globales internes, 4. Chaque fois quun paquet avec une adresse IP locale franchit le routeur NAT, il reoit une adresse prise dans le pool des adresses globales, 5. 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. ___________________________________________________________________
93
___________________________________________________________________
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
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). /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
dupont_s@epita.fr
# 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
Pour prendre en compte les modications 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
Systme RedHat Mandrake OpenBSD commande dinstallation rpm -Uvh webmin-*.rpm urpmi webmin Pour linstaller sous openbsd il va falloir utiliser les ports soit cd /usr/ports/sysutils/webmin && make install
___________________________________________________________________
Utilisation
pour accder cette interface il suft de tapper dans votre navigateur prfr : http ://localhost :10000 ou https ://localhost :10000
95
Remarque : 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.
6.1
6.1.1
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 plus 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 sexcutent 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. nd / -user root -a perm 4000 o perm 2000 -print
6.1.3
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 96
97
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
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.
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, doit 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 se faire passer ensuite pour ce dernier. Les entreprises utilisent souvent des PC et les protocoles 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.
99
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
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.
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
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.
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
101
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 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 pour quil 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 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.
dupont_s@epita.fr
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).
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
103
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
___________________________________________________________________
7.1
7.1.1
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 langage de rgles exibles pour dcrire le trac quil devrait collecter ou laisser passer, ainsi quun moteur de dtection qui utilise une architecture modulaire de plugin. Snort possde aussi des capacits modulaires dalertes en temps rel, incorporant des plugins dalerte et de journalisation pour syslog, des 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".
104
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
105
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 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 ils 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.
dupont_s@epita.fr
7.2
7.2.1
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 problmes lis certaines versions de vos diffrents serveurs. Ainsi la n du scan un rapport clair sera gnr. Pour se faire il faudra procder 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.
107
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 permetteront de rediriger les sessions SSH et HTTPS en se basant sur certaines anciennes failles.
dupont_s@epita.fr
Dans ce but, IPsec peut fournir, suivant les options slectionnes, tout ou partie des services de scurit suivants : ________________________________________________________________
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
109
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 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 implmentation 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
___________________________________________________________________
Introduction GnuPG
___________________________________________________________________
dupont_s@epita.fr
___________________________________________________________________
Comment a marche ?
GPG sappuie sur des algorithmes clefs priv et publique. Sans rentrer dans trop de dtails, signalons juste que des messages crypts avec votre clef prive seront dcrypter avec votre clef publique. 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 envoy existe 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 vri. 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 sign 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
___________________________________________________________________
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
111
________________________________________________________________
Enn excutez :
dupont_s@epita.fr
_______________________________________________________________ $> 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. 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
Administration et Scurisation des systmes Linux/BSD 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 :
113
_______________________________________________________________ Et voil enn le moment tant attendu ou vous entrerez votre mot de passe, vu que celui ci vous servira protger votre identit, veuillez choisir un mot de passe assez facile retenir pour que vous nayez pas le noter quelque part et assez complexe pour viter que quelquun ne la devine, une mot de passe compos de caractres alphanumriques en mixed case est parfait dans ces cas l. | We need to generate a lot of random bytes. It is a good idea to perform 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 voil 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 naient besoin que de votre ID. Voyons tout dabord plus en dtail ces diffrents termes : tapez :
7.3. Les outils de cryptage et dauthentication $> gpg list-keys Normalement il devrait y avoir une seule clef, la votre.
dupont_s@epita.fr
/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 quelquun il faudra lui donner votre ngerprint entier mais il naurait qu entrer votre ID et vri 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
115
et vrier si le ngerprint correspond bien a celui quil vous a donn. Maintenant que vous pouvez conrmer que son identit correspond bien 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 la mme personne. Pour cela il suft de faire : $> gpg edit-key votre_id la, tapez : adduid ce moment l, les mmes questions que lors de la cration de la clef seront poses la diffrence quune nouvelle clef ne sera pas gnre. il suft de taper : save pour quitter et sauvegarder les changements. Vous pouvez voir les changements avec : $> gpg list-key Et il faudra videment mettre a jour la clef dans le serveur : $> gpg send-key votre_id noter que les nouveaux ids devront tres signs aussi. Intgration dans les clients mails : * Dans Sylpheed :
dupont_s@epita.fr
Il suft dactiver le support gpg dans longlet privacy des options. Rvoquer une clef : Si votre clef est corrompue, plus utilise ou compromise, il vous faudra 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 ?
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
Fonctionnalits de la machine.
Dterminez de faon prcise ce que seront les fonctionnalites ncessaires et sufsantes de chaque machine : comment sera-t-elle connecte au rseau. quels utilisateurs y auront accs. quels programmes ncessaires et sufsants
8.2
Le disque Dur
___________________________________________________________________
dupont_s@epita.fr
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 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
___________________________________________________________________
La mise 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 jour de scurit.
8.4
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 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
CHAPITRE 9 Cryptographie
TAB . 9.1: Source : Matthew Blaze, rapport prsent au snat amricain juin 96
9.2
___________________________________________________________________
9.2. Performance des diffrents algorithmes Algorithme twosh-cbc rc5-12-cbc rc5-16-cbc rc5-20-cbc rc6-cbc mars-cbc saferk64-cbc saferk128-cbc safersk64-cbc safersk128-cbc skipjack-cbc idea-cbc Kbyte/s 17481 11970 9411 7586 8937 5545 6304 4179 5037 4179 1957 4798 Mbit/s 140 96 75 61 71 44 50 34 40 33 16 38
dupont_s@epita.fr
___________________________________________________________________
___________________________________________________________________
Administration et Scurisation des systmes Linux/BSD EC-MODP EC-MODP EC-MODP EC-GF2N EC-GF2N EC-GF2N EC-GF2N EC-GF2N ElGamal decrypt DSA sign DSA verify keygen ElGamal encrypt ElGamal decrypt DSA sign DSA verify 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
121
9.3
9.3.1
Lalgorithme RSA
9.4
9.4.1
SSL utilise les fonctionnalits offertes par TCP/IP pour permettre aux couches suprieures daccder un mode daccs scuris. Les protocoles utilisant le plus couramment ce mode, sont bien sr HTTP mais aussi LDAP, SMTP, NNTP ou encore IMAP, etc. Les trois fonctionnalits de SSL sont : ___________________________________________________________________
Authentication du serveur
dupont_s@epita.fr
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. ___________________________________________________________________
9.4.2
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).
123
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. 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
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
dupont_s@epita.fr
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. 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.
125
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 limplmentation 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
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
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
126
127
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 sr, 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.
dupont_s@epita.fr
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
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 cp /mnt/cdrom/Mandrake/RPMS2/* /var/ftp/pub/RPMS etc...
129
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
telnet smtp.wanadoo.fr 25 HELO esmtp MAIL FROM : j.chirac@elysee.fr RCPT TO : mail@dequi.fr DATA subject : coucou . QUIT
10.6
dupont_s@epita.fr
Conclusion : Toute votre scurit rsidera sur la scurit de votre compte. 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
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
131
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. ________________________________________________________________
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 ..
10.9. Signature et vrication dintgrit des chiers via MD5/GnuPG dupont_s@epita.fr 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.
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. 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
Pour crer une empreinte il suft de tapper la commande : md5sum image.iso bc94f333a9090cc298ab ou pour plusieurs chiers md5sum *.iso bc94f333a9090cc298ab
133
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. 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
dupont_s@epita.fr
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
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 : master (matre) sur la premire nappe slave (esclave) sur la premire nappe master sur la premire nappe salve sur la premire nappe premier disque dur SCSI second disque dur SCSI etc .... 1. dmarrage en boutant avec le CD-ROM. 2. tapez F1 puis rescue au prompt lilo. 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 952 /dev/hda2 953 1576 /dev/hda3 1577 2959 Fin Blocs 7646908+ a9 5012280 a6 11108947+ c Id Systeme NetBSD OpenBSD Win95 FAT32 (LBA)
135
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
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 : # 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 chaque partition /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. Il faudra monter 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
dupont_s@epita.fr
10. partir de ce moment si tout a t excut correctement vous pourrez redmarrer Linux sans problme. Remarque : Le CD-ROM de dmarrage des distributions recentes, permet de restaurer directement lilo dans le menu rescue ou linux rescue, par contre si vous souhaitez faire des modications sur /etc/lilo.conf ou sur tout autre chier il vous faudra refaire les tapes prcdentes.
11.1
DONE
Astuces Administration Rseaux Administration Rseaux Administration Rseaux Intgrit signatures,MD5. IP aliasing. Sendmail normal/cyrus. Cyrus IMAP. remise en forme globale. relecture DEVERNAY Coralie.
n septembre 2002 : 11 octobre 2002 : 11 octobre 2002 : 22 decembre 2002 : 14 juillet 2003 : 19 juillet 2003 :
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.
Crypto Astuces
137
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 [secubook]. Cette documentation est sous Licence GNU FDL (Free Documentation License). Elle est lanalogue de la GPL pour les documents (manuels, cours...). Remarque : Comme pour la GPL, seule la version anglaise est ofcielle, mais vous pouvez consulter une traduction de Fabien Ninoles.
138