Vous êtes sur la page 1sur 1177

Mon Journal lcole Ouverte Francophone (OF)

LEGER Richard
richard.leger(_AT_)gmail.com

Mon Journal lcole Ouverte Francophone (OF) par LEGER Richard Publi Dcembre 2009

Mon journal retrace mon experience de certication CP2LL organis par lcole Ouverte Francophone (OF)

Cette documentation est soumise aux termes de la Licence de Documentation Libre GNU (GNU Free Documentation License) (http://www.gnu.org/copyleft/fdl.html). Les programmes sont soumis aux termes de la Licence Gnrale Publique GNU (GNU General Public Licence) (http://www.gnu.org/copyleft/gpl.html).

Table des matires


1. Licence ....................................................................................................................................................1 2. Introduction............................................................................................................................................2 2.1. Logiciels Libre et Open Source ( code ouvert) - FLOSS ..........................................................2 2.1.1. Quest-ce quun code source? ........................................................................................2 2.1.2. FLOSS ? Quesaqo ?........................................................................................................2 2.1.3. Le logiciel libre...............................................................................................................2 2.1.4. Le logiciel open source...................................................................................................3 2.1.5. Les quatre liberts essentielles de lutilisateur dun programme ...................................3 2.1.6. Le logiciel libre : comment a marche ? ........................................................................4 2.1.7. Promouvoir le libre dans les entreprises et les administrations ? ...................................5 2.1.8. Comment augmenter/amliorer lutilisation des logiciels libres en gnrale et des distributions GNU/Linux en particulier ? .......................................................................6 2.2. Facteurs de qualit dun logiciel (B.Meyer et G.Booch) ..........................................................11 2.2.1. Constat :........................................................................................................................11 2.2.2. Liste minimale de critres de qualit du logiciel (daprs B.Meyer, G.Booch) ...........11 2.2.3. Characteristics of Great Software (by Apple) ..............................................................12 2.2.4. Unix : Philosophie et Historique ..................................................................................13 2.2.5. Linux : Developpement Agile (The Cathedral and the Bazaar) ...................................13 2.2.6. Quelques conseils retenir pour dvelopper un programme ou script.........................13 2.2.7. Choisir un language de programmation... ....................................................................17 2.2.8. Quest-ce une communaut du logiciel libre ? .............................................................17 2.2.9. FLOSS et brevets logiciels ...........................................................................................18 3. cole Ouverte Francophone (OF) ...................................................................................................19 4. Formations Libres................................................................................................................................21 4.1. Formation CP2L (8 mois) lcole Ouverte Francophone (OF) ...........................................21 4.1.1. Introduction ..................................................................................................................21 4.1.2. Module et planing.........................................................................................................21 4.1.3. Droulement de la formation........................................................................................23 4.1.4. La notation au sein de la Certication Professionnelle en Logiciel Libre ...................24 4.1.5. Promo 2009-2010 - Etudiant et Coordinateurs.............................................................25 4.1.6. Les journaux des apprenants ........................................................................................26 4.2. KeepIn (SARL) .........................................................................................................................26 4.2.1. A propos .......................................................................................................................26 4.2.2. Enqute sur la formation distance..............................................................................26 4.2.3. Formations Libres (cursus courts 3 semaines) .............................................................26 4.2.4. Service Liste de discussion (Garder le contact avec ses proches !)..............................27 4.2.5. Cours en Ligne du MIT ................................................................................................27 5. Outils de commnication (Courriel + Liste de distribution + Jabber + IRC + Journal) ................28 5.1. Mthode de Communication .....................................................................................................28 5.1.1. LInternet ......................................................................................................................28 5.1.2. Courriel (E-mail) ..........................................................................................................28 5.1.3. Liste de distribution ......................................................................................................29 5.1.4. Chat (Jabber/XMPP ou IRC)........................................................................................29 5.1.5. Les journaux de bord ....................................................................................................30 5.2. Mthode de Travail ...................................................................................................................31

iii

5.2.1. Bref rsum ! ................................................................................................................31 5.2.2. Identier le problme ...................................................................................................32 5.2.3. Chercher la solution par soi-mme avant de demander de laide.................................32 5.2.4. Les ressources des sites (upstream)..............................................................................33 5.2.5. Faire une recherche sur Internet ...................................................................................33 5.2.6. Poster une question.......................................................................................................34 5.2.7. Problme rsolu ............................................................................................................34 5.3. Droit Individuel la Formation (DIF).......................................................................................35 6. UI003 Environnement de travail - Installation dune distribution .................................................36 6.1. Distributions Linux: Laquelle choisir ?.....................................................................................36 6.1.1. Quest-ce quune distribution, Combien en existe-t-il ?...............................................36 6.1.2. Distribution et libert : Combien de logiciel non-libre cach dans votre distribution GNU/Linux ? ................................................................................................................37 6.1.3. vrms (Virtual Richard M. Stallman) : Recherche de paquets non-free ........................38 6.1.4. Comment congurer Ubuntu Linux pour moins de 200$ ?..........................................39 6.2. Dual Boot Mac OS X 10.6 / Ubuntu 9.10 Karmic on MacBook Pro 5,5..................................40 6.2.1. Indentier Modle (Matriel) et Versions (Systme dExploitation) du matriel Apple 40 6.2.2. Installation de Base.......................................................................................................41 6.2.3. Installation du pilote de carte rseau sans-l (pour BCM4322 802.11a/b/g/n Wireless LAN Controller)............................................................................................................42 6.3. lshw - Information Matriel de votre ordinateur GNU/Linux ! ................................................46 6.4. Virtual Box ................................................................................................................................56 6.4.1. Installation de Base.......................................................................................................57 6.4.2. Installation dune Machine Virtuelle (Debian).............................................................60 6.4.3. Virtual LAN : 1 Hte (Ubuntu) + 2 Machines Virtuelles (Debian)..............................69 6.4.4. Installation VM Windows XP Pro (VirtualBox) sur hte Ubuntu 9.10 64bits, portable Apple MacBook Pro 5,5 ...............................................................................................69 6.4.5. Sauvegarde/Restauration (.vdi) ....................................................................................73 6.4.6. VirtualBox Conguration Linux Avanc (TAP address)..............................................73 6.4.7. Comment accder via ssh a une machine virtuelle (Virtualbox) ..................................73 6.4.8. Rsoudre VM Windows XP Pro Freeze .......................................................................74 6.4.9. Re-dimensionner un disque de machine virutelle (VirtualBox) ...................................74 6.4.10. Utilitaires pratique (Sysprep, NewSID, BGInfo, HVRemote) pour la gestion des VMs Windows .......................................................................................................................76 6.5. Autres Logiciels ........................................................................................................................77 6.5.1. xournal, claws-mail, refox, emacs, skype ..................................................................77 6.5.2. Installer Google Chrome (Chromium) sous Ubuntu ....................................................77 6.5.3. X-lite installation for Ubuntu 9.10 _amd64..................................................................80 6.5.4. Qutecom installation (en remplacement de X-Lite) .....................................................80 6.5.5. Twinkle installation (en remplacement de QuteCom) - SIP Softphone .......................81 6.5.6. NetBeans (IDE) installation .........................................................................................81 6.5.7. xmlcopyeditor installation ............................................................................................82 6.6. Dsactiver lIPv6 sur Ubuntu 9.10 ............................................................................................82 6.6.1. Mthode 1: diter /etc/modprobe.d/blacklist ...............................................................83 6.6.2. Mthode 2: via GRUB ..................................................................................................83 6.6.3. Comment sassurer que IPv6 est dsactiv ?................................................................84

iv

6.7. Debian Live sur une clef USB...................................................................................................84 7. SR001 Commandes GNU/Linux (Shell).............................................................................................86 7.1. SYS01: Systme de chier HFS ...............................................................................................86 7.2. SYS01: Base .............................................................................................................................90 7.2.1. Processus ......................................................................................................................91 7.2.2. Commande de base sous Linux ....................................................................................91 7.2.3. Redirection des entres/sortie (ux).............................................................................94 7.3. SYS01: Sauvegarde et archivage (Backup)...............................................................................95 7.3.1. Introduction ..................................................................................................................95 7.3.2. Le systme RAID (sauvegarder un poste) ....................................................................96 7.3.3. La synchronisation (sauvegarder un poste) ..................................................................96 7.3.4. rsync - synchronisation/snapshot par copie (lien matriel - hard link) ........................97 7.3.5. rsync - Interface Web, Frontend, Outil GUI .................................................................98 7.3.6. rsync - sauvegarde chiffr (backup with encryption / over Samba) .............................99 7.3.7. rsnapshot - Sauvegarde incrmentale par instantann (snapshot) ................................99 7.3.8. rdiff-backup - synchronisation/snapshot par diff (delta compress) ..........................100 7.3.9. rdiff-backup versus rsync/rsnapshot ...........................................................................100 7.3.10. Le robot de sauvegarde (sauvegarder un parc de machines) ....................................101 7.3.11. Multi-archivage sous linux (TAR, SPLIT et CAT)...................................................102 7.3.12. Autres solutions : SBackup, Back In Time, fwbackups, Time Drive .......................102 7.4. Restauration de donnees (data recovery) / Rcupration de donnes aprs un crash disque !102 7.4.1. Ressources Utiles (Info, Outils, etc...) bien lire avant de commencer !...................102 7.4.2. Suite un accident inopin : Quoi faire ! Quoi ne pas faire...! ..................................103 7.4.3. Restauration de donnes - tape par tape... ..............................................................105 7.5. SYS02: Avanc .......................................................................................................................108 7.5.1. SYS02-01: Environnement et variables......................................................................108 7.5.2. SYS02-02: Commandes avances sous Linux ...........................................................115 7.5.3. Applications................................................................................................................139 7.5.4. grep et les expressions rationnelles (ou regulires, regexp, ...) ..................................141 7.5.5. Editeur en mode texte : VI(m), Emacs, Nano, mcedit, etc... ......................................151 7.5.6. Editeur en mode graphique : Gedit, Kate, Quanta+, Bluesh, Notepad++, etc... ......156 7.5.7. Editeur XML (XML Copy Editor) .............................................................................156 7.5.8. Environnement de dveloppement intgr (IDE) : Eclipse, Netbeans, Aptana, etc... 156 7.5.9. Programmation en Langage SHELL (Bash) sous Linux ............................................157 7.5.10. Programmation en Langage SHELL (Bash) dans une console - Exercices .............175 7.5.11. Evaluation - Exercice 3.............................................................................................176 7.6. Aller plus loin ! .......................................................................................................................177 7.6.1. Dautres commandes ..................................................................................................177 7.7. Examples de commandes utiles ..............................................................................................178 7.8. Noyau GNU/Linux..................................................................................................................178 8. UI004 Raliser des documents avec LaTeX [EMPTY]...................................................................179 9. UI005 Publier des documents techniques avec DocBook [EMPTY].............................................180 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes............181 10.1. SR009 Base ...........................................................................................................................181 10.1.1. Presentation Squence ..............................................................................................181 10.1.2. Architecture logicielle de lenvironnement de dveloppement (Server HTTP + BD + script PHP) ..................................................................................................................181

10.1.3. Serveur Web - Apache - Installation et conguration ..............................................182 10.1.4. Base de donnes - MYSQL - Installation et conguration.......................................192 10.1.5. Vulnrabilits du moteur PHP ..................................................................................214 10.1.6. Language de script - PHP - Installation et conguration .........................................214 10.1.7. phpMyAdmin - Installation et conguration............................................................224 10.1.8. Atelier - Installation dune application (Promethe) tlcharge partir dun zip ou dun tar.gz ...................................................................................................................239 10.1.9. Dveloppement dune application et mise disposition sous la forme dun tgz .....252 11. SR004 Interconnecter un rseau TCP/IP ......................................................................................254 11.1. Outils de test - Laboratoire: Netkit & Clownix.....................................................................254 11.1.1. Netkit ........................................................................................................................254 11.2. NET01 Base ..........................................................................................................................257 11.2.1. En Bref......................................................................................................................257 11.2.2. Cours IP (Protocole Internet) - Concept retenir :) .................................................260 11.2.3. Adresse IP publique et prive...................................................................................268 11.2.4. Outil pour les calculs IP (masque, etc...) : gip, sipcalc.............................................268 11.2.5. DMZ - Zone dmilitarise ........................................................................................269 11.2.6. Les chiers importants .............................................................................................269 11.2.7. Les commandes rseaux importantes : ip, ifcong, ifup/ifdown, arp, route, netstat, traceroute, dig, host, hostname, whois, ping, mtr, bing, telnet, curl, nc(netcat), iftop274 11.2.8. Utilisation de commandes rseau .............................................................................297 11.2.9. Init : initialisation du systme sous Linux................................................................301 11.2.10. Modier ltape de boot .........................................................................................310 11.2.11. Exercice - valuation..............................................................................................310 11.2.12. Autres questions .....................................................................................................312 11.2.13. Atelier - Fichier Hosts ............................................................................................312 11.2.14. Approche des services Telnet et FTP .....................................................................315 11.2.15. Telnet et FTP mise en uvre ..................................................................................317 11.2.16. Premiers pas dans la scurit..................................................................................318 11.2.17. Lanalyse de trame (tcpdump, tshark, wireshark) ..................................................318 11.2.18. Dpannage rseau...................................................................................................331 11.2.19. netperf/ethtool : Mesure de performance rseau ....................................................331 11.2.20. Le protocole ssh (ssh, rssh, sftp, etc...)...................................................................333 11.2.21. Exercice - valuation..............................................................................................337 11.2.22. VoIP : Le protocole sip ...........................................................................................337 11.2.23. VoIP : Le protocole XMPP (anciennement nomm Jabber)...................................338 11.3. IPv6 .......................................................................................................................................338 11.3.1. Introduction ..............................................................................................................339 11.3.2. Tester votre connexion IPv6, faite danser la tortue :) ...............................................339 12. SR005 - Administrer un serveur DNS............................................................................................340 12.1. Lespace de noms - Arborescence DNS................................................................................340 12.2. DNS : Domain Name Server (Server de noms) ....................................................................341 12.2.1. Protocole DNS (port 53, UDP/TCP) ........................................................................341 12.2.2. Rsolution de Nom - Mcanisme de dlgation.......................................................342 12.2.3. Terminologie.............................................................................................................343 12.2.4. Messages DNS (Enveloppe) .....................................................................................343 12.2.5. Liste des serveurs DNS existant ...............................................................................344

vi

12.2.6. Installation & Maintenance ......................................................................................345 12.2.7. Documentation .........................................................................................................347 12.2.8. Conguration............................................................................................................347 12.2.9. Conguration dun serveur DNS sur le net ..............................................................353 12.2.10. Pige viter ..........................................................................................................354 12.2.11. Outils de diagnostique et de vrication de la conguration .................................355 12.2.12. Commandes utiles ..................................................................................................357 12.2.13. Verication du bon fonctionnement du serveur......................................................358 12.2.14. Slow DNS lookup issues with bind9 ......................................................................358 12.2.15. Architecture de Service DNS .................................................................................359 12.3. DNS : Travaux pratiques 1 ....................................................................................................360 12.3.1. dig : Mise en application ..........................................................................................360 12.3.2. dig : Resolution DNS Simple ...................................................................................362 12.3.3. dig : Resolution inverse ............................................................................................367 12.3.4. Manipulation des ags..............................................................................................369 12.3.5. Section additionnelle ................................................................................................372 12.4. DNS : Travaux pratiques 2 ....................................................................................................373 12.4.1. Plan de dlgation du rseau ....................................................................................373 12.4.2. Procdure et droulement pour arriver au rsultat....................................................374 12.4.3. Fichiers de conguration (named, options, db, etc) et log de tests ..........................381 12.4.4. Server Secondaire .....................................................................................................383 12.5. Scuriser un serveur DNS .....................................................................................................384 12.5.1. Tout interdire par dfaut ? ........................................................................................385 12.5.2. Access Control Lists (ACL) .....................................................................................385 12.5.3. Transfert scuris - Architecture utilisant les signatures de transfert de zones (TSIG) 387 12.5.4. Signature de requte et rponses DNS avec dig .......................................................392 12.5.5. Diffuser une zone signe avec DNSSEC (2010) ......................................................393 12.6. valuation pour le module sr005 ..........................................................................................395 12.6.1. Questions de cours....................................................................................................395 12.6.2. Architecture dune agence........................................................................................396 12.6.3. Conguration Bind ...................................................................................................397 13. SR006 - Administrer un serveur de messagerie (SMTP) .............................................................398 13.1. La messagerie lectronique ...................................................................................................398 13.1.1. Prsentation & Terminologie....................................................................................398 13.1.2. Serveur de messagerie (Exim4, Postx, etc...) .........................................................399 13.1.3. Choisir un serveur de messagerie, fonctionalits ncessaires ..................................399 13.1.4. Exim4 Documentation..............................................................................................400 13.1.5. Exim4 conguration .................................................................................................400 13.2. Travaux pratiques 1 ...............................................................................................................402 13.2.1. Gnral .....................................................................................................................402 13.2.2. Expansion de variables .............................................................................................407 13.2.3. Congurations possibles (Local, Smarthost, Satellite...)..........................................408 13.3. valuation pour le module sr006 ..........................................................................................409

vii

14. SR007 Administrer un serveur Web (HTTP)................................................................................412 14.1. Serveur Web Apache.............................................................................................................412 14.1.1. Introduction ..............................................................................................................412 14.1.2. Travaux pratiques 1: Base et Protocole ....................................................................412 14.1.3. Travaux pratiques 2: SSL, Php et Virtual Host.........................................................414 14.1.4. Contrle ....................................................................................................................416 15. SR010 Les enjeux de la scurit .....................................................................................................417 15.1. Les enjeux (Password, Sauvegardes, etc...)...........................................................................417 15.1.1. Introduction ..............................................................................................................417 15.1.2. Choisir son mot de passe... mais un bon mot de passe, cest quoi ? ........................418 15.1.3. Priodicit (3 mois ou moins)...................................................................................423 15.1.4. Rsum (Rgle/Politique de scurit) ......................................................................424 15.1.5. Technique pour gnrer son mot de passe (Example simple) ..................................424 15.1.6. Tester son mot de passe ............................................................................................425 15.1.7. Clef publique/prive .................................................................................................428 15.1.8. Les sauvegardes ........................................................................................................428 15.1.9. Le Chiffrement (GnuPG)..........................................................................................428 15.1.10. Un espace hermtique.............................................................................................428 15.2. Le Chiffrement : Signature Numrique & Encryption (GnuPG) ..........................................428 15.2.1. Chiffrement symtrique (une clef) / asymtrique (paire de clefs)............................429 15.2.2. Installation et conguration de GnuPG ....................................................................430 15.2.3. Lister les clefs de son trousseau ...............................................................................430 15.2.4. Gnrer un nouvelle paire de clefs ...........................................................................430 15.2.5. Gnrer un certicat de rvocation...........................................................................432 15.2.6. Export de clefs..........................................................................................................433 15.2.7. Import de clefs..........................................................................................................434 15.2.8. Emprunte et signature de clef publique ....................................................................434 15.2.9. Chiffrer/Dchiffrer un document..............................................................................435 15.2.10. Signature Numrique (ou Electronique) dun document........................................436 15.2.11. Vrier la signature dun document .......................................................................436 15.2.12. Gestion du trousseau de clefs (publique/prive, sous-cls, etc...) ..........................436 15.2.13. Distribution de cls (Serveur de cls).....................................................................439 15.2.14. Chiffrement de messages courriels.........................................................................441 15.2.15. PGP/inline, PGP/MIME, S/MIME (PKI)...............................................................443 15.2.16. Gestionaires Graphique de clefs (publique/prive) ................................................445 15.3. Un espace hermtique ...........................................................................................................445 15.3.1. DMZ (Zone dmilitarise)........................................................................................445 15.3.2. Protger son rseau - Contrler les accs .................................................................447 15.3.3. Dnir les usages: Qui (Client/Serveur), Quoi (Service), Pourquoi, Comment (Interface, Ports) .........................................................................................................448 15.3.4. Dnir les ux client/serveur autoriss ....................................................................450 15.3.5. IDS - Systme de dtection dintrusion....................................................................454 15.3.6. Sparer/Re-grouper les services Rseau/Scurit ....................................................454 15.3.7. Pare-feu.....................................................................................................................455 15.3.8. Serveur Proxy (Serveur Mandataire) ........................................................................455 15.4. Principes gnraux pour scuriser un systme......................................................................455 15.4.1. Quelques rgles simple garder en mmoire...........................................................455

viii

15.4.2. Principe du privilge minimum ................................................................................456 15.4.3. BIOS - Protger par mot de passe ............................................................................456 15.4.4. Chargeur de dmarrage (Grub, Lilo) - Protger par mot de passe ...........................457 15.4.5. Comptes utilisateurs .................................................................................................462 15.4.6. Systme de gestion des chiers - SGF (ou FHS en anglais) ....................................465 15.4.7. Droits daccs UNIX ................................................................................................467 15.4.8. Chiffrement du systme de chiers ..........................................................................472 15.4.9. Les services (Fermer linutile / Scuriser lutile) .....................................................475 15.4.10. Pare-feu...................................................................................................................482 15.4.11. Le serveur graphique ..............................................................................................482 15.5. HOWTO: Securiser Dbian ..................................................................................................483 15.6. Scuriser les processus et surveiller le systme ....................................................................483 15.6.1. Grsecurity (GrSec) [patche pour scuriser le noyau] ...............................................484 15.6.2. chroot........................................................................................................................486 15.7. Diffrents types dattaques....................................................................................................506 15.7.1. Attaques Locales ......................................................................................................506 15.7.2. Attaques Distantes ....................................................................................................508 15.7.3. Sensibilisation...........................................................................................................515 15.7.4. La charte de lutilisation du SI .................................................................................515 15.7.5. Historique dutilisation : Centraliser & protger......................................................516 15.8. Congurer le systme de journalisation................................................................................516 15.8.1. Rappel.......................................................................................................................516 15.8.2. Tester sa conguration..............................................................................................517 15.8.3. Congurer les rotations (logrotate) ..........................................................................517 15.8.4. Surveiller les logs (swatch, syslog-ng) .....................................................................518 15.9. Outils daudit de scurit ......................................................................................................521 15.9.1. Construire un forteresse............................................................................................521 15.9.2. nmap .........................................................................................................................521 15.9.3. nikto..........................................................................................................................521 15.9.4. nessus........................................................................................................................521 15.10. Examen................................................................................................................................522 15.11. Scurit avance..................................................................................................................522 16. SR011 Dployer un routeur, un pare-feu et un serveur mandataire...........................................524 16.1. Pare-feu (Firewall) - Filtre paquets ....................................................................................524 16.1.1. Introduction ..............................................................................................................524 16.1.2. Conseils retenir ......................................................................................................524 16.1.3. Conguration Minimum...........................................................................................525 16.1.4. netlter & iptables ....................................................................................................525 16.1.5. fwbuilder (GUI)........................................................................................................542 16.1.6. Pour aller plus loin sur la gestion dun pare-feu.......................................................542 16.1.7. TP : routage et ltrage ..............................................................................................542 16.1.8. Port(s) Internet ouvrir/fermer ................................................................................565 16.1.9. Port Knocking...........................................................................................................565 16.2. Serveur Proxy (Serveur Mandataire).....................................................................................566 16.2.1. Introduction ..............................................................................................................566 16.2.2. SQUID ......................................................................................................................566 16.2.3. TP : Proxy HTTP......................................................................................................566

ix

16.2.4. Autre Proxy ..............................................................................................................567 17. SAMBA & OpenLDAP....................................................................................................................568 17.1. Planning SAMBA & LDAP ..................................................................................................568 17.2. SAMBA : Prsentation..........................................................................................................568 17.3. SAMBA : Premier Pas ..........................................................................................................568 17.3.1. Documentation .........................................................................................................569 17.3.2. Fonctionalit .............................................................................................................570 17.3.3. Terminologie & Protocole ........................................................................................571 17.3.4. Installation ................................................................................................................572 17.3.5. Version, Status ..........................................................................................................574 17.3.6. Les binaires "Serveur" ..............................................................................................575 17.3.7. Les binaires "Client".................................................................................................575 17.3.8. Fichier de conguration smb.conf ............................................................................576 17.3.9. Les chiers de statut "tdb"........................................................................................578 17.3.10. Les chiers de log...................................................................................................578 17.3.11. Premiers Tests.........................................................................................................579 17.3.12. Comment diagnostiquer un problme ?..................................................................582 17.4. SAMBA en tant que serveur autonome.................................................................................582 17.4.1. Conguration Etendue..............................................................................................583 17.4.2. Cration dun partage (tmp) accessible tous (compte invit) ................................583 17.4.3. Partage avec authentication ....................................................................................586 17.4.4. Gestion des comptes (Liste, Cration, Suppression) ................................................587 17.4.5. Vrication des logs .................................................................................................589 17.4.6. Gestion des droits (li au partage, li au systme de chier) ...................................590 17.4.7. Options de conguration pour gestion des droits .....................................................590 17.4.8. ACLs (pour gestion de droits plus complexe) ..........................................................591 17.4.9. Limpression et le partage dimprimantes................................................................592 17.4.10. net commande.........................................................................................................597 17.5. LDAP : Prsentation..............................................................................................................599 17.6. LDAP : Concepts ..................................................................................................................600 17.6.1. Liste des principaux annuaires LDAP existant sur le march ..................................600 17.6.2. Caractristiques communes aux annuaires...............................................................600 17.6.3. Protocole LDAP et versions .....................................................................................601 17.6.4. Organisation des donnes (modle de nommage) ....................................................601 17.6.5. Donnes contenues dans lannuaire (modle dinformation) ...................................602 17.6.6. Accder lannuaire (modle fonctionnel) ..............................................................607 17.6.7. La scurit (modle de scurit)...............................................................................610 17.6.8. Concepts avancs (Rplication, distribution, etc...)..................................................611 17.7. SAMBA en tant que contrleur de domaine .........................................................................611 17.7.1. Les tapes en bref :)..................................................................................................611 17.7.2. A propos des SIDs ....................................................................................................611 17.7.3. Conguration de Samba en tant que PDC................................................................612 17.7.4. Les partages spciques (homes, netlogon, proles) ...............................................614 17.7.5. Gestion des comptes utilisateurs ..............................................................................619 17.7.6. Le mapping de groupes et le rle des RIDs..............................................................621 17.7.7. Les paramtres avancs de chaque compte Samba ([home][proles][netlogon]) ....626 17.7.8. Cration du compte POSIX de manire autonome...................................................626

17.7.9. Le superutilisateur Samba ........................................................................................628 17.7.10. Jonction au domaine et test de notre contrleur .....................................................629 17.7.11. Obtenir des information sur le domaine .................................................................635 17.7.12. Samba en tant que BDC .........................................................................................635 17.7.13. Visualiser les connexions........................................................................................636 17.7.14. Relire la conguration sans redmarrer Samba......................................................637 17.7.15. En cas de problme : tude des logs !.....................................................................637 17.7.16. Administration graphique ? Swat... ........................................................................638 17.8. OpenLDAP............................................................................................................................638 17.8.1. Installation OpenLDAP ............................................................................................638 17.8.2. Les outils fournis par OpenLDAP ............................................................................640 17.8.3. Conguration du serveur ..........................................................................................641 17.8.4. Documentation .........................................................................................................641 17.8.5. Tester la conguration & redmarrer le serveur OpenLDAP ...................................642 17.8.6. Linclusion des schmas...........................................................................................642 17.8.7. Niveau de logs ..........................................................................................................643 17.8.8. Les backends ............................................................................................................643 17.8.9. Performance & Optimisation - Backend (hdb/bdb) conguration (DB_Cong) .....644 17.8.10. Les databases ..........................................................................................................644 17.8.11. Mot de passe root (rootpw).....................................................................................644 17.8.12. Administrer un serveur OpenLDAP .......................................................................645 17.8.13. Utilisation des outils clients (Ajouter entre, initialiser, re-initialiser) ..................648 17.8.14. Afcher larborescence dun annuaire ldap............................................................651 17.8.15. Rechercher une entre : ldapsearch ........................................................................652 17.8.16. Supprimer une entre : ldapdelete ..........................................................................654 17.8.17. Modier une entre : ldapmodify ...........................................................................655 17.8.18. Renommer une entre : ldapmodrdn ......................................................................656 17.8.19. Conguration des outils clients ..............................................................................656 17.8.20. Outils graphiques dadministration ........................................................................658 17.9. Connexion de Samba notre annuaire..................................................................................661 17.9.1. Rappel.......................................................................................................................661 17.9.2. Prparation de lannuaire..........................................................................................661 17.9.3. Comptes POSIX - Nsswitch .....................................................................................663 17.9.4. Ajout de compte (ldapscripts) ..................................................................................664 17.9.5. Test de la reconnaissance dun compte.....................................................................664 17.9.6. Connexion sur le systme Unix avec le compte LDAP............................................669 17.9.7. Connexion de Samba lannuaire ............................................................................669 17.9.8. Diagnostiquer un problme ......................................................................................673 18. SR015 - Administrer un serveur CVS............................................................................................675 18.1. Systme de gestion de version (Version Control Systems - VCS/SCM Source Control Management)........................................................................................................................675 18.1.1. Gestion de versions centralise (CVS, Subversion) .................................................675 18.1.2. Gestion de versions dcentralise (Git, Mercurial, Bazaar,...) .................................675 18.1.3. Comparaison.............................................................................................................675 18.1.4. Quels VCS/SCM choisir ?........................................................................................676 18.2. CVS/Subversion ....................................................................................................................677 18.3. Git (Language C) ..................................................................................................................677

xi

18.3.1. Prsentation, Rfrence et Documentation...............................................................678 18.3.2. Notion : rpertoire Git (.git), rpertoire de travail et index Git ................................680 18.3.3. Installation/Conguration.........................................................................................681 18.3.4. Cration projet (nouveau ou depuis existant) ...........................................................681 18.3.5. Historique du projet (Consulter les logs)..................................................................684 18.3.6. Appliquer des mise jour et changement au projet .................................................684 18.3.7. Les branches .............................................................................................................686 18.3.8. Ajouter des chier lindex : Quelle diffrence entre "git add -A", "git add -u" et "git add ." ? Enlever du repertoire de travail les chiers supprims ..................................686 18.3.9. Enlever des chier lindex, avant de committer.....................................................689 18.3.10. A ne pas faire ! .......................................................................................................689 18.3.11. Git - Congurer un dpt distant (Remote)............................................................690 18.3.12. Git - Congurer un dpt public HTTP ("static") - Travailler en collaboration ....690 18.4. Mercurial (Python) ................................................................................................................695 18.5. Bazaar (Python).....................................................................................................................695 18.6. darcs ......................................................................................................................................695 19. SR016 Dployer un extranet scuris (VPN - Rseaux privs virtuels)......................................696 19.1. Les rseaux privs virtuels (VPN) ........................................................................................696 19.1.1. Introduction ..............................................................................................................696 19.1.2. Mise en place dun VPN sur SSH ............................................................................696 19.1.3. Mise en place dun VPN sur SSL.............................................................................697 19.1.4. VPN sur IPSEC ........................................................................................................697 20. Le langage Perl appliqu ladministration systme...................................................................698 20.1. Introduction la programmation en Perl ..............................................................................698 20.1.1. Documentation de Perl .............................................................................................698 20.1.2. Langages dots de ramasse-miettes..........................................................................699 20.2. OF Sance 1 : Scalaires, listes, tableaux et fonctions.........................................................699 20.2.1. Premiers pas..............................................................................................................699 20.2.2. Les scalaires..............................................................................................................701 20.2.3. Structures de contrle ...............................................................................................706 20.2.4. Listes et tableaux ......................................................................................................708 20.2.5. crire une fonction ...................................................................................................713 20.2.6. print, printf, fprintf, sprintf .......................................................................................714 20.2.7. Autres fonctions sur les listes ...................................................................................716 20.2.8. Exercices Sance 1 ...................................................................................................719 20.3. OF Sance 2 : Fichiers, Tables de hachage et Expressions Rgulires ..............................721 20.3.1. Tables de hachage.....................................................................................................721 20.3.2. Manipulation des chiers .........................................................................................725 20.3.3. Expressions rgulires ..............................................................................................730 20.3.4. Exercices Sance 2 ...................................................................................................733 20.4. OF Sance 3 : Rfrences et Application ladministration systme ................................738 20.4.1. Rfrences ................................................................................................................738 20.4.2. Exercices Sance 3 ...................................................................................................747

xii

21. Mthodologie de conception des sites Web et interfaces ..............................................................754 21.1. De lide la mise en production..........................................................................................754 21.1.1. En bref ......................................................................................................................754 21.1.2. Mthode et plan daction ..........................................................................................754 21.2. TP : Ralisation dune analyse des besoins ..........................................................................761 21.2.1. Sujet..........................................................................................................................761 21.2.2. Exercices...................................................................................................................762 21.3. Les cas dutilisation (UML use case diagram)......................................................................778 21.3.1. Introduction ..............................................................................................................779 21.3.2. Umbrello (raliser des diagrammes UML)...............................................................780 21.3.3. Exo2 : Cas dutilisation Kart website.......................................................................780 21.4. Proposition graphique dinterface : Ergonomie & Accessibilit ..........................................782 21.4.1. Dnition (s).............................................................................................................782 21.4.2. Mthode....................................................................................................................783 21.4.3. Organisation visuelle ................................................................................................783 21.4.4. Taille de la page........................................................................................................783 21.4.5. Conception multiplateforme.....................................................................................784 21.4.6. Vitesse de chargement du site & Accessibilit.........................................................784 21.4.7. Navigation / Interface Homme-Machine ..................................................................785 21.4.8. Conception du contenu .............................................................................................786 21.4.9. A ne pas faire ! .........................................................................................................787 21.4.10. Pour rsumer en bref...! ..........................................................................................787 21.4.11. Travaux Pratique SI001 ..........................................................................................788 21.5. Conclusion ............................................................................................................................806 21.6. GIMP.....................................................................................................................................806 21.6.1. Cours.........................................................................................................................807 21.6.2. Maquette ...................................................................................................................807 21.6.3. Rendu XHTML ........................................................................................................809 21.7. Hbergement de site Web sur Internet ..................................................................................809 21.7.1. toile-libre.org ............................................................................................................809 22. HTML, XHTML, CSS.....................................................................................................................811 22.1. Prsentation de la squence...................................................................................................811 22.2. Importance des standards sur Internet...................................................................................812 22.2.1. Origine......................................................................................................................813 22.2.2. 1er Principes : au service de tous ! ...........................................................................813 22.2.3. 2me principe : Introprabilit & Accessibilit......................................................814 22.2.4. 3me Principe : Sparer forme et fond .....................................................................814 22.2.5. 4me Principe : La smantique (validation) .............................................................815 22.2.6. 5me Principe : La qualit........................................................................................816 22.2.7. Limportance des jeux de caractres.........................................................................816 22.3. (x)HTML...............................................................................................................................818 22.3.1. DOCTYPE Dclaration ............................................................................................818 22.3.2. Tags/Entities/Attributes/Events ................................................................................819 22.3.3. Atelier XHTML: Essais et Validation ......................................................................822 22.3.4. Questions/Rponses..................................................................................................823 22.4. CSS (Feuilles de Style en Cascade) ......................................................................................825 22.4.1. Prsentation ..............................................................................................................825

xiii

22.4.2. Avantages (Beaucoup) ..............................................................................................826 22.4.3. Inconvnients (Peu) ..................................................................................................826 22.4.4. Syntaxe CSS .............................................................................................................827 22.4.5. Intgration des CSS avec les documents XHTML / Type de mdia ........................832 22.4.6. La priorit des slecteurs ..........................................................................................834 22.4.7. Atelier CSS: Essais et Validation .............................................................................834 22.5. Projets Web ...........................................................................................................................834 22.5.1. CV Taos ....................................................................................................................835 22.5.2. Attention: Adresse courriel en direct sur les pages !!! .............................................836 22.5.3. Site multi-navigateur: Comment grer la compatibilit !.........................................837 22.5.4. CSS - Lien Interne/Externe ......................................................................................838 22.5.5. (x)HTML - Video Embarque pour tous ..................................................................838 22.5.6. Exemples de site (Ombrage, Effets 3D, ...) ..............................................................839 22.6. (x)HTML5 & CSS3 ..............................................................................................................840 22.6.1. xHTML5...................................................................................................................840 22.6.2. CSS3 .........................................................................................................................840 22.6.3. Respect des standards - Suite de test(s) pour vrier la conformit des navigateurs Web .............................................................................................................................841 23. SI010 - Interfaces Web enrichies ....................................................................................................842 23.1. RIA........................................................................................................................................842 23.1.1. Conception dapplications Internet riches ................................................................842 23.1.2. Utilisation de scnarios/schmas (Pattern) connues et identis .............................842 23.1.3. Framework(s) Javascript...........................................................................................842 23.1.4. Utiliser AJAX (Asynchronous JavaScript + XML)..................................................843 23.1.5. Document Objetc Model (DOM) .............................................................................844 23.1.6. JSON (JavaScript Object Notation) et JSONP !.......................................................845 23.1.7. Amliorer les performances : "minify" javascript, concatenate CSS in one, optimiser les images....................................................................................................................846 23.1.8. TP - AJAX ................................................................................................................848 23.1.9. Dbugger Javascript/AJAX - Conseil et retour dexprience ...................................850 23.1.10. Projet Ajax : Logiciel de Chat ................................................................................854 24. Initiation au langage de script (PHP, Python, Perl)......................................................................860 24.1. Prsentation ...........................................................................................................................860 24.2. Dvelopement Modulaire (OO, Framework, MVC, etc...) ...................................................864 24.3. PHP .......................................................................................................................................865 24.3.1. Premier Pas... ............................................................................................................865 24.3.2. Installation dApache, PHP et MySQL sous Linux (LAMP)...................................865 24.3.3. VirtualHost ddi :) ..................................................................................................865 24.3.4. TP Hello World ...................................................................................................866 24.3.5. Calculatrice PHP ......................................................................................................874 24.3.6. Exponentielle dun entier .........................................................................................875 24.3.7. Tester le type darguments........................................................................................875 24.3.8. Le language PHP - Manuel de Rfrence.................................................................875 24.3.9. Dsactiver les guillemets magiques dans php.ini .....................................................890 24.3.10. TP Formulaire.........................................................................................................891 24.3.11. TP Base de donnes................................................................................................893 24.3.12. Scurisation des dveloppements PHP...................................................................896

xiv

24.3.13. Open ID / SSO (Single Sign On)............................................................................898 24.3.14. TP Authentication ................................................................................................898 24.3.15. Gestion derreurs - Logs - Filtrage de donnes ......................................................902 24.3.16. Librairies / Framework PHP...................................................................................903 24.3.17. Projet PHP : Kring..................................................................................................903 24.4. Python ...................................................................................................................................907 24.4.1. Version 2.x ou 3.x ? ..................................................................................................907 24.4.2. Installation ................................................................................................................907 24.4.3. Executer un programme Python ...............................................................................908 24.4.4. Obtenir des informations sur le systme ..................................................................909 24.4.5. IDE pour coder sous Python.....................................................................................911 24.4.6. Encodage des chiers sources (et codecs)................................................................911 24.4.7. Premier Pas... avec le language ................................................................................912 24.4.8. Rsum du language (Cheatsheet)............................................................................942 24.4.9. Coder en Python avec du Style ! ..............................................................................946 24.4.10. Documentation du code..........................................................................................948 24.4.11. Performance (Conseils, Concatenation, etc...) .......................................................949 24.4.12. Persistance des donnes : Les chiers ....................................................................951 24.4.13. Persistance des donnes : Base de donnes............................................................955 24.4.14. Utilisation pour le Web (Script CGI)......................................................................970 24.4.15. Interface Graphique (GUI avec Tkinter) ................................................................999 24.5. Lua ......................................................................................................................................1037 25. SI020 - Utilisation avance dun gestionnaire de contenu..........................................................1038 25.1. SPIP.....................................................................................................................................1038 25.1.1. Cours.......................................................................................................................1038 25.1.2. TP Installation ........................................................................................................1038 25.1.3. TP Prise en main.....................................................................................................1072 25.1.4. TP Installation de Squelettes ..................................................................................1073 25.1.5. Ralisation dun squelette SPIP..............................................................................1083 25.1.6. TP : introduction la cration de squelettes SPIP..................................................1085 25.1.7. TP : cration avanc de squelettes SPIP .................................................................1086 25.1.8. Projet SPIP - Ralisation dun site complet ...........................................................1086 26. SI022 - Dnir et utiliser son propre langage de balises avec XML et ses feuilles de styles XSL 1087 26.1. XML/XSL ...........................................................................................................................1087 26.1.1. Prsentation XML ..................................................................................................1087 26.1.2. TD - XML...............................................................................................................1089 26.1.3. TD - XSL................................................................................................................1116 26.1.4. Projet XML/XSL Livres : Application dchange (XML).....................................1144 26.1.5. Transfert de paramtres XSL via PHP ...................................................................1155 27. ANNEXES ......................................................................................................................................1157 27.1. Liste de commandes............................................................................................................1157 27.2. Ressources Bibliographique................................................................................................1157 27.2.1. Les coulisses de lInternet par Olivier Ricou (Geopolitique) [prsent]..................1157 27.2.2. The Cathedral and the Bazaar.................................................................................1157 27.2.3. Linux aux petits oignons ........................................................................................1157 27.2.4. Richard Stallman et la rvolution du logiciel libre Une biographie autorise..1157

xv

27.2.5. Richard Stallman : Lavenir du logiciel libre dpend de vous tous ..................1158 27.2.6. Mise en place dune solution de ressources rparties et scurises composes de logiciels libres au sein dune info-structure par Jean-Philippe Gaulier [2007] ........1159 27.2.7. Rvolution, linformatique devient votre sixime sens ..........................................1159 27.2.8. Analyse des algorithmes nalistes concourant pour le futur standard AES par Jean-Philippe Gaulier................................................................................................1159 27.3. Linux HOWTO ...................................................................................................................1159 27.4. Modles Economique du Libre ...........................................................................................1160

xvi

Liste des tableaux


12-1. Fichiers de conguration et rsultat de tests ..................................................................................381 21-1. Section publique .............................................................................................................................772 21-2. Section partenaires / Espace Client ................................................................................................776 21-3. Section prive .................................................................................................................................777 21-4. Commun lensemble des Sections ci-avant .................................................................................778 24-1. Language de script..........................................................................................................................860

xvii

Chapitre 1. Licence
Permission est accorde de copier, distribuer et/ou modier ce document selon les termes de la Licence de Documentation Libre GNU (GNU Free Documentation License), version 1.1 ou toute version ultrieure publie par la Free Software Foundation sans section invariante, sans texte de premire de couverture, ni texte de quatrime de couverture. Une copie de la licence est fournie dans la section intitule "GNU Free Documentation License" (http://www.gnu.org/copyleft/fdl.html).

Chapitre 2. Introduction...
2.1. Logiciels Libre et Open Source ( code ouvert) FLOSS
Source(s):

Web: Free Software Foundation - FSF (EN) (http://www.fsf.org) FSF France (FR) (http://fsffrance.org) Open Source Initiative - OSI (EN) (http://www.opensource.org)

2.1.1. Quest-ce quun code source?


Le code source est lADN dun programme. Il est crit en un langage comprhensible par lhomme et plus spciquement les dveloppeurs.

2.1.2. FLOSS ? Quesaqo ?


FLOSS signie "Free Libre et Open Source Software" (Logiciel). FLOSS est un terme gnrique qui qualie la fois les logiciels libres et les logiciels open source. Un logiciel FLOSS est un logiciel libre ou open source diffus selon les termes dune licence libre ou open source et dont le code source est mis disposition dun utilisateur pour tre excut, copi, tudi, modi, redistribu.

2.1.3. Le logiciel libre


La Free Software Foundation ( FSF ) a conu ce concept et des licences libres (GPL, etc...). Il faut entendre libre au sens de libert et non de gratuit (Free as Freedom). Les licences libres sont constuites autour de 4 liberts fondamentales :
* * * * utiliser le programme, ltudier, le modifier, le distribuer (gratuitement ou non).

Chapitre 2. Introduction... Le copyleft ( gauche dauteur par opposition au copyright ) se pose comme un garant de liberts car il permet dimposer le redistribution du code source sous la mme licence libre. Tout code propritaire associ du code libre (logiciel libre) rend la totatlit du code libre par effet de bord (volontaire) de la licence (GPL est un bonne example) Example concret dactualit : Orange - Logiciels Libres et Sources Ouverts de la Livebox - Livebox Free/Libre & Open Source Software - http://www.livebox-oss.com (http://www.livebox-oss.com/).

2.1.4. Le logiciel open source


LOpen Source Initiative OSI (site web disponible en anglais) a dni 10 critres que doit satisfaire une licence pour tre qualie de licence open source :
* * * * * * * * * * libre redistribution du logiciel, fournir le code source, permettre la cration duvres drives, respecter de lintgrit du code source de lauteur, pas de discrimination quant aux personnes ou aux groupes, pas de discrimination quant aux domaines (recherche, industrie, etc.), distribuer la licence, licence non spcifique un produit, pas de restriction impose dautres logiciels, licence neutre technologiquement.

Ainsi, toute licence rpondant ces critres peut recevoir la certication Open Source mise en place par lOSI. Tout code propritaire associ du code Open Source ne rend pas la totalit du code forcment Open Source. Dans ce cas une "tolrance" est accept par effet de bord (volontaire) de la licence (BSD est un bonne example). Ce qui est propritaire peut le rester (dlivrance de code binaire non interpretable par lhomme) et ce qui est Open Source doit le rester (code lisible par lhomme distribuable sous la mme license Open Source).

2.1.5. Les quatre liberts essentielles de lutilisateur dun programme


Libert 0 : la libert dexcuter le programme comme tu veux. Libert 1 : la libert dtudier le code source et de le changer pour que le programme fasse ce que tu veux.

Chapitre 2. Introduction...

Libert 2 : la libert daider les autres, cest--dire la libert de redistribuer des copies exactes du programme, quand tu veux. Libert 3 : la libert de contribuer ta communaut, cest--dire la libert de distribuer des copies de tes versions modies du programme, quand tu veux.

2.1.6. Le logiciel libre : comment a marche ?


... Pour aider sensibiliser de nouveaux publics aux enjeux du logiciel libre, le groupe de travail Sensibilisation de lApril a cr le dpliant Le logiciel libre : comment a marche ? (http://www.april.org/fr/documents-de-sensibilisation). Ce document de vulgarisation clair introduit le logiciel libre et donne quelques cls pour approfondir sa comprhension. Le document est sous licence libre et sa diffusion au plus grand nombre est fortement encourage ! ... Par Malicia sur Linux.fr (http://linuxfr.org/2010/06/01/26927.html)

Cette campagne souligne diffrentes facettes du logiciel libre dont la dmarche est dcoupe en six tapes principales :

1. Les prmisses dun logiciel : comment les caractristiques principales dun logiciel libre sont tablies ; 2. Les premires contributions : grce la disponibilit du code source, dautres dveloppeurs peuvent se joindre au projet 3. Les premiers essais de fonctionnement : aprs de nombreux tests de fonctionnement, le logiciel est diffus aux utilisateurs ; ces derniers peuvent remonter des dysfonctionnements et ainsi aider les concepteurs du logic 4. Les modifications apporter : lenrichissement en termes de fonctionnalits continue ; 5. Lutilisation plus grande chelle : la diffusion du logiciel continue auprs du plus grand nombre dutilisateurs ; un manuel est rdig et des traductions sont ajoutes ; 6. Lvolution rapide des fonctionnalits : chaque modification, une nouvelle version est diffuse ; le cycle damlioration est ainsi continu et implique des contributeurs trs divers.

Chapitre 2. Introduction... Figure 2-1. Le logiciel libre : comment a marche ? 1/2

Figure 2-2. Le logiciel libre : comment a marche ? 2/2

2.1.7. Promouvoir le libre dans les entreprises et les

Chapitre 2. Introduction...

administrations ?
Source(s):

Web: Open source in a new light (EN) (www.ibm.com/developerworks/linux/library/os-newlight/index.html) Traduction (FR) (translate.google.fr/translate?js=y&prev=_t&hl=fr&ie=UTF8&layout=1&eotf=1&u=http://www.ibm.com/developerworks/linux/library/osnewlight/index.html&sl=en&tl=fr) Association(s): Et si les collectivits locales passaient au logiciel libre ? (http://www.rue89.com/passage-a-lacte/2010/05/26/et-si-les-collectivites-locales-passaient-aulogiciel-libre-152403?page=1) ADULLACT - Mutualisation de logiciels libres pour institutionnels (www.adullact.org) APRIL - Promouvoir et dfendre le logiciel libre (http://www.april.org/fr)

...lobjectif est de diminuer les cots..., de fournir des logiciels de qualit...

...Il existe aujourdhui une offre plthorique de logiciels libres mais beaucoup restent encore peu aboutis...

...Sans compter quils ne sont pas forcment plus rentables. Et au nal, cest bien sur ces deux points que les collectivits risquent de se dcider...

...Pour Matthieu Piaumier, lavantage comptitif du logiciel libre nest pourtant ni technique ni conomique : libre ne veut pas dire gratuit. Selon lui, latout dcisif des logiciels libres se rsume ainsi : Ils garantissent une indpendance totale vis--vis des diteurs. ... ...Un point loin dtre anodin pour une administration publique et qui explique pourquoi, pour lAdullact, le logiciel libre, plus quun choix technique, devrait tre avant tout un choix politique... http://www.rue89.com / Adullact (http://www.rue89.com/passage-a-lacte/2010/05/26/et-si-les-collectiviteslocales-passaient-au-logiciel-libre-152403?page=1)

2.1.8. Comment augmenter/amliorer lutilisation des logiciels libres en gnrale et des distributions GNU/Linux en particulier ?
Source(s):

Web: Linux doit rendre lopen-source "fabuleux" pour rester dans la course des mobiles (http://www.numerama.com/magazine/15934-linux-doit-rendre-l-open-source-34fabuleux34-pourrester-dans-la-course-des-mobiles.html) Making Open-Source Software Free and Fabulous (http://www.businessweek.com/technology/content/jun2010/tc2010069_622120.htm) Mark Shuttleworth at LinuxTag (2010) (http://lwn.net/SubscriberLink/392016/4603701c55f3f107) Famous chasm diagram (Geoffrey Moore) : bell-shaped curve showing product adoption over time

Chapitre 2. Introduction... (http://farm1.static.ickr.com/117/307081370_ea221b9eeb_o.png) Ubuntu v iTunes: the music playoff for Applephobes (http://www.channelregister.co.uk/2010/06/18/linux_versus_mac_windows_1/) Has Windows 7 killed Linux on the desktop? (http://www.techradar.com/news/software/operatingsystems/has-windows-7-killed-linux-on-the-desktop--697200?artc_pg=2)

"Breaking out the old metaphors... creating more compelling user experience...", "...more realistic and interactive UI... no menu bar, no oppy disk save icon..." Privilgi Qualit&Performance au lieu de Quantit... Aider les utilisateurs devenir plus efcients... Anticiper les utilisateurs...ce sont les petits dtails qui ont de limportance... (extrait de cette vido (http://www.infoq.com/presentations/Present-Future-Web-App-Design)). Anticiper ce que les utilisateurs essayent dobtenir/de faire... pas uniquement ce quils disent quils veulent faire... Partager lobjectif des utilisateurs :
- Les utilisateurs sont interresser complter une tche rapidement et efficacement... - Les developpeurs sont interresser remplir une base de donne (par exemple) Ces deux objectifs doivent tre en synchronisation/symbiose...

Assurer un fonctionnement irrprochable des fonctionalits clefs avant den ajouter de nouvelles... (palier par un moyen simple de les combiner...)
...the quickest way to alienate new users is to make it hard for them to do what they want to do. Or worse, promise something but not do it. Users are more likely to stick with something that works well than something that mostly works but has lots of potential... http://mybroadband.co.za/news/columns/12975-New-priorities-for-Ubuntu.html

tort ou raison, les logiciels libres et GNU/Linux en particulier reste souvent considr comme des systmes austres et compliqus. Depuis plusieurs annes, des efforts considrables ont t fournis par les adeptes du libre, notamment en matire dinterface graphique pour sloigner dune vision rtrograde et gure atteuse que lunivers du logiciel libre qui jusque l tait intimement li des interfaces pas vraiment attractives, o la moindre action impliquait de rentrer une ligne de code dans linvite de commande.
Note : Au passage, quoique la linvite de commande demande un plus grand effort de connaissance, dexperimentation et daccessibilit, cela reste un des moyens les plus efcaces et efciants de grer

Chapitre 2. Introduction...
toute machine informatique pour peu que lon veuille bien satteler la tche dapprendre sen servir correctement. De facon similaire lutilisation dun diteur de texte tel que TEX (bas sur LaTex) est bien plus efcace/efcient que de travailler avec une suite bureautique WYSWYG "traditionnelle" tel que Open Ofce ou Microdoft Word, pour peu quon sy atle et quon dpasse les premires barrires de lapprentissage des bases ncessaire.

Pourtant, si ces avances sont saluer, il reste convaincre les utilisateurs eux-mmes an que les logiciels libres continuent de prendre des parts de march. Pour Jim Zemlin, directeur excutif de la Fondation Linux, il ny a quune seule faon pour y parvenir. Il faut directement concurrencer les leaders dans le domaine de lexprience utilisateur, commencer par le leader en la matire, Apple. Pour Mark Shuttleworth, fondateur de la distribution Ubuntu,
* Taking the great work done by the development community and getting it out there where people can use it. * Getting top quality software * "Cadence" - the regularity and frequency of releases : - drawn attention to project - generate enthusiasm among users - keep community engaged in project and stimulate their work * Coordinated cadence across multiple projects. - help projects focus their work - help distributors to minimize duplicated effort - get the best of what the development community has to offer. * Quality (je rajouterais performance aussi) - the community shall start thinking differently about the quality of its code - stronger focus on everyday quality in development projects - starting with broader use of automated test suites - use test suites after each commit - A good set of regression tests * Automatic crash reporting - gather all of the relevant information and ship it off to the people who are best equipped to interpret it and, hopefully, fix the problem. - a highly useful tool for distributors and developers. * Code review was also favorably mentioned * Pay more attention to design in free software - Proper design makes the software more appealing to "ordinary users," - Thus will increase their number and pride among developers.

Chapitre 2. Introduction...
- Doing design right is a challenging task - Its not something that can always be done by developers. * Famous chasm diagram by Geoffrey Moore - a bell-shaped curve showing product adoption over time - showing a gap between the "early adopters" and the majority of users. Getting across that gap ("chasm") can require changes in how a project is developed and * Pre-installation - users need to get devices which have Linux already installed on them. - "obvious things should just work" out of the box :) - without stopping caring about freedom in the process. * Make Linux work better on ARM-based systems - Linaro initiative

Je verrais aussi...

- Utiliser(considrer) les logiciels libres (et format ouverts) pour toutes tches informati Si on ne peut pas toujours utiliser des logiciels libre, ils devraient toujours tre considrs en premier lieu - Contribuer par un moyen ou un autre : - reporter les problmes rencontrs - apporter des pistes de solution - rsoudre les problmes (le sien ou ceux des autres) - participer des projets (support, developpement, organisation, vnements, documentation, traduction, conception/design, artwork, donation financire ou matriel, financement,

garder le cot "hackable device" garder et promouvoir les liberts communiquer davantage sur les logiciels libres et leur avantages continuer de promouvoir les formats ouverts et lintroprabilit des systmes stimuler la curiosit des utilisateurs continuer de provouvoir des environements o les utilisateurs peuvent experimenter en tout promouvoir et accentuer les possibilits de formation et auto-formation

Et aussi... - dvelopper le service autour des logiciels libres - dvelopper et promouvoir la simplicit dutilisation - dvelopper loffre dapplication mtier de qualit - augmenter laccs aux logiciels libres pr-installs - comparer ce qui est comparable :)

Chapitre 2. Introduction... Selon JP, un autre point important, cest de montrer que pour une utilisation quotidienne (web/bureautique) le logiciel libre est simple (plus que dutiliser Seven par exemple) contrairement une ide recu que GNU/Linux cest difcile ! Pour ma part, aprs avoir rcemment touch brivement du Seven, on peut dire que cest un peu lourd...compar GNU/Linux....dun point de vu utilisation... au premier abord en tout cas... Personellement, je me demande aussi si ce nest ce pas plus exible/interoprable aussi... en terme de personalisation par exemple, avec le systme de paquets chacun peut construire sont systme qui repond exactement ses besoins... Un point toutefois qui peut chagriner avec le libre parfois... (ou peut tre Ubuntu en particulier mais pas sur que ce soit li a Ubuntu...), cest que certains problmes recontrs sont moins excusable/acceptables dun point de vu utilisateur lambda que sur Windows/MacOSX... (gestion de la connexion wi) mais ca tiens certainement aussi la plateforme et au matriel... la maturit et au fait que Ubuntu est gratuit et samliore tous les 6 mois :) Mais a dpend aussi car sous Windows un cran bleu est-ce excusable ? En effet pour certains problmes que je rencontre avec Ubuntu, je lavoue, je dois pas mal me battre et mettre les mains dans le camboui, tre patient, persvrant et comprendre comment ca fonctionne... par forcment ce quattends un utilisateur lambda... mais cest gratuit, congurable et libre :) ... et peut tre aussi que je fais des choses que lutilisateur lambda ne ferait pas... tel quinstaller Ubuntu sur un MacBook Pro 5,5 dApple... Il faudrait que jessaye avec Windows 7 pour comparer... aprs installer MacOS X sur un PC lambda nen parlons pas !!! Essayer plusieurs distributions telle que Arch GNU/Linux peut tre plus stable... mais plus complexe... sinon Debian fonctionne bien mais quelques glitch ici et l aussi... GNU/Linux est aussi addapt pour le professionnel dans le monde du cinema, de la radio ou de la musique... mme si peut etre pas aussi simple mettre en place quune solution propritaire... (question de connaissance et de support ?) Deux difcults pour le monde professionnel :
- il ny a pas beaucoup dapplication mtier - payer cher rassure les dcideurs

Ce deuxime argument est tonant mais dj entendu dans des enqutes sur les habitudes des acheteurs... nature humaine ? habitude ? nature humaine et habitude...

10

Chapitre 2. Introduction... Cela donne peut tre un sentiment de guarantie par rapport ce qui est pay pour... le ct contractuel et donc obligations des parties contractantes... mais a non plus ce nest pas tangible y a qu voir les outils propritaires, certains sont buggs mort et sont inadmissibles :))) Nest ce pas aussi la raison pour laquelle, certaines companies propritaires offrent du support payant :) ... si elles corrigeraient tous les bugs cela ne serait plus assez rentable... Du ct du libre, on imagine que cest un peu pareil quand mme... malgr la visibilit du code rien ne guarantie quil soit parfait... mais ce qui est certains, cest que lon ne paye pas pour cela, donc cela reste plus comprhensible... Cest peut tre aussi un pb de responsabilit... avec le libre elle est partage... Do lide de vendre du service, un autre point surlequel le libre nest pas en reste mais pour lequel il reste encore grandement faire...

2.2. Facteurs de qualit dun logiciel (B.Meyer et G.Booch)


2.2.1. Constat :
Un utilisateur, lorsquil achte un produit comme un appareil lectro- mnager ou une voiture, attend de son acquisition quelle possde un certain nombre de qualits (abilit, durabilit,efcacit,...). Il en est de mme avec un logiciel.

2.2.2. Liste minimale de critres de qualit du logiciel (daprs B.Meyer, G.Booch)


Source(s):

Web: Facteurs de qualit du logiciel (http://rmdiscala.developpez.com/cours/LesChapitres.html/Cours4/Chap4.1.htm#8.0)

Correction Rutilisabilit Portabilit Facilit utilisation Abstraction

Robustesse Compatibilit Vrificabilit Modularit

Extensibilit Efficacit Intgrit Lisibilit

11

Chapitre 2. Introduction...

Reprenons les dnitions communment admises par ces deux auteurs sur ces facteurs de qualit :

La correction : est la qualit quun logiciel a de respecter les spcications qui ont t poses. La robustesse : est la qualit quun logiciel a de fonctionner en se protgeant des conditions de dysfonctionnement. Lextensibilit : est la qualit quun logiciel a daccepter des modications dans les spcications et des adjonctions nouvelles. La rutilisabilit : est la qualit quun logiciel a de pouvoir tre intgr totalement ou partiellement sans rcriture dans un nouveau code. La compatibilit : est la qualit quun logiciel a de pouvoir tre utilis avec dautres logiciels sans autre effort de conversion des donnes par exemple. Lefcacit : est la qualit quun logiciel a de bien utiliser les ressources. La portabilit : est la qualit quun logiciel a dtre facilement transfr sur de nombreux matriels, et insrable dans des environnements logiciels diffrents. La vricabilit : est la qualit quun logiciel a de se plier la dtection des fautes, au traage pendant les phases de validation et de test. Lintgrit : est la qualit quun logiciel a de protger son code et ses donnes contre des accs non prvus. La facilit dutilisation : est la qualit quun logiciel a de pouvoir tre appris, utilis, interfac, de voir ses rsultats rapidement compris, de pouvoir rcuprer des erreurs courantes. La lisibilit : est la qualit quun logiciel a dtre lu par un tre humain. La modularit : est la qualit quun logiciel a dtre dcomposable en lments indpendants les uns des autres et rpondants un certain nombre de critres et de principes. Labstraction : est la qualit quun logiciel a de sattacher dcrire les oprations sur les donnes et ne manipuler ces donnes qu travers ces oprations.

La production de logiciels de qualit nest pas une spcicit des professionnels de la programmation ; cest un tat desprit induit par les mthodes du gnie logiciel. Le dbutant peut, et nous le verrons par la suite, construire des logiciels ayant des " qualits " sans avoir fournir defforts supplmentaires. Bien au contraire la ralit a montr que les tudiants " bricoleurs " passaient nalement plus de temps " bidouiller " un programme que lorsquils dcidaient duser de mthode de travail. Une amlioration de la qualit gnrale du logiciel en est toujours le rsultat.

2.2.3. Characteristics of Great Software (by Apple)


Source(s):

Web: Characteristics of Great Software (http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGCharGrea

12

Chapitre 2. Introduction... TPXREF101)

* * * * * * *

High Performance Ease of Use Attractive Appearance Reliability Adaptability Interoperability Mobility

2.2.4. Unix : Philosophie et Historique


Source(s):

Web: Introduction aux systmes UNIX (http://www.commentcamarche.net/contents/unix/unixintro.php3) Philosophie dUnix (http://fr.wikipedia.org/wiki/Philosophie_dUnix) Principes fondamentaux dUnix (http://linux-attitude.fr/post/Philosophie-unix)

2.2.5. Linux : Developpement Agile (The Cathedral and the Bazaar)


Source(s):

Web: The Cathedral and the Bazaar (http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/index.html)

2.2.6. Quelques conseils retenir pour dvelopper un programme ou script


Source(s):

Web: The Cathedral and the Bazaar (http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/index.html) Philosophie dUnix (http://fr.wikipedia.org/wiki/Philosophie_dUnix)

13

Chapitre 2. Introduction...
Philosophie dUnix : Ne faire quune seule chose, et la faire bien. - crivez des programmes qui effectuent une seule chose et qui le font bien. - crivez des programmes qui collaborent. - crivez des programmes pour grer des flux de texte, car cest une interface universelle. - Tout est fichier - Les donnes sont du texte (txt, xml, etc...) (scripts, fichiers de configuration, formats de donnes, protocoles rseau, sortie dinformations) Dans la philosophie unix, toutes les donnes doivent tre stockes et transmises sous forme de texte. Cela peut coter lgrement plus de place quun format binaire. Mais on y gagne beaucoup. Un fichier texte peut tre lu par les autres outils unix, et donc respecte de principe faire une chose et le faire bien Un fichier texte peut tre lu par un tre humain et donc respecte le principe kiss Un fichier texte permet une interoprabilit avec dautres systmes (pas de problmes dindiens en iso par exemple) Un fichier texte facilite le dbugage

- Les donnes sont binaires dans les cas o lespace ou le temps de parsing sont primordiaux par exemple dans les formats dimage ou de son - Simplicit : "Keep it simple, stupid !" (KISS principle) Plus cest simple mieux cest. Qui dit simple, dit facile manipuler, faciles rutiliser. Un code est bien crit, bien architectur, simple, est aussi simple lire, maintenir et dbuger, pas besoin de milliers de lignes de commentaires. - Pour faire une chose et le faire bien Unix une mthode simpliste pour faire communiquer Cette communication est unidirectionnelle et donnes brutes y passent (le plus souvent au a invent le pipe |, 2 programmes entre eux. non formate, seules des format texte).

Note: La socket a t invente aprs le pipe pour une communication dans les 2 sens, ainsi que bien dautres moyens de communiquer dun processus a lautre. - Un logiciel doit savoir communiquer avec dautres logiciels (unix ou autre) pour garantir une large (re-)utilisation. - Sappyer sur des outils simple dj existant. Developpement agile: - Release early. Release often. And listen to your customers Lutilisation dun systme de gestion de version est fortement recommend - viter les bugs autant que faire se peut. - Development dead-ends - Try finding the minimum-effort path from point A to point B

14

Chapitre 2. Introduction...
- Simplifying design approach - Be conservative (API stable) - Tester & Debugger (Suite de test, test unitaire) - Indiquer clairement dans le code : - la licence : Choisir un licence libre pour distribuer le logiciel et lindiquer ds le dpart dans le(s) fichier(s) source - lauteur, - la date, - la version - lurl site web correspondant (optionel) - la description du script, quest ce quil est senc faire - Crer un aide (--help) dfinissant: - lobjectif du script (ou programme) - lusage - les options dutilisation - les options de configuration - des examples dutilisation simple Developpement Modulaire: - Crer un systme modulaire : "When you design a system, or a language, then if the features can be broken into relatively loosely bound groups of relatively closely bound features, then that division is a good thing to be made a part of the design. This is just good engineering. It means that when you want to change the system, you can with luck in the future change only one part, which will only require you to understand (and test) that part. This will allow other people to independently change other parts at the same time. This is just classic good software design." Being part of a Modular Design [This is often much more difficult than modularity.] - Its is not only necessary to make sure your own system is designed to be made of modular parts. It is also necessary to realize that your own system, no matter how big and wonderful it seems now, should always be designed to be a part of another larger system. Tolerance: - "Be liberal in what you require but conservative in what you do" This is the expression of a principle which applies pretty well in life, and is commonly employed in design across the Internet. Ex: Write HTML 4.0-strict. Accept HTML-4.0-Transitional (a superset of strict).

Decentralization: - This is a principle of the design of distributed systems, including societies. It points out that any single common point which is involved in any operation trends to limit the way the system scales, and produce a single point of complete failure. Test of Independent Invention - "If someone else had already invented your system, would theirs work with yours?" Does this system have to be the only one of its kind? This simple thought test is described in more detail in "Evolution" in these Design Issues. It is connectted to modularity inside-out: designing a system not to be modular in itself, but to be a part

15

Chapitre 2. Introduction...
of an as-yet unspecified larger system. A critical property here is that the system tries to do one thing well, and leaves other things to other modules. It also has to avoid conceptual or other centralization, as no two modules can claim the need to be the unique center of a larger system. - Indiquer au utilisateurs o trouver de laide (website, FAQ, email, irc, etc...) - Indiquer comment remonter des commentaires, des bugs, des paths - Initialiser les variables, fonctions et scripts - Sassurer que toutes les dpendances dont le script dpend et les conditions (fichiers/paramtres) requis sont en place avant dexecuter le script - Externaliser la configuration dans un (ou plusieurs) fichiers externes (mettre en dehors des scripts) qui serait charger lors de lexecution - Crer un configuration par dfaut (example) - Laisser les options possibles au choix de lutilisateur - Ecrire des scripts flexible, volutif et rutisable. - Lorsquon effectue une comparaison il faut comparer les donnes plustt que les fichiers/repertoire cad dire leur contenu et pas leur description... (ex diff arbre1 arbre2) - Lors de la manipulation de donnes pouvant tre importante utiliser des fichiers pltot que des variables notament lors de traitement temporaire (les fichiers peuvent tre rutilis)

- Crer des options (ou API pour les programmes complexe) sur le modle des commande Unix (simple et facilement comprhensible - Lorsque a dpasse une boucle for, passer en script :) Ds que le nombre de commande sallonge mme quun peu pour effectuer une tche... la cration de script semble tre la meilleure mthode... - Grer les erreurs - Loguer les erreurs (syslog, fichier log, etc...) ou autres message eventuel... logerror{} - Affchier des messages aux utilisateurs (info,progression,erreurs...) logmesssage{} (Sur un modle identique aux sorties standards stdout/stderr) - Laisser lutilisateur la possibilit de rediriger les flux (data/messages)

- Ne pas partier des functionalits du script doit avoir techniquement cest dire les acti

- Mode de penser orient totalement utilisateur/partage...et donc libre... et ne pas restreindre uniquement au technique (script->resultat, flexibilit et rutilisat

Principle of Least Power: - ...The choice of language is a common design choice. The low power end of the scale is typically simpler to design, implement and use, but the high power end of the scale has a the attraction of being an open-ended hook into which anything can be placed: a door to uses only by the imagination of the programmer... ...the less powerful the language, the more you can do with the data stored in that language is not to be a programming language because we wanted different programs to do different thi

16

Chapitre 2. Introduction...
present it differently, extract tables of contents, index it, and so on...

2.2.7. Choisir un language de programmation...


Source(s):

Web: Choosing a Programming Language (http://www.micahcarrick.com/12-27-2007/gtk-glade-tutorial-part-2.html)

2.2.8. Quest-ce une communaut du logiciel libre ?


Source(s):

Web: Prsentation dAmanda (http://wiki.zmanda.com/images/a/a4/Amanda-calug.pdf)

Quelques ides en vrac pour un thme explorer plus en dtail plus tard...

Comment puis-je "appartenir" ? Quest ce qui fait une communaut "forte" ? "Communaut dUtilisateur" vs. "Communaut de Developper"? Comment les moyens de communication influe sur une communaut ? - IRC - Email - IM - Conferences (e.g., PyCon, ApacheCon) - Location (Silicon Valley, MIT, etc.) Comment une communaut maintient ses ressources ? - hebergement web, wikis, liste de distribution, hte SVN, etc... Pourquoi certains projet ont une communaut large et dautres trs petite ?Voice and power Qui prends les decisions ? Les developpeurs principaux (Linus et son cercle restreint) "Dur consensus and code de travail" (IETF) Systme de votation (e.g., Apache Software Foundation) Pouvoir relatif dindividus vs. Entreprises (Zenoss, Zend, Zmanda) Qui prends les risques legaux ? Qui realise les representations contractuels ? Ai-je une obligation vis vis des Utilisateurs ? "Si vous voulez cette fonctionalit, les patches sont bienvenues !" Est-ce une invitation ou une technique dexclusion ? OK pour la documentation? Mais pour le code ?

17

Chapitre 2. Introduction...
Acces et Exclusion Connaissance - Quel est la qualite de la documentation ? - O les nouveaux arrivant trouve-t-il la connaissance institutionnel ? - Dois-je parler le "language"? Barrires explicites - Droits de commit Tigris.org requiere une recommendation dun autre commiter - Copyright (e.g., FSF) - Tests et quizzes (Gentoo ebuild quiz) Attitude des developpers envers les nouveaux arrivants... - Est-ce que les developpeurs vont accepter mon patch ? - Est-ce que je vais trouver de laide si besoin ? Niveau de difficult en entre - Existe-t-il des tches "facile" pour dmontrer sa comptance ? Construire une communaut de developpement : Ides: Rduire les barrires du mieux possible - language plus accessible (Perl) - Documentation Developpeur (commentaires et article wiki) - Liste suggrs de tches "faciles" (wiki) Attitude de bienvenue - Suggerer des opportunits pour que les utilisateurs contribut (dplacement dune communaut dutilisateur une communaut de dveloppeur) - Fournir de laide toute personne qui en aurait besoin pour dvelopper un patch Se prsenter lors de LUGs, BUGs, conferences, etc.

2.2.9. FLOSS et brevets logiciels


http://fosspatents.blogspot.com/2010/05/will-defensive-patent-license-be-able.html http://fosspatents.blogspot.com/2010/05/dpl-and-fair-troll-business-model-make.html

18

Chapitre 3. cole Ouverte Francophone (OF)


Source(s):

Web: cole Ouverte Francophone (OF) (http://www.eof.eu.org)

Lcole Ouverte Francophone est un projet port par une association but non lucratif. Lof propose des programmes de formation sur les logiciels libres anims distance. Les formations sadressent : - toute personne souhaitant mettre en oeuvre un projet de dveloppement, ou de migration, bas sur les logiciels libres, et souhaitant pour cela, acqurir les comptences ncessaires. - aux tudiants en informatique de niveau Bac + 2 Bac + 4 souhaitant complter leur formation initiale par une formation pratique. - toute personne intgrant un cursus de formation continue, ou en priode de reconversion professionnelle. Les acteurs:
Arnauld Mascret Consultant en informatique sur les logiciels libres Ganal Laplanche Ingnieur en informatique Jean Philippe Gaulier Ingnieur scurit et rseau Julien Fredon Chef de projet et dveloppeur Ludovic Grossard Matre de confrence Nicolas Bareil Administrateur rseaux Sylvain Floury Ingnieur informaticien Sylvain Lhullier

19

Chapitre 3. cole Ouverte Francophone (OF)


Architecte logiciels libres

20

Chapitre 4. Formations Libres


4.1. Formation CP2L (8 mois) lcole Ouverte Francophone (OF)
4.1.1. Introduction
La formation CPLL (ou CP2L) est conue pour rpondre aux besoins des professionnels. Ce rfrentiel de 300 heures, est labor en collaboration avec des SSII et des entreprises. Il est compos de trois grand modules :
- UI, Usage de lInternet : (pr-requis pour accder aux deux autres modules) Aborder les notions de systme et de techniques ddition. - SR, Systme/Rseau : Aborder les concepts et les architectures de services. - SI, Systme dInformation Aborder les techniques de dveloppement et dintgration dapplications.

La formation sadresse des techniciens, ingnieurs ayant dj des connaissances en informatique. Le cursus peut tre suivi dans sa totalit (UI/SR/SI) ou partiellement (UI uniquement ou UI/SR - UI/SI).

4.1.2. Module et planing


Jai choisi de suivre lensemble des modules suivant sur 8 mois... de Novembre 2009 Juin 2010 :
Module Usage de lInternet (UI) Ce module est un pr-requis pour les deux autres modules. UI003 - Environnement de travail. Installer et configurer son premier environnement et se familiariser avec les outils de communication. UI004 - Raliser des documents avec LaTeX. Structurer, composer et mettre en forme des documents scientifiques sous LaTeX UI005 - Publier des documents techniques avec DocBook. Concevoir

21

Chapitre 4. Formations Libres


et publier des documents en xml avec la DTD (Document Type Definition) DocBook SR002 - Utiliser les commandes de bases de GNU/Linux. Comprendre la philosophie GNU, installer GNU/Linux, connatre et utiliser les diffrentes commandes de base de GNU/Linux dans un shell. SR003 - Administrer GNU/Linux. Comprendre le rle de ladministrateur systme et tre capable de grer les utilisateurs, de surveiller et paramtrer le systme. SR009 - Interfacer Apache avec un langage de script et un serveur de base de donnes. Mettre en oeuvre une solution de type LAMP (GNU/Linux + Apache + MySQL + PHP) ou LAPP avec PostgreSQL.

Module Systme et Rseau (SR) SR004 - Interconnecter un rseau TCP/IP.Matriser les aspects fondamentaux de ladministration de systmes GNU/Linux dans un environnement TCP/IP. SR005 - Administrer un serveur DNS. Comprendre la structure et le fonctionnement du service de nommage, installer et configurer un serveur DNS primaire et secondaire. SR006 - Administrer un serveur de messagerie. Installer et administrer un service de courrier lectronique. SR007 - Administrer un serveur HTTP. Installer et administrer le serveur Web Apache. SR010 - Scuriser son systme. Lister les principales rgles de scurit que doit appliquer un administrateur et les enseigner aux utilisateurs. SR011 - Dployer un routeur, un pare-feu et un serveur mandataire. Installer et administrer une passerelle, un firewall et un proxy. SR012 - Dployer un serveur de partage SAMBA.Utiliser GNU/Linux en tant que serveur de fichiers et dimprimantes. SR013 - Dployer un annuaire LDAP. Comprendre les concepts et enjeux des annuaires, installer et administrer un serveur dannuaire LDAP. SR015 - Administrer un serveur CVS. Installer et administrer un environnement de dveloppement collaboratif. SR016 - Dployer un extranet scuris. Installer et administrer des rseaux privs virtuels (VPN). SR018 - Le langage Perl appliqu ladministration systme. Obtenir une approche du langage et apprendre le manipuler pour la cration de scripts simples de traitement de donnes.

Module Systme dInformation (SI) SI001 - Mthodologie de conception des sites Web et interfaces. Recueillir les informations relatives un projet, suivre une dmarche mthodologique et dfinir une interface. SI002 - Initiation au langage HTML, XHTML et CSS. Principe de balisage, structure dun document et utilisation des balises courantes. SI010 - Interfaces Web enrichies.Intgrer des comportements interactifs dans une page WEB. SI016 - Initiation au langage de script. Utiliser un langage de script (php, python, perl).

22

Chapitre 4. Formations Libres


SI017 - Systmes de gestion de bases de donnes. Installer, configurer, administrer et utiliser un serveur de bases de donnes. SI019 - Utiliser et modifier un site collaboratif comme SPIP. Concevoir un site collaboratif en sappuyant sur les squelettes par dfaut. SI020 - Utilisation avance dun gestionnaire de contenu comme SPIP. Dvelopper les modles de page dun site collaboratif. SI022 - Dfinir et utiliser son propre langage de balises avec XML et ses feuilles de styles XSL. tendre le langage HTML avec son propre langage de description. SI023 - Initiation au langage Python. Utiliser le langage Python et installer un serveur dapplication Zope. SI024 - Serveur dapplication sous Zope. Installer, configurer et administrer Zope. Dvelopper et installer un module.

4.1.3. Droulement de la formation


Source(s):

OF: Ce quil faut savoir... (http://www.eof.eu.org/spip.php?rubrique15)

La formation se droule compltement distance. Une fois votre inscription valide et conrme, les premiers lments vous permettant dinstaller votre environnement de travail et votre premire connexion sur la plateforme de formation vous sont communiqus. Le parcours de chaque module sur lequel vous tes inscrit est ensuite ralis sous forme dactivits organises en squences. Les activits sont conues de faon allier tude, travail pratique et permettre une validation de votre progression. Pour chaque squence et pour chaque activit, vous aurez sur votre planning, les objectifs pdagogiques, les conseils mthodologiques adapts, les ressources exploiter pour la ralisation des travaux, les modes et critres dvaluation. Des outils vous seront fournis pour tablir la relation avec vos enseignants et tuteurs, ainsi que pour la ralisation de certains travaux. Vous aurez en alternance des travaux raliser en autonomie, dautres raliser en groupe. Le volume de travail moyen est valu entre 10h et 14h par semaine. Mis part quelques cas particuliers, vous aurez la possibilit de vous organiser un peu comme vous le souhaitez. Ce temps est une base moyenne sur laquelle se sont bass les enseignants pour construire leur progression. Il est possible que dans certains cas vous passiez moins de temps si vous avez dj des notions sur le domaine trait, ou plus de temps si vous rencontrez des difcults.

23

Chapitre 4. Formations Libres

Lobjectif nal est que vous obteniez les bases, sur les techniques abordes lors des squences, sur les outils que vous utiliserez au cours de la formation et sur les facults dvelopper un projet plusieurs avec des ressources rparties. Lensemble du parcours peut sembler ambitieux, mais moyennant une prsence et un travail rgulier, il vous sera possible dobtenir les lments de rfrences pour poursuivre dans de bonnes conditions, le projet que vous avez de vous approprier les technologies et lesprit du libre.

4.1.4. La notation au sein de la Certication Professionnelle en Logiciel Libre


http://blog.eof.eu.org/index.php/2007/10/12/5-la-notation-au-sein-de-la-certication-professionnelle-enlogiciel-libre ()
La notation au sein de la Certification Professionnelle en Logiciel Libre Par Jean-Philippe Gaulier, vendredi 12 octobre 2007 00:19 - General - #5 - rss

On nous demande souvent quels sont les critres de notation, comment est effectu le suivi d Bref, les gens veulent pouvoir comparer nos critres avec des choses connues, comme ce que lon peut connatre dans lducation nationale. Voici un petit compte rendu rapide de notre vision de la chose : Vrification de lassiduit La formation CPLL se droule entirement distance. Lassiduit est vrifie travers diffrents supports : * la plate-forme Amarante, qui archive les dates de connexion des utilisateurset leurs diffrentes visites, * la tenue dun journal de bord tout au long du cursus, avec lexplication du cours, les exercices et leurs rponses, les rflexions de lapprenant, * la prsence sur la liste de discussion et les rponses aux mails * des runions rgulires sur IRC permettant de faire des tables rondes Modalit de suivi

Le contrle est effectu au travers du rendu rgulier des exercices et de la tenue du journa La plate-forme de formation Amarante assure galement le suivi au quotidien de lavance des tudiants de manire globale ainsi que de manire personnelle. Modalit dassistance et dencadrement

Tout au long de leur cursus, les apprenants sont accompagns par deux tuteurs qui assurent le suivi personnalis des tudiants, la liaison avec les diffrents cours et professeurs et apportent une assistance sur les questions dorganisation, de recherche et durant les TP. Chaque professeur prend galement connaissance des lves et apporte une attention particuli La classe ne comportant pas plus de quinze lves, cette attention peut tre relle et effic

24

Chapitre 4. Formations Libres

valuation et validation de la formation

Il est demand tout au long de la formation de tenir un journal relatant les activits de llve au sein de lcole. Ce journal porte sur les cours, les ateliers, les tp, les td ain que sur les contrles. Il ny a pas de notation de 0 20, mais des apprciations selon diffrents critres : * Le parcours du stagiaire dun point de vu technique * Effort considrable sur la ralisation du cours * Effort moyen sur la ralisation du cours * Aucun effort sur la ralisation du cours * Le comportement du stagiaire * Le stagiaire est prsent * Le stagiaire rpond quand on linterpelle * Le stagiaire est absent * Les questions formules par les stagiaires sont-elles (plusieurs choix possibles) * Bien formules * Pertinentes * Prcises * Le stagiaire fait remonter les problmes quil rencontre * Oui * Maladroitement * Non

* Au niveau du libre, dans sa relation avec le groupe (partage, entraide,inventif, prse le stagiaire est : * Dans les bonnes grces de RMS * En cours de libration de code * Point Godwin

Ce tableau est rempli pour chaque cours par chaque professeur, pour chaque lve. Il est ga rempli par les accompagnateurs gnraux. Cest la moyenne globale qui dfinit au final si l reoit ou non sa certification.

Ainsi, les critres dvaluation ne sont pas uniquement technique, mais aussi relationnel, c et valuent laptitude au travail distance.

25

Chapitre 4. Formations Libres

4.1.5. Promo 2009-2010 - Etudiant et Coordinateurs


Source(s):

OF: OF Promotion 2009-2010 (docs/eof/2009-EOF-Members.pdf)

4.1.6. Les journaux des apprenants


Voir section ddie sur les journaux

4.2. KeepIn (SARL)


4.2.1. A propos
La SARL Keepin est lentreprise des fondateurs (JP et Alix) de lcole Ouverte Francophone. Elle fournit divers services lies aux logiciels libres.

4.2.2. Enqute sur la formation distance


Source(s):

Web: Enqute sur la formation distance (http://enquete.keepin.eu) Rsultats de lenqute (opportunit et attentes) (http://enquete.keepin.eu/study.html)

4.2.3. Formations Libres (cursus courts 3 semaines)


Source(s):

Web: formation-libre.com (http://formation-libre.com)

Formation Libre : "En trois semaine je suis form ce qui minterresse !"

26

Chapitre 4. Formations Libres Formation libre est une nouvelle activit de la SARL Keepin. Cette activit rpond au besoin de pouvoir suivre des formations professionelles sur les logiciels libres. Ces formations sont conues pour se drouler compltement distance an dviter les dplacements, limiter les cots et dsorganiser le moins possible lactivit professionnelle. Le dveloppement de cette activit fait suite plusieurs annes dexpriences dans les domaines de la formation distance et de celui des logiciels libres de la part des fondateurs de lcole Ouverte Francophone, notamment au travers de leur projet de certication professionnelle sur les logiciels libres. Le cursus de lof dure 8 mois. En laborant des cursus courts (3 semaines), la SARL Keepin entend proposer des schmas de formations cibls et adapts des problmatiques prcises rencontres dans les entreprises.

4.2.4. Service Liste de discussion (Garder le contact avec ses proches !)


Service de liste de diffusion : Des personnes sont abonnes une liste. Par exemple les membres de votre famille. Pour changer des courriels vous navez plus quune seule adresse retenir, celle de la liste. Chaque abonn (chaque membre de votre famille) peut envoyer un courriel sur la liste et chacun des membres recevra une copie du message.

4.2.5. Cours en Ligne du MIT


Le MIT met disposition gratuitement ses cours en ligne dans plusieurs domaines (http://ocw.mit.edu/courses) (avec des vidos) et notamment en informatique (http://ocw.mit.edu/courses/#electrical-engineering-and-computer-science). Il y a mme tout un cours consacr au language de programmation Python (http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computerscience-and-programming-fall-2008).

27

Chapitre 5. Outils de commnication (Courriel + Liste de distribution + Jabber + IRC + Journal)


5.1. Mthode de Communication
Un petit point sur la manire de communiquer : les coordinateurs travaillent, ce qui limite leur disponibilits. Il faut donc privilgier le mail car il permet une discussion asynchrone. Tout le monde fait de son mieux pour tre le plus ractif possible; une rponse est souvent reu avant la n de la journe dans la plupart des cas ou le lendemain... Tous les lves sont invits crire la liste de distribution correspondant la partie du cours tudi plutt qu au coordinateur directement par courriel. Ceci an que chacun puisse proter des questions et des rponses...

5.1.1. LInternet
Les coulisses de lInternet par Olivier Ricou (Geopolitique) (http://www.ricou.eu.org/e-politique.html)

5.1.2. Courriel (E-mail)


Source(s):

Web: How To Find Out Who Sold Your Gmail Address To Spammers (http://www.betadaily.com/2008/04/04/how-to-nd-out-who-sold-your-gmail-address-to-spammers/) 57 Gmail Habits for Highly Effecticiency (http://www.collegedegrees.com/blog/2008/05/20/57-habits-of-highly-effective-gmail-users/)

---------------Email clients - Claws Mail 3.7.3 - Thunderbird - KMail/1.9.10 - YahooMailClassic - Zimbra 5.0 - IMP - Gmail - SquirrelMail Rgle simple: http://docs.soolbox.net/wiki/Mail

28

Chapitre 5. Outils de commnication (Courriel + Liste de distribution + Jabber + IRC + Journal)

Eviter le "top posting": http://jargonf.org/wiki/top_posting prfrer le "bottom posting": http://jargonf.org/wiki/bottom_posting

Avertissement
Il peut nous arriver denvoyer un message trop vite, ou pas ni dcrire ou contenant des informations en clair quon aurait du chiffrer !!!

Outlook offre la possibilit de "rcuprer" mon message dans la mesure ou il navait pas t encore ouvert par le destinataire (et a ma vit souvent bien des problmes !) mais cest une spcicit lie au serveur exchange o tout est gr par le serveur central (les envois, les arrives, le stockage). Cest uniquement cela qui te permet de jouer avec la messagerie de son voisin (tiens, chercher, il y aurait srement des choses drles faire ;)). a peut sembler tre une fonctionnalit, mais elle nest pas disponible sous dautre client de courriel.

En effet, il peut arriver de faire des btises quand on envoi un courriel, mais il faut bien assimiler le courrier lectronique au courrier papier. Une fois que tu las mis dans la bote aux lettres de la poste, alea jacta est.

Tu fais des btises ? Prend plus de temps pour crire ou relire avant denvoyer ;)

5.1.3. Liste de distribution


... en cours de construction ...

5.1.4. Chat (Jabber/XMPP ou IRC)


http://jp.gaulier.info/blog/index.php?post/2005/04/14/78 http://bouh.soolbox.com/index.php?post/2006/04/26/606-utilisez-jabber Client Jabber: Donc, vos clients Jabber pour ajouter tous ces contacts, si ce nest dj fait. Pour les autres, la cration dun compte GMail prend 2 secondes :-) Sinon, si vous tes sous Pidgin, voici le paramtrage (merci jb) : protocole : XMPP utilisateur : ton compte gmail Domaine : gmail.com

29

Chapitre 5. Outils de commnication (Courriel + Liste de distribution + Jabber + IRC + Journal)

Avanc SSL/TLS Port de serveur proxy :

: cocher connexion 5222 : talk.google.com proxy.eu.jabber.org

A bientt sous Jabber Creer un salon jabber persistant avec mot de passe... enfin je crois :| server: eofsalon@chat.jabberfr.org mdp: utfg! http://chat.jabberfr.org #Liste les salons disponibles sur ce server... Salon temporaire mis en place par Jimmy Serveur : jabber.athaliasoft.fr Canal : eof2009 --------------------------------------------IRC communication Source info: http://fr.wikipedia.org/wiki/Aide:IRC Serveur : irc.enix.org [193.19.210.1] Port : 6667 Channel : #eof Il y a 3 commandes connatre pour dmarrer et faire ce quon veut : /server server_name_or_IP pour rejoindre un serveur /join #eof pour rejoindre le canal eof /nick newalias pour changer votre pseudo /quit pour retrouner au bistrot. Ct client : - xchat, mais vous tes libres, ctait juste pour donner - irssi (terminal ui) - emacs, a doit passer aussi :-) - pidgin Tuto pour se connecter en IRC : http://www.memepasmal.ch/index.php/2008/09/08/utiliser-irc-avec-pidgin http://stfu.blogs.ablenet.org/100/how_to_connect_to_irc_with_pidgin_gaim

5.1.5. Les journaux de bord


Les journaux des apprenants, sont raliss en DocBOOK ou en LaTeX. Ils retracent leurs activits et leurs travaux. Des archives danciennes sessions sont conserves pour consultations.

30

Chapitre 5. Outils de commnication (Courriel + Liste de distribution + Jabber + IRC + Journal) Tous les journaux dactivit des apprenants sur les sessions CPLL de lof peuvent tre consult ici (http://ferry.eof.eu.org/lesjournaux).
Session 2009-2010 1. akh 2. http://ferry.eof.eu.org/~bbr 3. http://ferry.eof.eu.org/~ccn 4. http://ferry.eof.eu.org/~cpn 5. http://ferry.eof.eu.org/~yoi 6. http://ferry.eof.eu.org/~jar 7. http://ferry.eof.eu.org/~jbm 8. http://ferry.eof.eu.org/~jyg 9. http://ferry.eof.eu.org/~jrf 10. http://ferry.eof.eu.org/~krd 11. http://ferry.eof.eu.org/~kse 12. http://ferry.eof.eu.org/~pyt 13. http://ferry.eof.eu.org/~rlr 14. http://ferry.eof.eu.org/~yoi

(Benot BRENGER) (Christelle COPIN) (Christiane Paulin) (Ykhlef OUABI) (Julien Aulagnier) (Not operationel ?) (JY GODARD) (Jimmy Rudolf) (Not operationel ?) (Not operationel ?) (Pierre-Yves TAILLARD) (mine :) (Ykhlef OUABI)

Paramtre de connection: Server: ferry.eof.eu.org Username: rlr SSH: ssh rlr@ferry.eof.eu.org (voir configuration dans la partie SSH du journal) RSYNC: rsync -av /mnt/hsubuntu/monjournal/* rlr@ferry.eof.eu.org:public_html (voir configuration dans la partie RSYNC du journal) Repertoire local: /mnt/hsubuntu/monjournal Repertoire distant: ~/public_html

5.2. Mthode de Travail


Source(s):

Web: Aide aux nouveaux arrivants sur Developpez.com (http://club.developpez.com/aidenouveaux)

5.2.1. Bref rsum !


Lorsquun problme est rencontr :
1. Identifiez clairement le problme 2. Cherchez par soi-mme

31

Chapitre 5. Outils de commnication (Courriel + Liste de distribution + Jabber + IRC + Journal)


3. Utilisez les ressources en ligne (Upstream et Web) 4. Poser la bonne question 5. Aidez les autres

5.2.2. Identier le problme


Avant de chercher une solution un problme, il faut identier de manire prcise la nature de ce problme. Ce qui peut paratre une vidence semble ne pas aller de soit pour tout le monde. Un problme bien pos est moiti rsolu. Prciser la marque et le modle dun matriel, marque et version de logiciel et/ou systme dexploitation... Identier un message derreur prcis dans les logs... etc... Cette approche a trois intrts majeurs : Elle aide trouver une solution tout(e) seul(e). Des lves qui lon demande dexprimer clairement leur problme nissent par trouver eux-mmes. Elle permettra davoir des lments pour les recherches sur des sites ou les forums. En dernier ressort, elle permettra de poster, le cas chant, sur liste de distribution (ou forums) adapt et, si les interlocuteurs comprennent le problme, ils aideront plus volontiers et plus rapidement trouver la solution.

5.2.3. Chercher la solution par soi-mme avant de demander de laide


Tout le monde connat le proverbe "Aide toi, le ciel taidera". Cette maxime trouve tout son sens ici. Avant de crier laide, il vaut mieux commencer par chercher un peu. Cela permet souvent de trouver plus vite la solution et au pire, cela permettra dliminer les mauvaises pistes. Ceci pour sviter les usuelles expressions favorites :
- RTFM - UTFG

: Read The Fuck***ing Manual - http://www.readthefuckingmanual.com (http://www.utfg. : Use The F*cking Google - http://www.utfg.net) "Dont ask dumb questions. Google knows everything !" - PBKAC : Problem Between Keyboard And Chair - ... ## et autres -Laisse-moi chercher a dans Google pour toi (Let me google that for you) (http://lmgtfy.com

32

Chapitre 5. Outils de commnication (Courriel + Liste de distribution + Jabber + IRC + Journal)

Note : Si lon ne trouve pas ds la premire fois, ne pas laisser tomber, attendre un peu (quelques heure, 1 jour, etc...) puis faire une seconde recherche... cest dusage car parfois on ne cherche pas de la mme faon la seconde fois et lon trouve souvent ce que lon cherche aprs une seconde recherche... donc viter de demander de laide trop vite... !!!

Grce la premire tape (identier le problme), on sait o chercher : Laide en ligne du logiciel/materiel ainsi que les ressources web pour des tutorials, de la formation ou du conseil... sont des atot ne pas sous-estimer... Comme on pourrait dire : "La touche F1 est la meilleure amie de lutilisateur" mais beaucoup ne savent pas utiliser laide. A partir de lnonc de votre problme, dduir quelques mots-cls pour la recherche.

5.2.4. Les ressources des sites (upstream)


Quelque soit le problme, dautres lont certainement rencontr, le rencontrent ou vont le rencontrer. Il a donc certainement dj t abord quelque part. Pour un programme, consulter le site du programme lui mme (http://www.samba.org pour Samba par exemple)... Sur la page daccueil des site, vous trouverez les liens vers la documentation, les tutorials (howtos), forum et autre (wiki, etc...) On peut penser aussi consulter les comparatifs ou revu dutilisateur si on cherche simplement un conseil sur un sujet prcis. Par example resultat des tests effectus par les un groupe passionn (Phoronix) ainsi que les dbats/confrences sur divers sujets. Si votre question est du type "Comment fait-on ceci avec tel ou tel langage ?", consultez la FAQ du langage en question. Elles sont trs compltes et bien documentes. Elles sont accessibles partir de la page daccueil ou partir de longlet correspondant au langage. En fonction des langages, vous pouvez galement trouver des codes sources.

33

Chapitre 5. Outils de commnication (Courriel + Liste de distribution + Jabber + IRC + Journal)

5.2.5. Faire une recherche sur Internet


Si par le plus grand des hasards, vous navez pas trouv votre bonheur, vous pouvez encore faire une recherche laide des mots-cls identis lors de la premire tape. Le moteur de recherche est ton ami. Apprendre bien sen servir permet de rapidement trouver ce que lon cherche. Ne pas hsiter rduire les rsultat de recherche laide des option (mots clefs) de recherche (ET, OU, etc...) Chercher sur des site de tutorials, articles ou sur des forums...

5.2.6. Poster une question


Si vraiment vous navez rien trouv, il ne vous reste plus qu poster votre question sur une liste de distribution ou un forum adapt. Comment bien sy prendre : Choisir le bon forum : Si vous avez suivi les tapes prcdentes, cela devrait-tre simple. Problme de syntaxe=forum du langage, question gnrale=forum gnral (choix de langage, SGBD, modlisation etc..) Titrer la question : Rsumez INTELLIGEMMENT lnonc du problme dans le titre du message ! Les messages du type "SVP, au secours, [dbutant]etc..." ne servent rien, la plupart du temps, ils ne sont mmes pas lus. Evitez galement les titres vagues du style "Problme de requte" dans le forum SQL. On se doute que ce nest pas un problme de C++ (o alors vous postez nimporte o et vous devriez relire les rgles du forum) et cela ne donne pas plus envie de lire ni de rpondre. La question : Evitez absolument le style SMS. Cest insupportable lire et cela naide pas (loin de l) la comprhension. Labus dmoticons ne facilite pas non plus la lisibilit. Enn, utilisez les balises pour rendre vos exemples de codes lisibles. Pensez indiquer les pistes que vous avez explores, ce que vous avez fait, ce que vous navez pas fait. Ce sont autant dlments de recherches pour ceux qui vous rpondront et cela vitera des solutions que vous avez dj testes sans succs. Le ton : Souvenez-vous de rgles simple: soyez polis, vitez demployer limpratif, les polices gros caractres, les couleurs agressives etc...

5.2.7. Problme rsolu


Quand le problme est rsolu, pensez lindiquer. Cela vitera aux autres de continuer chercher et cela

34

Chapitre 5. Outils de commnication (Courriel + Liste de distribution + Jabber + IRC + Journal) permettra quelquun ayant le mme problme de gagner du temps dans ses recherches. Si le coeur vous en dit (et si le temps vous le permet), crer un mini howto (solution plus dtaille) et publier le sur Internet (forum, blog, etc...) Si vous abandonnez un sujet, vous pouvez galement lindiquer aux interlocuteurs dj contacts...

5.3. Droit Individuel la Formation (DIF)


Source(s):

Web: Un portail ddi au Droit Individuel la Formation (http://www.droit-individuel-formation.fr) DIF : les rponses aux 10 questions les plus courantes (http://www.droit-individuel-formation.fr)

35

Chapitre 6. UI003 Environnement de travail Installation dune distribution


6.1. Distributions Linux: Laquelle choisir ?
6.1.1. Quest-ce quune distribution, Combien en existe-t-il ?
... Un coup doeil surDistrowatch (www.distrowatch.com), et cest la nause face labondance des nouveauts. De nouvelles distributions avec de nouvelles versions du noyau, du systme de base, des environnements de bureau et des applications surgissent toutes les semaines, les unes plus rvolutionnaires que les autres. peine a-t-on ni de lire la documentation de lune delles quelle est dj obsolte, car la mise jour de lautre nous tape loeil.

...une distribution GNU/Linux est constitue dun certain nombre de composants : le noyau, les bibliothques et autres composants du systme de base, le serveur graphique, lenvironnement de bureau, la panoplie des applications, et dautres choses encore. Chacun de ces composants est dvelopp individuellement par une quipe de dveloppeurs. Lquipe de dveloppeurs du noyau par exemple, chapeaute par Linus Torvalds, soccupe essentiellement du kernel Linux, dont elle publie rgulirement une nouvelle version sur kernel.org. La fondation X.Org (http://www.x.org) travaille sur tous les composants du serveur graphique. Lquipe de dveloppeurs GNOME (gnome.org) se concentre sur lenvironnement de bureau GNOME, et les quipes de kde.org ou xfce.org, sur les environnements respectifs KDE et XFCE. Il en va de mme pour les applications. La fondation Mozilla gre le dveloppement de logiciels comme Firefox, Thunderbird, Sunbird et autres. Les dveloppeurs dOpenOfce.org font de leur mieux pour maintenir la suite bureautique Open Ofce, comme nous lavons vu. Etc.

Le travail du distributeur consiste maintenant crer un systme cohrent avec tous ces ingrdients. Chacun des distributeurs comme Red Hat, Fedora, Debian, Ubuntu, Slackware, Arch, Gentoo, SuSE, Mandriva, etc. devra donc oprer une srie de choix :
quels composants seront inclus dans la distribution ? quelle version de chacun des composants faudra-t-il choisir ?

Ces critres nous permettent de distinguer grossirement deux tendances, deux extrmits dune chelle gradue :
- les distributions plus ou moins conservatrices: , qui nincluent aucun composant sans que celui-ci ne soit dment test pendant une priode dfinie ; - les distributions bleeding edge : qui incluent tout nouveau composant frachement publi dans la distribution, en considrant que la simple publication de lapplication (ou de la bibliothque, ou de lenvironnement

36

Chapitre 6. UI003 Environnement de travail - Installation dune distribution


bureautique, etc.) constitue dj une garantie de stabilit suffisante de la part des dveloppeurs.

...

Red Hat Enterprise Linux suit en gros un cycle de dix-huit mois entre chaque version, compos de douze mois de dveloppement et de six mois de tests. La mme chose vaut pour CentOS, qui nage en quelque sorte dans son sillage.

La distribution Fedora, en revanche, publie une nouvelle version peu prs tous les six mois. Chaque nouvelle version est constitue des paquetages les plus rcents.

La branche stable de Debian publie une nouvelle version tous les deux ans, en moyenne. Pour chaque version, lquipe des dveloppeurs procde un gel (freeze) des versions avant une priode de tests intenses. Debian est clbre pour publier une nouvelle version when its ready ( lorsque cest prt ), cest--dire lorsque les principaux bogues ont t corrigs. Il en rsulte une distribution stable et able.

La branche instable de Debian (unstable, qui signie ici susceptible dtre soumis des modications de version - ne pas confondre avec qui plantera tout le temps , donc) inclut les dernires versions disponibles de tous les composants. Des distributions comme Arch ou Gentoo pratiquent le rolling release, cest--dire la mise--jour perptuelle. Peu importe quelle version vous installez, puisque le bon usage de la distribution prconise que vous fassiez des mises jour rgulires. Cest un peu comme un train qui ne sarrte jamais, et quil faut prendre en marche. Linux aux petits oignons - Chapitre 8 - Section 04 (http://www.microlinux.fr/linux_aux_petits_oignons/chapitre_8/04.html)

Dans le cadre de la formation CP2L, le choix est porte sur Dbian et Ubuntu.

6.1.2. Distribution et libert : Combien de logiciel non-libre cach dans votre distribution GNU/Linux ?
Source(s):

Web: GNU/Linux and freedom: non-free software hidden in your GNU/Linux distribution (www.freesoftwaremagazine.com/columns/gnu_linux_and_freedom_nonfree_software_hidden_in_your_linux_) Noyau GNU/Linux Ofciel: Noyau GNU/Linux ofciel publi par Linux Torvalds (http://kernel.org) Noyau GNU/Linux Libre: Linux-libre project: Take your freedom back, with Linux-2.6.33-libre (http://www.fsa.org/svnwiki/anuncio/2010-03-Linux-2.6.33-libre) Noyau GNU/Linux-Libre 100% publi par FSFLA (http://www.linux-libre.fsa.org/pub/linux-libre/releases/) Noyau Mach: Mach : une autre vision du noyau (http://okki666.free.fr/docmaster/articles/linux090.htm) GNU/Hurd (http://www.gnu.org/software/hurd/) Debian GNU/Hurd (http://www.debian.org/ports/hurd/) Arch Hurd (http://www.archhurd.org/)

37

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

Distribution Libre: Liste de distribution Libre ("Free Distros") (http://www.gnu.org/distros/free-distros.html) Matriel Libre: Open-source hardware denition (http://freedomdened.org/OSHW) Hardware Devices that Support GNU/Linux (http://www.fsf.org/resources/hw) Open-PC (http://open-pc.com)

...developing Free Software isnt enough to establish freedom for the users of GNU/Linux. We also need to educate them to value their freedom, and to recognize and reject non-Free Software. Otherwise, the products that require users to give up their freedom would continue to nd willing customers... Traduction libre : ...dvolopper des logicils libres nest pas sufsant pour tablir (ou garantir) la libert des utilisateur de GNU/Linux. Nous devons aussi les duquer la valeur de leur libert, and reconnatre et rejeter les logiciels non-libres. Sinon, les produits qui requiert aux utilisateurs dabandonner leur libert vont continuer trouver des consomateurs "consentants... http://www.fsa.org (http://www.fsa.org/svnwiki/anuncio/2010-03-Linux-2.6.33-libre)

Il est donc recommand : - dutiliser GNU/Linux-libre (http://www.fsa.org) une version totalement libre du noyau GNU/Linux (ce qui nest pas le cas du noyau ofciel (http://kernel.org) pour raison de compatibilit et exibilit) ou tout autre noyau 100% libre tel que GNU/Hurd (http://www.gnu.org/software/hurd/) (bas sur une architecture Mach (http://okki666.free.fr/docmaster/articles/linux090.htm)), - de sorienter vers des distributions totalement libre tel que gNewSense (http://www.gnewsense.org/) et autres consoeurs (http://www.gnu.org/distros/free-distros.html), - de sorienter vers du matriel libre (rmware libre, drivers libre, etc...) tel que OpenPC (http://open-pc.com) ou autres fournisseurs (http://www.fsf.org/resources/hw)...
Note : La notion de matriel libre est en plaine essort et tente de se dnir (http://freedomdened.org/OSHW) dune faon similaire au logiciel libre tout en rpondant aux particularits de ce domaine.

6.1.3. vrms (Virtual Richard M. Stallman) : Recherche de paquets non-free


Source(s):

Web: vrms (Wikipedia) (http://fr.wikipedia.org/wiki/Vrms) vrms (Debian) (http://vrms.alioth.debian.org/) Projet vrms source code repository (https://alioth.debian.org/projects/vrms/)

38

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

Ce programme analyse la liste des paquets installs (disponible dans /var/lib/dpkg/status) la recherche de paquets non-free. Sil en trouve, il les listera sur la sortie standard avec une courte explication de la raison pour laquelle le logiciel est considr comme non libre. vrms dispose en local dune liste de logiciels non libres et de lexplication associ dans le chier /usr/share/vrms/reasons/vrms. Si aucun paquet non-free nest trouv sur le systme, vrms afchera la phrase No non-free packages installed on ${hostname}! rms would be proud ( Pas de paquets non libres installs sur $hostname! rms serait er ).
$ apt-get install vrms $ vrms Non-free packages installed on macfil opera skype sun-java6-bin sun-java6-jre sun-java6-plugin teamviewer5 unrar virtualbox-3.1 The Opera Web Browser Skype Sun Java(TM) Runtime Environment (JRE) 6 (architecture Sun Java(TM) Runtime Environment (JRE) 6 (architecture The Java(TM) Plug-in, Java SE 6 Remote Control Application TeamViewer Unarchiver for .rar files (non-free version) Sun VirtualBox

Non-free packages with status other than installed on macfil virtualbox-3.0 ( dei) Sun VirtualBox

Contrib packages installed on macfil b43-fwcutter flashplugin-installer nvidia-common ttf-mscorefonts-installer Utility for extracting Broadcom 43xx firmware Adobe Flash Player plugin installer Find obsolete NVIDIA drivers Installer for Microsoft TrueType core fonts

9 non-free packages, 0.5% of 1881 installed packages. 4 contrib packages, 0.2% of 1881 installed packages.

6.1.4. Comment congurer Ubuntu Linux pour moins de 200$ ?


Source(s):

Web: How to Congure an Ubuntu Linux Computer for Less Than $200 (http://www.washingtonpost.com/wp-dyn/content/article/2010/05/24/AR2010052402993.html) vrms

39

Chapitre 6. UI003 Environnement de travail - Installation dune distribution (Debian) (http://www.youtube.com/prole?user=pshapiro#p/u/5/PR_hUa4Bn8Q) Projet vrms source code repository (https://alioth.debian.org/projects/vrms/)

Est-ce que votre famille a besoin dun extra PC ? Educateur, Mac expert and Linux enthousiast Phil Shapiro (http://www.his.com/~pshapiro/briefbio.html) explique dans sa vido YouTube comment pour moins de 200$ (moins que certain systme dexploitation), vous pouvez congurer un ordinateur utile sans virus avec un ecran LCD 23 pouces (150$ en occasion) et un adaptateur Wi-Fi (15$). Projet facile executable en moins dune heure :) Si vous avez besoin daide pour congurer un ordinateur Ubuntu Linux, rechercher un Groupe dutilisateurs Linux (http://fr.wikipedia.org/wiki/Groupe_d%27utilisateurs_Linux) (GUL ou LUG) locale. Les volontaires GUL seront content de vous guider et de vous aviser. Le site Forums Ubuntu (http://forum.ubuntu-fr.org/) est un autre endroit o les utilisateur peuvent trouver des informations et des conseils. Vous pouvez aussi consulter des guide dinstallation : Simple comme Ubuntu (http://www.framabook.org/ubuntu.html), Ubuntu Linux Easy Installation Guide (http://www.pcworld.com/businesscenter/article/155517/ubuntu_linux_the_easy_installation_guide.html).

6.2. Dual Boot Mac OS X 10.6 / Ubuntu 9.10 Karmic on MacBook Pro 5,5
Cette partie dcrit linstallation dune distribution GNU/Linux Ubuntu 9.10 Karmic Koala 64bits sur un tout nouveau modle (Nov 2009) dordinateur Apple, le MacBook Pro 5,5.

6.2.1. Indentier Modle (Matriel) et Versions (Systme dExploitation) du matriel Apple


La premire chose faire avant de procder une telle installation cest didentier clairement les spcications techniques du matriel et du systme existant. Une fois connect sur le MacBook, aller dans le menu [Pomme] (en haut gauche) > About this Mac.
OS X Version 10.6 (Leopard) 2.25 GHz Itel Core2Duo // 2GB 1067MHz DDR3 RAM

Cliquer sur le bouton More Info :


Modele Indentifier MacBookPro 5,5

40

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

6.2.2. Installation de Base


Source(s):

Web: Intel CPU-based Macintosh Generic Installation Instructions (https://help.ubuntu.com/community/MactelSupportTeam/AppleIntelInstallation)

Avertissement
!!!Attention!!! BACKUP YOUR DATA !!!

Time Machine peut-tre utile pour cela...

Dans mon cas je nai pas de donnes donc aucun risque :)

6.2.2.1. Installer rEFIt (Menu de boot)


Source(s):

Web: Install rEFIt (http://ret.sourceforge.net/doc/c1s1_install.html)

Avertissement
Assurez vous quil fonctionne avant de continuer ! Le menu de boot doit apparatre au dmarrage.

... En construction [notes papier retrancscrire pour ce dbut] ...

6.2.2.2. Raccourcis clavier Ubuntu


2.bb 10 raccourcis Ubuntu que vous ne connaissez peut-etre pas ! 1. Switch to the next/previous workspace

If you make use of the workspace very frequently, you can easily switch between different workspaces by pressing Ctrl + Alt + Left/Right Arrow. The Left key brings you to the previou workspace while the Right key brings you to the next adjacent. If you have enabled Compiz,

41

Chapitre 6. UI003 Environnement de travail - Installation dune distribution


you can even get it to show all the workspace by pressing Super + E on the keyboard. 2. Move the current window to another workspace

By pressing Shift+ Ctrl + Alt + Left/Right Arrow, you can easily move your current window to another workspace in the specified direction. This keyboard shortcut works very well with the one mentioned above. If you have the habit of opening many applications/windows when doi your work, but dont like to see your desktop and menubar cluttered with all the application you can use this shortcut key to move your applications to another workspace and get your de organized. 3. Show the desktop

Ctrl + Alt + D enables you to quickly minimize all windows and give focus to the desktop. When all windows are minimized, this shortcut can also maximize all the windows to their pre state. 4. Keyboard shortcut for the mouse right-click In most applications, you can always right-click on the mouse to access the options menu. On the keyboard, you can simply press Shift + F10 to achieve this right-click effect 5. Restart session and recover from crashes

There are very few instances where Ubuntu will crash totally. But if it does, you can press Ctrl + Alt + Backspace to restart the session, and 90% of the time, it will recover from the 6. Lock the screen quickly

If you need to leave your workstation for a while, you can quickly lock up your screen by pr Ctrl + Alt + L and prevent unauthorized access by others. 7. Switch between windows in the reverse direction

Alt + Tab is a common shortcut key that allow you to switch between open windows. But do you know that by including the Shift button, you can reverse the windows switching direction? This is useful when you press Alt + Tab too fast and passed the window that you want to switch to. Simply press down the Shift button to go back to the previous window in the switch cycle. 8. Move windows with arrow keys

Press Alt+F7 to activate the Move window function and use any arrows key (up, down, left, ri to move the window around the screen. 9. Show hidden files

Most of the time, you wont need to view the hidden files in your home folder, but in the ev that you need to, you can press Ctrl + H inside the Nautilus (the file manager for Ubuntu) t all hidden files. 10. Show file properties without right-clicking the mouse

The conventional way to view a file/folder properties is to right-click the mouse and select Properties. Now you can just press Alt + Enter to get the Properties window to appear. Of course, this is only the tip of the iceberg. If you want more shortcuts and not only for but also for Gmail, Google Search, Firefox and other programs then go straight to our Cheat Page. There are 9 PDF cheat sheets there for you to download.

42

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

6.2.3. Installation du pilote de carte rseau sans-l (pour BCM4322 802.11a/b/g/n Wireless LAN Controller)
Le pilote Broadcoms IEEE 802.11a/b/g/n hybrid Linux (version 5.60.48.36) est disponible Wireless 802.11 Linux STA driver (http://www.broadcom.com/support/802.11/linux_sta.php) en version 32bits (docs/Broadcom/802.11-Linux-STA-driver/32bits/hybrid-portsrc-x86_32-v5.60.48.36.tar.gz) (source originale (http://www.broadcom.com/docs/linux_sta/hybrid-portsrc-x86_32-v5.60.48.36.tar.gz)) et 64bits (docs/Broadcom/802.11-Linux-STA-driver/64bits/hybrid-portsrc-x86_64-v5.60.48.36.tar.gz) (source originale (http://www.broadcom.com/docs/linux_sta/hybrid-portsrc-x86_64-v5.60.48.36.tar.gz)). Linstallation normal du pilote Broadcom (wl0 version 5.10.91.9) avec le paquet fournit par dfaut dans Ubuntu (procdure indiqu ci-avant) quoique simple et fonctionnelle, ne permet pas une utilisation normal des connections via Wi. La connection est souvent difcile tablir avec certains point daccs Wi (time out) et parfois des dconnection peuvent survenir. Les instructions ci-dessous permettent de compiler et dinstaller une version rcente du pilote Broadcom 64bits. Cette mthode semble avoir t tester plusieur fois sur des MacBook Pro with Broadcom 4328 et je conrme que cela marche avec le Broadcom B4322.
Important : Ces oprations devront tre ralises au moins une fois sous chacun des noyaux GNU/Linux que lon souhaite utiliser...

Les instructions suivantes sont tires du chier README.txt (docs/Broadcom/802.11-Linux-STA-driver/README.txt) (source originale (http://www.broadcom.com/docs/linux_sta/README.txt)) et de cette page de forum (http://ubuntuforums.org/showthread.php?t=1390979) :
## VERIFIER LE COMPATIBILITE

# A excuter en tant que root $ lspci -n | grep 14e4 // Vrifier que le modle de carte est compatible avec le pilote // Pour plus de dtail consulter la section suivante // Information Matriel

## COMPILER LE PILOTE DEPUIS LE SOURCE # Installer les paquets et outils ncessaire $ apt-get install build-essential linux-headers-generic $ apt-get build-dep linux # Vrifier lexistance du repertoire suivant : $ ls /lib/modules/uname -r/build

43

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

$ $ $ $ $ $ $

cd /tmp wget http://www.broadcom.com/docs/linux_sta/hybrid-portsrc-x86_64-v5.60.48.36.tar.gz mkdir hybrid_wl cd hybrid_wl tar xzf ../hybrid-portsrc-x86_64.tar.gz make clean make

# Assurer que la compilation se termine sans erreur # La licence manquante est une erreur acceptable pour la suite :) # Le resultat de compilation est un fichier # wl.ko (module noyau)

## FAIRE LE NETOYAGE AVANT DINSTALLER LE PILOTE # # # # Enlever tous les autres pilotes pour les cartes rseau sans-fil Broadcom Plusieurs pilote existe pour les puces Broadcom 802.11 tel que b43 et ssb. Pour viter tout conflit avec ces pilotes, il doivent tre pralablement entirement dsinstalls, ainsi que toute rvision prcdente du pilote wl

# Vrifier ceux qui sont installs $ lsmod | grep "b43\|ssb\|wl" # $ $ $ # # $ $ $ Enlever ceux qui sont installs rmmod b43 rmmod ssb rmmod wl

Nous devons mettre sur liste noire les modules des pilotes que lon ne va jamais utiliser quil ne seraient pas chargs automatiquement par le systme dans le futur : echo "# Replaced b43 and ssb by wl manally compiled by RL" >> /etc/modprobe.d/blacklist.co echo "blacklist ssb" >> /etc/modprobe.d/blacklist.conf echo "blacklist b43" >> /etc/modprobe.d/blacklist.conf

# Si un module wl.ko existe dj dune installation prcdente il faut lenlever (mise jou $ rmmod wl # dissocier le module du noyau, normalement cest dj fait prddement mais $ mv /lib/modules/uname -r/kernel/net/wireless/wl.ko /lib/modules/uname -r/kernel/net/wi

## INSTALLER LE PILOTE NOUVELEMENT COMPILER # On met en place le module noyau que lon vient de compiler $ cp /tmp/hybrid_wl/wl.ko /lib/modules/uname -r/kernel/net/wireless/wl.ko # Puis on lactive dans le noyau $ depmod # Mise jour de dpendance $ modprobe wl # Charger le nouveau module dans le noyau

==> La carte rseau Wi-fi apparat dans le Network-Manager, et sauto connecte sur point da ==> Il mest enfin possible de me connecter mon rseau wi-fi personnel !

44

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

## ACTIVATION AUTOMATIQUE AU DMARRAGE DU SYSTME # # # # Note: Sur certains systme tel que Ubuntu 9.10, le module ssb va se charger durant le dmarrage mme si il est mis sur la liste noire. Comme il doit de toute facon tre supprim, on doit donc procder de la facon suivante:

# Modifier le fichier /etc/rc.local pour inclure juste avant "exit(0)": rmmod ssb || true # Au dmarrage, enlve le module "ssb" modprobe wl || true # charge le module "wl"

# Le module ssb doit tre enlev avant dajouter le module wl sinon cela ne fonctionnera pas # En modifiant le fichier /etc/rc.local on sassure que tous se passe dans le bon ordre. # # # # # # # # # # # #

Note: Le shabang du script rc.local existant par dfaut est : #!/bin/sh -e Loption -e signifie que le script va arrter de sexcuter la premire commande qui ret En ajoutant la || true aprs chacune des commandes on assure que toute erreur est ignore et que le script peut continuer sexcuter. Sans cela, comme la commande "rmmod ssb" retourne une erreur due labsence du module (la le script sarrterait et la commande "modprobe wl" ne serait jamais excut, et donc le module pas charg et donc la carte rseau Wi-fi inaccessible :)

Optionellement: Les commandes rmmod et modprobe accepte les options suivantes qui peuvent tre eventuellem -v : verbose -s : log les erreurs dans /var/log/syslog via syslog systme

Note : Voici un exemple complet de mon script /etc/rc.local fonctionnel pouvant aider dbugger :
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. logfile="/tmp/rc.local.log" /bin/sleep 10 /bin/echo rc.local started > $logfile /bin/echo date >> $logfile /sbin/rmmod -vs ssb || true /sbin/modprobe -vs wl || true

45

Chapitre 6. UI003 Environnement de travail - Installation dune distribution


/bin/echo rc.local ended normally >> $logfile exit 0

Le chier de log /tmp/rc.local.log permet de sassurer que le script a bien dmarr et quil sexcute jusquau bout :) Le mieux est de toujours lancer le script manuellement pour le tester, sil se comporte comme souhaiter, redmarrer le systme et vrier quil est bien pris en compte... :
$ sudo -i # cd /etc # ./rc.local # Passage en console root # Executer le script manuellement # La carte Wi-fi est maintenant disponible dans le Network Manager # Vrifier la bonne excution du script # Vrifier toute erreur retourne par rmmod ou modprobe

# cat /tmp/rc.local.log # tail /var/log/syslog

Note : Dans lesprit du libre, jai post mes retours dexperience sur les forums Ubuntu (ici[EN] (http://ubuntuforums.org/showpost.php?p=9430202&postcount=33) et l[FR] (http://forum.ubuntu-fr.org/viewtopic.php?pid=3535050#p3535050)) pour que cela puisse servir dautres...

Une autre solution potentielle de dernier recours est de coder un hack en dure comme suggr dans le post numro 20 de cette page de forum (http://ubuntuforums.org/showthread.php?t=1390979&page=2).

6.3. lshw - Information Matriel de votre ordinateur GNU/Linux !


Source(s):

Web: Get the hardware info of your Computer [lshw] (http://www.go2linux.org/get-hardware-info-lshw)

Il est souvent ncessaire de connatre des informations dtailles sur le matriel composant son ordinateur. lshw est la commande magique pour cette tche :)

46

Chapitre 6. UI003 Environnement de travail - Installation dune distribution Exemples dutilisation :


$ sudo aptitude install lshw $ sudo lshw // Pour linstaller si elle nest pas dj disponible // Executer en tant que root pour obtenir les // informations matriel // Transfrer le rsultat vers un fichier texte // pour partager linformation // Formatter le resultat en HTML // Formatter le resultat en XML

$ lshw > /tmp/hwoutput.txt

$ lshw -html > /tmp/hwhtml.html $ lshw -xml > /tmp/hwxml.xml

$ lshw -html -sanitize > /tmp/hwhtml.html

// Avant de rendre linformation publique, il est // toute information sensible : adresse IP, numr

Note : Pour ma carte wireless avec chipset Broadcom jai pu obtenir le modle exact par cette commande :
$ lspci -n | grep 14e4 # A executer en tant que root de prfrence :) 03:00.0 0280: 14e4:432b (rev 01)

Dans le chier README.txt (http://www.broadcom.com/docs/linux_sta/README.txt) du pilote Broadcom (802.11 Linux STA driver) (http://www.broadcom.com/support/802.11/linux_sta.php), je trouve la rfrence suivante qui correspond :
BRCM PCI Product Name ------------4322 Dualband PCI Vendor ID Device ID ---------- --------0x14e4 0x432b

Voici le rsultat des informations matriel pour mon ordinateur Apple MacBook Pro 5,5 (Nov 2009) :
$ lshw -sanitize computer description: Notebook product: MacBookPro5,5 vendor: Apple Inc. version: 1.0 serial: [REMOVED] width: 64 bits capabilities: smbios-2.4 dmi-2.4 vsyscall64 vsyscall32 configuration: boot=normal chassis=notebook uuid=2C7A2E5D-968A-C64D-A1E4-92CD72BB3256 *-core

47

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

description: Motherboard product: Mac-F2268AC8 vendor: Apple Inc. physical id: 0 serial: [REMOVED] slot: Part Component -cpu:0 * description: CPU product: Intel(R) Core(TM)2 Duo CPU P7550 @ 2.26GHz vendor: Intel Corp. physical id: 0 bus info: cpu@0 version: Intel(R) Core(TM)2 Duo CPU P7550 @ 2.26GHz slot: U2E1 size: 798MHz capacity: 798MHz width: 64 bits clock: 266MHz capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx x86-64 constant_tsc arch_perfmon pebs bts rep_good pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority cp *-cache description: L1 cache physical id: 2 slot: Unknown size: 32KiB capacity: 32KiB capabilities: asynchronous internal write-back data -cache:0 * description: L1 cache physical id: 1 slot: Unknown size: 32KiB capacity: 32KiB capabilities: asynchronous internal write-back instruction *-cpu:1 description: CPU vendor: Intel(R) Corporation physical id: 3 bus info: cpu@1 version: Intel(R) Core(TM)2 Duo CPU P7550 @ 2.26GHz slot: U2E1 size: 798MHz capacity: 798MHz clock: 266MHz capabilities: cpufreq *-cache description: L1 cache physical id: 5 slot: Unknown size: 32KiB capacity: 32KiB

48

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

capabilities: asynchronous internal write-back data *-cache:1 description: L1 cache physical id: 4 slot: Unknown size: 32KiB capacity: 32KiB capabilities: asynchronous internal write-back instruction *-memory description: System Memory physical id: 6 slot: System board or motherboard size: 2GiB *-bank:0 description: SODIMM Synchronous 1067 MHz (0.9 ns) product: 0x384A53463132383634485A2D314731463120 vendor: 0x802C physical id: 0 serial: [REMOVED] slot: DIMM0 size: 1GiB clock: 1067MHz (0.9ns) *-bank:1 description: SODIMM Synchronous 1067 MHz (0.9 ns) product: 0x384A53463132383634485A2D314731463120 vendor: 0x802C physical id: 1 serial: [REMOVED] slot: DIMM0 size: 1GiB clock: 1067MHz (0.9ns) *-firmware description: BIOS vendor: Apple Inc. physical id: e version: MBP55.88Z.00AC.B03.0906151708 (06/15/09) size: 1MiB capacity: 4032KiB capabilities: pci upgrade shadowing cdboot bootselect acpi ieee1394boot smartbatte -pci * description: Host bridge product: MCP79 Host Bridge vendor: nVidia Corporation physical id: 100 bus info: pci@0000:00:00.0 version: b1 width: 32 bits clock: 66MHz *-memory:0 UNCLAIMED description: RAM memory product: MCP79 Memory Controller vendor: nVidia Corporation physical id: 0.1

49

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

bus info: pci@0000:00:00.1 version: b1 width: 32 bits clock: 66MHz (15.2ns) capabilities: bus_master configuration: latency=0 -isa * description: ISA bridge product: MCP79 LPC Bridge vendor: nVidia Corporation physical id: 3 bus info: pci@0000:00:03.0 version: b3 width: 32 bits clock: 66MHz capabilities: isa bus_master configuration: latency=0 resources: ioport:2000(size=256) -memory:1 UNCLAIMED * description: RAM memory product: MCP79 Memory Controller vendor: nVidia Corporation physical id: 3.1 bus info: pci@0000:00:03.1 version: b1 width: 32 bits clock: 66MHz (15.2ns) configuration: latency=0 -serial * description: SMBus product: MCP79 SMBus vendor: nVidia Corporation physical id: 3.2 bus info: pci@0000:00:03.2 version: b1 width: 32 bits clock: 66MHz capabilities: pm cap_list configuration: driver=nForce2_smbus latency=0 resources: irq:15 ioport:2180(size=64) ioport:2140(size=64) ioport:2100(size=64 -memory:2 UNCLAIMED * description: RAM memory product: MCP79 Memory Controller vendor: nVidia Corporation physical id: 3.3 bus info: pci@0000:00:03.3 version: b1 width: 32 bits clock: 66MHz (15.2ns) configuration: latency=0 -memory:3 UNCLAIMED * description: RAM memory product: nVidia Corporation

50

Chapitre 6. UI003 Environnement de travail - Installation dune distribution


vendor: nVidia Corporation physical id: 3.4 bus info: pci@0000:00:03.4 version: b1 width: 32 bits clock: 66MHz (15.2ns) configuration: latency=0 *-processor UNCLAIMED description: Co-processor product: MCP79 Co-processor vendor: nVidia Corporation physical id: 3.5 bus info: pci@0000:00:03.5 version: b1 width: 32 bits clock: 66MHz capabilities: bus_master configuration: latency=0 maxlatency=1 mingnt=3 resources: memory:93400000-9347ffff *-usb:0 description: USB Controller product: MCP79 OHCI USB 1.1 Controller vendor: nVidia Corporation physical id: 4 bus info: pci@0000:00:04.0 version: b1 width: 32 bits clock: 66MHz capabilities: pm bus_master cap_list configuration: driver=ohci_hcd latency=0 maxlatency=1 mingnt=3 resources: irq:18 memory:93488000-93488fff *-usb:1 description: USB Controller product: MCP79 EHCI USB 2.0 Controller vendor: nVidia Corporation physical id: 4.1 bus info: pci@0000:00:04.1 version: b1 width: 32 bits clock: 66MHz capabilities: debug pm bus_master cap_list configuration: driver=ehci_hcd latency=0 maxlatency=1 mingnt=3 resources: irq:20 memory:93489200-934892ff *-usb:2 description: USB Controller product: MCP79 OHCI USB 1.1 Controller vendor: nVidia Corporation physical id: 6 bus info: pci@0000:00:06.0 version: b1 width: 32 bits clock: 66MHz capabilities: pm bus_master cap_list

51

Chapitre 6. UI003 Environnement de travail - Installation dune distribution


configuration: driver=ohci_hcd latency=0 maxlatency=1 mingnt=3 resources: irq:17 memory:93487000-93487fff *-usb:3 description: USB Controller product: MCP79 EHCI USB 2.0 Controller vendor: nVidia Corporation physical id: 6.1 bus info: pci@0000:00:06.1 version: b1 width: 32 bits clock: 66MHz capabilities: debug pm bus_master cap_list configuration: driver=ehci_hcd latency=0 maxlatency=1 mingnt=3 resources: irq:19 memory:93489100-934891ff *-multimedia description: Audio device product: MCP79 High Definition Audio vendor: nVidia Corporation physical id: 8 bus info: pci@0000:00:08.0 version: b1 width: 32 bits clock: 66MHz capabilities: pm bus_master cap_list configuration: driver=HDA Intel latency=0 maxlatency=5 mingnt=2 resources: irq:23 memory:93480000-93483fff *-pci:0 description: PCI bridge product: MCP79 PCI Bridge vendor: nVidia Corporation physical id: 9 bus info: pci@0000:00:09.0 version: b1 width: 32 bits clock: 66MHz capabilities: pci bus_master cap_list resources: memory:93300000-933fffff *-network description: Ethernet interface product: MCP79 Ethernet vendor: nVidia Corporation physical id: a bus info: pci@0000:00:0a.0 logical name: eth0 version: b1 serial: [REMOVED] size: 100MB/s capacity: 1GB/s width: 32 bits clock: 66MHz capabilities: pm msi bus_master cap_list ethernet physical mii 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation configuration: autonegotiation=on broadcast=yes driver=forcedeth

52

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

driverversion=0.64 duplex=full ip=[REMOVED] latency=0 link=yes maxlatency=20 mingnt=1 multicast=yes port=MII speed=100MB/s resources: irq:27 memory:93486000-93486fff ioport:21e0(size=8) memory:93489000-934890ff memory:93489300-9348930f *-ide description: IDE interface product: MCP79 SATA Controller vendor: nVidia Corporation physical id: b bus info: pci@0000:00:0b.0 logical name: scsi0 logical name: scsi1 version: b1 width: 32 bits clock: 66MHz capabilities: ide pm msi bus_master cap_list emulated configuration: driver=ahci latency=0 maxlatency=1 mingnt=3 resources: irq:26 ioport:21d8(size=8) ioport:21ec(size=4) ioport:21d0(size=8) ioport:21e8(size=4) ioport:21c0(size=16) memory:93484000-93485fff *-disk description: ATA Disk product: Hitachi HTS54502 vendor: Hitachi physical id: 0 bus info: scsi@0:0.0.0 logical name: /dev/sda version: PB2O serial: [REMOVED] size: 232GiB (250GB) capabilities: partitioned partitioned:dos configuration: ansiversion=5 *-volume:0 UNCLAIMED description: EFI GPT partition physical id: 1 bus info: scsi@0:0.0.0,1 capacity: 200MiB capabilities: primary nofs *-volume:1 description: Darwin/OS X HFS+ partition vendor: Mac OS X (journaled) physical id: 2 bus info: scsi@0:0.0.0,2 logical name: /dev/sda2 version: 4 serial: [REMOVED] size: 74GiB capacity: 74GiB capabilities: primary journaled bootable osx hfsplus initialized configuration: boot=osx checked=2010-05-19 13:25:04 created=2010-05-19 05 filesystem=hfsplus lastmountedby=HFSJ modified=2010-05-19 16:13:54 state=clean *-volume:2 description: EFI (FAT-12/16/32) partition physical id: 3

53

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

bus info: scsi@0:0.0.0,3 logical name: /dev/sda3 capacity: 977KiB capabilities: primary bootable boot -volume:3 * description: EXT4 volume vendor: Linux physical id: 4 bus info: scsi@0:0.0.0,4 logical name: /dev/sda4 logical name: / version: 1.0 serial: [REMOVED] size: 71GiB capacity: 71GiB capabilities: primary journaled extended_attributes large_files huge_file dir_nlink recover extents ext4 ext2 initialized configuration: created=2010-05-19 16:25:20 filesystem=ext4 lastmountpoint=[REMOVED Manualy] modified=2010-06-06 14:27:27 mount.fstype=ext4 mount.options=rw,relatime,errors=remount-ro,barrier=1,data=ordered mounted=2010-06-07 12:58:23 state=mounted *-cdrom description: DVD writer product: DVDRW GS23N vendor: HL-DT-ST physical id: 1 bus info: scsi@1:0.0.0 logical name: /dev/cdrom logical name: /dev/cdrw logical name: /dev/dvd logical name: /dev/dvdrw logical name: /dev/scd0 logical name: /dev/sr0 version: SB00 capabilities: removable audio cd-r cd-rw dvd dvd-r configuration: ansiversion=5 status=open *-pci:1 description: PCI bridge product: MCP79 PCI Express Bridge vendor: nVidia Corporation physical id: 10 bus info: pci@0000:00:10.0 version: b1 width: 32 bits clock: 33MHz capabilities: pci pm msi bus_master cap_list resources: ioport:1000(size=4096) memory:92000000-930fffff ioport:80000000(size *-display description: VGA compatible controller product: C79 [GeForce 9400M] vendor: nVidia Corporation physical id: 0 bus info: pci@0000:02:00.0

54

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

version: b1 width: 64 bits clock: 33MHz capabilities: pm msi bus_master cap_list rom configuration: driver=nvidia latency=0 resources: irq:22 memory:92000000-92ffffff memory:80000000-8fffffff(prefetch memory:90000000-91ffffff(prefetchable) ioport:1000(size=128) memory:93000000-9301ffff(prefet *-pci:2 description: PCI bridge product: MCP79 PCI Express Bridge vendor: nVidia Corporation physical id: 15 bus info: pci@0000:00:15.0 version: b1 width: 32 bits clock: 33MHz capabilities: pci pm msi pciexpress bus_master cap_list configuration: driver=pcieport-driver resources: irq:24 memory:93200000-932fffff *-network description: Wireless interface product: BCM4322 802.11a/b/g/n Wireless LAN Controller vendor: Broadcom Corporation physical id: 0 bus info: pci@0000:03:00.0 logical name: eth1 version: 01 serial: [REMOVED] width: 64 bits clock: 33MHz capabilities: pm msi pciexpress bus_master cap_list ethernet physical wirele configuration: broadcast=yes driver=wl0 driverversion=5.10.91.9 latency=0 multicast=yes wireless=IEEE 802.11abgn resources: irq:23 memory:93200000-93203fff *-pci:3 description: PCI bridge product: MCP79 PCI Express Bridge vendor: nVidia Corporation physical id: 16 bus info: pci@0000:00:16.0 version: b1 width: 32 bits clock: 33MHz capabilities: pci pm msi pciexpress bus_master cap_list configuration: driver=pcieport-driver resources: irq:25 memory:93100000-931fffff *-firewire description: FireWire (IEEE 1394) product: FW643 PCI Express1394b Controller (PHY/Link) vendor: Agere Systems physical id: 0 bus info: pci@0000:04:00.0 version: 07

55

Chapitre 6. UI003 Environnement de travail - Installation dune distribution


width: 64 bits clock: 33MHz capabilities: pm msi pciexpress bus_master cap_list configuration: driver=ohci1394 latency=0 resources: irq:22 memory:93100000-93100fff *-scsi physical id: 2 bus info: usb@2:5 logical name: scsi6 capabilities: emulated scsi-host configuration: driver=usb-storage *-disk description: SCSI Disk product: SD Card Reader vendor: APPLE physical id: 0.0.0 bus info: scsi@6:0.0.0 logical name: /dev/sdb version: 1.00 capabilities: removable *-medium physical id: 0 logical name: /dev/sdb *-battery product: Unknown vendor: Unknown physical id: 1 version: Unknown serial: [REMOVED] slot: Unknown *-network DISABLED description: Ethernet interface physical id: 2 logical name: vboxnet0 serial: [REMOVED] capabilities: ethernet physical configuration: broadcast=yes multicast=yes

Pour voir laction de loption -sanitize :


$ sudo lshw > f1.txt $ sudo lshw -sanitize > f2.txt $ diff f1.txt f2.txt

56

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

6.4. Virtual Box


6.4.1. Installation de Base
2.j Installation of Virtual box

Virtual Box version 3.0.8 (Version OSE) is currently available in Ubuntu 9.10 Karmic but it is advisable to use instead the most current version en cours 3.0.10 non OSE (Open Source Edition) which contains full features and remain pour utilisation pers http://www.virtualbox.org/wiki/Editions

... The full VirtualBox package is available in binary (executable) form free of charge from the page. This version is free for personal use and evaluation under the terms of the VirtualBo Use and Evaluation License. If, instead, you wish to purchase licenses for enterprise use and/or enterprise support for please do not hesitate to contact your Sun representative. The VirtualBox Open Source Edition (OSE) is the one that has been released under the GPL and comes with complete source code. It is functionally equivalent to the full VirtualBox packag except for a few features that primarily target enterprise customers. This gives us a chance generate revenue to fund further development of VirtualBox. ... Download page:http://www.virtualbox.org/wiki/Downloads Click on: VirtualBox 3.0.10 for Linux hosts Click on: AMD64 on the line containing Ubuntu 9.10 ("Karmic Koala") i386 | AMD64 Save on the Desktop Double click on package: virtualbox-3.0_3.0.10-54097_Ubuntu_karmic_amd64.deb saved to start installation and follow instruction (nothing in particular simply click forward) Done! Alternatively: $ sudo gedit /etc/apt/sources.list Add at the end of file... deb http://download.virtualbox.org/virtualbox/debian karmic non-free and save... Then do $ sudo aptitude update (...) Get:11 http://download.virtualbox.org karmic Release.gpg [197B] Ign http://download.virtualbox.org karmic/non-free Translation-en_GB Get:12 http://download.virtualbox.org karmic Release [3,459B] Ign http://download.virtualbox.org karmic Release Get:13 http://download.virtualbox.org karmic/non-free Packages [1,954B] Fetched 68.4kB in 0s (72.5kB/s) Reading package lists... Done W: GPG error: http://download.virtualbox.org hardy Release: The following signatures couldnt be verified because the public key is not available: NO_PUBKEY DCF9F87B6DFBCBAE

57

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

Current status: 4 new [+4]. ==> Public key is missing for new repository...

Get public key for new repository $ wget -q http://download.virtualbox.org/virtualbox/debian/sun_vbox.asc -O- | sudo apt-key a OK $ sudo aptitude update (...) Get:1 http://download.virtualbox.org karmic Release.gpg [197B] Ign http://download.virtualbox.org karmic/non-free Translation-en_GB Get:2 http://download.virtualbox.org karmic Release [3,459B] Hit http://download.virtualbox.org karmic/non-free Packages Fetched 198B in 0s (217B/s) Reading package lists... Done

Installation des paquets ncessaires VirtualBox aura besoin de compiler un module pour votre machine hte. Pour ce faire, il besoin que soient pralablement installs des applications particulires. Faisons le tout de $ sudo aptitude install linux-headers-generic build-essential filostene@macfil:~$ sudo aptitude install linux-headers-generic build-essential Reading package lists... Done Building dependency tree Reading state information... Done Reading extended state information Initialising package states... Done The following NEW packages will be installed: build-essential dpkg-dev{a} g++{a} g++-4.4{a} libstdc++6-4.4-dev{a} 0 packages upgraded, 5 newly installed, 0 to remove and 1 not upgraded. Need to get 0B/7,606kB of archives. After unpacking 25.0MB will be used. Do you want to continue? [Y/n/?] y Writing extended state information... Done Selecting previously deselected package libstdc++6-4.4-dev. (Reading database ... 116696 files and directories currently installed.) Unpacking libstdc++6-4.4-dev (from .../libstdc++6-4.4-dev_4.4.1-4ubuntu8_amd64.deb) ... Selecting previously deselected package g++-4.4. Unpacking g++-4.4 (from .../g++-4.4_4.4.1-4ubuntu8_amd64.deb) ... Selecting previously deselected package g++. Unpacking g++ (from .../g++_4.4.1-1ubuntu2_amd64.deb) ... Selecting previously deselected package dpkg-dev. Unpacking dpkg-dev (from .../dpkg-dev_1.15.4ubuntu2_all.deb) ... Selecting previously deselected package build-essential. Unpacking build-essential (from .../build-essential_11.4_amd64.deb) ... Processing triggers for man-db ... Setting up dpkg-dev (1.15.4ubuntu2) ... Setting up libstdc++6-4.4-dev (4.4.1-4ubuntu8) ... Setting up g++-4.4 (4.4.1-4ubuntu8) ... Setting up g++ (4:4.4.1-1ubuntu2) ... update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode. Setting up build-essential (11.4) ... Reading package lists... Done

58

Chapitre 6. UI003 Environnement de travail - Installation dune distribution


Building dependency tree Reading state information... Done Reading extended state information Initialising package states... Done Writing extended state information... Done Check what is availalbe... $ sudo apt-cache search virtualbox virtualbox - Sun xVM VirtualBox virtualbox-2.0 - Sun xVM VirtualBox virtualbox-2.1 - Sun xVM VirtualBox virtualbox-2.2 - Sun VirtualBox virtualbox-3.0 - Sun VirtualBox

# Cest celle-ci qui nous intresse

Install version 3.0 $ sudo aptitude install virtualbox-3.0 # Validez linstallation du produit, il ncessite environ 50 Mo en tlchargement # et 100 Mo sur disque une fois install. # Sen suit un tlchargement, une compilation et linstallation Dpaquetage de dkms ( partir de .../dkms_2.0.19-0ubuntu2_all.deb)... Paramtrage de virtualbox-3.0 (3.0.4-50677_Ubuntu_hardy)... Messages emitted during module compilation will be logged to /var/log/vbox-install.log. Success! * Starting VirtualBox kernel module * done. Verify $ lsmod | grep -i vboxdrv vboxdrv 1708492

1 vboxnetflt

==> OK... maintenant je peux demarrer VirtualBox $ virtualbox Ouhou! Ca marche ... euh ... enfin non ca marche pas :(( The program virtualbox is currently not installed. sudo apt-get install virtualbox-ose-qt virtualbox: command not found You can install it by typing:

Aaaaaaahhhhhhhh !!! J y suis... problem de typo... attention au majuscule dans la commande Linux est tres sensible a ce niveau la !!! LEOF devrait rajouter ca dans la doc !!! $ VirtualBox HipHipHip Oura ca fonctionne ! Ouf! une etape de moins... Prparation de lenvironnement pour VirtualBox La procdure dinstallation est gnralement assez simple. - Crez une nouvelle VM (cliquer sur NEW). - Donner une nom: DebianStableFromBusiness (...business.iso) - Systme: Linux

59

Chapitre 6. UI003 Environnement de travail - Installation dune distribution


-

Version: Debian, puis suivant, Taille de la mmoire: 512, puis suivant, Crez un nouveau disque dur, puis suivant, Slectionnez Image disque taille dynamique, puis suivant, Emplacement, ici installez limage sur un disque ou un volume sur lequel vous avez entre 5 de place libre. Cela peut-tre un disque externe, par exemple : /media/sda1/MesVM/DebianStable.vdi. Laissez la taille par dfaut, puis suivant

Dans mon cas: Type: Dynamically expanding storage Location: /home/filostene/.VirtualBox/HardDisks/DebianStableFromBusinessCard.vdi Size: 10.00 GB (10737418240 Bytes) - Terminez.

6.4.2. Installation dune Machine Virtuelle (Debian)


Manuel de Reference Debian: http://www.debian.org/doc/manuals/debian-reference/index.fr.html

Configurer le nombre despace de travail dans Debian, Ubuntu... http://www.noob-on-linux.com/article-configurer-le-nombre-d-espace-de-travail-39445906.htm - Installer debian a partir dune cle USB (pas de lecteur cd rom) 1- telecharger les fichiers specifiques pour le boot hd-media ftp://ftp.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ - boot.img.gz (a decompresser a la racine de la cle usb) zcat boot.img.gz > /dev/sdb (device associ votre cl usb) 2- telecharger une image netinst de la version stable de debian http://cdimage.debian.org/debian-cd/5.0.3/i386/iso-cd/debian-503-i386-netinst.iso puis la copier sur la cle usb doc: http://www.debian.org/releases/stable/i386/apas02.html.fr http://wiki.debian.org/VirtualBox Ensuite sassurer que la station puisse booter sur usb , le cas chant lactiver dans le bios 2.k Debian Download

Download businesscard CD image (generally 20-50 MB) for i386 architecture $ wget http://cdimage.debian.org/debian-cd/5.0.3/i386/iso-cd/debian-503-i386-businesscard.is MD5 sum

60

Chapitre 6. UI003 Environnement de travail - Installation dune distribution


$ md5sum debian-503-i386-businesscard.iso 54d091a5491d1f36554cca8362af8a27 debian-503-i386-businesscard.iso 54d091a5491d1f36554cca8362af8a27 (in the text file) Both match perfectly :)) Get MD5 sum from Debian.org $ wget wget http://cdimage.debian.org/debian-cd/5.0.3/i386/iso-cd/MD5SUMS --2009-11-13 00:16:03-- http://wget/ Resolving wget... failed: Name or service not known. wget: unable to resolve host address wget --2009-11-13 00:16:03-- http://cdimage.debian.org/debian-cd/5.0.3/i386/iso-cd/MD5SUMS Resolving cdimage.debian.org... 130.239.18.163, 130.239.18.137, 2001:6b0:e:2018::163, ... Connecting to cdimage.debian.org|130.239.18.163|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 2452 (2.4K) [text/plain] Saving to: MD5SUMS 100%[======================================>] 2,452 --.-K/s in 0.001s

2009-11-13 00:16:03 (2.04 MB/s) - MD5SUMS saved [2452/2452] FINISHED --2009-11-13 00:16:03-Downloaded: 1 files, 2.4K in 0.001s (2.04 MB/s) -----------------------------------------------------$ wget wget http://cdimage.debian.org/debian-cd/5.0.3/i386/iso-cd/MD5SUMS.sign --2009-11-13 00:16:23-- http://wget/ Resolving wget... failed: Name or service not known. wget: unable to resolve host address wget --2009-11-13 00:16:23-- http://cdimage.debian.org/debian-cd/5.0.3/i386/iso-cd/MD5SUMS.sign Resolving cdimage.debian.org... 130.239.18.137, 130.239.18.163, 2001:6b0:e:2018::137, ... Connecting to cdimage.debian.org|130.239.18.137|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 197 [text/plain] Saving to: MD5SUMS.sign 100%[======================================>] 197 --.-K/s in 0s

2009-11-13 00:16:23 (5.69 MB/s) - MD5SUMS.sign saved [197/197] FINISHED --2009-11-13 00:16:23-Downloaded: 1 files, 197 in 0s (5.69 MB/s) --------------------------------------------------------Verify Signature filostene@macfil:~/Downloads$ gpg --verify MD5SUMS.sign gpg: Signature made Mon 07 Sep 2009 21:43:49 BST using DSA key ID 88C7C1F7 gpg: Cant check signature: public key not found filostene@macfil:~/Downloads$ gpg --recv-keys 88C7C1F7 gpg: requesting key 88C7C1F7 from hkp server keys.gnupg.net gpg: key 88C7C1F7: public key "Steve McIntyre <steve@einval.com>" imported gpg: no ultimately trusted keys found

61

Chapitre 6. UI003 Environnement de travail - Installation dune distribution


gpg: Total number processed: 1 gpg: imported: 1 filostene@macfil:~/Downloads$ gpg --verify MD5SUMS.sign gpg: Signature made Mon 07 Sep 2009 21:43:49 BST using DSA key ID 88C7C1F7 gpg: Good signature from "Steve McIntyre <steve@einval.com>" gpg: aka "Steve McIntyre <93sam@debian.org>" gpg: aka "Steve McIntyre <stevem@chiark.greenend.org.uk>" gpg: aka "Debian CD signing key <debian-cd@lists.debian.org>" gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: AC65 6D79 E362 32CF 77BB B0E8 7C3B 7970 88C7 C1F7 2.l Installation de la distribution Debian

-Demarrer VirtualBox si il nest pas deja en route -Selectionner la Machine Virtuelle nouvellement creee DebianStableFromBusiness -Dans tabulation Details, cliquer sur "CD/DVD-ROM" -Check Mount "CD/DVD Drive" -Seclectionner "ISO Image File" -Clique sur licone jaune qui ressemble a un dossier pour invoquer le Virtual Media Manager, puis parcourir pour selectionner "debian-503-i386-businesscard.iso" -Cliquer sur "Start" pour demarrer la machine virtuelle Slectionnez Install et validez. Nous allons procder linstallation de Debian. Note : Quand vous avez cliqu dans la VM, le curseur, par dfaut reste bloqu dans ce pouvoir accder votre bureau, appuyez sur la touche CTRL situ droite de la barre des Ici, voici les grandes options que vous pouvez slectionner lors de linstallation : - Prenez French - Franais - Franais (fr latin-9) - Nom de machines, ce sera le nom dhte - Domaine, si cest un serveur dclar, sinon vous pouvez laisser vide - Partitionnement, prenez utiliser un disque entier, ce sera lespace que vous avez dclar dans VirtualBox - Validez plusieurs fois jusqu arriver au schma de partitionnement. Ici, mettez tout sur une seule partition si vous tes dbutant, comme cela est prconis. La sparation des volumes nest pas aborde ici. Validez, le disque sera cr et linstallateur installera le systme de base. - Mettez un mot de passe pour ladministrateur root et confirmez - puis vous allez crer un compte utilisateur qui sera le vtre, car on nutilise pas le compte root par dfaut. - Slectionnez ensuite un Pays pour le tlchargement des paquets - La partie mandataire est plus dlicate. Il vous faut savoir si vous avez un proxy ou pas. Si vous tes chez vous, il ny en a probablement pas, si vous tes dans votre entreprise, il y en a probablement un. Il vous faut demander linformation ladministrateur de votre rseau et renseigner la zone. Si le proxy est ladresse 192.168.1.1 et fonctionne sur le port 8080, il vous faudra mettre : http ://192.168.1.1 :8080. Ensuite, patientez un peu le temps que le processus rcupre les listes des paquet - Vous arrivez la slection des paquets.

62

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

Puisque la VM va vous servir un peu tout et ne sera pas quun serveur, slectionnez les options par dfaut Environnement graphique de bureau et Systme standard - L, vous pouvez aller boire un caf car il peut y en avoir pour un petit moment (peut-tre mme plus dune heure) - Ici GROSSE patience. - Une fois les paquets tlchargs et installs, validez linstallation de Grub comme propos par linstallateur. -Puis redemarrer sur le nouveau systeme :)) 2.m Change VirtualBox Host Key to switch from HOST to VM and vice versa... Pour entree dans la machine virtuelle il suffit de cliquer dedans ainsi tout ce qui sera taper au clavier ou cliquer a la souris sera capture et interprete par la machine virtuelle comme etant des entree clavier et souris sur la machine Debian.

Pour en sortir, il faut appuyer sur la touche "Host Key" qui est par defaut CTRL Right (la touche control situe a droite sur le clavier)... malheureusement, sur le MacBookPro cette touche nexiste pas ! Il ny a quune touche CTRL Gauche (situe a gauche sur le clavie ceci signifie que si on passe en mode pleine ou que lon active simplement la VM, il nest plus possible dans sortir... !!! Cest ce qui mest arrive... Pour eviter ce probleme, il faut donc changer la configuration de la Host Key pour refleter le clavier utilise: - Demarrer VirtualBox - Go to Fichier > Preferences > Input - Presser sur touche fn+F8 (ne pas utiliser CTRL Gauche sinon cela interfere avec les raccourcis clavier!), le changement de configuration devrait changer de CTRL Droit en F8 dans la fenetre de preference - OK ==> Done :)) 2.n Ajuster resolution ecran de la VM La machine "host" est un MacBook pro 13" en 16/9 (Widescreen 1280x720) alors que la VM est en resolution 4/3 je ne vois pas tout lecran... malheureusment aucun parametre de resolution ne semble pour voir etre choisi, ils sont tous vide (pas de choix)

Sur un forum il est indique quil faut installe les add-ons virtualbox pour ce type de chang La procedure par defaut dans Virtual Box na pas fonctionne. Jai donc telecharge manuellement http://download.virtualbox.org/virtualbox/3.0.10 /VBoxGuestAdditions_3.0.10.iso et je lai manuellement monter dans la VM (meme procedure que pour monter limage .iso de la Debian) Le probleme cest que je narrive toujours pas a executer le CD-ROM. Jessaye de demarrer le autorun.sh jai lerreur suivante: Could not display /media/cdrom0/autorun.sh Same en root. Je ne peux executer sudo car mon compte par defaut nest pas dans le group sudousers and je ne sais pas comment lajouter...

63

Chapitre 6. UI003 Environnement de travail - Installation dune distribution


Cela doit etre un pb de permission mais je vois pas trop comment le resoudre... il est fort probable que le cdrom soit mont sans les droits dexcution, avec une ligne de ce genre dans /etc/fstab : /dev/scd1 /media/cdrom0 udf,iso9660 user,noauto,noexec,utf8 0 0 -> cest le noexec, que tu peux essayer de remplacer par exec, puis de remonter le cdrom. Il ny avait pas de noexec dans le fstab mais jai rajoute ",exec" apres le noauto comme tu conseillais et ca marche :)) Ensuite... ouvre un tape "su tape "cd tape "sh terminal -" puis le mot de passe root (pour devenir root) /media/cdrom0 (repetoire ou est mont liso des guests additions) autorun.sh"

Aie! Le script reclame que jinstalle Make sur la VM et les linux-headers et les build-essen Les conseils dun autre etudiant sur la liste de diffusion: "...

Ce qui donne donc (de mmoire) "aptitude install linux-headers-[ton archi] build-essential" (le [ton archi] peut tre rcupr avec la command "uname -a" (-a renvoyant toutes les infos))(sinon un "aptitude search linux-headers" te renvoie tous les paquets correspondants, tu devrais trouver le tien ..." Alors allons y... En cherchant un peu jai trouve trois commande toute simple: $sudo apt-get install build-essential linux-headers-uname -r $sudo apt-get install make $sudo apt-get install gcc En voici le resultat (TO COPY/PASTE FROM LOG INSTALL STORED ON DEBIAN VM...) Then redo: ouvre un tape "su tape "cd tape "sh terminal -" puis le mot de passe root (pour devenir root) /media/cdrom0 (repetoire ou est mont liso des guests additions) autorun.sh"

It shall works fine now... ==> Installation successfull except that OpenGL is supported only starting at kernel version 2.6.27 or le kernel courrant est en version 2.6.26... Pas vraiment grave pour le moment...

64

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

It is time to reboot for changes to take effect :)) And it works, now I can see the full screen... but only in 640x480 while I would need 1280x720 (as indicated in Ubuntu 9.10). The problem is that in System > Preference > Screen Resolution I cannot choose any other resolution that 640x480 :((

After the restart i did modify /etc/X11/xorg.conf (Attention cest un X majuscule). Again s udo was needed to be able to save the result. So type "sudo gedit" (or su and root password) in a terminal session, open /etc/X11/xorg.conf and below is what i added (see indended text) Section "Screen" Identifier "Default Screen" Device "Generic Video Card" Monitor "Generic Monitor" DefaultDepth 24 SubSection "Display" Modes "1280x720" "1280x800" "640x480" EndSubSection EndSection As you might notice I added "1280x720", which is the right resolution of my laptops screen under Debian or Ubuntu (compared to the 1280x800 under Mac OS X) It needs to be put in first place to be used as default... After a restarted (ctrl-Alt + backspace (pour redmarrer X) or reboot of VM) I clicked in the main menu "System > Preferences > Screen Resolution". The Screen Resolution Preference" dialog is shown and the resolution "1280x720" CAN be chosen. ==> It works, now if I start VM, I activate it and press Host Key (CTRL left) + F if shows up in full screen like it would be installed on the laptop directly. Excellent. 2.o Debian in French ??? Pour reconfigurer son environnement correctement il suffit dans une console dexcuter la commande suivante : [root@tuxbihan.org]$ dpkg-reconfigure locales

Ensuite cochez les langues fr_FR, fr_FR avec euro et valider. Choisissez par dfaut fr_FR et ==> En fait jai cocher All Locales pour toutes les installer et choisi fr_FR-UTF8 Ensuite un petit... $ update-locale Dconnectez vous ou relancez une console et tapez la commande : $ locale

65

Chapitre 6. UI003 Environnement de travail - Installation dune distribution


Vous devriez voir apparatre votre environnement avec la variable fr_FR

LANG=fr_FR LC_TYPE="fr_FR" LC_NUMERIC="fr_FR" LC_TIME="fr_FR" LC_COLLATE="fr_FR" LC_MONETARY="fr_FR" LC_MESSAGES="fr_FR" LC_PAPER="fr_FR" LC_NAME="fr_FR" lC_ADDRESS="fr_FR" LC_TELEPHONE="fr_FR"( LC_MEASUREMENT="fr_FR" LC_IDENTIFICATION="fr_FR" LC_ALL= Apres un redemarrage de la VM tout est en francais (sauf les message derreur du noyau :) Bon Debian en FR :)) MAN PAGES en francais :)) Installation des man-pages-fr et man-pages-fr-extra via synaptique --> Pareil que comme pour des paquets habituels

2.p Quelques outils en plus... apt-get install zim (wiki application for note taking) apt-get install xournal (to make annotation of pdf in handwriting via tabler or via keyboard 2.q Set up clavier configuration (Host) Pour pouvoir taper en Francais :)) - Systeme > Preference > Clavier > Tab Agencement - Choisir model de clavier "MacBook/MacBook Pro (Intl)" - Choisir agencement "Royaume Uni International (avec touches mortes)" ALT Right + ;: + e = ALT Right + " + e = (or SHIFT + 6 + e) ALT Right + \| + e = (or + e) etc... Ajustement de touche additionel. Le clavier est gereer par XKB (X Keyboard Extension) Tous les fichiers de XKB se trouve dans /usr/share/X11/xkb Pour voir les fichiers utilis pour la configuration courante : $ setxkbmap -print xkb_keymap { xkb_keycodes { include "macintosh+macintosh(goodmap)+aliases(qwerty)" }; xkb_types { include "complete+numpad(mac)" }; xkb_compat { include "complete" }; xkb_symbols { include "pc+macintosh_vndr/gb+inet(apple)+level3(enter_switch)+

66

Chapitre 6. UI003 Environnement de travail - Installation dune distribution


gb(intl):2+level3(ralt_switch_for_alts_toggle):1+level3(ralt_switch_for_alts_toggle):2+ group(alts_toggle)+eurosign(e)" }; xkb_geometry { include "macintosh(macbook79)" }; }; les fichiers qui nous interesse sont ceux indiquer sur la ligne xkb_symbols ils sont localise dans /usr/share/X11/xkb/symbols Pour creer la configuration clavier, XKB compile lensemble des fichiers ci-dessus: keycodes, types, compat, symbols, geometry... Pour modifier le layout du clavier nous devons modifier le fichier de symbol suivant : /usr/share/X11/xkb/symbols/gb qui correspond au differet type de clavier anglais :))

Edit le fichier de configuration clavier et modifier la partie intl (pour international) com $ gedit /usr/share/X11/xkb/symbols/gb "... partial alphanumeric_keys xkb_symbols "intl" { // Describes the differences between a very simple en_US // keyboard and a very simple U.K. keyboard layout with // dead keys. By Phil Jones (philjones1@blueyonder.co.uk) // // // // // // Includes the following keys: dead_grave dead_acute dead_circumflex dead_tilde dead_diaeresis

include "latin" name[Group1]="United Kingdom - International (with dead keys)"; key key key key key <AE02> { [ <AE03> { [ <AE04> { [ <AE06> { [ <AD09> { [ 2, 3, 4, 6, o, at, sterling, dollar, dead_circumflex, O, dead_diaeresis, plusminus, EuroSign, twosuperior, threesuperior, NoSymbol, oe, dead_diaeresis, notsign, onehalf ] }; onethird ] }; onequarter ] }; onesixth ] }; OE ] }; bar ] }; notsign ] };

key <AC11> { [ dead_acute, //dead_doubleacute key <TLDE> { [ section, //dead_grave key <BKSL> key <LSGT> { [ backslash, { [ dead_grave,

bar, dead_tilde,

numbersign, brokenbar,

bar ] }; bar ] };

include "level3(ralt_switch)" };

67

Chapitre 6. UI003 Environnement de travail - Installation dune distribution


// Describe the differences between the US Colemak layout // and a UK variant. By Andy Buckley (andy@insectnation.org) ..." Enregistrer les modification... Pour appliquer les modfifications simplement faire: $ setxkbmap 2.r Dossier partage entre VM and HOST

On HOST - mkdir /home/filostene/vmdebian (creer le repertoire a partager sur le host) - VirtualBox (to start VirtualBox) - Right Click on VM avec laquelle on veut partager dossier, go to Preference > Repertoires P - Ajouter un repertoire partage permanent Chemin: /home/filostene/vmdebian Nom (Share name): vmdebian - OK, puis demarrer la VM - Dans la VM, demarrer un terminal puis: $ mkdir /mnt/filosteneUbuntu (creer le repertoire partage sur la VM) $ mount -t vboxsf vmdebian /mnt/filosteneUbuntu (monter le repertoire partage du Host sur la For automounting add the following line in /etc/fstab vmdebian /mnt/filosteneUbuntu vboxfs rw,uid=1000 0 0 UID cest lidentifiant utilisateur du HOST et de la VM, les deux doivent etre identique pour que le partage soit monter en lecture et ecriture. ==> Success :)) 2.s Kernel error to hide $ gnome-session-properties Then unckeck kerloop... module... 2.t Resolve intermittent freezing of mouse/keyboard appearing after a while when VM is running for long hours Ce probleme semble affecte particulierement les MacBookPro sous Linux: http://www.virtualbox.org/ticket/2836 (voir en bas de page) La solution cest de desactiver ACPI pour la MV: In VirtualBox Select Machine Virutelle (it must be powered OFF) Right click Aller dans Preferences > Systeme Decocher "Activer ACPI" Demarrer VM

==> It shall be fine from now on :))

68

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

2.cc Ajusting the date, time and time zone correctly... Voir Section Ajuster la date Ajuster le fuseau horaire

6.4.3. Virtual LAN : 1 Hte (Ubuntu) + 2 Machines Virtuelles (Debian)


- Dupliquer la machine virtuel pour en crer deux - Ajuster la mmoire disponible pour chacune delle (Avant: 512Mo pour une VM, Aprs: 400Mo each): *Ouvrir Virtual Box (executer commande "VirtualBox") *Clic droit sur la VM1 > Prfrence > Systme > Mmoire de base *Ajuster 400Mo *Rpter pour la deuxime VM - Cration du rseau virtuel: *Ouvrir Virtual Box (executer commande "VirtualBox") *Clic droit sur la VM1 > Prfrence > Systme > Rseau > Mode daccs *Choisir "Accs par Pont" *Choisir Nom Carte Rseau de lhte "eth2" (wi-) ou "eth01" (cable) *Rpter pour la deuxime VM ==> Au dmarrage, VirtualBox se chargera de crer une interface rseau eth2 dans les VM et de les activer avec une addresse IP - Conguration hosts pour chaque machine (pour la resolution par nom dhte et domaine (facultatif)) LINKTO: /etc/hosts (Ubuntu) - /etc/hosts (VM1 - debstal3) /etc/hosts (VM2 - debstal4) Toutes les machines appartiennent maintenant au mme rseau et peuvent accder Internet via lhte Ubuntu (soit par cable soit par wi-)

6.4.4. Installation VM Windows XP Pro (VirtualBox) sur hte Ubuntu 9.10 64bits, portable Apple MacBook Pro 5,5
Dans le cadre de la formation, ltude de SAMBA requiert la disponibilit de machine Windows. Dans le but den avoir toujours une (ou deux) sous la main, jai dcid dinstaller Windows XP Pro en tant que Machine Virtuelle (VM) VirtualBox 3.1.2 r56127 sur mon hte Ubuntu 9.10 64bits sur mon portable Apple MacBook Pro 5,5 Cela a t beaucoup moins facile quil ny parat et a pris beaucoup de temps et de patience pour rsoudre tout les problmes affrant. Voici un bref rsum de mmoire : 1. Crer un nouveau disque virtuel WinXPpro.vdi (Taille Dynamique - 10GB) dans le Gestionnaire de supports virtuels.

69

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

Avertissement
Ne pas hsiter choisir une grande taille de disque pour viter toute limitation par la suite.

En effet en choisissant le type de taille Dynamique le chier .vdi restera petit (1,2Go dans mon cas correspondant lespace effectivement utilis par la VM) mais pourra stendre au besoin jusqu 10Go automatiquement.

En choisant une taille limite petite on risque de se retrouver limit dans la machine virtuelle. Dans mon cas, je nai par example pas pu installer le Service Pack 2 la premire fois car il me manquait 128Mo octets despace pour cela !!! SP2 utilise beaucoup despace durant linstallation !!!

Note : VirtualBox noffre pas de moyen direct de modier la taille limite dun disque virtuel mme sil est de taill dynamique. Toutefois il existe une mthode pour re-dimensionner un disque de machine virtuelle (VirtualBox)

2. Crer une nouvelle machine virtuelle WinXPpro utilisant le disque virtuel WinXPpro.vdi 3. Vrier les paramtres (Prfrence) de la VM :
* * * * * Microsoft Windows Windows XP Mem 512 Controler IDE - PIIX4 Carte Reseau Intel PRO/1000 MT Desktop

4. Insrer le disque dinstallation Win XP Pro dans le lecteur 5. Dmarrer la VM 6. Accepter le montage du support optique pour pouvoir dmarrer depuis le CD dinstallation 7. Procder linstallation de Windows en suivant les instructions jusqu lapparition du bureau.
Note : Les premiers dmarrage peuvent tre trs long et des freeze intermittant peuvent apparatre.

8. Une fois sur le bureau, logoff et faire un instantan (snapshot) de la machine en cours dexcution.
Note : Pour faire un instantan (snapshot), dans les menus de la VM en cours execution cliqu sur Machine > Saisi dun instantane... ou taper HOST+S (F7+S dans mon cas)... puis saisir le nom et une description du snapshot.

70

Chapitre 6. UI003 Environnement de travail - Installation dune distribution 9. teindre la VM puis aller dans les prfrence. 10. Dsactiver lACPI (APIC) dans les prfrences de la VM (Ceci est ncessaire pour viter les freeze intermittant qui apparaissent avec hte Linux 64bits sur machine Apple)
Note : Voir aussi point 43. ci-aprs qui rsoud les freeze intermittant aprs installation du Service Pack 3. Ceci peut-tre tent avant ltape 9. mais na pas t test dans le cadre de cette installation.

Avertissement
Lors de la mise jour du noyau dans la VM, il apparat que cette dernire re-dmarre avec le mode ACPI activ alors mme quil est dsactiv dans les prfrences de la VM :
# Solution pour GRUB Version 1 $ nano /boot/grub/menu.lst # Modifier les options du noyau ... kernel ... ro acpi=off quiet # Dsactiver lACPI au dmarrage # du noyau ...

11. Redmarrer la VM, appuyer sur une touche pour dmarrer du CD-ROM et rparrer linstallation de Windows : Choisir dinstaller Windows de nouveau et au dernier moment (dernire tape) choisir Rparer installation existante ( ne pas confondre avec loption R pour accder la Recovery Console. 12. Une fois sur le bureau, logoff et faire un instantan (snapshot) de la machine en cours dexcution. 13. teindre la VM puis aller dans les prfrence. 14. Ajouter des supports optiques jusqua ce que VirtualBoxAdditions.iso apparaisse. 15. Enlever tous les autres supports optiques existant (ceci inclut le lecteur de CD/DVD, il peut-tre remis ultrieurement si ncessaire). 16. Dmarrer la VM 17. Une fois sur le bureau, logoff. 18. Sur la page de login, seul lutilisateur par dfaut apparat. Pour ce connecter en tant quAdministrator, depuis la page de login taper F7+FN +Backspace(deux fois), ceci simule un CTRL+ALT+SUPR (2 fois) pour obtenir le prompt de login standard permettant de se connecter en tant quAdministrateur. F7 est la touhce HOST de VirtualBox. Cette touche dpends des prfrence de conguration de VirtualBox. FN+Backspace = SUPR sur MacBook Pro under Linux, la touche SUPR nexiste pas sur les clavier Apple :)

71

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

19. Une fois sur le bureau (de lAdministrateur), aller dans le menu Periphrique (Device) de la VM en cours dexecution et choisir Installer les Additions Invit... HOST+D. Un prompt dinstallation devrait apparatre (sorte de CD-ROM Autoplay) puis suivre les instructions dinstallation lcran. 20. Changer lapparance de Windows en Windows Classique ce qui est moins gourmand en ressource. 21. Une fois terminer, logoff et faire un instantan (snapshot) de la machine en cours dexcution. 22. teindre la VM puis aller dans les prfrence. 23. Crer un Repertoire partag pour permettre lchange de donne entre lhte et la VM. Dans mon cas je partage un repertoire Document/WinXP avec le nom de partage vmwinxp. 24. Tlcharger depuis le site Intel le pilote pour la carte rseau Intel PRO/1000 MT Desktop et le sauvegarder dans Document/WinXP. 25. Dmarrer la VM 26. Une fois sur le bureau (de lutilisateur par dfaut), changer lapparence en Windows Classique. (Prcedement ctait fait pour Adminsitrator et non lutilisateur par dfaut). 27. Logoff, et connecter en tant quAdministrator (voir point 19.) 28. Une fois sur le bureau, Start > Run > cmd (pour ouvrir un fentre de commande) et taper :
cmd> net use z: \\vboxsrv\vmwinxp

Ceci va monter notre partage cr prcedement en tant que disque lecteur Z: dans lexplorateur de chier. 29. Ouvrir Z: et executer linstallation du pilote de carte rseau Intel prcdement tlcharg.
Note : Il est plus que conseiller, avant dexcuter linstallation, de copier lexcutable dans un emplacement local tel que MyDocuments car la connexion de partage semble parfois sinterrompre quelques secondes pouvant provoquer des erreurs dinstallation.

30. Rdmarrer la VM, tester laccs au rseau et crer un point de restauration. 31. Logoff et faire un instantan (snapshot) de la machine en cours dexcution. 32. Depuis lhte ou la VM, tlcharger le Service Pack 2 puis linstaller dans la VM en tant quAdminsitrator. 33. Une fois fait, vrier dans le gestionnaire de priphrique que tous les priphriques sont installs correctement. Si le priphrique "PCI\VEN_8086&DEV_265..." apparat comme pas install correctement, teindre la machine, desactiver lUSB dans les prfrences, redmarrer la machine, eteindre la machine, ractiver lUSB dans les prfrences, dmarrer la machine et re-installer les Additions Invit en tant quAdministrator (voir point 19. et 20 ci-dessus). Si cela ne fonctionne pas, r-installer le pilote manquant en autorisant Windows le chercher sur le site des Windows Update. Cette tape peut mme tre sufsante.

72

Chapitre 6. UI003 Environnement de travail - Installation dune distribution 34. Pour tout autre priphrique inconnu, il faut installer les pilotes correspondant. Les logiciels tel que EVEREST peuvent aider identier les priphrique plus prcisment que Windows ne le fait :) 35. Re-dmarrer la VM et crer un nouveau point de restauration. 36. Logoff et faire un instantan (snapshot) de la machine en cours dexecution. 37. Depuis lhte ou la VM, tlcharger le Service Pack 3 puis linstaller dans la VM en tant quAdminsitrator. 38. Redmarrer la VM 39. Installer TOUTES les mises jour de Windows disponible, ce qui va installer Internet Explorer 8 au passage :) Plusieurs tape et redmarrage ncessaire...
Note : Ceci provoque un retour des freeze intermittant de la VM, pas de panique on va les enlever (voir point 43.)

40. Re-dmarrer la VM et crer un nouveau point de restauration. 41. Logoff et faire un instantan (snapshot) de la machine en cours dexcution. 42. teindre la VM 43. Dans les prfrences de la VM (Paramtre de conguration) ajouter le ltre USB clavier/touchpad (Apple Inc. Apple Internal keyboard/trackpad [0081]), puis dmarrer la VM
Note : Les freezes intermittants ont disparu :)

6.4.5. Sauvegarde/Restauration (.vdi)


Source(s):

Web: How do I backup/restore my VDIs - Hands-On (http://forums.virtualbox.org/viewtopic.php?f=9&t=14783)

6.4.6. VirtualBox Conguration Linux Avanc (TAP address)


Source(s):

Web: Advanced Network settings for Linux (http://www.virtualbox.org/wiki/Advanced_Networking_Linux)

73

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

6.4.7. Comment accder via ssh a une machine virtuelle (Virtualbox)


Source(s):

Web: Howto Access via ssh a Virtualbox Guest machine (http://mydebian.blogdns.org/?p=148)

6.4.8. Rsoudre VM Windows XP Pro Freeze


Freeze intermittant de la VM Windows XP Pro sur Ubuntu 9.10 sur MacBook Pro 5,5 Solution1 :

...xed it by disabling ACPI, inserting the WinXP CD and doing a "repair installation". Sometimes it boots fast, sometimes slow, but at least the freezes are gone if Windows is up.

Right now Im only saving the machine state, so Windows has not to be shutdown and I dont have to wait too long when booting it again :-) But still this is not satisfying, UNIX / Linux will not shutdown properly without ACPI and Windows boots slower. http://forums.virtualbox.org/viewtopic.php?t=11206

La solution 1 a fonctionner pour la suite dune fraiche installation de Win XP Pro. La solution 2 ci-dessous aurait peut-tre t tout aussi efcace et est peut-tre prfrable. Solution2 : Suite linstallation du Service Pack3 + Mise jour, le problme de freeze par intermittance est revenue :( Il a t rsolut facilement en ajoutant le clavier/touchpad (Apple Inc. Apple Internal keyboard/trackpad [0081]) comme ltre USB dans les prfrences de la machine virtuelle. Changer larchitecture IDE nest effectivement pas une solution puisque cela nit en cran bleu !

74

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

6.4.9. Re-dimensionner un disque de machine virutelle (VirtualBox)


Source: How to resize a VirtualBox disk partition (http://www.my-guides.net/en/content/view/122/26/)

Avertissement
Je tiens prciser que cette mthode na pas fonctionner pour moi :((

Cest trs certainement du larchitecture 64bits de lhte. Mais je ne saurais lexpliquer ou un bug dans la dernire version stable de Gparted.

En effet, une erreur apparat lors de larrt du live CD comme si gparted conserve un verrou au niveau du systme virtuel de chier (VFS) aprs avoir essayer de rendre la partition de disque copier bootable (dernires des tapes listes ci-dessous).

Au dmarrage de la VM, le secteur de boot est introuvable et le chier de VM devient corrompu

1. Crer un nouveau disque virtuel de taille adquate 2. Dans les prfrence de la machine virtuelle : - Paramtrer CD/DVD comme premier priphrique de dmarrage - Au niveau de la conguration des disques, paramtrer le nouveau disque virtuelle comme disque IDE Primary Slave. Laisser le disque virtuelle dorigine congur comme IDE Primary Master. 3. Tlcharger limage gparted-live-0.5.1-1.iso (http://gparted.sourceforge.net/download.php) de lutilitaire Gnome GParted (dernire version stable disponible lheure o ces ligne sont crites...) et la rendre disponible au sein de la machine virtuelle comme CD/DVD virtuel. 4. La rendre disponible au sein de la machine virtuelle comme CD/DVD virtuel. 5. Dmarrer la machine virtuelle. Elle devrait dmarrer sur le CD GParted. 6. Dmarrer Gparted en Safe Mode les autres options ne semble pas fonctionner. 7. Dans GParted, selectionner le disque master (/dev/hda) et cliquer (avec le bouton droit de la souris) sur la partition systme. Dans le menu contextuel, choisir Copier. 8. Slectionner ensuite le disque slave (/dev/hdc). Clique dans le menu Device > Create Partition Table... attendre quelques secondes puis cliquer (avec le bouton droit de la souris) sur la partition non alloue. Dans le menu contextuel, choisir Coller

75

Chapitre 6. UI003 Environnement de travail - Installation dune distribution 9. Valider pour appliquer les changements. Attendre quelques minutes la n de rplication puis teindre la machine virtuelle. 10. Cliquer droit sur la partition sytme rcemment coller sur la disque puis Manage Flags > Check boot. 11. Dans les prfrences de la machine virtuelle supprimer le disque virtuel master existant et le remplacer par le disque virtuel secondaire. 12. Redmarrer la VM.

6.4.10. Utilitaires pratique (Sysprep, NewSID, BGInfo, HVRemote) pour la gestion des VMs Windows
Source(s):

Web: Sysprep (Wikipedia) (http://fr.wikipedia.org/wiki/Sysprep) Utiliser loutil Sysprep.exe pour automatiser le dploiement de Windows XP (http://support.microsoft.com/kb/302577/fr) Sysprep : un outil pour le clonage (http://www.laboratoire-microsoft.org/articles/network/sysprep/) Faire un Sysprep avec la version 2.0 (http://www.laboratoire-microsoft.org/articles/win/sysprep2/) HVRemote, NewSID, BGInfo, . . . (http://www.hyperv.fr/blog/tag/newsid) Windows Sysinternals (http://technet.microsoft.com/fr-fr/sysinternals/default.aspx) Windows Sysinternals Index (http://technet.microsoft.com/en-us/sysinternals/bb545027.aspx) Windows Sysinternals Suite (http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx) Miscellaneous > BGInfo (http://technet.microsoft.com/en-us/sysinternals/bb897557.aspx) The Microsoft policy concerning disk duplication of Windows XP installations (http://support.microsoft.com/default.aspx?scid=kb;EN-US;314828) Utilitaire Scurit > NewSID v4.10 (FR) (http://technet.microsoft.com/fr-fr/sysinternals/bb897418.aspx) Utilitaire Scurit > NewSID v4.10 (US) (http://technet.microsoft.com/en-us/sysinternals/bb897418.aspx) NewSID Retirement and the Machine SID Duplication Myth (http://blogs.technet.com/markrussinovich/archive/2009/11/03/3291024.aspx) Le mythe du SID sur Windows (http://oliviernguyen.blogspot.com/2009/12/le-mythe-du-sid-sur-windows.html) Sysprep, Machine SIDs and Other Myths (http://blogs.technet.com/deploymentguys/archive/2009/12/03/sysprep-machine-sids-and-othermyths.aspx)

Avertissement
Pour dupliquer un machine Windows, prfrer la mthode Sysprep car NewSID ne procdent pas tous les changements requis pour un clonage (cf. liens article ci-avant)

Lorsque lon est amen travailler sur des environnements divers et varis, il est souvent intressant davoir sous la main les utilitaires pratiques ou ceux que lon utilise frquemment.

76

Chapitre 6. UI003 Environnement de travail - Installation dune distribution Windows Sysinternals > BGInfo : permet dafcher en fond dcran un trs grand nombre de caractristiques dun ordinateur (Nom DNS, Adresses IP, RAM, Espace disque disponible, etc . . . ). Avis donc aux utilisateurs de multiple machines virtuelles qui ont parfois du mal sy retrouver parmi celles-ci ;) HVRemote : Un script cr par John Howard, chef de projet dans lquipe Hyper-V de Microsoft, qui permet de congurer rapidement les systmes dexploitation Windows Vista SP1 pour que ceux-ci puissent utiliser les outils dadministration dHyper-V. Windows Sysinternals > NewSID : Utilitaire trs connu des administrateurs systmes qui permet la gnration de nouveaux identiants uniques de scurit (SID) sur les environnements Microsoft, utile lorsque lon a cloner des machines virtuelles non sysprepes mais pas conseill car cela peut provoquer certains problmes (WSUS, communication rseau, etc...).

6.5. Autres Logiciels


6.5.1. xournal, claws-mail, refox, emacs, skype
2.x installation of additional software via apt-get - xournal - firefox - emacs (voir chapitre TP Shell plus loin) 2.y Installation de Claws-Mail $ sudo apt-get install claws-mail claws-mail-plugins claws-mail-extra-plugins Configuration ? To come... :)) 2.z Installation de Skype

6.5.2. Installer Google Chrome (Chromium) sous Ubuntu


Source(s):

Web: Installer Google Chrome (Chromium) sous Ubuntu (http://www.tux-planet.fr/installer-google-chrome-sous-ubuntu/)

77

Chapitre 6. UI003 Environnement de travail - Installation dune distribution "... installer sous Ubuntu Google Chrome, ou plutt Chromium, la version Open Source du navigateur made in Google... Chromium offre lavantage de ne pas intgrer les diffrents outils de tracking de Google..."

$ sudo add-apt-repository ppa:chromium-daily ... Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /et gpg: requte de la cl 4E5E17B5 du serveur hkp keyserver.ubuntu.com gpg: cl 4E5E17B5: cl publique Launchpad PPA for chromium-daily importe gpg: aucune cl de confiance ultime na t trouve gpg: Quantit totale traite: 1 gpg: importe: 1 (RSA: 1) $ sudo apt-get update Atteint http://ppa.launchpad.net karmic Release.gpg Ign http://ppa.launchpad.net karmic/main Translation-fr Atteint http://archive.ubuntu.com karmic Release.gpg Atteint http://ppa.launchpad.net karmic Release.gpg Ign http://ppa.launchpad.net karmic/main Translation-fr Rception de : 1 http://ppa.launchpad.net karmic Release.gpg [307B] Ign http://ppa.launchpad.net karmic/main Translation-fr Atteint http://ppa.launchpad.net karmic Release Rception de : 2 http://archive.ubuntu.com karmic/main Translation-fr [427kB] Atteint http://download.virtualbox.org karmic Release.gpg Ign http://download.virtualbox.org karmic/non-free Translation-fr Atteint http://ppa.launchpad.net karmic Release Atteint http://download.virtualbox.org karmic Release Rception de : 3 http://ppa.launchpad.net karmic Release [66,0kB] Atteint http://download.virtualbox.org karmic/non-free Packages Atteint http://ppa.launchpad.net karmic/main Packages Atteint http://ppa.launchpad.net karmic/main Sources Atteint http://ppa.launchpad.net karmic/main Packages Atteint http://ppa.launchpad.net karmic/main Sources Rception de : 4 http://ppa.launchpad.net karmic/main Packages [3 439B] Rception de : 5 http://archive.ubuntu.com karmic/restricted Translation-fr [3 850B] Rception de : 6 http://archive.ubuntu.com karmic/universe Translation-fr [675kB] Rception de : 7 http://archive.ubuntu.com karmic/multiverse Translation-fr [72,5kB] Rception de : 8 http://archive.ubuntu.com karmic-updates Release.gpg [189B] Ign http://archive.ubuntu.com karmic-updates/main Translation-fr Ign http://archive.ubuntu.com karmic-updates/restricted Translation-fr Ign http://archive.ubuntu.com karmic-updates/universe Translation-fr Ign http://archive.ubuntu.com karmic-updates/multiverse Translation-fr Rception de : 9 http://archive.ubuntu.com karmic-security Release.gpg [189B] Ign http://archive.ubuntu.com karmic-security/main Translation-fr Ign http://archive.ubuntu.com karmic-security/restricted Translation-fr Ign http://archive.ubuntu.com karmic-security/universe Translation-fr Ign http://archive.ubuntu.com karmic-security/multiverse Translation-fr Atteint http://archive.ubuntu.com karmic Release Rception de : 10 http://archive.ubuntu.com karmic-updates Release [44,1kB] Rception de : 11 http://archive.ubuntu.com karmic-security Release [44,1kB] Atteint http://archive.ubuntu.com karmic/main Packages Atteint http://archive.ubuntu.com karmic/restricted Packages Atteint http://archive.ubuntu.com karmic/main Sources

78

Chapitre 6. UI003 Environnement de travail - Installation dune distribution


Atteint http://archive.ubuntu.com karmic/restricted Sources Atteint http://archive.ubuntu.com karmic/universe Packages Atteint http://archive.ubuntu.com karmic/universe Sources Atteint http://archive.ubuntu.com karmic/multiverse Packages Atteint http://archive.ubuntu.com karmic/multiverse Sources Rception de : 12 http://archive.ubuntu.com karmic-updates/main Packages [167kB] Rception de : 13 http://archive.ubuntu.com karmic-updates/restricted Packages [14B] Rception de : 14 http://archive.ubuntu.com karmic-updates/main Sources [51,2kB] Rception de : 15 http://archive.ubuntu.com karmic-updates/restricted Sources [14B] Rception de : 16 http://archive.ubuntu.com karmic-updates/universe Packages [99,3kB] Rception de : 17 http://archive.ubuntu.com karmic-updates/universe Sources [25,0kB] Rception de : 18 http://archive.ubuntu.com karmic-updates/multiverse Packages [6 844B] Rception de : 19 http://archive.ubuntu.com karmic-updates/multiverse Sources [3 820B] Rception de : 20 http://archive.ubuntu.com karmic-security/main Packages [64,8kB] Rception de : 21 http://archive.ubuntu.com karmic-security/restricted Packages [14B] Rception de : 22 http://archive.ubuntu.com karmic-security/main Sources [20,4kB] Rception de : 23 http://archive.ubuntu.com karmic-security/restricted Sources [14B] Rception de : 24 http://archive.ubuntu.com karmic-security/universe Packages [30,4kB] Rception de : 25 http://archive.ubuntu.com karmic-security/universe Sources [5 663B] Rception de : 26 http://archive.ubuntu.com karmic-security/multiverse Packages [1 519B] Rception de : 27 http://archive.ubuntu.com karmic-security/multiverse Sources [577B] 1 812ko rceptionns en 42s (42,7ko/s) Lecture des listes de paquets... Fait

$ sudo apt-get install chromium-browser ... Lecture des listes de paquets... Fait Construction de larbre des dpendances Lecture des informations dtat... Fait Les paquets suivants ont t installs automatiquement et ne sont plus ncessaires : linux-backports-modules-alsa-2.6.31-15-generic calendar-timezones Veuillez utiliser apt-get autoremove pour les supprimer. Les paquets supplmentaires suivants seront installs : chromium-browser-inspector chromium-codecs-ffmpeg Paquets suggrs : chromium-browser-l10n Les NOUVEAUX paquets suivants seront installs : chromium-browser chromium-browser-inspector chromium-codecs-ffmpeg 0 mis jour, 3 nouvellement installs, 0 enlever et 1 non mis jour. 1 partiellement installs ou enlevs. Il est ncessaire de prendre 12,6Mo dans les archives. Aprs cette opration, 44,0Mo despace disque supplmentaires seront utiliss. Souhaitez-vous continuer [O/n] ? O Rception de : 1 http://ppa.launchpad.net karmic/main chromium-browser 5.0.330.0~svn20100216 Rception de : 2 http://ppa.launchpad.net karmic/main chromium-browser-inspector 5.0.330.0~s Rception de : 3 http://ppa.launchpad.net karmic/main chromium-codecs-ffmpeg 0.5+svn20100202 12,6Mo rceptionns en 3min 0s (69,7ko/s) d pkSlection du paquet chromium-browser prcdemment dslectionn. (Lecture de la base de donnes... 240724 fichiers et rpertoires dj installs.) Dpaquetage de chromium-browser ( partir de .../chromium-browser_5.0.330.0~svn20100216r3907 Slection du paquet chromium-browser-inspector prcdemment dslectionn. Dpaquetage de chromium-browser-inspector ( partir de .../chromium-browser-inspector_5.0.33 Slection du paquet chromium-codecs-ffmpeg prcdemment dslectionn.

79

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

Dpaquetage de chromium-codecs-ffmpeg ( partir de .../chromium-codecs-ffmpeg_0.5+svn2010020 Traitement des actions diffres ( triggers ) pour desktop-file-utils ... Traitement des actions diffres ( triggers ) pour hicolor-icon-theme ... Traitement des actions diffres ( triggers ) pour man-db ... Paramtrage de slapd (2.4.18-0ubuntu1) ... Backing up /etc/ldap/slapd.d/ in /var/backups/slapd-2.4.18-0ubuntu1... done. Starting OpenLDAP: slapd.

Paramtrage de chromium-browser (5.0.330.0~svn20100216r39077-0ubuntu2~ucd1~karmic) ... update-alternatives: utilisation de /usr/bin/chromium-browser pour fournir /usr/bin/x-

Paramtrage de chromium-browser-inspector (5.0.330.0~svn20100216r39077-0ubuntu2~ucd1~karmic) Paramtrage de chromium-codecs-ffmpeg (0.5+svn20100202r37783+36953+37593-0ubuntu1~ucd1~karmi Traitement des actions diffres ( triggers ) pour libc-bin ... ldconfig deferred processing now taking place /sbin/ldconfig.real: /usr/lib32/libstdc++.so.5 nest pas un lien symbolique $ sudo apt-get install adobe-flashplugin ## Skipped car dj fait pour Firefox

$ sudo ln -s /etc/alternatives/mozilla-flashplugin \ /usr/lib/chromium-browser/plugins/flashplugin.so $ chromium-browser --enable-plugins

## Pour dmarrer Chromium ALT+F2 # puis $ chromium-browser

6.5.3. X-lite installation for Ubuntu 9.10 _amd64


Source(s):

Web: X-Lite (http://www.counterpath.com/x-lite.html) Protocole SIP: VoIP : Le protocole sip

Mon script dinstallation : ./x-lite/install.sh (docs/sys01-ch03-xlite-install-sh.txt) + README.txt (docs/sys01-ch03-xlite-README.txt) :))

80

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

6.5.4. Qutecom installation (en remplacement de X-Lite)


Source(s):

Web: QuteCom (http://qutecom.org/) Protocole SIP: VoIP : Le protocole sip

$ sudo apt-get install qutecom # puis Applications > Internet > QuteCom # ==> Application crash peu de temps apres demarrage !!! # Cest un bug sur Ubuntu 9.10 Amd 64 confirm # par cerapport de bug (https://bugs.launchpad.net/ubuntu/+source/qutecom/+bug/451048)) # $ # $ Solution pour demarrer lapplication utiliser : qutecom -style plastique au lieu de qutecom

# Jai creer un launcher personaliser dans le panel gnome du bureau avec la commande : usr/bin/qutecom -style plastique (sans le usr/bin/ cela ne marche pas) # En cas de probleme faire un : $ killall qutecom # Puis re-essayer...

6.5.5. Twinkle installation (en remplacement de QuteCom) SIP Softphone


Source(s):

Web: Twinkle - SIP softphone for Linux (http://www.xs4all.nl/~mfnboer/twinkle) Protocole SIP: VoIP : Le protocole sip

$ sudo apt-get install twinkle

81

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

6.5.6. NetBeans (IDE) installation


Source(s):

Web: NetBeans Downloads (http://netbeans.org/downloads)

Je choisi linstallation pour coder en PHP seulement (dans un premier temps) :

$ wget http://www.mirrorservice.org/sites/download.netbeans.org/6.8/bundles/netbeans-6.8-ml$ chmod +x netbeans-6.8-ml-php-linux.sh $ sudo ./netbeans-6.8-ml-php-linux.sh # ==> Erreur! Linstallation requiert la presence de Java6 JDK # Donc je linstalle... $ sudo apt-get install sun-java6-jdk # ==> Jaccepte la licence (pas le choix!) # Puis je retente linstallation $ sudo ./netbeans-6.8-ml-php-linux.sh # Linstalleur (Wizard) Netbeans souvre alors en mode graphique... # Install Netbean IDE to # /usr/local/netbeans-6.8 # Le logiciel sinstalle :) # Une fois complete je demarre :) $ bin/sh "/usr/local/netbeans-6.8/bin/netbeans"

6.5.7. xmlcopyeditor installation


Sous Ubuntu 9.10 64bits il semble que la compilation depuis les sources simpose... A voir plus tard... Voir aussi la section ddi aux diteurs XML.

82

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

6.6. Dsactiver lIPv6 sur Ubuntu 9.10


Source: Linux Ubuntu desactiver le support ipv6 (http://www.commentcamarche.net/faq/7032-linux-ubuntu-desactiver-le-support-ipv6) Avant deffectuer cette manipulation, assurez-vous davoir bien compris le pourquoi du comment en lisant cet article : Desactiver ipv6 permet dacclrer les connexions Internet (http://www.commentcamarche.net/faq/sujet-7030-desactiver-ipv6-permet-d-accelerer-les-connexionsinternet) Pour dsactiver le support IPv6 dans Ubuntu, il existe deux solutions.

6.6.1. Mthode 1: diter /etc/modprobe.d/blacklist


ditez le chier /etc/modprobe.d/blacklist :
$ gksu gedit /etc/modprobe.d/blacklist.conf

Ajoutez la n de ce chier la ligne :


blacklist ipv6

puis redmarrez votre systme.

6.6.2. Mthode 2: via GRUB


Pour Ubuntu 9.10, IPv6 peux tre desactiv par le grub :
$ gksu gedit /etc/default/grub

Changer cette ligne


GRUB_CMDLINE_LINUX_DEFAULT=quiet splash

en
GRUB_CMDLINE_LINUX_DEFAULT=ipv6.disable=1 quiet splash

Puis , mettre a jour grub :


$ sudo update-grub

83

Chapitre 6. UI003 Environnement de travail - Installation dune distribution

puis redmarrez votre systme.

6.6.3. Comment sassurer que IPv6 est dsactiv ?


Pour vous assurer que IPv6 est dsactiv, tapez dans un terminal :
$ ip a | grep inet6

Si cette commande ne retourne aucune ligne, cest que IPv6 est bien dsactiv.

6.7. Debian Live sur une clef USB


Source(s):

Web: Debian version Live ! (http://live.debian.net) DebianLive Howto USB (http://wiki.debian.org/DebianLive/Howto/USB) DebianLive FirstStepsUSB (http://wiki.debian.org/DebianLive/FirstStepsUSB)

Les images (.img) des versions Debian Live pour clef USB sont disponibles http://cdimage.debian.org/cdimage/release/current-live/i386/usb-hdd. Ma clef USB est identie sur mon systme GNU/Linux comme tant le priphrique /dev/sdc. Utiliser Disk Utilisty ou gparted pour identier votre clef avec une rfrence systme (/dev/sdb, /dev/sdc, etc...).
Important : Lopration dd ci-dessous :

- efface compltement les donnes existante sur le priphrique de destination (ici /dev/sdc) et d - rend la clef illisible sous Windows priori !

$ cd /tmp $ wget http://cdimage.debian.org/cdimage/release/current-live/i386/usb-hdd/debian-live-504-i $ sudo dd if=debian-live-504-i386-lxde-desktop.img of=/dev/sdc # Ici /dev/sdc est la rfr # addapter pour correspon # Ensuite tre trs patient et attendre le retour automatique au prompt !!!

84

Chapitre 6. UI003 Environnement de travail - Installation dune distribution


# Le transfert peut prendre plusieurs minutes.

Note : Limage contient par dfaut deux partitions une pour le systme, une autre non formatte pour les donnes ventuellement. L encore gparted ou Disk Utility peuvent tre utilis en mode graphique pour formatter la partition de donnes. Pour ma part jai format en FAT32 pour rester totalement compatible avec Windows.

Puis il suft de dmarrer un ordinateur depuis la clef USB nouvellement r-initialise. Et voil :)

85

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


Source(s):

Doc: Man Pages (http://man-wiki.net/index.php/Main_Page#Man_Page_Sections) Unix Guru Universe : Beginers start here (http://www.ugu.com/sui/ugu/show?I=help.beginners) http://www.linuxguruz.com Cours-Linux (http://www.generation-linux.fr/index.php?category/Cours-Linux) FAQ: BASH Scripting FAQ (http://splike.com/wiki/Bash_Scripting_FAQ) Examples: http://sleepyhead.de/howto/?href=scripting Commande line Fu (http://www.commandlinefu.com/commands/browse)

7.1. SYS01: Systme de chier HFS


Sources: Sys01-sgf.pdf from EOF http://pathname.com/fhs/pub/fhs-2.3.html http://fr.wikipedia.org/wiki/Linux_Standard_Base

Filesystem Hierarchy Standard ( norme de la hirarchie des systmes de fichiers , abrg en FHS) dfinit larborescence et le contenu des principaux rpertoires des systmes de fichiers des systmes dexploitation GNU/Linux et de la plupart des systmes Uni La version actuelle est la 2.3, publie en janvier 2004.

Ca fait partie de la Linux Standard Base (abrviation : LSB) est un projet joint par nombre distributions Linux sous la structure organisationnelle du Free Standards Group afin de concevoir et standardiser la structure interne des systmes dexploitation bass sur GNU/Lin La LSB est base sur les spcifications POSIX, la spcification unique dUNIX , ainsi que sur dautres nombreux standards ouverts, mais ltend dans certains domaines. Daprs eux :

Le but du LSB est de dvelopper et promouvoir un ensemble de standards qui augmenteron la compatibilit entre les diffrentes distributions Linux et permettront aux applications d sexcuter sur nimporte quel systme conforme au LSB. De plus, la LSB aidera coordonner l efforts des vendeurs de logiciels pour porter et raliser des produits pour Linux. La conformit la LSB pour un produit doit tre certifi par une procdure. La ralisation cette dernire appartient lOpen Group en coopration avec le Free Standards Group. La LSB spcifie par exemple : * un ensemble de bibliothques standards,

86

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


* * * * un nombre de commandes et dutilitaires qui tendent le standard POSIX, la structure de la hirarchie du systme de fichiers, les diffrents run levels, et plusieurs extensions X Window System.

ya-t-il une diffrence entre /bin, /sbin, /usr/bin, et /usr/sbin ? (le tableau et la suite y rpondent mais jai tout de mme du mal voir la diffrence entre "Commandes binaires essentielles" et "Binaires systmes essentiels" il y a une diffrence entre chacun des dossiers que tu cites. /bin, Essential user command binaries (for use by all users) ce sont des commandes essentielles au dmarrage, mais pas li un usage avec des droits spcifiques, comme ceux de root. Contains commands that may be used by both the system administrator and by users, but which are required when no other filesystems are mounted (e.g. in single user mode). It may also contain commands which are used indirectly by scripts. There must be no subdirectories in /bin.

/sbin (System binaries), cest essentiel au dmarrage, mais ce sont des commandes qui ncessitent des droits privilgis. Comme ifconfig ou iptables. Par exemple, si tu tapes "/sbin/iptables -L" sans tre root, il va tenvoyer pter. Utilities used for system administration (and other root-only commands) are stored in /sbin, /usr/sbin, and /usr/local/sbin. /sbin contains binaries essential for booting, restoring, recovering, and/or repairing the system in addition to the binaries in /bin. [18] Programs executed after /usr is known to be mounted (when there are no problems) are generally placed into /usr/sbin. Locally-installed system administration programs should be placed into /usr/local/sbin.

/usr is the second major section of the filesystem. /usr is shareable, read-only data. That means that /usr should be shareable between various FHS-compliant hosts and must not be written to. Any information that is host-specific or varies with time is stored elsewhere Large software packages must not use a direct subdirectory under the /usr hierarchy. Cest une arborescence secondaire, un second file system. Il peut tre mont, cest dire spar au dmarrage et les binaires sont non essentiels au dmarrage, cest dire avant le montage des disques. En gros, si tu bootes sur un linux single (mode o aucune partition nest monte et o les applis ne sont pas dmarres), il vaudra mieux pour toi que tu aies tes applis essentielles, alors que tu nas rien cirer de ce qui nest pas l... Mais aussi /usr/local/bin, /usr/local/sbin et aussi ~/bin dans /usr/local on peut mettre des applications qui ne sont pas (ou mal)

87

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


gres par le systme de paquet, a permet de sauvegarder/restaurer une arborescence indpendante. Pour le ~/bin, a permet dinstaller une application quand on est pas root, ou de raliser des tests sans risquer de vroler toute la machine. AM ps : Le ~ correspond au $HOME, cest dire par dfaut /home/foo pour le compte foo Il faut aussi savoir que les distributions (au moins majeures) suivent un standard pour tre daccord sur ce quelles font (le nom spcifique du standard mchappe la minute). LSB ? http://fr.wikipedia.org/wiki/Linux_Standard_Base Tu peux faire ce que tu veux, mais tous les acteurs vont se baser sur le FHS. Par exemple, tu pourrais trs bien avoir /etc sous un rpertoire /config, mais tous les softs que tu installent iraient sous /etc. On est libre de tout faire, mais aprs, faut tout grer :) > > > > > Autre question, qui est peut tre hors sujet, jai constat que le dossier /opt ntait que peu (voire pas du tout, en ce qui me concerne, sur ma machine personnelle, ni sur mes trois serveurs) utilis sur Debian. Je minterrogeais l dessus aussi, parce que je trouve quau niveau organisationnel, ce dossier est intressant.

Perso, je ne men sers pas, je me suis toujours servi de /usr/local. Par contre, sur des unices que jai administr, jai vu des gens se servir de /opt. L, cest franchement une question de got...

The /etc hierarchy contains configuration files. A "configuration file" is a local file used to control the operation of a program; it must be static and cannot be an executable binary. No binaries may be located under /etc. /lib : Essential shared libraries and kernel modules The directory contains those shared library images needed to boot the system and run the commands in the root filesystem, ie. by binaries in /bin and /sbin. [12] /lib/modules/ Directory for Loadable kernel modules (optional) /lib<qual> : Alternate format essential shared libraries (optional) There may be one or more variants of the /lib directory on systems which support more than one binary format requiring separate libraries. This is commonly used for 64-bit or 32-bit support on systems which support multiple binary formats, but require libraries of the same name. In this case, /lib32 and /lib64 might be the library directories, and /lib a symlink to one of them.

88

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

/media : Mount point for removeable media Purpose This directory contains subdirectories which are used as mount points for removeable media such as floppy disks, cdroms and zip disks. Tip Rationale Historically there have been a number of other different places used to mount removeable media such as /cdrom, /mnt or /mnt/cdrom. Placing the mount points for all removeable media directly in the root directory would potentially result in a large number of extra directori in /. Although the use of subdirectories in /mnt as a mount point has recently been common, conflicts with a much older tradition of using /mnt directly as a temporary mount point. Specific Options The following directories, or symbolic links to directories, must be in /media, if the corresponding subsystem is installed: Directory Description floppy Floppy drive (optional) cdrom CD-ROM drive (optional) cdrecorder CD writer (optional) zip Zip drive (optional) On systems where more than one device exists for mounting a certain type of media, mount directories can be created by appending a digit to the name of those available above starting with 0, but the unqualified name must also exist. [16] A compliant implementation with two CDROM drives might have /media/cdrom0 and /media/cdrom1 with /media/cdrom a symlink to either of these.

File System Commands mkfs (MaKe File System) formater une partition mkfs -t ext3 /dev/sda3 [format partition sda3 avec le format de fichier ext] Il faut dterminer quel systme de fichiers (filesystem) on souhaite utiliser (vfat, ext3, x man mkfs donne la liste des systmes de fichiers supports et disponible sur le system mount monter (ajouter ou insrer) un volume format mount /dev/sda3 /mnt/sda3 umount dmonter (enlever) un volume format umount /mnt/sda3 mkdir (MaKe DIRectory) creer un repertoire mkdir /mnt/sda3 Les priphriques externes (disques, cl, CDROM. . .) se montent et se dmontent de la mme Il est toujours conseill de dmonter proprement un priphrique mont en lecture/criture afin dviter

89

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

de perdre des donnes. En effet, Linux utilise un systme de cache. Le fait de dmonter un p permet de sassurer que les donnes contenues dans le cache sont bien crites sur le disque. Certains systmes de fichiers, comme Vfat ne synchronisent les donnes que lors du dmontage, dans ce cas, il est primordial deffectuer lopration. Notez aussi que pour dmonter un priphrique, aucun processus ne doit plus l utiliser. Si le dmontage vous est refus cest gnralement parce quun processus utilise encore le priphrique, ou plus simplement que vous vous trouvez dans le rpertoire.

FSTAB Le systme comporte une table des volumes quil doit monter automatiquement au dmarrage. Cette table est dcrite dans le fichier /etc/fstab. Si vous souhaitez que le volume /dev/sda soit mont automatiquement lors du dmarrage, il faudra ajouter une ligne dans ce fichier concernant le volume qui pourrait tre du type : /dev/sda3 /mnt/sda3 ext3 defaults 0 0 FSTAB du Host Ubuntu: # /etc/fstab: static file system information. # # Use blkid -o value -s UUID to print the universally unique identifier # for a device; this may be used with UUID= as a more robust way to name # devices that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 # / was on /dev/sda4 during installation UUID=d1af4bfa-301c-471d-850f-3f156773a4ce / ext4 errors=remount-ro 0 # swap was on /dev/sda5 during installation UUID=fc73e057-5016-468f-b8eb-818130c258e9 none swap sw 0 /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0 FSTAB de la VM Debian: # /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> proc /proc proc defaults 0 /dev/hda1 / ext3 errors=remount-ro 0 /dev/hda5 none swap sw 0 /dev/hdc /media/cdrom0 udf,iso9660 user,noauto,exec /dev/fd0 /media/floppy0 auto rw,user,noauto 0 vmdebian /mnt/filosteneUbuntu vboxsf rw,uid=1000 0 0

<pass> 0 1 0 0 0

90

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.2. SYS01: Base


7.2.1. Processus
Source(s):

OF: SYS01-ch05-processus.pdf (docs/eof/sys01-ch05-processus.pdf)

Se refferer au Dictionnaire de Commande que jai cr... Pour chaque commande vous pouvez utiliser laide des manuels avec la commande man.

7.2.2. Commande de base sous Linux


Source(s):

OF: SR001-sys01-ch07-commandes-shell.pdf (docs/eof/sr001-sys01-ch07-commandes-shell.pdf) COAGUL.ORG: Rappel des commandes importantes (chmod, ln, passwd, pipe, etc...) (http://www.coagul.org/spip.php?article243) Rfrence: Command line reference for common operations (http://www.pixelbeat.org/cmdline.html) The Linux Cookbook: Tips and Techniques for Everyday Use (http://dsl.org/cookbook/cookbook_toc.html)

7.2.2.1. chown, chmod, chgrp


Web : chown, chgrp (http://www.tuxles.org/linuxhelp/leowner.html)

7.2.2.2. grep
Cette commande recherche dans les chiers ou sur son entre standard des lignes de texte qui satisfont lexpression rationnelle (ou rgulire, regexp) indique. Sa sortie peut tre redirige dans un chier. Syntaxe:
$ grep [options] expreg [fichiers]

91

Chapitre 7. SR001 Commandes GNU/Linux (Shell) Options:


-c donne seulement le nombre de lignes trouves obissant au critre -l donne seulement le nom des chiers o le critre a t trouv -v donne les lignes o le critre na pas t trouv -i ne pas tenir compte de la casse (ne pas diffrencier majuscules minuscules) -n pour nafcher que les numros des lignes trouves -w pour imposer que le motif corresponde un mot entier dune ligne

Constructions: grep est souvent inclus dans un tube qui lui fournit en entre le chier tudier. Exemple:
$ cat /etc/passwd | cut -d: -f1 | grep -w "jean" > sortie

7.2.2.3. ps
desctription

ps affiche la liste des processus en cours dexcution. Cest une commande qui se passe des les options. Voir aussi les commandes pstree et pstree.x11 qui donnent une reprsentation processus. ps fx | grep pts/7 1 25262 pts/7 Ss 0:00 \_ /bin/bash 2 25276 pts/7 S 0:00 \_ ksh 3 3 http://www.pool.ntp.org/ Module sys02 - Programmation shell/systme 25278 pts/7 4 25314 pts/7 5 25315 pts/7 6 S+ 0:00 \_ grep pts/7 R+ 0:00 \_ ps fx R 0:00 \_ bash

Ici on voit une console shell (bash) dans laquelle on a activ un shell ksh, dans le un shell bash et enfin dans lequel on a lanc une commande. Lexemple ne prsente pas gran nest de montrer comment les processus sont affilis un processus parent. Arrter le pro arrter tous les processus enfants.

92

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.2.2.4. kill & killall

kill permet denvoyer un signal un processus identifi par son numro de processus (PID). commande ps). ps u 1 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 2 mlx 6607 0.0 0.1 4688 2096 pts/0 Ss Aug22 0:00 /bin/bash 3 # Arrter le processus N 6607 4 kill -9 6607 5 # Donne la liste des signaux 6 kill -l 7 On peut samuser avec les signaux. Crer un script foo.sh dans /tmp contenant le code while [ 1 == 1 ]; do 1 sleep 2 2 echo coucou 3 done 4 et vous le lancez. Dans une autre console, identifiez avec ps son numro de processus ps aux | grep foo 1 mlx 24792 0.0 0.0 4280 1464 pts/5 S+ 11:12 0:00 sh ./foo.sh 2 # Stopper le processus 3 kill -sigtstp 24792 4 5 # Relancer le processus 6 kill -sigcont 24792 7

7.2.2.5. ln : liens matriels (hard link) / liens symboliques (soft links)


Source(s):

Tutoriel: Liens matriels (http://fr.wikipedia.org/wiki/Lien_mat%C3%A9riel) Liens symboliques (http://fr.wikipedia.org/wiki/Lien_symbolique)

93

Chapitre 7. SR001 Commandes GNU/Linux (Shell) Les liens matriels (pointe vers les donnes dun chier) sont notemment utiles pour raliser des sauvegarde de donnes par snapshot (voir section ddie ci-aprs. Sapparente des "copie/alias" dun mme chier. Les liens symbolique (pointe vers le noms dun chier, une rfrence) sapparente des alias/raccourcis vers des noms de chiers (pas le chier lui mme).

7.2.2.6. whereis
Rechercher les chiers excutables, les sources et les pages de manuel dune commande.
$ whereis mysql mysql: /usr/bin/mysql /etc/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz

7.2.2.7. which
Localiser une commande.
$ which mysql /usr/bin/mysql $ which php5 /usr/bin/php5 # which shutdown /sbin/shutdown

7.2.3. Redirection des entres/sortie (ux)


Source(s):

Tutoriel: Redirection (entres/sorties, tube) (http://fr.wikibooks.org/wiki/Le_syst%C3%A8me_d%27exploitation_GNULinux/Redirection_des_entr%C3%A9es/sorties) I/O Redirection (http://gd.tuwien.ac.at/linuxcommand.org/lts0060.php)

Redirection entres/sorties :
$ ls >resultat_ls # Rediriger la sortie standard, fichier cras

94

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


$ ls >>resultat_ls # Concatenation, fichier complt

$ ls 1>resultat_ls # Syntaxe complte, signe prcds de ID du flux rediriger $ ls 1>>resultat_ls # 1 = sortie standard $ ls 2>erreurs_ls # Rediriger la sortie derreur standard $ ls 2>>erreurs_ls # 2 = sortie derreur standard $ cat < mon_fichier.txt $ ls 2>&1 1>stdout_stderr.txt # # # #

Rediriger lentre standard Entrer des donnes provenant dun fichier au lieu du clavie Rediriger un flux vers un autre Sortie erreur vers standard

$ ls 2>&3 1>&2 3>&1

# change des deux flux de sortie # 3 est un flux fictif intermediaire

Le pipe (un tube) :


# Redirige la sortie dune commande vers lentre dune autre commande. $ du | sort -rn # Afficher la taille des fichiers et rpertoires # tris du plus grand au plus petit $ du | sort -rn | more # Mme rsultat, mais affich page par page

$ ls -1 /usr/bin | wc -l # Connatre le nombre # de fichiers du rpertoire /usr/bin $ dmesg | grep hd | more # Connatre tous les priphriques IDE dtects # par le noyau Linux et les afficher page par page # Extraire ladresse IP de la carte rseau eth0 $ ifconfig eth0 | grep inet adr | cut -f2 -d: | cut -f1 -d 192.168.30.50

7.3. SYS01: Sauvegarde et archivage (Backup)


7.3.1. Introduction
Source(s):

Web: Backup Your System (Ubuntu) (https://help.ubuntu.com/community/BackupYourSystem)

95

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

"... Votre ordinateur, quel quen soit la marque, nest pas labri dune dcience matrielle..." "...Pour viter de navoir que vos yeux pour pleurer, il faut mettre en place des redondances de donnes, encore appeles sauvegardes. Il existe pour quantit de solutions dont:
- le systme RAID, qui repose sur des capacits matrielles, - la synchronisation, la porte de tout un chacun ou presque, - le robot de sauvegarde, rserv davantage aux entreprises quaux particuliers.

De tel systme peuvent tre combin au sein dune politique de sauvegarde.

7.3.2. Le systme RAID (sauvegarder un poste)


Source(s):

Web: Consultez lexcellent expos de Marc Falzon (http://falzon.info/work/exp_RAID/index.html)

Le RAID Redundant Array of Independent Disks est un systme bas sur la redondance matrielle gre par une couche logicielle. Il possde cinq possibilits dassociations diffrentes supples de deux proprits. Ce systme ne protge cependant pas en cas dincendie ni de vol de la machine.

7.3.3. La synchronisation (sauvegarder un poste)


Cest moyen entirement logiciel de faire une copie de scurit de vos systme. La synchronisation locale ou distante vous assure lintgrit de vos donnes et la rplication de celles-ci. Sous linux, loutil rsync qui permet aussi bien une copie locale quune copie distante, sur une couche chiffre avec un apport de compression, une gestion des droits et une utilisation en diffrents modes : backup, archive ou personnalis. Intrts majeur :

96

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


- automatisation totale de la tche laide dune crontab - nul besoin dtre root ou davoir un service ddi pour sen servir

7.3.4. rsync - synchronisation/snapshot par copie (lien matriel - hard link)


Source(s):

Tutoriels: Rsync on Ubuntu (https://help.ubuntu.com/community/rsync#grsync) Memoire JP : Rplication des donnes p.67 (http://jp.gaulier.info/cnam/inge/memoire.pdf) rsync (Ofcial) (http://samba.anu.edu.au/rsync) manuel rsync (http://everythinglinux.org/rsync/) HOWTO rsync Tips & Tricks (http://everythinglinux.org/rsync/) rsync in very brief (http://www.labo-linux.org/articles-fr/l-utilitaire-rsync/l-utilitaire-rsync) rsync sauvegarde conguration (http://www.journaldunet.com/developpeur/tutoriel/out/060104-rsync-sauvegardeconguration.shtml) Rsync on Wikipdia (http://en.wikipedia.org/wiki/Rsync) Snapshot: rsync Snapshot (http://www.backupcentral.com/components/com_mambowiki/index.php/Rsync_snapshots) Easy Automated Snapshot-Style Backups with Linux and Rsync (http://www.mikerubel.org/computers/rsync_snapshots) Create Incremental Snapshot-style Backups With rSync And SSH (http://www.howtoforge.com/rsync_incremental_snapshot_backups) rsync a Time Machine for every Unix out there (http://blog.interlinked.org/tutorials/rsync_time_machine.html) Optimal remote backups with rsync over Samba (http://users.softlab.ece.ntua.gr/~ttsiod/backup.html)

Adquate pour des (petits) chiers qui ne changent pas souvent rsync est un outil pour copier des chiers distance (ou localement) de faaon able, rapide et exible Utilisation de RSYNC :

### # Exemple pour la plublication de mon journal: # Exclusion: ne pas transfrer les documents crs par lOF (dans tout dossier eof/ ni les # Synchroniser: Effacer la destination tous les fichiers existant qui nexisterais pas ou rsync -av --del --delete-excluded --exclude=*/eof/ --filter="- *~" /mnt/hsubuntu/monjourna

## Script de sauvegarde de mon repertoire home vers disque dur externe #!/bin/bash # Proper header for a Bash script.

97

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


BIN="/usr/bin" rldate=date +"%Y-%m-%d" media="/media/Transcend" # /media/SILVERKEY16 destination="$media/filostene-$rldate.bkp" $BIN/rsync -Cavh --progress --exclude *~ --exclude .VirtualBox --exclude .VirtualBox --exclude *.disk --exclude Documents/netkit/* --exclude VirtualBox-VM-Backup --del --delete-excluded . $destination ## Script de synchronisation de mon journal vers le serveur of #!/bin/bash $BIN/rsync -av --del --delete-excluded --exclude=*/eof/ --filter="- *~" ${dir_dest} rlr@ferry.eof.eu.org:public_html

## Crez ensuite une tche dans la crontab ## qui excute la sauvegarde toutes les dix minutes. $ crontab -u filostene -e */10 * * * * /bin/sh /home/filostene/crontabscripts/backup.sh

Note : Vaut mieux utiliser des chemins absolus y compris pour lappel des scripts ou des binaires. La raison en est que si on lance un script dans un shell, la commande tient compte de du $PATH, mais il peux y avoir des contextes o il ny a pas de $PATH (ou incomplet).

## La commande devient donc : /usr/bin/rsync # quivaut $(which rsync) ## Pour faire un script portable (*nix) dclarer BIN="/usr/bin" puis utiliser $BIN/ ## Pour chaque binaire, ## utiliser galement une variable IPT=/sbin/iptables ## Variables avec des chemins absolus, ## construite partir de variables SBIN=/sbin IPT=$SBIN/iptables ...

98

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.3.5. rsync - Interface Web, Frontend, Outil GUI


Source(s):

GUI: Rsync Backup Web interface, Frontend or GUI Tools (http://www.debianadmin.com/rsync-backup-web-interfacefrontend-or-gui-tools.html)

grsync, Backup Monitor, QSync, Zynk, rsyncbackup, TKsync...

7.3.6. rsync - sauvegarde chiffr (backup with encryption / over Samba)


Source(s):

Web: Rsync backup with encryption (http://xpd259.blogspot.com/2007/11/rsync-backup-with-encryption.html) Optimal remote backups with rsync over Samba (http://users.softlab.ece.ntua.gr/~ttsiod/backup.html)

Voir aussi SR010 Securit > Chiffrement du systme de chier

7.3.7. rsnapshot - Sauvegarde incrmentale par instantann (snapshot)


Source(s):

Web: rsnapshot (http://rsnapshot.org) HOWTO (http://rsnapshot.org/howto/) Sauvegardes incrmentales avec rsnapshot (http://www.exhaustif.com/Sauvegardes-incrementales-avec.html) rsnapshot (Ubuntu-FR) (http://doc.ubuntu-fr.org/rsnapshot)

rsnapshot est une application en ligne de commande de sauvegarde, base sur rsync, et crit en PERL. Cest un logiciel libre sous licence GNU GPL. Il permet de programmer la prise rgulire dinstann (snapshot) de donne : sauvegarde incrmentale

99

Chapitre 7. SR001 Commandes GNU/Linux (Shell) Il permet prendre des instantans (snapshot) des systmes de chiers diffrents instants : Sauvegarde incrmentale. Utilisant les liens matriel, rsnapshot cr lillusion de lexistance de multiples sauvegardes compltes, tout en noccupant que la place dune seule plus les diffrences. Coupl avec ssh, il est galement possible de prendre des instantans de systmes de chiers distants. Ce document est un tutoriel dinstallation et de conguration de rsnapshot. Transparency : all versions of the backup are accessible as plain les.

7.3.8. rdiff-backup - synchronisation/snapshot par diff (delta compress)


Source(s):

Web: rdiff-backup (Ofciel) (http://rdiff-backup.nongnu.org) rdiff-backup (Backup Central) (http://www.backupcentral.com/components/com_mambowiki/index.php/Rdiff-backup) Disadvantages (http://www.backupcentral.com/components/com_mambowiki/index.php/Rdiffbackup#Disadvantages)

Adquate pour de gros chiers qui changent souvent Transparency : only the current backup is accessible as plain les. Previous versions are stored as rdiff deltas. But there is a FUSE implementation called archfs that allows you to mount all snapshots in a read-only lesystem.

7.3.9. rdiff-backup versus rsync/rsnapshot


Source(s):

Web: rdiff-backup vs rsync (Backup Central) (http://www.backupcentral.com/components/com_mambowiki/index.php/Rdiff-backup) rsnapshot vs. rdiff-backup (vs. Time Machine) (http://www.saltycrane.com/blog/2008/02/backup-on-linux-rsnapshot-vs-rdiff/)

rdiff-backup is a program written in Python and C that uses the same rolling-checksum algorithm that rsync does. Although rdiff-backup and rsync are similar and use the same algorithm, they do not share any code and must be installed separately. When backing up, both rsnapshot and rdiff-backup create a mirror of the source directory. For both, the current backup is just a copy of the source, ready to be

100

Chapitre 7. SR001 Commandes GNU/Linux (Shell) copied and veried like an ordinary directory. And both can be used over ssh in either push or pull mode. The most important conceptual differences between rsync-snapshots and rdiff-backup is how they store older backups and how they store le metadata. An rsync-snapshot system basically stores older backups as complete copies of the source. As mentioned earlier in the chapter, by being clever with hard links, these copies do not take long to create and usually do not take up nearly as much disk space as unlinked copies. However, every distinct version of every le in the backup is stored as a separate copy of that le. For instance, if you add one line to a le, or change a les permissions, that le is stored twice in the backup archive in its entirety. This can be troublesome especially with log les, which grow slightly quite often. On the other hand, rdiff-backup does not keep complete copies of older les in the backup archive. Instead, it stores only the compressed differences between current les and their older versions, called diffs or deltas. For log les, rdiff-backup would not keep a separate copy of the older and slightly shorter log. Instead, it would save a delta le to the archive, which contains the information the older version is the current version, but without the last few lines. These deltas are often much smaller than an entire copy of the older le. When a le has changed completely, the delta is about the same size as the older version (but is then compressed). When an rdiff-backup archive has multiple versions of a le, the program stores a series of deltas. Each one contains instructions on how to construct an earlier version of a le from a later one. When restoring, rdiff-backup starts with the current version and applies deltas in reverse order. "... rdiff-backup, for me, was the inablility to perform different levels of backup, such as hourly, daily, weekly, monthly, etc. compared to rsnapthot..." Source: rsnapshot vs. rdiff-backup (vs. Time Machine) (http://www.saltycrane.com/blog/2008/02/backup-on-linux-rsnapshot-vs-rdiff/) Source: "http://ubuntuforums.org/showthread.php?t=223281" rsync just mirrors, so if you backup nightly, make a change on tuesday, make another change on wednesday and on thursday you want to revert to tuesdays backup because wednesdays changes were borked, you cant. With rdiff-backup you can. However, it ultimately depends on what you are backing up though. If you are backing up les which do not change much e.g. photos, music and video, then rsync may be better. I use a combination of both, rdiff-backup for nightlys of /home and rsync for media (photos, movies, mp3 etc). rdiff-backup works brilliantly for backing up to an external device. You cannot however, then do an rdiff-backup from the backup to a third device as I have been doing with rsync to keep things extra safe. It fails because of the special rdiff directory in the rst backup. However, it is safer than rsync, as I still concern myself with running the wrong scripts and getting all the le additions and deletions in reverse. So Im now trying to decide if one backup on my external drive is enough and to use rdiff-backup instead of rsync with two backups. I use rdiff-backup for incremental backups every day and once a month I make a whole backup by using partimage or mondo. There are several possibilities. Just a question of tastes.

7.3.10. Le robot de sauvegarde (sauvegarder un parc de machines)


Cest en gnral une machine pilote par un logiciel, capable dinscrire les sauvegardes sur bande magntique, de manire totale ou incrmentale. Un robot est en mesure de sauvegarder un parc de machines.

101

Chapitre 7. SR001 Commandes GNU/Linux (Shell) AMANDA (http://www.amanda.org) (The Advanced Maryland Automatic Network Disk Archiver) : logiciel de sauvegarde libre dvelopp par lUniversit du Maryland Cest une solution qui peut faire gagner du temps pour un parc de machine important.

7.3.11. Multi-archivage sous linux (TAR, SPLIT et CAT)


Source(s):

Web: Multi archives sous Linux (http://www.lozit.com/index.php/2007/02/21/17-multi-archives-sous-linux)

## Transforme votre repertoire toto/ ## en une serie darchives toto.aa toto.ab etc... de 1m chacune $ tar -z -c toto/ | split -b 1m - toto. ## et pour faire lopration inverse : $ cat toto.* > toto.tar

7.3.12. Autres solutions : SBackup, Back In Time, fwbackups, Time Drive


Source(s):

Web: Staying (Ubuntu User Magazine Num 3) : Safe Exploring Grsync, Back In Time, and Time Drive (http://www.ubuntu-user.com/content/download/757/5030/le/048-051_BackupTools.pdf)

7.4. Restauration de donnees (data recovery) / Rcupration de donnes aprs un crash disque !
7.4.1. Ressources Utiles (Info, Outils, etc...) bien lire avant

102

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

de commencer !
Source(s):

HowTo: Data Recovery (https://help.ubuntu.com/community/DataRecovery) Hack and / - When Disaster Strikes: Hard Drive Crashes (http://www.linuxjournal.com/article/10360) Partition-Rescue HOWTO (http://www.faqs.org/docs/Linux-mini/Partition-Rescue.html) Tool(s): GNU ddrescue (alias gddrescue) (http://www.gnu.org/software/ddrescue/ddrescue.html) ddrescue Manual (http://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html) GNU parted (parted/gparted) (http://www.gnu.org/software/parted/index.shtml) Palimpsest Disk Utility (Gnome) (http://library.gnome.org/users/palimpsest/) Gpart (guess partition) (http://en.wikipedia.org/wiki/Gpart) Live CD(s): SystemRescueCd (Live CD) (http://www.sysresccd.org/Main_Page) Ubuntu Rescue Remix (Live CD) (http://ubuntu-rescue-remix.org) Ubuntu Netbook Edition 10.04 LTS 64 bits (Live CD) (http://releases.ubuntu.com) Clonezilla (Ghost application en Live CD) (http://www.clonezilla.org) Knoppix (Live CD) (http://www.knopper.net/knoppix/index-en.html) (R)ecovery (I)s (P)ossible Linux rescue system (http://www.tux.org/pub/people/kent-robotti/looplinux/rip)

7.4.2. Suite un accident inopin : Quoi faire ! Quoi ne pas faire...!


Suite un accident inopin (chute du portable Apple au sol, mais plat heureusement !), quand bien mme la plupart du matriel na pas t endomag (du moins en apparence !), il est devenu impossible de dmarrer le systme. Aucun des sytme install ne veut dmarrer aprs le chargeur de systme (boot loader)... Forte chance que le disque dur est pris un gros coup moins que ce ne soit la mmoire ou la carte mre !!!
Note : Cest dans ces cas l que lon est content davoir une sauvegarde jour et fonctionnelle :)) Malheureusement tant en dplacement, ma dernire sauvegarde date de quelques jours dj et je souhaiterais rcuprer quelques chiers sur lesquels jai travaill ce jour... de laccident ! Par ailleurs, il est toujours bon de tenter une rcupration de donne pour plusieurs raisons : - Pour le challenge que cela reprsente pour un informaticien ! - Agurir son experience en matire de restauration... selon ladage : "ce qui ne nous dtruit pas nous renforce !" - Une occasion inespr de pouvoir tester tout type de solution libre :) - Une meilleure garantie (limite) davoir des donnes rcupres si pour raison X ou Y la restauration depuis la sauvegarde ne fonctionne pas 100% ou certains chiers nont pas t sauvegards comme il se doit :) Bref il y a toujours plein de bonnes raisons vouloir restaurer des donnes dun disque "crash" , transformons donc cet vnement horreur/malheur en un "success story !"

103

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


On sen serait bien pass cest clair, mais face ltat de situation cest la chose faire ! Dans le malheur restons positif !!!

Important : NE PAS ESSAYER DE REPARER LE DISQUE !!! Cela pourrait rendre impossible la rcupration de donnes ! Les premires chose faire dans un tel cas est de : -minimiser lutilisation du disque dur au maximum pour maximiser les chances de rcupration, -tenter ds que possible de copier les donnes de facon binaire (disque-a-disque, partition-a-partition) vers un autre disque sain de mme taille ou suprieure sur lequel la rparation, rcupration et montage de donnes seront effectus.

Un rapide saut au magasin Apple conrmera que le disque dur est la source du problme (quoi que pas totalement inaccessible ouf !), en effet le portable dmarre convenablement partir de Max OS X install sur un disque dur externe ou dun CD Linux Live ! Le disque dur endomag est accessible (cest positif) mais lors de la vrication du disque dur de nombreuse erreurs apparaissent :(((
Note : Si le disque dur est inaccessible ou devient rapidement inaccessible, le seul recourt possible cest de lenvoyer une entreprise spcialise dans la restauration des donnes. Cela cote (trs) cher mais cela reste une option possible. En effet, de telles entreprises sont capables dextraire physiquement les disques physique o sont stockes les donnes et de les installer dans un autre boitier de disque dur similaire. Ceci peut permettre de pallier un dfaut mcanique du disque dur et daccder aux donnes potentiellement rcuprables.

La deuxime chose faire cest de disposer dun espace disque sain vers lequel la copie binaire du disque endomag (ou de lune de ses partitions peut-tre effectu. Jachte donc un nouveau disque dur interne (de plus grande taille que lancien :) et un boitier de disque dur 2.5 pouces externe pour pouvoir y installer le disque endomag et y accder via port USB.
Note : En interne, les ordinateurs Apple nont quune seule interface disque.

La troisime chose faire cest de tlcharger et graver un systme dexploitation en Live CD permettant de dmarrer lordinateur sans aucun systme install sur le disque dur ! (Voir lien en tte de cette section).
Note : Toutes mes tentatives pour dmarrer lordinateur partir dune clef USB ou dun disque dur externe USB ne contenant pas Mac OS X ont chou. Apparement, le "BIOS" dApple nautorise pas cet possibilit ! Le live CD est donc le meilleur choix.

104

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

A ce stade on passe au chose srieuse et on mets les mains dans le cambouis...

7.4.3. Restauration de donnes - tape par tape...


Note : Il est recommand de bien lire les chapitres prcdant avant de lire ce qui suit...

Ma premire ide tait de rparer le systme de chier partir du Live CD, mais une fois encore, cest une trs mauvaise ide et le meilleur moyen de perdre toutes les donnes ! Comme dj mentionn, la meileur chose faire cest une copie binaire du disque (ou partition) endomag vers un nouveau disque (de taille egale ou suprieur). Ma seconde ide ctait de cloner le disque avec loutil Clonezilla. Mais ce fut bien entendu un echec. Puis jai dcouvert (g)ddrescue (GNU Rescue) une version amliore de la commande dd car elle permet une gestion optimal des erreurs de copie binaire !
Important : La procdure dcrite ci-dessous na pas t crite au fur et mesure des oprations effectues mais de mmoire plusieurs jours aprs les oprations donc il se peut quelle ne soit pas totalement exact... mais donne un bon ordre dide si ctait refaire ! Aucune garantie que cela marche pour vous !!!

Procdure de rcupration :

## Opration physique sur les disques # Eteindre lordinateur # Fermer/Replier lcran # Retourner lordinateur et dvisser en dessous pour accder aux composants internes # Dvisser/Enlenv delicatement le disque interne endomag (ceci requiert des tournevis spc # Installer le nouveau disque en interne en lieu et place de lancien disque # Refermer lordinateur (revisser toutes les vis!) # Install lancien disque endomag dans le boitier externe USB # Branch le boitier sur lordinateur via un cable USB ## Dmarrer depuis un Live CD # Tlcharger/Graver puis dmarrer depuis un Live CD GNU/Linux # Pour ma part je choisi la version Ubuntu Netbook Edition 10.04 LTS 64bits # qui vient tout juste dtre publie # Une occasion de pouvoir voir quoi elle ressemble # et comment elle se comporte sur un ordinateur Apple :))

105

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


# Pour plus dinfos consulter la page ddie : # Ubuntu Netbook Edition (http://www.ubuntu.com/netbook) # Une fois sur le bureau... ## Brancher une clef USB en plus (optionelle mais conseill) # Ceci va permettre de stocker des informations persistantes # En effet avec un Live CD, toute donnes sauvegarde est perdu au redmarrage # Pour la suite, supposons que la clef est accessible via /media/clefusb ## Obtenir des informations sur les disques (endomag et nouveau) # [Note: gparted ne permet pas daccder aux informations du disque endomag] # alternativement, via menu System > Administration > Disk Utility (Palimpsest Disk Utility) # Jobserve que mon disque : # - nouvau (en interne) est rfrenc comme tant /dev/sda # - endomag (en externe) est rferenc comme tant /dev/sdd # Obtenir des informations dtailles sur le disque endomag $ parted -l /dev/sdd >> /media/clefusb/disque.txt $ fdisk -l /dev/sdd >> /media/clefusb/disque.txt $ fdisk -lu /dev/sdd >> /media/clefusb/disque.txt # Voici mon fichier de log pour info : disque.log (docs/sys03-data-revovery-disque.log.txt) # On voit bien les informations dtailles sur les partitions # et les sectors de dbut et fin de chacune. # Cest une information qui peut eventuellement tre utile, conserver... ## Installer gddrescue # Installer le paquet $ sudo apt-get install gddrescue # $ $ $ $ $ $ $ $ ou alernativement, compiler depuis le source cd /media/clefusb wget http://ftp.gnu.org/gnu/ddrescue/ddrescue-1.12.tar.gz tar -xvzf ddrescue-1.12.tar.gz cd ddrescue-1.12 sudo apt-get install g++ ./configure make make install

# Version dAvril 2010

# Requis pour la compilation du

# Si action precedente est un s

## Utiliser ddrescue (cest le nom de la commande utiliser) ## Comme indiqu dans le manuel en ligne (http://www.gnu.org/software/ddrescue/manual/ddresc $ sudo ddrescue -n /dev/sdd /dev/sda /media/clefusb/ddrescue-logfile.log # puis $ sudo ddrescue -dr3 /dev/sdd /dev/sda /media/clefusb/ddrescue-logfile.log # Ces oprations peuvent prendre des heures voir des jours !!! # Cest pourquoi il est recommand didentifier la partition sur laquelle # les donnes restaurer sont localises pour rduire la quantit de bits traiter... # Donc alternativement on pourrait faire quelque chose du genre $ sudo ddrescue -n /dev/sdd4 /dev/sda1 /media/clefusb/ddrescue-logfile.log # puis

106

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


$ # # # # # # $ # $ # sudo ddrescue -dr3 /dev/sdd4 /dev/sda1 /media/clefusb/ddrescue-logfile.log O /dev/sda1 reprsenterais la premire partition existante (de taille gale ou suprieure /dev/sdd4) sur le nouveau disque Disk Utility peut-tre utiliser pour crer cette partition /dev/sda1 avant de procder lopration de ddrescue

Enfin sachez quil est aussi possible de choisir un fichier image comme destination mais je nai pas test :) sudo ddrescue -n /dev/sdd4 /dev/sda/sdd4_image.img /media/clefusb/ddrescue-logfile.log puis sudo ddrescue -dr3 /dev/sdd4 /mnt/recovery/sdd4_image.img /media/clefusb/ddrescue-logfile. La mme opration pourrait tre excuter avec le disque entier /dev/sdd je suppose...

# /mnt/recovery/sdd4_image.img est une destination arbitraire # elle doit tre choisi en adquation avec votre systme

# Dans tous les cas, la prsence dun fichier de log nest pas obligatoire mais recommand c # il permet tout moment de stopper lopration CTRL+C et # de la relancer en partant de l on elle stait arrte ! # # $ # $

Loption -i (--input-position) permet de spcifier lendroit o lopration doit dmarrer La position peut tre indiqu en different units: 156104442bits, 156104Mo, 156Go ddrescue ... /dev/sdd4 ... quivaut plus ou moins ddrescue ... -i 156104442 /dev/sdd # 156104442 est le secteur de dbut de la partiti # comme indiqu dans le fichier disque-logfile.lo

## Rparation du systme de fichier rcupr # Avant de pouvoir rcuprer les donnes proprement dites (c.a.d les fichiers), # Il faut sassurer que le systme de fichier est sain sur la copie binaire rcupre $ sudo e2fsck -v -f /dev/sda # si copi vers disque en entier # ou $ sudo e2fsck -v -f /dev/sda1 # si copi vers partition seulement # ou $ sudo e2fsck -v -f /mnt/recovery/sdd4_image.img # si copi vers un fichier image # Accessoirement on peut rajouter loption -y la commande # pour rpondre "yes" automatiquement chaque question pose ## Enfin...accder aux donnes, # En fonction de lopration que vous avez choisit... # Monter le disque # ou monter la partition Utiliser Disk Utility pour cela # ou monter limage $ sudo mkdir /mnt/recovered_image $ sudo mount -o loop /mnt/recovery/sdd4_image.img /mnt/recovered_image # Puis accder aux donnes ainsi montes :)) # Copier et restaurer ce qui peut ltre...

107

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.5. SYS02: Avanc


7.5.1. SYS02-01: Environnement et variables
Source(s):

OF: SR001-sys02-ch01-environnement.pdf (docs/eof/sr001-sys02-ch01-environnement.pdf)

7.5.1.1. Variables denvironnement courantes


La liste suivante donne quelques exemples de variables denvironnement parfois utilises par les systmes dexploitation. Cette liste nest en aucun cas exhaustive et peut tre complte en fonction des ncessits.

USER or LOGNAME : Le nom de lutilisateur connect (utilis par des programmes de style BSD et System V respectivement) HOME : Le rpertoire de login dun utilisateur, mis en place par login depuis le chier des mots de passe passwd. LANG : Le nom du lieu utiliser pour les congurations locales, sil nest pas cras par LC_ALL ou dautres variables comme LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME. PATH : Une liste de prxes de rpertoires, que sh et de nombreux autres programmes utilisent pour trouver un chier dont le chemin est incomplet. Les prxes sont spars par des :. (De mme il existe CDPATH utilis par certains shells pour connatre le rpertoire destination dune commande cd, MANPATH utilis par man pour trouver les pages de manuel, etc). Si une commande excuter nest prsente dans aucun chemin recens par cette variable, le systme ne lexcutera pas ( moins de spcier le chemin complet dans la ligne de commande : /bin/ls). PWD : Le rpertoire de travail actuel, renseign par certains shells. SHELL : Le nom de chier du shell la connexion de lutilisateur. TERM : Le type de terminal utilis pour les afchages. PAGER : Lapplication prfre de lutilisateur pour afcher des textes (comme less ou more). EDITOR : Lapplication prfre de lutilisateur pour diter des textes. (telle que emacs, joe, ou vi). BROWSER : Lutilitaire prfr pour examiner des URLs. Une suite de noms de navigateurs spars par des deux-points. ROOTPATH : Cette variable a la mme fonction que PATH, mais celle-ci liste les rpertoires qui doivent tre parcourus lorsque lutilisateur root entre une commande.

108

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

LDPATH : Cette variable contient une liste de rpertoires spars par des deux-points dans lesquels lditeur de liens dynamiques cherche les bibliothques. MANPATH : Cette variable contient une liste de rpertoires spars par des deux-points dans lesquels la commande man cherche les pages de manuel. INFODIR : Cette variable contient une liste de rpertoires spars par des deux-points dans lesquels la commande info cherche les pages info. KDEDIRS : Cette variable contient une liste de rpertoires spars par des deux-points qui contiennent les lments spciques KDE. CLASSPATH : Cette variable contient une liste de rpertoires spars par des deux-points qui contiennent les classes Java. CONFIG_PROTECT : Cette variable contient une liste de rpertoires spars par des espaces qui doivent tre prservs par Portage pendant les mises jour. CONFIG_PROTECT_MASK : Cette variable contient une liste de rpertoires spars par des espaces qui ne doivent pas tre prservs par Portage pendant les mises jour. PS1 : Variable contenant une chane de texte ralisant la mise en forme du message dattente (prompt) en ligne de commandes.

7.5.1.2. env, printenv, export


Ces commandes permettent de visualiser les variables voici les miennes:

# Afficher les variables actuelles $ env GPG_AGENT_INFO=/tmp/seahorse-Xj5Akr/S.gpg-agent:2320:1 SHELL=/bin/bash DESKTOP_STARTUP_ID= TERM=xterm GTK_RC_FILES=/etc/gtk/gtkrc:/home/filostene/.gtkrc-1.2-gnome2 WINDOWID=41943273 USER=filostene LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:o ;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.svgz= ;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01 ;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar ;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gi 35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif 35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mp 35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt 35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli 35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.aac=00;36:*.au=00;36:*.flac=0 36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav SSH_AUTH_SOCK=/tmp/keyring-FlSbjf/ssh GNOME_KEYRING_SOCKET=/tmp/keyring-FlSbjf/socket SESSION_MANAGER=local/debstafil:/tmp/.ICE-unix/2233 USERNAME=filostene DESKTOP_SESSION=default

109

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

PATH=/usr/local/bin:/usr/bin:/bin:/usr/games GDM_XSERVER_LOCATION=local PWD=/home/filostene LANG=fr_FR.UTF-8 GNOME_KEYRING_PID=2232 GDM_LANG=fr_FR.UTF-8 GDMSESSION=default HISTCONTROL=ignoreboth HOME=/home/filostene SHLVL=1 GNOME_DESKTOP_SESSION_ID=Default LOGNAME=filostene XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/ DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-URg3G0ZLPF,guid=f7ab2f41c8e2725e05f5a10c4b2 WINDOWPATH=7 DISPLAY=:0.0 COLORTERM=gnome-terminal XAUTHORITY=/home/filostene/.Xauthority _=/usr/bin/env

On y voit notemment mon shell par defaut (/bin/bash), quel utilisateur je suis (lostene), le group de chemin PATH (/usr/local/bin:/usr/bin:/bin:/usr/games), ma conguration linguistique (fr_FR.UTF-8), etc... Mais quel difference entre env, printenv et export ? Faisons un petit test de comparaison...
# Comparer les methodes daffichage $ env > env.txt $ printenv > printenv.txt $ diff env.txt printenv.txt 32c32 # < _=/usr/bin/env # La diffrence est vraiment minimum --# > _=/usr/bin/printenv # $ export declare -x declare -x declare -x declare -x declare -x declare -x declare -x declare -x declare -x declare -x declare -x declare -x declare -x declare -x

COLORTERM="gnome-terminal" DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-URg3G0ZLPF,guid=f7ab2f41c8e2725 DESKTOP_SESSION="default" DESKTOP_STARTUP_ID="" DISPLAY=":0.0" GDMSESSION="default" GDM_LANG="fr_FR.UTF-8" GDM_XSERVER_LOCATION="local" GNOME_DESKTOP_SESSION_ID="Default" GNOME_KEYRING_PID="2232" GNOME_KEYRING_SOCKET="/tmp/keyring-FlSbjf/socket" GPG_AGENT_INFO="/tmp/seahorse-Xj5Akr/S.gpg-agent:2320:1" GTK_RC_FILES="/etc/gtk/gtkrc:/home/filostene/.gtkrc-1.2-gnome2" HISTCONTROL="ignoreboth"

110

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

declare -x HOME="/home/filostene" declare -x LANG="fr_FR.UTF-8" declare -x LOGNAME="filostene" declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:c ;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=0 ;31:*.svgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.zip=01;31:*.z=01;31:*.Z= ;31:*.dz=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=0 ;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg ;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.x ;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.mng=01;35:*.pcx=01;35:*.m ;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.m ;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc ;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.aac= ;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.o ;36:*.ra=00;36:*.wav=00;36:" declare -x OLDPWD declare -x PATH="/usr/local/bin:/usr/bin:/bin:/usr/games" declare -x PWD="/home/filostene" declare -x SESSION_MANAGER="local/debstafil:/tmp/.ICE-unix/2233" declare -x SHELL="/bin/bash" declare -x SHLVL="1" declare -x SSH_AUTH_SOCK="/tmp/keyring-FlSbjf/ssh" declare -x TERM="xterm" declare -x USER="filostene" declare -x USERNAME="filostene" declare -x WINDOWID="56623181" declare -x WINDOWPATH="7" declare -x XAUTHORITY="/home/filostene/.Xauthority" declare -x XDG_DATA_DIRS="/usr/local/share/:/usr/share/:/usr/share/gdm/"

On voit clairement quormis la ligne 32, les resultats sont totalement semblable entre env et printenv, par contre export semble donner un resultat lgrement diffrent! Un rapide coup doeil dans la page de man nous claira sur la difference relle:

env : permet dexcuter un programme dans un environnement modi c.a.d dinitialiser des VARIABLES une VALEUR dans lenvironnement et excuter une COMMANDE. Ceci peut-tre utile dans un prompt de terminal ou dans un script. printenv : permet uniquement dafcher lensemble ou une partie des variables denvironnement (quivalent de echo $variable_name)
$ printenv PATH /usr/local/bin:/usr/bin:/bin:/usr/games $ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/games

export: permet dajouter ou de supprimer des paramtres ou des fonctions de lenvironnement mais connatre les variables disponibles dans lenvironnement.
$ man sh

111

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


"... export [-fn] [nom[=mot]] ... export -p Les noms fournis sont marqus pour tre exports automatiquement dans lenvironnement des commandes excutes par la suite. Si loption -f est indique, les noms se rapportent des fonctions. Si aucun nom nest donn ou si loption -p est fournie, une liste est affiche indiquant lensemble des noms exports dans cet interprteur. Loption -n conduit supprimer lattribut dexportation de chacune des variables nommes. Si un nom de variable est suivi par =mot, la valeur de la variable est mise mot. export renvoie un tat final de 0, moins quune option incorrecte soit rencontre ou quun des noms ne soit pas un nom correct de variable de linterprteur ou que loption -f soit fournie avec un nom qui nest pas une fonction. ..."

7.5.1.3. Variables Communes (GLOBALES) pour tous les utilisateurs du systme


Ce sont les variables denvironement disponibles pour tous les utilisateurs du systme. Elles sont dclares dans un chier de conguration qui se charge prcocement dans la squence de lancement des services ou lors de la procdure douverture de session par un utilisateur. Dans le cas de bash (linterprteur de commande par dfaut), on ditera le chier /etc/prole (sil existe).Par exemple, si, on souhaite dnir la variable denvironnement relative la prsentation du message dattente (prompt) en ligne de commandes pour tous les utilisateurs utilisant bash, on ajoutera dans le chier /etc/prole :

PS1="Welcome$ " #Definit la variable et le format laffichage au lieu de "[\u@\h:\w]\\$ " pa export PS1 #Exporte la variable dans lenvironement # AVANT: filostene@debstafil:~$ # APRS: Welcome$ echo a marche! a marche! Welcome$ # On aurait aussi pu faire... directement au prompt $ PS1=Welcome$ && export PS1

112

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.5.1.4. Variables Particulires (LOCALES) uniquement pour lutilisateur qui les a dnies
Ce sont les variables denvironement qui ont une porte restreinte c.a.d disponibles uniquement par lutilisateur qui les a dnies. Elles sont dclares dans un chier qui se chargera uniquement au lancement de la session de lutilisateur intress. Pour linterprteur de commandes bash, les chiers concerns sont placs dans le dossier personnel de lutilisateur et sont dsigns par les noms $HOME/.bash_prole et $HOME/.bashrc. Testons avec deux utilisateurs aaaaa et bbbbb crs lors dexercice prcdent:
#### TEST1 #### Utilisateur aaaaa $ su aaaaa aaaaa$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/games aaaaa$ exit #### Utilisateur bbbbb $ su bbbbb bbbbb$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/games #### ==> Variable $PATH identique pour les deux... #### Modifions la variable $PATH pour lutilisateur bbbbb bbbbb$ PATH=$PATH:/bin && export PATH #### On verifie... bbbbb$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/games:/bin #### :/bin est bien ajout la fin bbbbb$ exit #### Quen est-il pour lutilisateur aaaaa $ su aaaaa aaaaa$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/games ##### ==> Variable $PATH inchang pour lutilisateur aaaaa

#### TEST2 # toto.sh qui contient les lignes suivantes : # PATH=/sbin # echo $PATH # echo $MAVAR1 # echo $MAVAR2 #Dans une console $ MAVAR1=bar #Dfinir variable 1

113

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


$ echo $MAVAR1 bar $ MAVAR2=blablah $ echo $MAVAR2 blablah $ sh toto.sh /sbin #On laffiche pour vrifier #Dfinir variable 2 #On laffiche pour vrifier #1er dmarage du script

$ export MAVAR2 $ sh toto.sh /sbin

#Export de la variable 2 dans lenvironement #2nd dmarrage du script #Affiche variable $PATH comme dfinit dans le script

blablah #Affiche variable 2 comme exporte dans lenvironement $ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/games #Variable $PATH de lenvironement reste inchang

Via TEST2 on a pu verier que:

Le script afche bien \sbin car cest ce que contenait la valeur de la variable PATH pendant la dure du script, mais cela na pas modi la valeur de la variable de votre environnement PATH. Quand on ouvre une console (un shell), tous les scripts lanc dans la console sont des processus enfants du shell initial. Quune variable exporte partir dun shell est bien visible pour les processus enfants de ce shell. La premire variable nest pas afche par le script par contre la seconde oui. Chaque script son propre environnement, par contre on peut transmettre un environnement dun processus pre un processus enfant avec la commande export. Un processus pre export une variable, celle-ci sera utilisable par le processus enfant.

7.5.1.5. Variables et scripts shells


Ce quon vient de voir montre quune variable, moins dtre exporte nest visible que dans le shell courant. Pour le systme cela correspond un shell (environnement et ensemble de ressources alloues). Il est vraiment intressant de savoir quune variable peut tre rednie temporairement par un environnement de travail. Le systme GNU/Linux et les applications utilisent largement ce principe :

un ou des chiers de conguration gnraux dnissant des variables globales pour tout lenvironnement. un ou des chiers de conguration locaux propre un processus ou un utilisateur permettant de rednir, le temps dun traitement, les valeurs de variables globales.

114

Chapitre 7. SR001 Commandes GNU/Linux (Shell) 7.5.1.5.1. Transfert de variable denvironement dun processus A vers un processus B appel par A Prenons maintenant lexemple dun processus A, appelant un processus B. Comment procder, sachant que chaque processus aura son propre environnement pour quils puissent utiliser des mmes ensembles de variables et de valeurs ? bash fournit une solution. La possibilit de sourcer un ensemble de variable et de valeurs. Il suft de dclarer les couples variables/valeurs dans le script A et dinclure la ligne dans le script B :

source A ou en plus concis . A (point espace A) Le script B chargera les variables partir du script A, tout cela sans modier lenvironnement global de travail, mais nous aurons loccasion de revenir sur tout cela dans le temps, ne prcipitons rien.

7.5.2. SYS02-02: Commandes avances sous Linux


Source(s):

OF: SR001-sys02-ch02-commandes-advanced.pdf (docs/eof/sr001-sys02-ch02-commandes-advanced.pdf)

7.5.2.1. awk & mawk


Pour en savoir plus:

Tutoriel: http://www.funix.org/fr/unix/awk.htm http://sleepyhead.de/howto/?href=scripting Livre:Scripts sous linux aux editions Eyrolles (Christophe Blaes) abs pour advanced bash scripting guide (http://tldp.org/LDP/abs/html/)

desctription
Introduction au langage Awk:

############################################################################################ Prsentation et caractristiques: ############################################################################################ Awk qui tient son nom des initiales de ses trois crateurs (Alfred AHO, Peter WEINBERGER et est un langage qui permet deffectuer des traitements sur les fichiers.

115

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


Pour un fichier donn, il extrait les champs contenus dans chaque ligne pour eventuellement traitement sur ces champs. Exemple: le fichier /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh

Lors dun traitement AWK en spcifiant comme sparateur de champs le symbole ":", nous auron traitement de la premire ligne, le positionnement automatique de ses variables: $1=root $2=x $3=0 $4=0 $5=root $6=/root $7=/bin/bash Rq: on commence a $1 car $0 contient la ligne entire.

On devine par exemple, comment on pourrait nafficher que les comptes ayant un shell particu Il existe dautre variables comme $NF, ... je vous invite lire le man de la commande AWK

############################################################################################ Mode de fonctionnement et syntaxe: ############################################################################################ Un script (commande) AWK se prsente de la manire suivante: motif {action}

ou "motif" reprsente un critre de slection (par exemple $7=/bin/bash ou expression rguli "action" reprsente le traitement effectuer (exemple daction "print" qui permet daffiche Rq: On peut directement traiter un fichier en entre comme ceci: awk -F":" /root/{print $7} < /etc/passwd

-F ici pour "Field separator" permet de spcifier que le sparateur de champs nest pas "esp Ou on traite le rsultat dune autre commande avec un pipe comme ceci: cat /etc/passwd | awk -F":" /root/{print $7} Dans les deux exemples ci dessus: motif = /root/ cest dire les lignes qui contiennent root

116

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


action = print $7 on affiche le 7eme champs de la ligne cest dire le shell de root

Pour info voici une syntaxe plus complete: awk -F":" BEGIN{instructions} critres END{instructions} fichier

BEGIN et END permettent dinstancier une variable par exemple. awk -F":" BEGIN{nb_lignes=0};nb_lignes=nb_lignes+1;END{print "Nombre de lignes= " nb_lignes dans cet exemple, nous allons compter et afficher le nombre de lignes du ficher /etc/passwd Autre exemple avec une condition sur le 7eme champs (shell) awk -F":" {if ($7=="/bin/false") print $1} /etc/passwd Dans cet exemple, on affiche les comptes qui nont pas de shell. (Important to complete)

Autres examples utiles


$ echo "hello world world hello world" | awk {$1=$1}1 OFS=":" hello:world:world:hello:world awk awk awk awk awk { print $2, $1 } file {printf("%5d : %s\n", NR,$0)} file {print FNR "\t" $0} files NF test.txt length > 80 # # # # #

# Remplacer espace et tabul # Voir aussi sed pour equiv

Affiche et inverse les deux premires colonne Ajoute numro de ligne align gauche Ajoute numro de ligne align droite enlever les lignes blanches (equivalent de gr Affiche les lignes dau moins 80 caractres

7.5.2.2. basename
liminer le chemin daccs et le sufxe dun nom de chier. Utile pour renommer un ensemble de chiers ou rpertoires
#TEST1 $ basename generate.bash generate.bash $ basename generate.bash sh generate.ba $ basename generate.bash .bash generate $ basename /mnt/hsubuntu/monjournal/generate.bash generate.bash $ basename /mnt/hsubuntu/monjournal/generate.bash .bash generate $ basename /mnt/hsubuntu/monjournal/generate.bash ate.bash gener

#Aucun effet sur un ficher simpl #Enleve suffixe "sh" du fichier

#Enleve suffixe .bash (=extensti

#Enleve le chemin vers le fichie #Enleve lextension (en plus du #Enleve plus que lextension :)

117

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

#TEST2 #Lister les pages html de mon journal au format multipage $ cd /mnt/hsubuntu/monjournal/public_html/multipage/ $ ls *.html c153.html c157.html c159.html c161.html c164.html c26.html c32.html c38.html c44.htm c156.html c158.html c160.html c163.html c22.html c29.html c35.html c41.html index.h #A partir de cette liste, prparer la commande pour changer toutes les extension .html en .h $ for f in ls *.html;do echo $f basename \$f .html.htm;done c153.html c153.htm c156.html c156.htm c157.html c157.htm c158.html c158.htm c159.html c159.htm c160.html c160.htm c161.html c161.htm c163.html c163.htm c164.html c164.htm c22.html c22.htm c26.html c26.htm c29.html c29.htm c32.html c32.htm c35.html c35.htm c38.html c38.htm c41.html c41.htm c44.html c44.htm index.html index.htm x49.html x49.htm #On effectue le changement dextension (renommer chaque fichier avec commande mv) $ for f in ls *.html;do mv $f basename \$f .html.htm;done #Verification $ ls c153.htm c157.htm c159.htm c161.htm c164.htm c26.htm c32.htm c38.htm c44.htm images c156.htm c158.htm c160.htm c163.htm c22.htm c29.htm c35.htm c41.htm docs index. #==> OK

7.5.2.3. bc
bc est "un language de calcul de prcision arbitraire" ou plus clairement une calculatrice volue.
###### # Calculer en mode batch # echo "((10+4)*2/4)^2" | bc 49 ###### ## Calculer en mode interactif # $ bc #Dmarre mode interactif avec message dacceuil... bc 1.06.94

118

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type warranty. quite $ bc -q #Dmarre mode interactif sans message dacceuil... 5+5 10 #5+5=10 ###### ## Traitement par lot # (10+4)*2/4 7 #(10+4)*2/4=7 2^4 16 #2 puissance 4 egual 16 sqrt(16) #Racine carr de 16 egual 4 4 /* un commentaire :) sur plusieurs ligne */ # un commmentaire sur une ligne... length(1935.00054) 9 scale(1935.00054) 5 scale 0 4/3 1 scale+=2 scale 2 4/3 1.33 scale=5 scale 5 4/3 1.33333 ###### ## Calculer # A+B 21 A*2 20 B*2 22 ibase 10 obase

#Un commentaire ! #Un autre commentaire !

#Nombre de chiffre dans lensemble dur nombre #Nombre de chiffre aprs la virgule

#Definit le nombre de chiffre aprs la virgule pour certaines oper

#4 divis par 3 egual 1 si scale=0 #dfinit scale 2 par ajout (chiffres aprs la virgule) #On vrifie #On test #dfinit scale 5 par affectation #On vrifie #Ok a marche!

en plusieurs bases

#A plus B en base 16 egual 21 #A fois 2 egual 20 #B fois 2 egual 22 #Dfinit la base de calcul pour les chiffres en entre #En base 10 par dfaut (accepte entre 2 et 16 comme base de calcul) #Dfinit la base de calcul pour les chiffres en sortie

119

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


10 ibase=2 01+10 3 ibase=8 ibase 8 222+333 365 #En base 10 par dfaut (accepte entre 2 et 16 comme base de calcul) #Dfinit la base 2 pour les chiffres en entre et les calculs #1 (binaire 01) + 2 (binaire 10) egual 3 #Calcul en base 8

#resultat de sortie en base dcimal par defaut (obase=10)

###### ## Supporte les variables # var1 #par dfaut les variables non dfinit ont pour valeur 0 0 var1=25 #Affecte 25 la variable var1 var1 #Affiche valeur de var1 25 var2=25 #Affecte 25 la variable var2 var2 25 var1 + var2 50 var1+var2 #var1 & var2 peuvent tre utilises dans les calculs... 50 var1*var2 625 -var1 #Nombre ngatif -25 --var1 #Variable est dcrment et nouvelle valeur est rsultat de lexpr 24 var1 24 var1++ #Le rsultat de lexpression est la valeur de la variable ensuite 24 var1 35 ###### ## Supporte les boolen (0=faux 1=true) # var1 < var2 0 var1 > var2 0 var1==var2 1 var1>=var2 1 var1<=var2 1 !0 #Ngation boolnne 1

120

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


1&&1 1 1&&0 0 1||0 1 #ET boolen

#OU boolen

###### ## Supporte les structures de contrle # if(var1==var2) print "egual" else print "KO" egual if(var1 < var2) print "inferieur" else print "KO" KO while(var1--) print "x" xxxxxxxxxxxxxxxxxxxxxxxxx ###### ## Supporte les functions # define mafonction (para) { return (2*para); } mafonction (3) 6 quit

7.5.2.4. cat
cat sert concatner plusieurs chiers en un seul ou encore pour vider un chier sur la sortie standard (STDOUT).Voir aussi commande split

$ cat /etc/apt/sources.list #Affichera le contenu de mes sources de dpt de paquet sur STD # deb http://ftp.uk.debian.org/debian/ lenny main # deb http://debian.org.ua/debian/ lenny main deb http://ftp.fr.debian.org/debian/ lenny main deb http://security.debian.org/ lenny/updates main deb http://volatile.debian.org/debian-volatile lenny/volatile main deb-src http://volatile.debian.org/debian-volatile lenny/volatile main $cat f1 f2 f3 > f # concatne f1, f2 et f3 dans le fichier f

121

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.5.2.5. cut
cut sert supprimer une partie de chaque ligne dun chier. Largement utilis dans les scripts shell car cette commande permet de rcuprer des parties de lignes sous forme de champs ou alors des bloc doctets.

$ cat /etc/passed #Afficher le contenu du fichier de mot de passe root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh ... $ cut -b 1-10 /etc/passwd #Rcuprer les 10 premiers octets de chaque ligne root:x:0:0 daemon:x:1 ... $ cut -c 1-10 /etc/passwd #Rcuprer les 10 premiers charactres de chaque ligne root:x:0:0 daemon:x:1 ... $ cut -f 1 -d: /etc/passwd #Rcuprer le premier champ f1 si le sparateur d est : root deamon ... $ cut -f 1,3 -d: /etc/passwd #Rcuprer le champ f1 et f3 si le sparateur d est : root:0 daemon:1 ... $ cut -f 1-3 -d: /etc/passwd #Rcuprer le champ f1 f3 si le sparateur d est : root:x:0 daemon:x:1 ... $ cut -f 1-3 -d: /etc/passwd --output-delimiter ## #Dlimiteur de sortie diffrent de l root##x##0 daemon##x##1 ... $ cut -f 1-3 -d/ /etc/passwd --output-delimiter # root:x:0:0:root: # root: # bin daemon:x:1:1:daemon: # usr # sbin: ... ##### ## Combinaison avec une autre commande # $ cat /etc/passwd | cut -f1 -d:

122

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.5.2.6. du & df
Source(s):

Web: Directory Drive Size (http://www.crazysquirrel.com/computing/debian/general-commands/drive-space.jspx) du -k VS ls -l (http://lists.freebsd.org/pipermail/freebsd-questions/2004-July/051385.html)

du : valuer lespace disque occup par des chiers. Totaliser lespace disque utilis par chaque chier, de faon rcur- sive pour les rpertoires. df : Indiquer lespace occup par les systmes de chiers.

# Nous avons dj vu ces commandes, voir section "SYS01-Chapitre08: Atelier/TP - Langage de #Affiche espace utilise par lensemble du systeme de fichier $ df Sys. de fich. 1K-blocs Occup Disponible Capacit Mont sur /dev/hda1 9835552 3577760 5758176 39% / tmpfs 258148 0 258148 0% /lib/init/rw udev 10240 624 9616 7% /dev tmpfs 258148 0 258148 0% /dev/shm vmdebian 73828436 33402892 40425544 46% /mnt/hsubuntu /dev/hdc 32016 32016 0 100% /media/cdrom0 #Affiche espace utilis par un systme de fichier en particulier dans un format lisible par $ df -h /dev/hda1 Sys. de fich. Tail. Occ. Disp. %Occ. Mont sur /dev/hda1 9,4G 3,5G 5,5G 39% / #Affiche espace utilis par des fichiers ou repertoires (tmp dans lexample) $ du -h /tmp 4,0K /tmp/seahorse-nvhZyu 4,0K /tmp/.ICE-unix 4,0K /tmp/keyring-s22hSF 8,0K /tmp/gconfd-filostene/lock 12K /tmp/gconfd-filostene 4,0K /tmp/virtual-filostene.hDz1GF 4,0K /tmp/.X11-unix 8,0K /tmp/orbit-filostene 48K /tmp

7.5.2.7. date
date permet dafcher ou de modier la date systme (en tant que root). La commande propose plusieurs formats dafchage.
# Afficher la date

123

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


$ echo "Nous sommes le date "+%d %M %Y"" Nous sommes le 28 26 2009 # Afficher lheure $ echo "Il est date "+%Hh:%Mm:%Ss%"" Il est 08h:28m:30s% # Ajuster la date aaaa-mm-jj... $ date -set 2007-10-15 # Ajuster lheure HH:mm:ss... $ date -set 16:47:30 # Synchroniser lhorloge materielle avec la date et lheure introduite prcdement... $ hwclock -systohc

Note : Depuis la version 2.2 de Debian, le systeme sauve automatiquement lheure systeme dans lhorloge materiel lorque lordinateur steint et inversement lors du dmarrage systeme (script: /etc/init.d/hwclock.sh)

Voir aussi section Ajuster le fuseau horaire

7.5.2.8. diff
Source(s):

Tutoriel:diff et patch (http://www.linuxtutorialblog.com/post/introduction-using-diff-and-patch-tutorial)

diff permet de comparer deux chiers texte ligne ligne. Pour comparer deux chiers texte il vaut mieux utiliser le programme graphique meld qui permet de comparer et fusionner diffrents chiers. Ceci dit, diff est intressant pour extraire les diffrences de 2 chiers et raliser ce quon appelle un patch. La technique est largement utilise par les programmeurs pour corriger des bogues par exemple, au lieu de redistribuer un code source complet on ne distribue que le patch.
###### ## Code source A (Bon) # a=3 if [ "$a" -gt 0 ] then if [ "$a" -lt 5 ] then echo "The value of \"a\" lies somewhere between 0 and 5."

124

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


fi fi # Same result as: if [ "$a" -gt 0 ] && [ "$a" -lt 5 ] then echo "The value of \"a\" lies somewhere between 0 and 5." fi ###### ## Code source B (Pas Bon) # a=3 if [ "a" > 0 ] then if [ "$a" -lt 5 ] then echo "The value of "a" lies somewhere between 0 and 5." else echo "The value does not exist" fi fi # Same result as: exit 0 if [ "$a" -gt 0 ] & [ "$a" -lt 5 ] then echo "The value of \"a\" lies somewhere between 0 and 5." fi ###### ## Cration du patch # $ diff A B > file.patch ###### ## Patcher B # $ patch B < file.patch ###### ## Diff de vrification # $ diff A B #==> Pas de sortie, cest que cest bon :)

125

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.5.2.9. nd
Source(s):

Tutoriel:nd mini tutoriel 1 (http://www.softpanorama.org/Tools/Find/nd_mini_tutorial.shtml) nd mini tutoriel 2 (http://content.hcc.edu/pollock/unix/ndcmd.htm)

nd permet de rechercher des chiers dans une hirarchie de rpertoires (arborescence) en utilisant les information contenu dans lannuaire des chiers. On peut rechercher sur le nom, le type de chier, la taille, la date de modication. . . cet utilitaire est trs similaire ls mais est bien plus puissant car il dispose de son propre language pour specier les requtes. Le premier argument de nd est le(s) repertoire(s) de base pour la recherche ("search root"). Ils peuvent tre multiple et ainsi permettre dexclure cetains repertoire de la recherche. La liste des repertoires de recherche peut tre gnre par script.

$ find /bin /sbin /usr -name filename # Recherche filename uniquement dans les repertoires / $ find script_gen_dir -name filename # Repertoire(s) de recherche gnr(s) par commandes

Les arguments suivants attendu par nd son les expressions de recherche ("searh expression"). Le premier argument commenant par "-" est considr comme le dbut de lexpression de recherche. Chaque partie de lexpression de recherche est valu vrai ou faut et est utilis pour determiner si le chier en question satisfait ou non le(s) expression(s) de recherche.

$ find /usr /var/html -name "*.htm*" -print # Rechercher dans /usr/local et /var/www/html le

###### ## Autre Exemples # Recherche des fichiers de plus de 5 Mo dans le rpertoire courant $ find . -size +5M # Recherche des rpertoires $ find . -type d # Recherche de fichiers simples $ find . -type f # Recherche des rpertoires ou des liens symboliques $ find . -type d -o -type l # Recherche des fichiers dont le nom commence par foo $ find . -name "foo*" # Recherche des fichiers SUID dans /usr/bin $ find /usr/bin -perm -4000

Note : Combine avec des pipes et dautres commandes (grep, xargs, exec. . .) cette commande est vraiment utile.

126

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

# Excuter macommande sur chaque entre du rpertoire courant ou de ses sous-rpertoires. Attention bien protger les accolades par des guillemets simples afin dempcher leur interprtation en tant que ponctuation du script shell. De la mme faon, le point-virgule est protg grce une barre oblique inverse, bien que lapostrophe aurait aussi pu tre utilise. $ find . -type f -exec macommande {} \;

#Ici on utilise loption -exec pour afficher le dtail des fichiers $ find /usr/bin -perm -4000 -exec ls -l {} \; $ find /usr/bin -perm -4000 -ls # commande quivalente la prcdente "-ls" liste les fichi un format de sortie identique la commande+options ls -dils

# Chercher les fichiers qui sappellent noyau dans le rpertoire /tmp et ses sous-rpertoires, puis les effacer, en veillant ce que les noms de fichiers ou de rpertoires qui contiennent des retours la ligne, des guillemets simples ou doubles ou des espaces soient correctement traits. $ find /tmp -name noyau -type f -print0 | xargs -0 /bin/rm -f $ find /tmp -name noyau -exec /bin/rm -f {} \; # commande quivalente $ find /tmp -name noyau -delete # commande quivalente si on u

7.5.2.10. fuser
fuser identie les processus qui utilisent des chiers ou des sockets. Peu souvent utilise, elle est utile pour dterminer parfois quel processus utilise telle socket (service serveur) ou ressource.
$ netstat -nat # Voir un service serveur lcoute sur le port 631 Proto Recv-Q Send-Q Adresse locale Adresse distante Etat tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN $ sudo fuser 631/tcp # Rcuprer le PID du processus qui utilise cette socket 631/tcp: 5838 $ sudo cat /proc/5838/cmdline # On cherche quelle ligne de commande activ ce processus /usr/sbin/cups

==> Pas de problme pour cette fois il sagit du serveur dimpression cups (Common Unix Prin

127

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.5.2.11. gzip & bzip2


Source(s):

Tutoriel:Archiver & Compresser (http://www.siteduzero.com/tutoriel-3-74290-archiver-et-compresser.html)

gzip et bzip2 servent compresser et dcompresser des chiers ou une arborescence (option -r rcursif).bzip2 offrant un taux de compression suprieur gzip mais le traitement est plus lent.
Note : Ces deux commandes ne peuvent sappliquer que sur un seul chier la fois... utiliser tar pour compresser plusieurs chiers en une fois...

###### ## Compression de fichier # $ gzip monfichier.x $ gunzip monfichier.x.gz $ bzip monfichier.x $ bunzip monfichier.x.bz2

# # # #

Crer monfichier.x.gz Restaurer monfichier.x Crer monfichier.x.bz2 Restaurer monfichier.x

###### ## TAR & Compression gzip # $ tar -zcvf monarchive.tar mondossier/ # -zcvf Archiver et compresser en gzip # -z archive automatiquement compresse avec gzip. # Dcompresser $ tar -zxvf monarchive.tar.gz # -zxvf d-archiver et dcompresser depuis gzip

###### ## TAR & Compression bzip # $ tar -jcvf monarchive.tar.bz2 mondossier/ # -jcvf Archiver et compresser en bzip2 $ tar cvf - mondossier/ | bzip2 > monarchive.tar.bz2 # Equivaut la commande prcdente mai # -j archive automatiquement compresse avec bzip2. # Dcompresser $ tar -jxvf tutoriels.tar.bz2 tutoriels/ # -jxvf D-archiver et d-compresser depuis bzip2

128

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.5.2.12. info
info fait parti des sources de documentation sous GNU/Linux. Vous en avez trois : /usr/share/doc, man que vous connaissez dj et info. Vous retrouverez sensiblement les mmes documentations entre man et info sauf pour les programmes GNU (gawk par exemple) pour lesquels vous trouverez beaucoup plus de choses dans info. Sur votre poste, si vous utilisez KDE, vous pouvez mettre dans le navigateur konqueror "info:/", les pages info seront afches au format html.

7.5.2.13. lsof
lsof liste les chiers ouverts. Elle peut tre utile dans bien des scnarios.

# On a un disque de mont sur /media/disque, il est temps de le dmonter : $ sudo umount /media/disk/ umount: /media/disk: priphrique occup # Ici on a typiquement un processus qui empche de $ sudo lsof | grep disk bash 30878 mlx cwd 1 /media/disk # Ici on a le coupable. Cest un shell o $ ps ux | grep 30878 ameno 30878 0.0 0.1 4680 2068 pts/3 /bin/bash # Rsoudre le problme nest plus quune question de secondes. # Il suffit didentifier la fentre et la fermer ou # envoyer un signal 9 au processus

7.5.2.14. mail ou mailx


mail est un client de messagerie pouvant tre utilis en mode commande ou appel dans un script. Vous pouvez lutiliser en mode interactif ou en mode batch. Il est aussi utiliser pour tester le bon fonctionnement des service SMTP. Vous devez avoir un serveur SMTP actif et fonctionnel comme exim, postx ou autre sur la machine. mail est notamment utilis dans les scripts cron pour envoyer des notications au sysmaster.
# exemple denvoi $ echo coucou | mail petitjean -s "Test de la messagerie" # autre exemple $ mail petitjean -s "Test de la messagerie" << EOF > coucou cest un autre test > EOF # consultation petitjean@localhost:$ mail Mail version 8.1.2 01/15/2001. Type ? for help. "/var/mail/petitjean": 2 messages 2 new >N 1 petitjean@localhost Fri Aug 28 09:31 Test de la messagerie N 2 petitjean@localhost Fri Aug 28 09:31 Test de la messagerie & 1 Message 1:

129

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


From petitjean@localhost Fri Aug 28 09:31:50 2009 X-Original-To: petitjean To: petitjean@localhost Subject: Test de la messagerie Date: Fri, 28 Aug 2009 09:30:50 +0200 (CEST) From: petitjean@localhost (petitjean) coucou & q

7.5.2.15. mount
mount est la commande qui permet de monter ou dmonter des systmes de gestion de chiers (disques internes ou externes, volumes virtuels, volumes distants. . .). La syntaxe simplie est : mount [-fnrsvw] [-t vfstype] [-o options] device dir
# $ # $ Par exemple mount -t ext3 /dev/sda1 /media/sda1 Un disque nfs distant mount -t nfs serveurdistant:/usr/share/doc /media/doc

mount permet galement de monter des images ISO. Si vous avez tlcharg limage systemrescuecd.iso et que vous vouliez voir ce quil y a dedans vous pouvez utiliser mount :
$ mkdir vram $ mount -o loop systemrescuecd.iso vram $ cd vram

Pour dmonter un volume utilisez umount, mais attention le volume ne doit pas tre utilis par un processus. Voir aussi les chiers /etc/fstab et /etc/mtab.

7.5.2.16. nl
nl numrote les lignes. Cest utile si vous ralisez des documentations et que vous vouliez rfrencer des lignes par des numros pour les commenter.
$ nl monfichier $ cat /etc/passwd | nl 1 root:x:0:0:root:/root:/bin/bash 2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh 3 bin:x:2:2:bin:/bin:/bin/sh 4 sys:x:3:3:sys:/dev:/bin/sh ...

130

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


Note : nl numerote uniquement les lignes non vides !

7.5.2.17. ntpdate
ntpdate permet de mettre jour lheure systme dune machine partir dun serveur de temps. Voir le projet de cluster de serveur de temps

$ sudo ntpdate pool.ntp.org 28 Aug 08:32:48 ntpdate[5038]: \ adjust time server 91.121.104.170 offset -0.121994 sec

Note : Il est conseill dutiliser le dmon ntpd.

7.5.2.18. patch
Permet de patcher (modier) un chier texte partir dun diff. Ce procd est le plus gnralement utilis par les dveloppeurs lors de corrections de bogues. Voir commande diff

7.5.2.19. sed
Source(s):

Tutoriel: http://www.grymoire.com/Unix/Sed.html http://sleepyhead.de/howto/?href=scripting Scripts: Compter les mots de documents XML (docs/sys-countwords-sh.txt)

sed -e s/<[^>]*>//g foo.htm

# Enlever les tags dun fichier xml/xhtml/html

echo "hello world world hello world" | sed s/[ \t]\+/:/g hello:world:world:hello:world # Remplacer espace et tabulation par un autre caractr # Voir aussi awk commande equivalent sed # # # "s/<[^>]*>//g" monfichier.xhtml | sed "s/[ \t\n\r\a\0]\+/ /g" | wc; Supprime les tags XML, les tabulations et espace en excs puis compte le contenu wc retourne 3 chiffres : NumLignes NumMots NumCaractres

131

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.5.2.20. sort
sort permet de trier des chiers ou un rsultat sur la sortie standard.
$ $ $ $ sort /etc/passwd cat /etc/passwd | sort car /etc/passwd | sort -r # -r permet davoir le rsultat dans lordre inverse car /etc/passwd | sort -u # -u permet de supprimer les doublons.

7.5.2.21. split
split permet de scinder en plusieurs chiers un gros chier. Utiliser cat pour la reconstruction.
$ ls -alh debian-502-i386-netinst.iso -rw-r--r-- 1 mlx mlx 151M 2009-06-29 13:07 debian-502-i386-netinst.iso # On cre des fichiers de 15 M # On utilise un prfixe xyz $ split -b 15M debian-502-i386-netinst.iso xyz $ ls -alh xyz* -rw-r--r-- 1 mlx mlx 15M 2009-08-23 12:32 xyzaa -rw-r--r-- 1 mlx mlx 15M 2009-08-23 12:32 xyzab -rw-r--r-- 1 mlx mlx 15M 2009-08-23 12:32 xyzac -rw-r--r-- 1 mlx mlx 15M 2009-08-23 12:32 xyzad -rw-r--r-- 1 mlx mlx 15M 2009-08-23 12:32 xyzae -rw-r--r-- 1 mlx mlx 15M 2009-08-23 12:32 xyzaf -rw-r--r-- 1 mlx mlx 15M 2009-08-23 12:32 xyzag -rw-r--r-- 1 mlx mlx 15M 2009-08-23 12:32 xyzah -rw-r--r-- 1 mlx mlx 15M 2009-08-23 12:32 xyzai -rw-r--r-- 1 mlx mlx 15M 2009-08-23 12:32 xyzaj -rw-r--r-- 1 mlx mlx 32K 2009-08-23 12:32 xyzak # On reconstitue limage iso $ cat xyz* > disque.iso # On vrifie le rsultat $ md5sum debian-502-i386-netinst.iso disque.iso eb436947414480e2c8ad60248d64ae59 debian-502-i386-netinst.iso eb436947414480e2c8ad60248d64ae59 disque.iso

7.5.2.22. stat
Afche les informations sur un chier ou un SGF.
$ touch a

132

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


$ ln a b $ stat b File: b Size: 0 Blocks: 0 Device: 807h/2055d Inode: 984298 Access: (0644/-rw-r--r--) Uid: ( 1000/ Access: 2009-08-23 12:37:13.000000000 +0200 Modify: 2009-08-23 12:37:13.000000000 +0200 Change: 2009-08-23 12:37:17.000000000 +0200

IO Block: 4096 Links: 2 mlx) Gid: ( 1000/

mlx)

Notez le nombre de liens (Links). Le chier b est en effet un lien physique.

7.5.2.23. su
su permet de changer dID utilisateur ou de passer root (Voir aussi la commande sudo ci-dessous).
filostene$ su Mot de passe : debstafil# debstafil# exit exit filostene$ filostene$ su eeeee Mot de passe : eeeee$ # Prendre lidentite de root

# Prendre lidentit de lutilisateur eeeee

7.5.2.24. sudo
Source(s):

OF: sys01-ch24-sudo.pdf (docs/sys01-ch24-sudo.pdf) Tutoriel:Activer le compte systme root (Une opration fortement dconseille !) (http://doc.ubuntu-fr.org/root)

sudo permet dexcuter une commande avec des droits privilgis. Toute action est archive et la dnition des droits, groupes et utilisateurs seffectue grce la commande visudo qui sassure galement de la cohrence de la syntaxe du chier. Application :
$ nano /etc/sudoers

133

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

... std ALL=NOPASSWD:/bin/more

# autorise sudo more /etc/sudoers # lutilisateur std # sans mot de passe # Active la journalisation dans # dans le fichier /var/log/sudo.log

... Defaults log_year, logfile=/var/log/sudo.log

$ man sudo

# options -u : sudo execute une commande en tant que lutilisateur spcifi en non plus root -c : ci-dessous, lis les commandes depuis la chane de caractre au lieu de lentre standar sudo -u yazza ls ~yazza # # # # # # # # # #

sudo -u www vi ~www/htdocs/index.html sudo shutdown -r +15 "quick reboot" sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"

liste repertoire home de yazza sur une machine ou le systme de fichi contenant ~yazza nest pas exportable en tant que root editer un fichier html en tant quutilisateur www redmarrer la machine Liste repertoire dans /home partition Execute dans un sous-shell pour faire fonctionner cd et la redirection

Note : Sous Ubuntu, le compte root est dsactiv par dfaut et il est autement recommend de ne pas lactiver.
$ sudo -i $ exit # Obtenir un shell route sous Ubuntu # Pour en sortir

$ sudo passwd root # Pour utiliser le vrai compte root au lieu de sudo $ sudo passwd --lock root # Dsactiver le compte root prcedement activ # Si vous aviez configur sudo de faon ce quil demande votre mot de # effectuez la manipulation inverse ! Autrement, sudo sera compltement

Ubuntu dconseillent (sans argumenter, dailleurs) dactiver le compte root ; quels sont les inconvnients/avantages entre compte root / utilisation de sudo ? Il est difcile de savoir sil y a vraiment des avantages et des inconvnients. L il sagit dune stratgie ubuntu certainment li au poste client. Les coordinateurs nont encore jamais vu de serveur ou le compte root navait pas de mot de passe ;-)

134

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.5.2.25. tail & head


tail et head permettent respectivement de lire un nombre de lignes en n ou en dbut de chier.
# Lire 50 lignes... $ tail -n 50 /var/log/messages # ... les premires ... $ head -n 50 /var/log/messages # ... les dernires ... # Afficher tout ce qui arrive dans le fichier $ tail -f /var/log/auth.log

7.5.2.26. tar
Source(s):

Tutoriel:Archiver & Compresser (http://www.siteduzero.com/tutoriel-3-74290-archiver-et-compresser.html)

tar permet de raliser des archives c.a.d de regrouper des chiers et repertoires en un seul chier.

###### ## TAR uniquement # $ tar -cvf monarchive.tar fichier1 fichier2 fichier3 # -cvf Crer un archive \a partir de fi $ tar -cvf monarchive.tar mondossier/ # -cvf Crer un archive partir dun repertoire (equi # -c cr une archive tar # -v affichier le detail des operations # -f assembler larchive dans un fichier

# Il est toujours prferable de regrouper tous les fichiers dans un seul dossier avant de le $ tar -tf monarchive.tar # -tf : afficher le contenu de larchive sans lextraire # -t liste contenu de larchive # -f utilise fichier archive $ # # # $ # # # tar -rvf monarchive.tar fichier4_en_plus # -rvf Ajouter un fichier -r Ajouter au fichier archives existant -v afficher le detail des operations -f assembler larchive dans un fichier tar -xvf monarchive.tar # -xvf Extraire les fichiers de larchive -x pour eXtract) : -v afficher le detail des operations -f d-assembler larchive depuis un fichier

######

135

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


## TAR & Compression gzip # $ tar -zcvf monarchive.tar mondossier/ # -zcvf Archiver et compresser en gzip # -z archive automatiquement compresse avec gzip. # Dcompresser $ tar -zxvf monarchive.tar.gz # -zxvf d-archiver et dcompresser depuis gzip

###### ## TAR & Compression bzip # $ tar -jcvf monarchive.tar.bz2 mondossier/ # -jcvf Archiver et compresser en bzip2 $ tar cvf - mondossier/ | bzip2 > monarchive.tar.bz2 # Equivaut la commande prcdente mai # -j archive automatiquement compresse avec bzip2. # Dcompresser $ tar -jxvf tutoriels.tar.bz2 tutoriels/ # -jxvf D-archiver et d-compresser depuis bzip2

###### ## Exclure des fichiers # # Loption --exclure MOTIF permet de ne pas archiver certains type de fichiers selon le MOTI # Pour exclure plusieurs MOTIF, repter loption autant de fois que necessaire. # $ tar -jcvf monarchive.tar.bz2 mondossier/ --exclude=*.disk --exclude *~

7.5.2.27. tee
Permet de lire un ux sur une entre standard (console, chier, socket. . . et dcrire le ux sur la sortie standard et dans un chier.

###### ## TEST # $ tee > out.txt $ ls $ ls -al $ ps # <-------- Ici faire CTRL Z pour arrter (-eq fin de fichier) [1]+ Stopped tee > out $ more out.txt ls ls -al ps

136

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.5.2.28. tr
tr permet de transformer ou supprimer des caractres.
# Conversion en majuscules $ echo toto | tr "a-z" "A-Z" TOTO $ echo toto | tr "[:lower:]" "[:upper:]" TOTO # Remplacement de caractres echo toto | tr "po" "ta" tata # Suppression de caractres echo toto | tr -d o tt

7.5.2.29. tzselect, tzcong & tzdata


Ces commandes permettent dafcher ou de congurer les fuseaux horaires (timezone) du systme.
###### ## Afficher les fuseaux horaires (timezone)... # $ tzselect Please identify a location so that time zone rules can be set correctly. Please select a continent or ocean. 1) Africa 2) Americas 3) Antarctica 4) Arctic Ocean 5) Asia 6) Atlantic Ocean 7) Australia 8) Europe 9) Indian Ocean 10) Pacific Ocean 11) none - I want to specify the time zone using the Posix TZ format. #? 8 Please select a country. 1) Aaland Islands 18) Greece 35) Norway 2) Albania 19) Guernsey 36) Poland 3) Andorra 20) Hungary 37) Portugal 4) Austria 21) Ireland 38) Romania 5) Belarus 22) Isle of Man 39) Russia 6) Belgium 23) Italy 40) San Marino 7) Bosnia & Herzegovina 24) Jersey 41) Serbia 8) Britain (UK) 25) Latvia 42) Slovakia

137

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


9) Bulgaria 26) Liechtenstein 43) Slovenia 10) Croatia 27) Lithuania 44) Spain 11) Czech Republic 28) Luxembourg 45) Sweden 12) Denmark 29) Macedonia 46) Switzerland 13) Estonia 30) Malta 47) Turkey 14) Finland 31) Moldova 48) Ukraine 15) France 32) Monaco 49) Vatican City 16) Germany 33) Montenegro 17) Gibraltar 34) Netherlands #? 15 The following information has been given: France Therefore TZ=Europe/Paris will be used. Local time is now: Mon Dec 14 11:36:37 CET 2009. Universal Time is now: Mon Dec 14 10:36:37 UTC 2009. Is the above information OK? 1) Yes 2) No #? 1 You can make this change permanent for yourself by appending the line TZ=Europe/Paris; export TZ to the file .profile in your home directory; then log out and log in again. Here is that TZ value again, this time on standard output so that you can use the /usr/bin/tzselect command in shell scripts: Europe/Paris

Variable denvironement du fuseau horaire: : Le fuseau horaire est enregistr dans la variable denvironement $TZ, il peut donc tre utilis dans les scripts ou congur diffrement pour chaque utilisateur via le chier .prole dand leur repertoire personnel. TZ=Europe/Paris; export TZ # Modie la variable denvironement

###### ## Ajuster le fuseau horaire (timezone)... [DEPRECATED] # $ tzconfig WARNING: the tzconfig command is deprecated, please use: dpkg-reconfigure tzdata ###### ## Ajuster le fuseau horaire (timezone)... [DEBIAN UI TEXTE INTERFACE] # $ dpkg-reconfigure tzdata #Ajuster le fuseau horaire (timezone)... Current default timezone: Europe/Paris Local time is now: Wed Dec 9 12:10:34 CET 2009. Universal Time is now: Wed Dec 9 11:10:34 UTC 2009.

138

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.5.2.30. wc
wc compte le nombre doctets, de caractres ou de lignes dun chiers.
$ wc -l /var/log/auth.log 1671 /var/log/auth.log

7.5.2.31. xargs
xargs permet de rcuprer la sortie standard dune commande comme une liste de paramtres pour leur appliquer une autre commande.
# Rechercher tous les fichiers standards et leur appliquer # de nouveaux droits $ find . -type f | xargs chmod 755 # Ici pour des rpertoires $ find . -type d | xargs chmod 711 # Recherche tous les fichiers .bak et les supprime $ find . -name "*.bak" | xargs rm # Recherche tous les fichiers de plus de 50 Mo et les affiche $ find . -size +50M | xargs ls -alh

Note : Attention lutilisation de cette commande, notamment si vous passez en paramtre une commande rm ou mv car sil y a une erreur les consquences peuvent tre graves.

7.5.3. Applications
Toutes les commandes sont ralises sur une ligne laide de pipes si besoin. 1. Donner la liste de tous les comptes et uniquement ceux-la, issus du chier passwd, tris par ordre alphabtique. Le rsultat sera mis dans le chier /tmp/out. Vous utiliserez cut et sort.
$ cut -f 1 -d: /etc/passwd | sort > tmp.out

139

Chapitre 7. SR001 Commandes GNU/Linux (Shell) 2. Donner le nombre de chier dans /usr/bin. Vous utiliserez ls et wc.
$ ls -Al /usr/bin | wc -l

3. Rechercher dans /usr/share/doc, tous les chiers compresss (.gz) et indiquer le nombre. Vous utiliserez nd et wc.
$ find /usr/share/doc -name "*.gz" | wc -l

4. Donner la liste des processus shell (bash) lancs par des utilisateurs. Vous utiliserez ps et un grep.
$ ps aux | grep bash

5. Ralisez une archive compresse avec bzip2 de /etc/. Larchive sera dans /tmp/etc.tar.bz2.
$ tar -jcvf /tmp/etc.tar.bz2 /etc/ $ tar -cf /etc | bzip2 > /tmp/etc.tar.bz2

# Equivalent

6. Rpartissez etc.tar.bz2 laide de split en autant de chiers de 1 Mo que possible. Le prxe sera etc.
$ split -b 1M /tmp/etc.tar.bz2 etc

7. Reconstruisez laide de cat et des chiers split un chier new-etc.tar.bz2


$ cat etc* > new-etc.tar.bz2 # Attention avec etc* sinon etc.tar.bz2 ou tout autre fichier $ cat etcaa etcab etcac etcad etcae etcaf > new-etc.tar.bz2

8. Vriez laide de la commande md5sum que les deux chiers etc.tar.bz2 et new-etc.tar.bz2 sont bien identiques.
md5sum new-etc.tar.bz2 /tmp/etc*

9. Rechercher dans /home tous les chiers appartenant au compte foo et changez le propritaire et le groupe qui devient bar. Vous utiliserez nd, xargs et chown.
$ find /home -user foo -print0 | xargs -0 /bin/chown bar:bar $ find /home -user foo | xargs sudo chown bar :bar

# Variant

140

Chapitre 7. SR001 Commandes GNU/Linux (Shell) 10. Que se passe t-il la suite de la commande: cat /etc/passwd | tr \n \r > /tmp/newpasswd Testez les deux chiers /etc/passwd et /tmp/newpasswd sous Linux et sous Windows. La commande cre une copie du chier de mot de passe en remplacant tous les caractres nouvelle ligne (\n) du chier original par le caractre retour (\r). Sous linux, les deux chiers apparaissent de faon identique (une entre par ligne), sous windows, les lignes apparaissent concatnes les unes aux autres (toutes les entres sur la mme ligne) pour le chier original /etc/passwd. n est le caractre de contrle de changement de ligne standard sous les systmes *nix, ici il est remplac par un CR/LF qui est plus standard pour Windows.

7.5.4. grep et les expressions rationnelles (ou regulires, regexp, ...)


Source(s):

OF: SR001-sys02-ch03-expression-rationnelle.pdf (docs/eof/sr001-sys02-ch03-expression-rationnelle.pdf) Tutoriels: Shell scripts - Filtres (http://www.ac-creteil.fr/reseaux/systemes/linux/shell-scripts/ltres.html) Shell scripts - Expressions rgulires (http://www.ac-creteil.fr/reseaux/systemes/linux/shell-scripts/expr-regulieres.html)

7.5.4.1. Introduction
Les expressions rationnelles ("Regular Expression", "regexp" en Anglais) permettent de rechercher et selectionner une (ou des) chanes de caratre partir de linterpretation dun motif de critres ou modles de recherche ("Pattern" en Anglais) Une fois la (ou les) chane(s) selectionne(s) suivant le motif, lobjectif est simplement deffectuer des traitements comme des subtitutions, des validations, etc... sur les chaines trouves. Leur utilisation stend de certains ltres shell : grep, sed, awk, ... des langages de scripts : perl, php, ... et aux diteurs de texte : vi , emacs, ...
Note : !!! Attention !!! lorthographe dune expression peut varier dun outil un autre. Certains caractres (comme le ? ou le | avec vi) peuvent galement ne pas tre supports. Il faut donc toujours se rfrer la documentation de loutil. certains caractres spciaux sont communs avec les caractres gnriques de dsignation de chiers, mais ils ont une interprtation diffrente. Donc il faut toujours prter attention au contexte.

141

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.5.4.2. Syntaxe avec grep...


La syntaxe la plus courante est:
$ grep [options] expreg [fichiers]

Voir grep pour plus dinfo sur cette commande. Avec grep, les motifs doivent tre saisis entre guillemets (exemple : UnMotif) ou entre apostrophes si le motif contient un $ (exemple : $UnMotif).

7.5.4.3. Caractre particuliers ou "mta-caractres"


Appels aussi caractres spciaux, ce sont des caractres interprts en contexte expression rationnelle comme des oprateurs. En voici la liste avec un bref descriptif :
. x* x+ x? x|y [...] [^...] [^0-9] ^abc abc$ x{n} x{n,} x{0,m} x{n,m} <abc abc>

. (point) remplace tout caractre sauf \n (astrisque) chane contenant 0 ou n fois le caractre x = rpetition du caractre q chane contenant 1 ou n fois le caractre x = au moins une occurence chane contenant 0 ou 1 fois x = au plus une occurence chane contenant x ou bien alors y (crochets) chane comprenant tout caractre contenu entre les crochets = un ensemble le ^ lintrieur des [ ] signifie le "non" boolen ou le complment = Ensemble complmentaire Par exemple [^0-9] signifie tout ce qui nest pas un chiffre. recherche la chane "abc" en dbut de ligne recherche de la chane "abc" en fin de ligne chane chane chane chane contenant contenant contenant contenant

n fois le caractre x au moins n fois le caractre x de 0 m fois le caractre x de n m fois le caractre x = nombre de rptitions attendus du ca

mot commenant pas la chane "abc" mot se terminant pas la chane "abc" mta-caractre, pour jouer le rle du caractre usuel

\ annule le rle de

Les principaux caractres de contrles : \t tabulation \n retour ligne \r retour chariot \s espace

142

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


Note : Lantislash \ inhibe linterprtation des caractres spciaux et force leur interprtation usuelle.
.\.txt recherche les chaines du genre c.txt , o c est un caractre unique qcq \*$ recherche les chaines qui se terminent ($) par le caractre astrisque (\*)

Note : Un caractre particulier comme ?, *. . . exprim entre [ ] est pris dans son sens littral. Cest dire quil nest pas interprt.

Note : Dans les expressions rationnelles simples, les mta-caractres ?, +, {, |, (, et ) perdent leur signication spciale, il faut utiliser la place leurs versions avec la contre-oblique \ ?, \+, \{, \|, \(, et \) pour leur conserver leur caractre particulier(interprtable) ou alors utiliser le mode tendu de grep avec loption -E.

7.5.4.4. Jeu dessai...


# Recherche la chane "perl" $ grep perl jeu_essai.txt perle perlant perl Parler parle perl langage Le langage c ou perl le le le langage gage ge ppppppperl ppeeerrrllll peeerrlllll peerrlllll # Recherche la chane "Perl" $ grep Perl jeu_essai.txt Perl le language C ou Perl # Recherche la chane "perl" ou "Perl" $ grep [pP]erl jeu_essai.txt Perl perle perlant perl Parler parle perl langage Le langage c ou perl le le le langage gage ge ppppppperl ppeeerrrllll peeerrlllll peerrlllll le language C ou Perl ... $ grep $ grep $ grep ## Ces "<pe" jeu_essai.txt "rl>" jeu_essai.txt "<perl>" jeu_essai.txt trois l donnent aucun # Mot commenant par "pe" # Mot finissat par "rl" # Mot "perl" resultat bizarre bizarre ?!

143

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


## En fait aprs un rapide coup doeil dans la page de man ## il apparat quil faut plutt utiliser: $ grep "\Bpe" jeu_essai.txt # Mot commenant par "pe" le le le langage gage ge ppppppperl ppeeerrrllll peeerrlllll peerrlllll $ grep "rl\b" jeu_essai.txt # Mot finissat par "rl" Perl perl Parler parle perl langage Le langage c ou perl le le le langage gage ge ppppppperl ppeeerrrllll peeerrlllll peerrlllll le language C ou Perl $ grep "\Bperl\b" jeu_essai.txt # Mot "perl" # Ligne commenant par "perl" $ grep "^perl" jeu_essai.txt perle perlant perl Parler parle perl langage # Exclure "abc" $ grep "[^abc]" jeu_essai.txt Perl perle perlant parlant Parlant parler perl Parler parle perl langage alpha qwertz exe language exe qwertz qwertz alpha exe qwertz qwertz alpha Langage Language Le langage c ou perl le le le langage gage ge ppppppperl ppeeerrrllll peeerrlllll peerrlllll le language C ou Perl 02.03.05.03 03.236.5696 zro un deux trois quatre cinq six sept huit neuf 0 1 2 3 5 6 7 8 9 400000 401000 402000 403000 404000 405000 400 401 402 403 404 405 4 41 42 43 44 45 4 1 2 3 4 5 ami tel age joe 05-55-33-22-55 23 ans bar 10-23-22-55-63 35 ans team 03-02-21-12-25 99 ans # Ligne terminant par "Perl" $ grep "Perl$" jeu_essai.txt Perl

144

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


le language C ou Perl # Le deuxime caractre est indiffrent parl, pbrl, pcrl... $ grep "p.erl" jeu_essai.txt le le le langage gage ge ppppppperl ppeeerrrllll peeerrlllll peerrlllll

# Ligne commenant par un point $ grep "^\." jeu_essai.txt .juste pour le teste # Cette a t rajouter manuellement la fin du fichier jeu_essai. # Chane commence par une majuscule et termine par la chane "erl" $ grep "[A-Z]erl" jeu_essai.txt Perl le language C ou Perl # Chane ayant 0, 1, ou n majuscules $ grep "[A-Z]*" jeu_essai.txt Perl perle perlant parlant Parlant parler perl Parler parle perl langage alpha qwertz exe language exe qwertz qwertz alpha exe qwertz qwertz alpha Langage Language Le langage c ou perl le le le langage gage ge ppppppperl ppeeerrrllll peeerrlllll peerrlllll le language C ou Perl 02.03.05.03 03.236.5696 zro un deux trois quatre cinq six sept huit neuf 0 1 2 3 5 6 7 8 9 400000 401000 402000 403000 404000 405000 400 401 402 403 404 405 4 41 42 43 44 45 4 1 2 3 4 5 ami tel age joe 05-55-33-22-55 23 ans bar 10-23-22-55-63 35 ans team 03-02-21-12-25 99 ans .juste pour le teste # Squence alphanumrique $ grep "[0-9a-zA-Z]*" jeu_essai.txt

145

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


$ grep "[[:alnum:]]*" jeu_essai.txt # Equivalent Perl perle perlant parlant Parlant parler perl Parler parle perl langage alpha qwertz exe language exe qwertz qwertz alpha exe qwertz qwertz alpha Langage Language Le langage c ou perl le le le langage gage ge ppppppperl ppeeerrrllll peeerrlllll peerrlllll le language C ou Perl 02.03.05.03 03.236.5696 zro un deux trois quatre cinq six sept huit neuf 0 1 2 3 5 6 7 8 9 400000 401000 402000 403000 404000 405000 400 401 402 403 404 405 4 41 42 43 44 45 4 1 2 3 4 5 ami tel age joe 05-55-33-22-55 23 ans bar 10-23-22-55-63 35 ans team 03-02-21-12-25 99 ans .juste pour le teste # le chiffre 0 ou 3 ou 7 $ grep "[037]" jeu_essai.txt 02.03.05.03 03.236.5696 0 1 2 3 5 6 7 8 9 400000 401000 402000 403000 404000 405000 400 401 402 403 404 405 4 41 42 43 44 45 4 1 2 3 4 5 joe 05-55-33-22-55 23 ans bar 10-23-22-55-63 35 ans team 03-02-21-12-25 99 ans # les chanes "langage" ou "language" ou grep -E "lang[u]?age" $ grep "lang[u]\?age" jeu_essai.txt $ grep -e "lang[u]\?age" jeu_essai.txt # Equivalent perl Parler parle perl langage alpha qwertz exe language

146

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


Le langage c ou perl le le le langage gage ge ppppppperl ppeeerrrllll peeerrlllll peerrlllll le language C ou Perl $ grep -E "lang[u]\?age" jeu_essai.txt ## Aucun resultat ! # Recherche des chanes "ppp" ou "pppp" $ grep "p{3,4}" jeu_essai.txt ## Aucun resultat ?! $ grep -E "p{3,4}" jeu_essai.txt le le le langage gage ge ppppppperl ppeeerrrllll peeerrlllll peerrlllll # Chane au format mm.mmm.mmmm avec m compris entre 0 et 9 $ grep "[0-9]{2}\.[0-9]{3}\.[0-9]{4}" jeu_essai.txt ## Aucun resultat ?! $ grep -E "[0-9]{2}\.[0-9]{3}\.[0-9]{4}" jeu_essai.txt 03.236.5696 # Recherche chane "e+" $ grep "e+" jeu_essai.txt # Caractre + est pris littralement. ce+ci est un autre essai... $ grep -E "e+" jeu_essai.txt # Caractre + est pris au sens tendu. $ grep "e\+" jeu_essai.txt # Equivalent Perl perle perlant parler perl Parler parle perl langage alpha qwertz exe language exe qwertz qwertz alpha exe qwertz qwertz alpha Langage Language Le langage c ou perl le le le langage gage ge ppppppperl ppeeerrrllll peeerrlllll peerrlllll le language C ou Perl zro un deux trois quatre cinq six sept huit neuf ami tel age joe 05-55-33-22-55 23 ans team 03-02-21-12-25 99 ans .juste pour le teste lang?age ce+ci est un autre essai... # Ne pas oublier les quotes ! $ grep -E p{3,} jeu_essai.txt grep: p: Aucun fichier ou rpertoire de ce type $ grep -E "p{3,}" jeu_essai.txt le le le langage gage ge ppppppperl ppeeerrrllll peeerrlllll peerrlllll

147

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


# Attention aux caractres spciaux... $ grep \\$ jeu_essai.txt $ grep [$] jeu_essai.txt # Equivalent Encore un derni$r essai.

7.5.4.5. Exercice
# - 0 - Trouver les lignes vides $ grep "^$" jeu_essai.txt $ grep -v "[[:alnum:]+[:punct:]+]" jeu_essai.txt

# Equivalent ???

# - 1 - Chane contenant au minimum 3 "p" $ grep "[p]{3,}" jeu_essai.txt # Commande KO, donne aucun resultat, erreur de syntaxe $ grep "[p]\{3,\}" jeu_essai.txt # Commande OK $ grep ".p.p.p." jeu_essai.txt # Equivalent ??? le le le langage gage ge ppppppperl ppeeerrrllll peeerrlllll peerrlllll # - 2 - Mot termin par "age" $ grep "age>" jeu_essai.txt ## Dans me cas, cette command retourne aucun resultat ?! Bizarre ## Il faut plutt utiliser: $ grep "age\b" jeu_essai.txt perl Parler parle perl langage alpha qwertz exe language Langage Language Le langage c ou perl le le le langage gage ge ppppppperl ppeeerrrllll peeerrlllll peerrlllll le language C ou Perl ami tel age lang?age # - 3 - Mot termin par "guage" ou "gage" $ grep "g[u]*age>" jeu_essai.txt ## Dans me cas, cette command retourne aucun resultat ?! Bizarre ## Il faut plutt utiliser: $ grep "g[u]*age\b" jeu_essai.txt perl Parler parle perl langage alpha qwertz exe language Langage Language Le langage c ou perl le le le langage gage ge ppppppperl ppeeerrrllll peeerrlllll peerrlllll le language C ou Perl # - 4 - Chane contenant "rla" $ grep "rla" jeu_essai.txt perlant parlant

148

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


Parlant # - 5 - Lignes termines par "ans" $ grep "ans$" jeu_essai.txt $ grep ans$ jeu_essai.txt # Equivalent joe 05-55-33-22-55 23 ans bar 10-23-22-55-63 35 ans team 03-02-21-12-25 99 ans # - 6 - Chane contenant les sous-chanes "alpha" ou "exe" $ grep "alpha\|exe" jeu_essai.txt # le caractre "|" matrialise le "ou" alpha qwertz exe language exe qwertz qwertz alpha exe qwertz qwertz alpha

# - 7 - Ligne ne commenant pas par un chiffre $ grep -v "^[[:digit:]]" jeu_essai.txt # Fonctionne mais nutilise pas compltement les exp $ grep "^[^0-9]" jeu_essai.txt # Mieux $ grep "^[^[:digit:]]" jeu_essai.txt # Equivalent du mieux :) Perl perle perlant parlant Parlant parler perl Parler parle perl langage alpha qwertz exe language exe qwertz qwertz alpha exe qwertz qwertz alpha Langage Language Le langage c ou perl le le le langage gage ge ppppppperl ppeeerrrllll peeerrlllll peerrlllll le language C ou Perl zro un deux trois quatre cinq six sept huit neuf ami tel age joe 05-55-33-22-55 23 ans bar 10-23-22-55-63 35 ans team 03-02-21-12-25 99 ans .juste pour le teste lang?age ce+ci est un autre essai... Encore un derni$r essai. 2009 # - 8 - Ligne commenant par une voyelle ou un chiffre $ grep "^[aeiouy]\|^[[:digit:]]" jeu_essai.txt

149

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


$ grep "^[aeiouy]\|^[0-9]" jeu_essai # Equivalent alpha qwertz exe language exe qwertz exe qwertz 02.03.05.03 03.236.5696 0 1 2 3 5 6 7 8 9 400000 401000 402000 403000 404000 405000 400 401 402 403 404 405 4 41 42 43 44 45 4 1 2 3 4 5 ami tel age # - 9 - Ligne ne commenant pas par une voyelle $ grep "^[^aeiouy]" jeu_essai.txt alpha qwertz exe language exe qwertz exe qwertz ami tel age # - 10 - Ligne commenant ou se terminant par un chiffre $ grep "^[[:digit:]]\|[[:digit:]]$" jeu_essai.txt $ grep "^[0-9]\|[0-9]$" jeu_essai.txt # Equivalent 02.03.05.03 03.236.5696 0 1 2 3 5 6 7 8 9 400000 401000 402000 403000 404000 405000 400 401 402 403 404 405 4 41 42 43 44 45 4 1 2 3 4 5 Encore un derni$r essai. 2009 # - 11 - Les lignes qui font moins de 10 caractres. $ grep "^.\{1,10\}$" jeu_essai.txt $ grep -E "^.{1,10}$" jeu_essai.txt # Equivalent Perl perle perlant parlant Parlant parler exe qwertz exe qwertz Langage Language lang?age

150

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.5.4.6. Extra...
# Ligne contenant "alpha" et "quertz" $ grep "alpha" jeu_essai.txt | grep "qwertz" alpha qwertz exe language qwertz alpha qwertz alpha # Ligne avec mots contenant 401, 402, 403... 409 $ grep "40[0-9]" jeu_essai.txt 400000 401000 402000 403000 404000 405000 400 401 402 403 404 405 # Ligne avec mot commenant par 401, 402, 403... 409 $ grep "\B40[0-9]" jeu_essai.txt 400000 401000 402000 403000 404000 405000 # Ligne avec mot finissant par 401, 402, 403... 409 $ grep "40[0-9]\b" jeu_essai.txt 400 401 402 403 404 405 # Les numros de tlphone compos de 10 chiffres. $ grep -E "((([0-9]{2})-){4})[0-9]{2}" jeu_essai.txt joe 05-55-33-22-55 23 ans bar 10-23-22-55-63 35 ans team 03-02-21-12-25 99 ans # Rechercher une adresse email "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b" # Trouver les paires de tags HTML "<([A-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1>"

# Pour valider une adresse IP "\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|

7.5.5. Editeur en mode texte : VI(m), Emacs, Nano, mcedit, etc...


Source(s):

OF: SR001-sys02-ch04-vi.pdf (docs/eof/sr001-sys02-ch04-vi.pdf) VIM: vim (http://www.vim.org/) Vim : lditeur de texte du programmeur (http://www.siteduzero.com/tutoriel-3-88344-vim-l-editeur-de-texte-du-programmeur.html) Vim as XML Editor (http://www.pinkjuice.com/howto/vimxml) Vim Video Tutorial (http://www.youtube.com/watch?v=71YTkxUNwmg)

151

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

Web: 7 Habits For Effective Text Editing 2.0 (http://video.google.fr/videoplay?docid=2538831956647446078&ei=lUemS6z1CorkAbJvsSWDQ&q=vim&hl=fr#)

De multiple editeurs de texte sont disponible sous Linux: vi(m), emacs, nano, mcedit, etc... Ils ont tous leurs avantages et dfauts en terme de fonctionalits, de vitesse et dutilisabilit (ergonomie)... Pour linstant ni VI(m), ni Emacs ne mont convaincus en terme dutilisabilit... il faut peut-tre plusieurs semaines de pratique avant de rellement maitriser les fonctionalits et les atots de ces diteurs de texte. Ils ont tous lavantage dtre accessible en modem console et VI(m) semble tre celui le plus disponsible par dfaut sur les systemes Linux/Unix de tout genre... pour raison historique... quoi que Emacs soit aussi trs rpendu... Chacun possde un tutorial (un petit logiciel dentranement incorpor Vi, nomm vimtutor), qui vous permet de vous entraner souhait sur ces outils. Cest ce quil est conseill de faire, en faisant de toutes les mthodes imprimes ou autres, car Emacs et Vi sont des outils de travail qui doit avant tout vous rentrer dans les doigts. Il faut que je me penche sur Nano, qui semble tre le vainceur dun combat eternelle entre VI et Emacs... tester pour faire son experience... dun premier abord il semble plus facile daccs sans experience et faire laffaire pour ladministration de systme :)) Dans Nano, le menu en bas de fentre semble tre trs conviviale... mais il est certainement moins volu que VI ou Emacs... Je regrette quaucun ne fournisse un simple copier/coller avec CTRL+C / CTRL+V par dfaut... et je nai pas encore vraiment compris pourquoi... pour de raison historique certainement ou peut-tre trop windowsien au got des dveloppeurs :)) ... En personalisant les raccourcis on doit pouvoir sy retrouver... Le raccourcis clavier devrait aussi faire lobjet dun standard international partag par tous :)... cela existe peut-tre certainement mais jai pas encore eu loccasion de chercher :)) Ce chapitre devra tre approfondi ultrieurement... Il existe videment bien dautre diteur en mode graphique: gedit, kate, quanta, etc... peut-tre pas aussi puissant mais ergonomique et modulaire...

152

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.5.5.1. vim
## Tutorial $ vimtutor ## Ouvrir un fichier $ vim monfichier

# Editer monfichier

## Quitter/Enregistrer :q! (ou ZQ) # Quitter SANS enregistrer :wq (ou ZZ ou :x) # Enregistrer ET Quitter :w monfichier # Sauvegarder dans monfichier mais rester dans fichier ouvert :saveas monfichier # Sauvegarder dans monfichier et ouvrir monfichier ## Activer Mode <Echap> # Normal/Commande (par dfaut) v # Visuel : dmarrer la selection de texte i # Insertion : Insrer caractres SOUS le curseur a (ou A) # Insertion : Insrer caractres APRS (AVANT) le curseur o (ou O) # Insertion : Ouvrir un ligne SOUS (AU DESSUS) de la line courante ## Se dplacer en Mode Normal (haut) k (gauche) h l (droite) j (bas) ## Mouvements w e 0 $ #G G gg CTRL-G en Mode Normal # Aller jusquau dbut du prochain mot # Aller jusqu la fin du mot courant # (zro) Aller jusquau dbut de la ligne # Aller jusqu la fin de ligne # Aller la ligne numro # # Aller la la FIN du fichier # Aller au dbut du fichier # Afficher position + chemin[tat] du fichier

## Rpter un mouvement en Mode Normal 2w # Aller au dbut du 3ime mot (saute 2 mots) 3e # Aller la fin du 3ime mot (saute 3 mots) ## Operations en Mode Normal # Couper/Effacer x # Effacer caractre sous le curseur d # Couper/Effacer dd # Couper/Efface une ligne # Copier y yy

# Copier # Copie une ligne

153

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


# Coller p :<Echap>.

# Coller (Aprs le curseur/En dessous de la ligne courante)

# Changer/Remplacer rx # (caractre) remplacer le caractre sous le curseur par caractre x R # (caractre) remplacer plusieurs caractres sous le curseur jusqu <Echap> c # (mots) changer ce # (mots) remplacer le mot sous le curseur # Annuler u U CTRL-R

# # # # #

(Undo) Annule dernire commande Appyer plusieurs fois pour annuler plusieurs commandes (Undo) Annule toutes les dernires commande sur la ligne Rcupre toute la ligne avant modification (Redo) Annule les annulations :)

## Rpter une opration en Mode Normal ## Syntaxe: ## [Operation][Mouvement] ## Nombre [Operation] ## [Operation] Nombre [Mouvement] 3x # Effacer 3 caractres dw # Effacer 1 mot (jusquau mot suivant) d2w # Effacer 2 mots d$ # Effacer jusqu fin de ligne 3dd # Coupe 3 lignes 4yy # Copie 4 lignes ## Recherche /texte ?texte n N % /texte\c

# Recherche texte en AVANT # Recherche texte en ARRIRE # Trouver le resultat suivant # Trouver le resultat prcdent # Trouver ),] ou } correspondante # Recherche avec option ignorer la case !

## Substitution ## Remplacer ancien par nouveau :s/ancien/nouveau # Dans la 1re occurance seulement de la ligne courante :s/ancien/nouveau/g # Dans toutes les occurances de la ligne courante :#,#s/ancien/nouveau/g # Toutes les occurences dun texte entre deux lignes # - #,# numeros de ligne de la plage de substitution couverte :%s/ancien/nouveau/g # Toutes les occurences dans tout le fichier :%s/ancien/nouveau/gc # Avec confirmation ## Executer une commande externe :!x # Executer la commande externe x (shell) :!ls # Execute la commande ls :!rm monfichier # Execute la commande rm - Efface monfichier

154

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


## Selection/Copier/Coller v [Movement] y [Movement] p v [Movement] :w monfichier

# Selectionner/Copier/Coller dans fichier courant # Enregistrer une selection de texte dans un fichier externe

## Rcupration et fusion de fichier :r monfichier # Inclure le contenu de monfichier # la position courante du curseur :r !ls # Inclure le resultat de la commande externe ls # la position courante du curseur ## Auto-compltion : CTRL-D # Affiche la liste de toutes les commandes disponibles :e CTRL-D # Affiche la liste des commandes commenant par e :e <TAB> # Compltion automatique (nom de commande/fichier) <Flche-Haut> # Affiche les commandes prcdentes ## Activer les options ## Syntaxe: ## :set xxx (xxx=option) :set ic # Activer loption ignorer la case pour la recherche :set noic # Dsactiver loption (idem prcdente) :set hls # Active loption Mise en lumire des resultats de recherche :set hlsearch :nohlsearch # Desactive loption (idem prcdente) :set is # Montrer les appartenance partielles :set ruler # Affiche la barre de localisation du curseur (ligne, column, etc...) ## Fichier de configuration $ vim ~/.vimrc # Editer fichier configuration depuis le shell :edit $MYVIMRC # ---------------------------- depuis vim :version # Liste les fichiers de configurations pris en compte :r $VIMRUNTIME/vimrc_example.vim # Exemple de fichier de configuration ## Aide en Ligne :help # Accder la page daide <F1> CTRL-W CTRL-W # Sauter dune fentre lautre :q<Entree># Quitter laide ## Accs par sujet :help vimrc-intro :help w :help :edit :help c_CTRL-D :help c_<T :help insert-index :help user-manual ## Copier/Coller entre fichiers directement #1. Depuis le Mode Normal (mode commande) presser : #2. Entrer le numro de ligne dbut,fin #3. Presser w

155

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


#4. Entrer le nom du fichier :43,52w monfichier # copie lignes 43 52 vers le nouveau fichier monfichier :43,52w>> monfichier # ajouter la fin dun fichier existant ## Copier/Coller entre fichier via mmoir tampon ## Depuis le Mode Normal (mode commande) presser la suite de commande suivante: "a5yy # Copier 5 lignes dans la mmoire tampon nomme a :e monfichier # Copier mmoire tampon vers un autre fichier, # changer vers le nouveau fichier avec la syntaxe :e "ap # Colle le contenu de la mmoire tampon a lemplacement du curseur :w # Sauvegarder les changements avant de retourner :e# # Retour au fichier original

7.5.6. Editeur en mode graphique : Gedit, Kate, Quanta+, Bluesh, Notepad++, etc...
...

7.5.7. Editeur XML (XML Copy Editor)


Source(s):

Web: XML Copy Editor (http://xml-copy-editor.sourceforge.net)

XML Copy Editor est un logiciel bien pratique pour travailler avec des chiers .xml, .xsl, .xsd, etc... ## FONCTIONALITES * Validation DTD/XML Schema/RELAX NG * XSLT * XPath * "Belle-Impression" * Coloration syntaxique * Pliage de code, repliage (folding en anglais) * Auto-completion de Tag * Editer ses propres Tag * Correction orthographique et syntaxique * Supporte XHTML, XSL, DocBook et TEI * Import/Export sans perte de documents Microsoft Word (seulement sous Windows) Sous ubuntu, il devrait tre inclu dans les paquets fournis. Toutefois dans la version 64bits il ne semble pas disponible. Pour Ubuntu 9.10 64bits la compilation depuis le source semble donc simposer :)... voir plus tard...

156

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.5.8. Environnement de dveloppement intgr (IDE) : Eclipse, Netbeans, Aptana, etc...


Source(s):

Web: Eclipse vs NetBeans (http://mahmudahsan.wordpress.com/2009/01/25/eclipse-vs-netbeans-ide-for-php) My new IDE Netbeans (http://kevin.vanzonneveld.net/techblog/article/my_new_ide_netbeans) Projet PDT (PHP Development Tools Project) (http://www.eclipse.org/pdt) eric-ide (python-project.org) (http://eric-ide.python-projects.org) Tutorial: phpEclipse (http://jp-grossglauser.developpez.com/tutoriels/logiciels/phpeclipse/) Installing Netbeans 6.5 in Debian Lenny (kawruhboso.com/?p=17)

Note : Tout comme les editeurs de texte, le meilleurs moyens den choisir un cest den essayer plusieurs et dutiliser quelques temps celui qui nous convient le mieux. Puis de retenter lexperience avec les autres aprs quelques versions de mise jour :)

Un IDE est un programme regroupant un ensemble doutils pour le dveloppement de logiciels. En rgle gnrale, un EDI regroupe un diteur de texte, un compilateur, des outils automatiques de fabrication, et souvent un dbogueur. Ecrire du code, requiert au moins un diteur de texte :) mais un IDE peut grandement aider plus de productivit et de crativit :) Sous Linux, plusieurs options (mais in ne cela dpend aussi grandement du language dans lequel on souhaite programmer) : NetBeans, Eclipse (avec phpEclipse plugin), Apatana (avec radrails plugin), etc... Voir aussi mon installation de Netbeans, que jai utilis dans le cadre de la formation pour les dveloppements PHP et XML. Pour PHP, Sylvain utilise le projet PDT (http://www.eclipse.org/pdt) bas sur Eclipse qui est assez proche de netbean en terme de fonctionnalits. Pour Python, Sylvain suggre eric-ide (http://eric-ide.python-projects.org) (un peu complexe son got), Netbean et Eclipse dispose tout deux dun plugin Python (jai utilis celui de Netbeans pour mes dveloppements sous Python).

157

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.5.9. Programmation en Langage SHELL (Bash) sous Linux


Source(s):

OF: SR001-sys02-ch06-langage-shell.pdf (docs/eof/sr001-sys02-ch06-langage-shell.pdf)

7.5.9.1. Short Description du language


Cette information est disponible via man bash ou man sh
# Entte de dclaration de linterprteur de commande (aprs le sha-bang #!) #!/bin/bash # Rendre monscript.sh excutable $ chmod u+x monscript.sh # # # # # Paramtres Quand on lance un script : sh ./foobar.sh blah1 blah2 bla3 les paramtres sont passs automatiquement dans $1, $2...$n, par exemple : Dans le script $1 vaut blah1, $2 vaut blah2...

# Variables prdfinies $@ liste des paramtres $# nombre de paramtres $$ numro (PID) du script $0 nom du script $? valeur de retour dun script ou dune fonction # Varialbles affectes $ nom="Pierrot" # Chane de caractres # Utiliser "(double quote) ou (simple quote) $ echo "Salut Pierrot" Salut Pierrot $ echo "Salut \"Pierrot\"" Salut "Pierrot" $ echo "Salut $nom" Salut Pierrot $ echo Salut $nom Salut $nom $ echo "Salut Pierrot" Salut Pierrot $ echo Salut Pierrot Salut Pierrot $ echo Salut "Pierrot" Salut "Pierrot"

158

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


# Suite de commande commande1;commande2;commande3; # equivaut commande1 commande2 commande3 # Structure IF if expression ; then commande1;commande2; ... comandeN elif expression ; then ... else ... fi # Structure CASE case chane in regex) commande1;commande2; commande3 commande4 ... ;; ... *) ... ## Default action ;; esac # Structure FOR for x [ in list ] do commandes done

# Spare par des ;(points virgule) # Spare par des nouvelle ligne

# list = * or cat monfichierlist or 1 2 3 or ...

# Alternative for ((i=0;i<10;i=i+1));do commande $i; done # Structure JUSQUA until test; do commandes ... done

# test = [ $a == 10 ] or ...

# Structure TANTQUE while test; do # test = [ $a -lt 10 ] or ... commandes ... done

159

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

function commande { ... # On accde aux paramtres avec $1...$n resultat = commande $1 } # Function prdfinies: # LET # Initialisation (ajouter 1 i) let i=$i+1 # L on ne met pas despace let "i = $i + 1" # Ici mettez des espaces

# READ #lecture dune valeur au clavier echo -n "Entrez votre nom :" # loption -n dsactive le retour de chariot de fin de chane read nom echo $nom # SELECT # rcuprer un lment dans une liste. select CHOIX [ in liste ; ] do commandes done

# Le numro du choix est affect la variable $REPLY, le nom du choix la variable $CHOIX. # Exemple : Si lutilisateur tape 1, $REPLY vaudra 1 et $CHOIX vaudra "Choix A". select CHOIX in "Choix A" "Choix B"; do case $REPLY in 1) echo "$CHOIX --> $REPLY";; 2) echo "$CHOIX --> $REPLY";; *) echo "Vous avez tap nimporte quoi !";; esac done # # # # # TEST Tester une expression boolenne. On peut aussi noter un test entre des [ ], [ expression ]. Attention laisser un espace aprs le [ et avant le ]. Retourne 0 si Vrai, une autre valeur dans les autres cas.

# Test sur les entiers if test $n1 -eq $n2 ... # n1 -eq n2, si n1 est gal n2 if [ $n1 -eq $n2 ] ... # oprateurs -ne not equal (!=) -eq equal (=) -gt greater (>) -lt lower (<) -le lower or equal (<=) -ge greater or equal (>=) -a AND boolen # Ex: if [ a == a -a b == b ] ; then echo true ; fi

160

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


-o OR boolen # Ex: if [ a == z -o b == b ] ; then echo true ; fi

# Test sur les fichiers -d si cest un rpertoire # [ -d $1 ] -e si le fichier existe # [ -e $1 ] -f si le fichier existe et si cest un fichier standard # [ -f $1 ] # Test sur if test $1 if [ $1 == if test $1 les chanes == $2 ... # s1 == s2, si les chanes s1 et s2 sont identiques $2 ]... # equivalent == $2 ... # s1 != s2, si les chanes sont diffrentes.

# SOURCE . (inclure un fichier . fichier [arguments] # source fichier [arguments] # # # # # SOUS-SHELL (cmd1;cmd2;...)

externe) Lire et excuter les commandes contenues dans fichier avec l de linterprteur courant, puis renvoyer ltat final de la mande excute dans fichier. Si le nom du fichier ne contient oblique, les chemins daccs contenus dans PATH sont rechercher le rpertoire contenant le fichier.

# Cre un sous shell avec son propre environement hrit du parent et modif # cmd1;cmd2;... est un suite de commande excuter (mme syntaxe que pour

7.5.9.2. Exercices dapplication sur la programmation SHELL


7.5.9.2.1. TP 1 utilisation de la fonction test crivez un script qui dit si le paramtre pass est :

un chier un rpertoire nexiste pas

Par exemple, si le script se nomme "premier.sh" la commande ./premier.sh premier.sh, doit indiquer que cest un chier. Resultat : SR001-sys02-ch06-rlscript01.sh (docs/sys02-ch06-rlscript01-sh.txt) SR001-sys02-ch06-eofscript01.sh (docs/sys02-ch06-eofscript01-sh.txt)
# Sans paramtre affiche laide $ ./sys02-ch06-rlscript01.sh Paramtre manquant Usage: ./sys02-ch06-rlscript01.sh FICHIER # Avec en paramtre un fichier inexistant $ ./sys02-ch06-rlscript01.sh test test nexiste pas !

161

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

# Avec en paramtre un dossier inexistent $ ./sys02-ch06-rlscript01.sh /test/ /test/ nexiste pas ! # Avec en paramtre le fichier du script lui mme $ ./sys02-ch06-rlscript01.sh sys02-ch06-rlscript01.sh sys02-ch06-rlscript01.sh existe Cest un fichier # Avec un dossier existant $ ./sys02-ch06-rlscript01.sh /etc /etc existe Cest un repertoire # Avec un lien symbolique ==> On voit quil est trait comme un simple fichier $ ./sys02-ch06-rlscript01.sh /etc/locale.gen /etc/locale.gen existe Cest un fichier

Cet exercise ma permis de bien comprendre limportance de mettre un espace entre "[" et "]" entourant une expression tester. Le message derreur tant peu explicite, une telle erreur devient vite invisible dans le cas ou le script nest pas test correctement en pas pas. crivez un script qui nafche que les rpertoires. Resultat : SR001-sys02-ch06-rlscript02.sh (docs/sys02-ch06-rlscript02-sh.txt) SR001-sys02-ch06-eofscript02.sh (docs/sys02-ch06-eofscript02-sh.txt)
# Resultat avec commande standard $ ls --file-type generate.bash~ generate.log generate.sh # Resultat avec script $ ./sys02-ch06-rlscript02.sh public_html source

public_html/

source/

Cet exercise ma permis de bien comprendre limportance de bien suivre les instructions telles qunonces et faire attention aux interpretation par rapport la mthode amenant au rsultat. Mon script est bien diffrent de celui de lEOF, ce dernier nutilise que la fonction test comme cela etait demand :)) Bon cela montre aussi que differents moyens sont bons pour parvenir un rsultat, le tout sera dapprendre avec lexperience obtenir le rsultat avec le moindre effort en bon dveloppeur :))

162

Chapitre 7. SR001 Commandes GNU/Linux (Shell) crivez un script qui nafche que les chiers. Resultat : SR001-sys02-ch06-rlscript03.sh (docs/sys02-ch06-rlscript03-sh.txt) SR001-sys02-ch06-eofscript02.sh (docs/sys02-ch06-eofscript02-sh.txt)
$ sys02-ch06-rlscript03.sh jeu_essai.txt jeu_essai.txt~ sys02-ch01-environnement.pdf sys02-ch02-commandes-advanced.pdf sys02-ch03-expression-rationnelle.pdf sys02-ch04-vi.pdf sys02-ch06-eofscript01.sh sys02-ch06-eofscript02.sh sys02-ch06-eofscript02.sh~ sys02-ch06-langage-shell.pdf sys02-ch06-rlscript01.sh sys02-ch06-rlscript01.sh~ sys02-ch06-rlscript02.sh sys02-ch06-rlscript02.sh~ sys02-ch06-rlscript03.sh sys02-ch06-rlscript03.sh~ sys02-ch06-sh-con.pdf sys02-ch08-exercice3.pdf tmp.out toto.sh

Mon script dans cet exercise maura au moins permis de savoir comment lister simplement des repertoires avec la commande ls (ls -Ad */) crivez un script qui donne le nombre de chiers et de rpertoires. Resultat : SR001-sys02-ch06-rlscript04.sh (docs/sys02-ch06-rlscript04-sh.txt) SR001-sys02-ch06-eofscript02.sh (docs/sys02-ch06-eofscript02-sh.txt)
$ sys02-ch06-rlscript04.sh Nombre de fichiers: 8 Nombre de repertoires: 8 $ ls --file-type 01-UI003-Environnement-de-travail/ 02-SR001-Commandes-de-bases-de-GNULinux-Shell/ 03-UI004-Raliser-des-documents-avec-LaTeX/ 04-UI005-Publier-des-documents-techniques-avec-DocBook/ 05-SR009-Interfacer-Apache-avec-un-langage-de-script-et-un-serveur-de-base-de-donnes/ 06-SR004-Interconnecter-un-rseau-TCP-IP/

163

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


hello.c~ Links reference.txt Logiciels reference.txt Module summary.txt monjournal/ shell_fc_tp2_correction.txt tmp2~ tmp.txt tmp.txt~ www.lagadec.org_oef/

Pour cette exercise, je trouvais interressant de capitaliser sur mes propres scripts. Toutefois, le script de lEOF est clair et vident maintenant :)) Question: Pourquoi utiliser j=expr $j + 1 au lieu de let j=j+1 ? Est-ce du pareil au mme ou est-ce pour raison de portabilit ? Attente de rponse de lOF... 7.5.9.2.2. TP 2 utilisation de la fonction selon que (case) Resultat : SR001-sys02-ch06-rlscript05.sh (docs/sys02-ch06-rlscript05-sh.txt) SR001-sys02-ch06-eofscript05.sh (docs/sys02-ch06-eofscript05-sh.txt)
$ sh sys02-ch06-rlscript05.sh *********** Menu gnral ************* <1> Comptabilit <2> Gestion commerciale <3> Paie <9> Quitter ************************************** Saisissez une option:1 Option Comptabilit choisie $ sh sys02-ch06-rlscript05.sh *********** Menu gnral ************* <1> Comptabilit <2> Gestion commerciale <3> Paie <9> Quitter ************************************** Saisissez une option:2 Option Gestion commerciale choisie $ sh sys02-ch06-rlscript05.sh *********** Menu gnral *************

164

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


<1> Comptabilit <2> Gestion commerciale <3> Paie <9> Quitter ************************************** Saisissez une option:4 4 est une option inconnue! $ sh sys02-ch06-rlscript05.sh *********** Menu gnral ************* <1> Comptabilit <2> Gestion commerciale <3> Paie <9> Quitter ************************************** Saisissez une option:9 Option Quitter choisie... Goodbye !!!

Dans cet exercise, jai compris limportance decrire read option et non pas read $option, cette dernire ne fonctionne bien videment pas et laisse la variable $option vide. Jai aussi compris quil est possible de concatener des chane de caractre comme ceci:
menu="part1\n" menu+="part2\n" menu+="part3\n" echo $menu # Dans mon case toutefois le \n nest pas correctement interprter quesaquo ?

Question: Pourquoi loption \n (retour la ligne) ne fonctionne pas dans mes scripts ? Par exemple echo "test\ntest" afche le resultat sur une ligne et non deux comme attendu ! La rponse est simple, il faut utiliser loption -e de la commande echo pour interprter les caractres dspcis par une contre-oblique: echo -e "test\ntest"
$ echo "test\ntest" test\ntest $ echo -e "test\ntest" test test

165

Chapitre 7. SR001 Commandes GNU/Linux (Shell) 7.5.9.2.3. TP 3 Utilisation de la fonction pour (for) Resultat : SR001-sys02-ch06-rlscript06.sh (docs/sys02-ch06-rlscript06-sh.txt) SR001-sys02-ch06-eofscript06.sh (docs/sys02-ch06-eofscript06-sh.txt)
$ sys02-ch06-rlscript06.sh -50 30 5 ### Fonction y=2x+3 avec x allant de -10 10 x=-10 y=-20 x=-9 y=-18 x=-8 y=-16 x=-7 y=-14 x=-6 y=-12 x=-5 y=-10 x=-4 y=-8 x=-3 y=-6 x=-2 y=-4 x=-1 y=-2 x=0 y=0 x=1 y=2 x=2 y=4 x=3 y=6 x=4 y=8 x=5 y=10 x=6 y=12 x=7 y=14 x=8 y=16 x=9 y=18 x=10 y=20 ### ### Fonction y=x^2 avec x allant de -10 10 x=-10 y=100 x=-9 y=81 x=-8 y=64 x=-7 y=49 x=-6 y=36 x=-5 y=25 x=-4 y=16 x=-3 y=9 x=-2 y=4 x=-1 y=1 x=0 y=0 x=1 y=1 x=2 y=4 x=3 y=9 x=4 y=16 x=5 y=25 x=6 y=36 x=7 y=49 x=8 y=64 x=9 y=81 x=10 y=100 ###

166

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


### Fonction y=x^2 avec x allant de -10 10 avec la fonction JUSQUA x=-10 y=100 x=-9 y=81 x=-8 y=64 x=-7 y=49 x=-6 y=36 x=-5 y=25 x=-4 y=16 x=-3 y=9 x=-2 y=4 x=-1 y=1 x=0 y=0 x=1 y=1 x=2 y=4 x=3 y=9 x=4 y=16 x=5 y=25 x=6 y=36 x=7 y=49 x=8 y=64 x=9 y=81 x=10 y=100 ### ### Fonction y=x^2 avec x allant de MIN MAX avec la fonction JUSQUA ### Usage: script.sh MIN MAX INCREMENT ### Resultat pour: ./sys02-ch06-rlscript06.sh -50 30 5 x=-50 y=2500 x=-45 y=2025 x=-40 y=1600 x=-35 y=1225 x=-30 y=900 x=-25 y=625 x=-20 y=400 x=-15 y=225 x=-10 y=100 x=-5 y=25 x=0 y=0 x=5 y=25 x=10 y=100 x=15 y=225 x=20 y=400 x=25 y=625 x=30 y=900 ###

Dans cet exercise, jai dcouvert les boucles for et until et la ncessit de bien crire les expressions de conditions. Double "((" et "))" pour la boucle for, les espaces avant et aprs "[" , "]", bien choisir loprateur pour les tests de conditions darrt pour viter les erreurs dinterprtation et de logique...

167

Chapitre 7. SR001 Commandes GNU/Linux (Shell) Aussi bien faire attention la syntaxe de la fonction let o le $ peut vite tre oubli ou plac au mauvais endroit. 7.5.9.2.4. TP 4 tude de la fonction si (if) Resultat : SR001-sys02-ch06-rlscript07.sh (docs/sys02-ch06-rlscript07-sh.txt)
$ sys02-ch06-rlscript07.sh *********** Menu gnral ************ 1> Comptabilit 2> Gestion commerciale 3> Paie 9> Quitter ************************************* Saisir une option:2 Option Gestion commerciale choisie $ ./sys02-ch06-rlscript07.sh *********** Menu gnral ************ 1> Comptabilit 2> Gestion commerciale 3> Paie 9> Quitter ************************************* Saisir une option:4 4 est une option inconnue! $ sys02-ch06-rlscript07.sh *********** Menu gnral ************ 1> Comptabilit 2> Gestion commerciale 3> Paie 9> Quitter ************************************* Saisir une option:9 Option Quitter choisie... Goodbye !!! ********** Affichage denregistrement dont la valeur est > 10 Source: sys02-ch06-rlscript07-data.txt troisime 25 cinquime 12

Cet exercice permis de dcouvrir la lecture de donne dun chier et le traitement de ces donnes... Question: Pourquoi si je cre une variable lsup="Liste denregistrement" en dehors de la boucle, que je modie cette variable globale par lsup+=$ligne dans la boucle, je narrive pas obtenir le result de la

168

Chapitre 7. SR001 Commandes GNU/Linux (Shell) concatenation avec un echo $lsup nal en dehors de la boulce la n ? Jobiens uniquement la valeur intiale !!! :(( 7.5.9.2.5. TP 5 tude de la fonction rpter jusqu (until. . .do. . .done) Resultat : SR001-sys02-ch06-rlscript08.sh (docs/sys02-ch06-rlscript08-sh.txt) SR001-sys02-ch06-eofscript08.sh (docs/sys02-ch06-eofscript08-sh.txt)
$ ./sys02-ch06-rlscript08.sh ******************************************************* Saisissez une commande, commande Q ou q pour quitter. ******************************************************* Commande: ps PID TTY TIME CMD 2493 pts/0 00:00:01 bash 3108 pts/0 00:00:00 sys02-ch06-rlsc 3109 pts/0 00:00:00 ps ******************************************************* Saisissez une commande, commande Q ou q pour quitter. ******************************************************* Commande: pwd /mnt/hsubuntu/02-SR001-Commandes-de-bases-de-GNULinux-Shell/sys02 ******************************************************* Saisissez une commande, commande Q ou q pour quitter. ******************************************************* Commande: pq ./sys02-ch06-rlscript08.sh: line 28: pq: command not found ******************************************************* Saisissez une commande, commande Q ou q pour quitter. ******************************************************* Commande: q Goodbye !

Dans cet exercise, jai vu au combien il est important de mettre des espaces pour chaque argument de toute expression tester (entre crochet), la cration dune fonction, la concatenation de chane et lutilisation de loption -e de echo (pour valuer \n). Cela a t aussi loccasion de redcouvrir la fonction eval pour lvaluation de commande.

169

Chapitre 7. SR001 Commandes GNU/Linux (Shell) 7.5.9.2.6. TP 6 tude de la fonction tant que (while) Resultat : SR001-sys02-ch06-rlscript09.sh (docs/sys02-ch06-rlscript09-sh.txt) SR001-sys02-ch06-eofscript09.sh (docs/sys02-ch06-eofscript09-sh.txt)
$ ./sys02-ch06-rlscript09.sh ******************* Menu gnral *********************** 1> Afficher la date (date) 2> Afficher le nombre de personnes connectes (who) 3> Afficher la liste des processus (ps) 9> Quitter ********************************************************* Commande: 1 Commande choisie: 1 dimanche 20 dcembre 2009, 23:02:19 (UTC+0100) ******************* Menu gnral *********************** 1> Afficher la date (date) 2> Afficher le nombre de personnes connectes (who) 3> Afficher la liste des processus (ps) 9> Quitter ********************************************************* Commande: 2 Commande choisie: 2 filostene tty7 2009-12-20 19:04 (:0) filostene pts/0 2009-12-20 19:10 (:0.0) ******************* Menu gnral *********************** 1> Afficher la date (date) 2> Afficher le nombre de personnes connectes (who) 3> Afficher la liste des processus (ps) 9> Quitter ********************************************************* Commande: 3 Commande choisie: 3 PID TTY TIME CMD 2493 pts/0 00:00:01 bash 3235 pts/0 00:00:00 sys02-ch06-rlsc 3239 pts/0 00:00:00 ps ******************* Menu gnral *********************** 1> Afficher la date (date) 2> Afficher le nombre de personnes connectes (who) 3> Afficher la liste des processus (ps) 9> Quitter ********************************************************* Commande: 4 Commande choisie: 4 Commande inconnue, tentative dvaluation: ./sys02-ch06-rlscript09.sh: line 55: 4: command not found ******************* Menu gnral *********************** 1> Afficher la date (date) 2> Afficher le nombre de personnes connectes (who) 3> Afficher la liste des processus (ps) 9> Quitter

170

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


********************************************************* Commande: whoami Commande choisie: whoami Commande inconnue, tentative dvaluation: filostene ******************* Menu gnral *********************** 1> Afficher la date (date) 2> Afficher le nombre de personnes connectes (who) 3> Afficher la liste des processus (ps) 9> Quitter ********************************************************* Commande: 9 Au revoir !

Dans cet exercise, jai pris conscience de lutilit de toujour initialiser ses variables et de la commande clear. La boucle while tant trs similaire la boucle jusqu cela na pas pos de problme majeur 7.5.9.2.7. TP 7 tude de la fonction select Resultat : SR001-sys02-ch06-rlscript10.sh (docs/sys02-ch06-rlscript10-sh.txt) SR001-sys02-ch06-eofscript10.sh (docs/sys02-ch06-eofscript10-sh.txt)

*********************** Menu gnral *************************** 1) Afficher la liste des utilisateurs connects 2) Afficher la liste des processus 3) Afficher lutilisateur son nom, son UID, son GID, son TTY1 4) Terminer #? 1 Utilisateurs Connects: filostene tty7 2009-12-20 19:04 (:0) filostene pts/0 2009-12-20 19:10 (:0.0) #? 2 Liste des processus: PID TTY TIME CMD 2493 pts/0 00:00:02 bash 3598 pts/0 00:00:00 sys02-ch06-rlsc 3601 pts/0 00:00:00 ps #? 6 Action inconnue, essayer encore... taper 1, 2, 3 ou 4 #? 3 Info Utilisateur filostene: uid=1000(filostene) gid=1000(filostene) groupes=20(dialout),24(cdrom),25(floppy),29(audio),4 #? 4 Au revoir !

171

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

Dans cet exercise, on a pu voir que la commande select permet de rapidement construire un menu de selection. Si on utilise des variables pour la selection il faut bien faire attention de les entourer de guillement "(double quote) aprs "in", sinon le formatage du menu peut-tre erron! Lutilisation de variable nest pas ncessaire, la liste du menu peut-tre directement construite partir dune suite de chane spar par le caractre \ et une nouvelle ligne (voir script OF) Il parat aussi important de toujours bien penser crer un cas daction par defaut "*)" pour sassurer que toute action non dnit est trait avec au moins lafchage dun message derreur ! 7.5.9.2.8. TP 8 Cration de fonction shell Resultat : SR001-sys02-ch06-rlscript11-1.sh (mul.sh) (docs/sys02-ch06-rlscript11-1-sh.txt) SR001-sys02-ch06-rlscript11-2.sh (calculatrice) (docs/sys02-ch06-rlscript11-2-sh.txt) SR001-sys02-ch06-eofscript11-1.sh (docs/sys02-ch06-eofscript11-sh.txt)
$ ./sys02-ch06-rlscript11-1.sh 1 ou 3 paramtres attendues... Usage: --Table de multiplication de N (borne 1 10): ./sys02-ch06-rlscript11-1.sh N --Table de multiplication de N (borne MIN MAX): ./sys02-ch06-rlscript11-1.sh N MIN MAX $ ./sys02-ch06-rlscript11-1.sh 4 Table de multiplication de 4 (borne 1 10): 4 x 1 = 4 4 x 2 = 8 4 x 3 = 12 4 x 4 = 16 4 x 5 = 20 4 x 6 = 24 4 x 7 = 28 4 x 8 = 32 4 x 9 = 36 4 x 10 = 40 $ ./sys02-ch06-rlscript11-1.sh 4 5 12 Table de multiplication de 4 (borne 5 12): 4 x 5 = 20 4 x 6 = 24 4 x 7 = 28 4 x 8 = 32 4 x 9 = 36 4 x 10 = 40 4 x 11 = 44

172

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


4 x 12 = 48

Calculatrice: Saisir un nombre:14 Saisir un operande (+,-,*,/,=) suivit dun Saisir un operande (+,-,*,/,=) suivit dun Erreur: \-1 nest pas un oprande reconnu, Saisir un operande (+,-,*,/,=) suivit dun Saisir un operande (+,-,*,/,=) suivit dun Saisir un operande (+,-,*,/,=) suivit dun Saisir un operande (+,-,*,/,=) suivit dun Total= 14

espace puis un nombre: espace puis un nombre: essayer encore... espace puis un nombre: espace puis un nombre: espace puis un nombre: espace puis un nombre:

+ 1 -1 - 1 / 2 * 2 =

Dans cet exercise, jai approfondis lutilisation de fonctions et notament le passage de paramtre ainsi que la possiblit daffecter des variables multiple avec la fonction read en une seule fois. Jai aussi appris la ncessit dchapper certains caractres spciaux et la comparaison de chane de caractre lors de test de boucle... 7.5.9.2.9. TP 9 Appels et contrles de scripts - Communication inter-scripts. Resultat : SR001-sys02-ch06-rlscript12-pere.sh (docs/sys02-ch06-rlscript12-pere-sh.txt) SR001-sys02-ch06-rlscript12-enfant1.sh (docs/sys02-ch06-rlscript12-enfant1-sh.txt) SR001-sys02-ch06-rlscript12-enfant2.sh (docs/sys02-ch06-rlscript12-enfant2-sh.txt) SR001-sys02-ch06-rlscript12-enfant3.sh (docs/sys02-ch06-rlscript12-enfant3-sh.txt) SR001-sys02-ch06-eofscript12.sh (docs/sys02-ch06-eofscript12-sh.txt)
$ ./sys02-ch06-rlscript12-pere.sh pere(PID=6009) enf1(PID=6010) started ping ping ping Kill enf1(6010): kill -9 6010 enf2(PID=6016) started pong pong pong ./sys02-ch06-rlscript12-pere.sh: line 45: Kill enf1(6016): kill -9 6016 ./sys02-ch06-rlscript12-pere.sh: line 45: pere(PID=6009) enf1(PID=6023) started ping Kill enf1(6023): kill -9 6023 enf2(PID=6027) started pong ./sys02-ch06-rlscript12-pere.sh: line 69:

6010 Processus arrt 6016 Processus arrt

$enf1 $enf2

6023 Processus arrt

$enf1

173

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


Kill enf1(6027): kill -9 6027 ./sys02-ch06-rlscript12-pere.sh: enf3(PID=6031) started pang Kill enf1(6031): kill -9 6031 enf2(PID=6035) started pong ./sys02-ch06-rlscript12-pere.sh: Kill enf1(6035): kill -9 6035 ./sys02-ch06-rlscript12-pere.sh: pere(PID=6009) enf1(PID=6039) started ping Kill enf1(6039): kill -9 6039 enf2(PID=6043) started pong ./sys02-ch06-rlscript12-pere.sh: Kill enf1(6043): kill -9 6043 enf3(PID=6047) started pang ./sys02-ch06-rlscript12-pere.sh: Kill enf1(6047): kill -9 6047 enf2(PID=6051) started pong ./sys02-ch06-rlscript12-pere.sh: Kill enf1(6051): kill -9 6051 ./sys02-ch06-rlscript12-pere.sh:

line 32:

6027 Processus arrt

$enf2

line 69: line 32:

6031 Processus arrt 6035 Processus arrt

$enf3 $enf2

line 69:

6039 Processus arrt

$enf1

line 69:

6043 Processus arrt

$enf2

line 69: line 70:

6047 Processus arrt 6051 Processus arrt

$enf3 $enf2

Dans cet exercise, la notion de processus pere et enfant a t revue. Le dbugage dun enchainement de script ne me semble pas trs ais. Peut-tre est-ce un problme de mthode ou dexperience ! On verra avec le temps :)). Cetait aussi loccasion de dcouvrir la fonction sleep qui permet de pause un processus en cours dexecution. Question: La commande kill provoque lafchage dun message que je nai pas su rorienter pour le grer meilleur escient et viter le charbiat ! A voir plus tard... avec lOF !

7.5.9.3. Script: Compter les mots dun chier xml/xhtml/html


Resultat : countwords.sh (docs/countwords-sh.txt)
$ ./countwords.sh ./xml/siteMap/fr_FR.xml 39 80 635 ./xml/home/fr_FR_homeIntro.xml 27 36 291 ./xml/home/fr_FR_homeNews.xml 15 4 62 ./xml/support/fr_FR.xml 337 1672 11423

# wc retourne 3 chiffres : # NumLignes NumMots NumCaractres

174

Chapitre 7. SR001 Commandes GNU/Linux (Shell)


./xml/who/fr_FR.xml 16 274 1785 ./xml/newAccount/fr_FR.xml 65 241 1673 ./xml/contact/fr_FR.xml 28 139 981 ./xml/ogoneReturn/fr_FR.xml 21 110 806 ./xml/auth/fr_FR.xml 39 200 1316 ./xml/cart/fr_FR.xml 150 588 4160 ./xml/customer/fr_FR_customerActivate.xml 31 124 853 ./xml/customer/fr_FR_customerApps.xml 10 2 37 ./xml/customer/fr_FR_customerIds.xml 16 49 386 ./xml/customer/fr_FR_customerBilling.xml 22 15 153 ./xml/customer/fr_FR_customerGodfather.xml 15 58 409 ./xml/customer/fr_FR_customerAddCredit.xml 13 13 108 ./xml/customer/fr_FR_customerSupport.xml 68 282 1701 ./xml/customer/fr_FR_customerMyAccess.xml 15 8 72 ./xml/customer/fr_FR_customerCommand.xml 50 82 626 ./xml/customer/fr_FR_customerInfos.xml 31 49 402 ./xml/customer/fr_FR_customer.xml 23 23 227 ./xml/cgv/fr_FR.xml 306 7884 51999 ./xml/press/fr_FR.xml 12 5 57 ./xml/concept/fr_FR.xml 10 6 57 ./xml/fr_FR.xml 146 466 3293 ./xml/legal/fr_FR.xml 54 1300 9162 ./xml/popUp/fr_FR_popupConfirm.xml 7 1 17 ./xml/popUp/fr_FR_popupbuy.xml 11 21 155 ./xml/popUp/fr_FR_popupLanguage.xml 10 12 113 ./xml/popUp/fr_FR_popuplogout.xml 10 39 280 ./xml/popUp/fr_FR_popupDelete.xml 9 22 171 ./xml/products/fr_FR_overviewPack.xml 49 88 766 ./xml/products/fr_FR_overviewDetectOuv.xml 22 371 2621 ./xml/products/fr_FR_introductionAcc.xml 40 267 1981 ./xml/products/fr_FR_overviewT2T.xml 21 143 967 ./xml/products/fr_FR_overviewDetectFuiteau.xml 21 268 1666 ./xml/products/fr_FR_overviewMyAlertI.xml 24 679 4582 ./xml/products/fr_FR_overviewMotionDetector.xml 17 145 933 ./xml/products/fr_FR_overviewDetectIR.xml 21 324 2198 ./xml/products/fr_FR_overviewClavierCommand.xml 21 224 1456 ./xml/products/fr_FR_overviewClavierCommande.xml 17 223 1407 ./xml/products/fr_FR_overviewPPADist.xml 21 208 1360 ./xml/products/fr_FR_overviewAcc.xml 37 76 661 ./xml/products/fr_FR_introductionProducts.xml 33 80 780 ./xml/products/fr_FR_overviewMyAlertD.xml 23 394 2774 ./xml/products/fr_FR_overviewMyAlertP.xml 23 555 3786 ./xml/products/fr_FR_overviewDetectSirInt.xml 21 277 1725 ./xml/products/fr_FR_overviewDetectFumee.xml 21 214 1374 ./xml/products/fr_FR_overviewMyAlertS.xml 24 377 2694

175

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.5.10. Programmation en Langage SHELL (Bash) dans une console - Exercices


Source(s):

OF: SR001-sys02-ch06-sh-con.pdf (docs/eof/sr001-sys02-ch06-sh-con.pdf)

### # Les lignes ci-dessous comportent des erreurs. Essayez de les identifiez et proposez des co KO: if [ a == a] ; then echo true ; fi OK: if [ a == a ] ; then echo true; fi KO: if [ a == a ] ; echo true ; fi OK: if [ a == a ] ; then echo true; fi # Espace manquant entre a et le crochet ]

# instruction then manquante dans la dclaration if

KO: a=3 ; echo $a # On souhaite afficher la valeur de a OK: KO?: if [ a != b ] ; then echo true ; fi # Je ne vois pas derreur ici... et vous ?

??: Pourquoi le premier sous-shell affiche 3 et le second affiche 2 dans le code ci-dessous a=3; (echo \$a); a=3; (a=2; echo \$a) ==> Parce que : - dans le premier cas, lenvironement est hrit du parent donc il a accs la varialbe $a - dans le second cas, lenvironement est hrit du parent mais est immdiatement modifi (no

7.5.11. Evaluation - Exercice 3


Source(s):

OF: SR001-sys02-ch08-exercice3.pdf (docs/eof/sr001-sys02-ch08-exercice3.pdf)

1. Dans quels rpertoires sont stocks les scripts qui activent les serveurs (deamons) ?

/etc/init.d (Debian, Ubuntu, etc...) /etc/rc.d/init.d (RedHat, Mandriva, etc...)

2. Dans quel(s) rpertoire(s) sont gnralement stocks les chiers logs ? /var/log

176

Chapitre 7. SR001 Commandes GNU/Linux (Shell) 3. Dans quel(s) rpertoire(s) sont gnralement stocks les numros des processus une fois lancs ?

/var/run (pour la plupart) ~/ (comme chier cach dans le repertoire utilisateur parfois)

4. Que fait le bloc dinstruction suivant, tir du paquet acct ?


if [ -f /etc/default/acct ] then . /etc/default/acct else ACCT_ENABLE="1" ACCT_LOGGING="30" fi

Si le chier /etc/default/acct existe, lit et execute, dans lenvironement du shell courant, les commandes contenu dans acct et retourne le status de completion de la dernire commande executer depuis acct. Sinon modie les variables denvironement ACCT_ . La commande . lename [arguments] est quivalent source lename [arguments]

5. De quel chier peut-on saider pour crire un script de lancement dun service serveur ? /etc/init.d

7.6. Aller plus loin !


7.6.1. Dautres commandes
7.6.1.1. Rseaux(ip, mtr, traceroute, ping, ifcong, hostname, host, whois, dig, ...)
Voir section rsaux

177

Chapitre 7. SR001 Commandes GNU/Linux (Shell)

7.6.1.2. Intialisation (Init, Shutdown, Reboot, Halt, rcS, rcX...)


Voir section init

7.7. Examples de commandes utiles


Source: http://sleepyhead.de/howto/?href=scripting $ sort -t. -k1,1n -k2,2n -k3,3n -k4,4n $ echo Test | tr [:lower:] [:upper:] $ echo foo.bar | cut -d . -f 1 $ PID=$(ps | grep script.sh | grep bin | awk {print $1}) $ PID=$(ps axww | grep [p]ing | awk {print $1}) $ IP=$(ifconfig $INTERFACE | sed /.*inet addr:/!d;s///;s/ .*//) $ IP=$(ifconfig $INTERFACE | sed /.*inet /!d;s///;s/ .*//) $ if [ diff file1 file2 | wc -l != 0 ]; then [...] fi

# Sort IPv4 ip addresses # Case conversion # Returns foo

# PID of a running scrip # PID of ping (w/o grep # Linux # FreeBSD # File changed?

$ cat /etc/master.passwd | grep -v root | grep -v \*: | awk -F":" \ # Create http passwd $ { printf("%s:%s\n", $1, $2) } > /usr/local/etc/apache2/passwd $ $ $ $ $ $ $ $ testuser=$(cat /usr/local/etc/apache2/passwd | grep -v \ # Check user in passwd root | grep -v \*: | awk -F":" { printf("%s\n", $1) } | grep ^user$) :(){ :|:& };: # bash fork bomb. Will kill tail +2 file > file2 # remove the first line ls *.cxx | awk -F. {print "mv "$0" "$1".cpp"} | sh ls *.c | sed "s/.*/cp & &.$(date "+%Y%m%d")/" | sh rename .cxx .cpp *.cxx for i in *.cxx; do mv $i ${i%%.cxx}.cpp; done

# e.g. copy *.c to *.c.20080401 # Rename all .cxx to cpp # with bash builtins

7.8. Noyau GNU/Linux


... TO DO ...

178

Chapitre 8. UI004 Raliser des documents avec LaTeX [EMPTY]


..latex +++

179

Chapitre 9. UI005 Publier des documents techniques avec DocBook [EMPTY]


Source(s):

Web: Traitement des chier XML aprs un copier/coller de pdf (http://ferry.eof.eu.org/lesjournaux/pg/public_html/x13895.html) XML - Managing Data Exchange/DocBook (http://en.wikibooks.org/wiki/XML_-_Managing_Data_Exchange/DocBook)

180

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
10.1. SR009 Base
10.1.1. Presentation Squence
Source(s):

OF: SR009-ch00-presentation.pdf (docs/eof/sr009-ch00-presentation.pdf)

10.1.1.1. But

Savoir congurer un environnement pour quil fonctionne Acqurir une mthodologie pour intgrer une ensemble de composants logiciels dans un environnement complexe

10.1.1.2. Dmarche

Raliser les oprations par tapes Sassurer que chaque composant fonctionne parfaitement avant de les intgrer Appliquer des procdures pour diagnostiquer de faon mthodique la source dun dysfonctionnement Acqurir le rexe de se rfrer la documentation dun produit ou aux ressources mises disposition

10.1.2. Architecture logicielle de lenvironnement de dveloppement (Server HTTP + BD + script PHP)


Source(s):

OF: SR009-ch01-concepts.pdf (docs/eof/sr009-ch01-concepts.pdf)

181

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes Mise en place dune station de dveloppement permettant la conception ou le dploiement dapplications accessibles par internet et dont les donnes sont stockes dans une base de donnes: pages web dynamiques.

10.1.3. Serveur Web - Apache - Installation et conguration


Source(s):

Web: Apache Serveur HTTPD (http://httpd.apache.org) Documentation Version 2.2 (http://httpd.apache.org/docs/2.2/fr)

La premire brique dont nous avons besoin cest le service server HTTP (server Web) pour pouvoir publier des pages HTML (statique ou dynamique).
Un serveur HTTP ou daemon HTTP ou HTTPd (HTTP daemon) ou (moins prcisment) serveur Web, est un logiciel servant des requtes respectant le protocole de communication client-serveur Hypertext Transfer Protocol (HTTP), qui a t dvelopp pour le World Wide Web. http://fr.wikipedia.org/wiki/Serveur_HTTP

Ici nous installerons Apache mais il en existe dautres: lightpd, zeus, etc (http://fr.wikipedia.org/wiki/Serveur_HTTP#Logiciels_de_serveur_HTTP)

10.1.3.1. Installation de base


Je pourrais compiler Apache et linstaller (http://httpd.apache.org/docs/2.2/install.html) depuis la source mais dans le cadre dune premire dcouverte je me contenterais du paquet Debian avec la conguration par dfaut. Ce sera gage dune meilleure stabilit dans un premier temps.
## Listons les paquets disponibles dans Debian li Apache $ apt-cache search apache alpine - Text-based email client, friendly for novices but powerful alpine-dbg - Text-based email clients debugging symbols ... libapache-asp-perl - perl Apache::ASP - Active Server Pages for Apache with mod_perl libapache-authenhook-perl - Perl API for Apache 2.1 authentication ... libapache2-mod-auth-openid - OpenID authentication module for Apache2 ... libapache2-mod-proxy-html - Apache2 filter module for HTML links rewriting libapache2-mod-python - Python-embedding module for Apache 2 libapache2-mod-python-doc - Python-embedding module for Apache 2 - documentation ... libapr1 - The Apache Portable Runtime Library ... libcommons-codec-java - encoder and decoders such as Base64 and hexadecimal codec

182

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
libcommons-csv-java - a Java library for working with csv (comma separated values) files ... libconfig-general-perl - Generic Configuration Module libdotconf-dev - Configuration file parser library - development files ... liblemonldap-ng-conf-perl - Lemonldap::NG apache administration interface part ... mod-chroot-common - run Apache in a secure chroot environment ... php-auth-http - HTTP authentication php-config - Your configurations swiss-army knife ... tomcat5.5-admin - Java Servlet engine -- admin & manager web interfaces tomcat5.5-webapps - Java Servlet engine -- documentation and example web applications ... apache2 - Apache HTTP Server metapackage apache2-dbg - Apache debugging symbols apache2-doc - Apache HTTP Server documentation apache2-mpm-event - Apache HTTP Server - event driven model apache2-mpm-itk - multiuser MPM for Apache 2.2 apache2-mpm-prefork - Apache HTTP Server - traditional non-threaded model apache2-mpm-worker - Apache HTTP Server - high speed threaded model apache2-prefork-dev - Apache development headers - non-threaded MPM apache2-src - Apache source code apache2-suexec - Standard suexec program for Apache 2 mod_suexec apache2-suexec-custom - Configurable suexec program for Apache 2 mod_suexec apache2-threaded-dev - Apache development headers - threaded MPM apache2-utils - utility programs for webservers apache2.2-common - Apache HTTP Server common files ...

Beaucoup de librairie et modules lis Apache !!! Je vais rstraindre la recherche


$ apt-cache search "Apache HTTP Server" emboss-explorer - web-based GUI to EMBOSS libtcnative-1 - Tomcat native library using the apache portable runtime wu-ftpd - powerful and widely used FTP server apache2 - Apache HTTP Server metapackage apache2-doc - Apache HTTP Server documentation apache2-mpm-event - Apache HTTP Server - event driven model apache2-mpm-prefork - Apache HTTP Server - traditional non-threaded model apache2-mpm-worker - Apache HTTP Server - high speed threaded model apache2.2-common - Apache HTTP Server common files

Bon maintenant installons ce qui parat indispensable: le server & la doc !


# Installation de lessentiel :) $ apt-get install apache2 apache2-doc Lecture des listes de paquets... Fait

183

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes

Construction de larbre des dpendances Lecture des informations dtat... Fait apache2-doc est dj la plus rcente version disponible. Les paquets supplmentaires suivants seront installs : apache2-mpm-worker apache2-utils apache2.2-common libapr1 libaprutil1 libpq5 Paquets suggrs : apache2-suexec apache2-suexec-custom Les NOUVEAUX paquets suivants seront installs : apache2 apache2-mpm-worker apache2-utils apache2.2-common libapr1 libaprutil1 libpq5 0 mis jour, 7 nouvellement installs, 0 enlever et 14 non mis jour. Il est ncessaire de prendre 0o/1765ko dans les archives. Aprs cette opration, 5829ko despace disque supplmentaires seront utiliss. Souhaitez-vous continuer [O/n] ? O ATTENTION : les paquets suivants nont pas t authentifis. libapr1 libpq5 libaprutil1 apache2-utils apache2.2-common apache2-mpm-worker apache2 Faut-il installer ces paquets sans vrification (o/N) ? o Slection du paquet libapr1 prcdemment dslectionn. (Lecture de la base de donnes... 143263 fichiers et rpertoires dj installs.) Dpaquetage de libapr1 ( partir de .../libapr1_1.2.12-5+lenny1_i386.deb) ... Slection du paquet libpq5 prcdemment dslectionn. Dpaquetage de libpq5 ( partir de .../libpq5_8.3.8-0lenny1_i386.deb) ... Slection du paquet libaprutil1 prcdemment dslectionn. Dpaquetage de libaprutil1 ( partir de .../libaprutil1_1.2.12+dfsg-8+lenny4_i386.deb) ... Slection du paquet apache2-utils prcdemment dslectionn. Dpaquetage de apache2-utils ( partir de .../apache2-utils_2.2.9-10+lenny6_i386.deb) ... Slection du paquet apache2.2-common prcdemment dslectionn. Dpaquetage de apache2.2-common ( partir de .../apache2.2-common_2.2.9-10+lenny6_i386.deb) Slection du paquet apache2-mpm-worker prcdemment dslectionn. Dpaquetage de apache2-mpm-worker ( partir de .../apache2-mpm-worker_2.2.9-10+lenny6_i386.d Slection du paquet apache2 prcdemment dslectionn. Dpaquetage de apache2 ( partir de .../apache2_2.2.9-10+lenny6_all.deb) ... Traitement des actions diffres ( triggers ) pour man-db ... Paramtrage de libapr1 (1.2.12-5+lenny1) ... Paramtrage de libpq5 (8.3.8-0lenny1) ... Paramtrage de libaprutil1 (1.2.12+dfsg-8+lenny4) ... Paramtrage de apache2-utils (2.2.9-10+lenny6) ... Paramtrage de apache2.2-common (2.2.9-10+lenny6) ... Paramtrage de apache2-mpm-worker (2.2.9-10+lenny6) ... Starting web server: apache2. Paramtrage de apache2 (2.2.9-10+lenny6) ...

On voit que dautres paquets sont par dfaut ncessaire au bon fonctionement dApache notemment des utilitaires (apache2-utils) que javais hsit install ! On observe aussi que le server est dmarr automatiquement aprs linstallation.
$ ps x | grep apache 9700 ? Ss 0:00 /usr/sbin/apache2 -k start

184

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes

# -k start|restart|graceful|stop|graceful-stop Signal apache2 de dmarrer, re-dmarrer, ou sarrter ### Attention ne pas se tromper ## Sous Unix, le programme httpd est lanc en mode dmon et ## sexcute de manire permanente en arrire-plan pour grer les requtes. $ ps x | grep httpd 9806 pts/1 S+ 0:00 grep httpd ## Afficher la version et les paramtres de compilation ## Trs utile quand on a pas compiler soit mme !!! $ apache2 -V ## option -V (en majuscule) Server version: Apache/2.2.9 (Debian) Server built: Nov 14 2009 20:21:34 Servers Module Magic Number: 20051115:15 Server loaded: APR 1.2.12, APR-Util 1.2.12 Compiled using: APR 1.2.12, APR-Util 1.2.12 Architecture: 32-bit Server MPM: Worker threaded: yes (fixed thread count) forked: yes (variable process count) Server compiled with.... -D APACHE_MPM_DIR="server/mpm/worker" -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) -D APR_USE_SYSVSEM_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=128 -D HTTPD_ROOT="" -D SUEXEC_BIN="/usr/lib/apache2/suexec" -D DEFAULT_PIDLOG="/var/run/apache2.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="/etc/apache2/mime.types" -D SERVER_CONFIG_FILE="/etc/apache2/apache2.conf" ## Afficher la version seulement $ apache2 -v ## option -v (en minuscule) Server version: Apache/2.2.9 (Debian) Server built: Nov 14 2009 20:21:34 # # # # # La version est toute rcente ! Apache v2 fait partie dune nouvelle gnration du server web Apache. Cette version a t totalement r-crite pour introduire de nouvelles amlioration tel que : le "threading", une nouvelle API, le support de lIPv6, filtrage de requte/reponses, etc...

185

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes

10.1.3.2. Accder la documentation

En local (apache2-doc) : Documentation du Serveur HTTP Apache Version 2.2 (le:///usr/share/doc/apache2-doc/manual/fr/index.html) En ligne (web) : Documentation du Serveur HTTP Apache Version 2.2 (http://httpd.apache.org/docs/2.2/fr) Manuel (man) :

$ man apache2 ## La page de manuel reste toutefois accessible uniquement via cette commande et non pas v

10.1.3.3. Arrt/Dmarrage du service HTTPD (daemon) - apache2ctl


Si la directive Listen spcie dans le chier de conguration est sa valeur par dfaut de 80 (ou tout autre port infrieur 1024), il est ncessaire de possder les privilges root pour pouvoir dmarrer apache2, et lui permettre dtre associ ce port privilgi. Il est recommand dutiliser le script de contrle apache2ctl pour invoquer lexcutable httpd. apache2ctl accepte des arguments de ligne de commande, ainsi toute option de httpd. Il est donc possible dditer directement le script apache2ctl en modiant la variable HTTPD situe en dbut de script pour spcier la localisation du binaire httpd et tout argument de ligne de commande que lon souhaite voir systmatiquement prsent.
Note : La conguration par dfaut de Debian requiert les variable denvironement APACHE_RUN_USER, APACHE_RUN_GROUP, et APACHE_PID_FILE dtre congur dans /etc/apache2/envvars.
$ cat /etc/apache2/envvars # envvars - default environment variables for apache2ctl # Since there is no sane way to get the parsed apache2 config in scripts, some # settings are defined via environment variables and then used in apache2ctl, # /etc/init.d/apache2, /etc/logrotate.d/apache2, etc. export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data export APACHE_PID_FILE=/var/run/apache2.pid

Arrt/Dmarrage de HTTPD:
## Avec le script de service activ au dmarrage de la machine

186

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
$ /etc/init.d/apache2 start # | stop | restart ## Avec /usr/sbin/apache2ctl $ apache2ctl start # Donne une erreur si dj en cours dexcution # quivaut apache2ctl -k start $ apache2ctl restart # Re-dmarrage brut # Vrifie le fichier de configuration avant de rdmarrer # Re-dmarrage doux # Les connections ouvertes ne sont pas abandonnes # Les vieux fichiers de log ne sont pas ferms immdiatement # quivaut apache2ctl -k graceful # Arrt brut (mme effet que gracefull) # quivaut apache2ctl -k stop

$ apache2ctl graceful

$ apache2ctl stop

$ apache2ctl graceful-stop # Arrt brut # quivaut apache2ctl -k graceful-stop $ apache2ctl status # Affiche un brief raport de status Apache Server Status for localhost Server Version: Apache/2.2.9 (Debian) Server Built: Nov 14 2009 20:21:34 __________________________________________________________________ Current Time: Tuesday, 29-Dec-2009 18:03:47 GMT Restart Time: Tuesday, 29-Dec-2009 17:52:22 GMT Parent Server Generation: 0 Server uptime: 11 minutes 25 seconds 1 requests currently being processed, 49 idle workers ...

10.1.3.4. Fichier de Conguration - apache2.conf, httpd.conf, ports.conf


Au dmarrage, la premire chose queffectue httpd est de localiser et lire le chier de conguration httpd.conf . La localisation de ce chier est dnie la compilation, mais il est possible den spcier une autre lexcution en utilisant loption de ligne de commande -f comme suit:
$ /usr/local/apache2/bin/apache2ctl -f /usr/local/apache2/conf/httpd.conf

187

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
Note : Tout changement dans le chier de conguration peut-tre test avec la commande :
$ apache2ctl configtest # OU $ apache2ctl -t # quivalent httpd -t # Excuter un test de syntaxe du fichier de configuration # retourne OK ou une erreur

O se trouve le chier de conguration utilis par le serveur lors de linstallation par dfaut (Debian package) Pour connatre tous moment quel chier de conguration est utilis :
## Fichier de configuration par dfaut $ apache2ctl -V | grep SERVER_CONFIG -D SERVER_CONFIG_FILE="/etc/apache2/apache2.conf"

## Localisation dfinit la compilation

## On peut vrifier quau dmarrage un autre chemin de fichier nest pas indiqu dans les fi $ cat /usr/sbin/apache2ctl ## Script de controle dApache2 serveur HTTPD $ cat /etc/init.d/apache2 ## Script de service au dmarrage

QUESTION: Si un autre chier de conguration a t indiqu lors dun dmarrage manuel du server, il semble que quil ne soit pas possible de le voir directement sans faire des recherche de tout les .conf existant et dans les chiers de log...? La conguration global du serveur (/etc/apache2/apache2.conf) inclus dautres chiers:

/etc/apache2/ports.conf : ports dcoute du server (80 par dfaut) /etc/apache2/httpd.conf : conguration utilisateur (additionelle) /etc/apache2/mods-enabled/*.load & /etc/apache2/mods-enabled/*.conf : chargement des modules /etc/apache2/sites-enabled/[^.#]* : chargement vhosts /etc/apache2/conf.d/[^.#]* : autre conguration local (ajout manuellement ou par dautre paquets) Sexecute en tant que: www-data (user) www-data (group) /usr/sbin/apache2 : Fichier de commande binaire Apache2 /usr/sbin/apache2ctl : Script/Interface de controle Apache2

188

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
Note : Apache2 supporte IPv4 et IPv6, par contre pour le faire fonctionner sur les deux types dadresses il faut mettre les @ IPv6 entre [] puisque le sparateur des digits est le : or pour Apache le : indique les ports : Listen 10.0.0.1:80 Listen [2001::1]:80

Quelques commandes utiles:


## Affiche les paramtres charg depuis le fichier de configuration ## prsent affiche uniquement les paramtres virtualhost VirtualHost configuration: wildcard NameVirtualHosts and _default_ servers: is a NameVirtualHost *:80 default server debstafil4.ermansion.net (/etc/apache2/sites-enabled/000-default:1) port 80 namevhost debstafil4.ermansion.net (/etc/apache2/sites-enabled/000-default:1) Syntax OK $ apache2ctl -L $ apache2ctl -l $ apache2ctl -M ## Affiche la liste des directives et leurs arguments ## Affiche la liste des modueles compils dans le serveur. ## Affiche la liste des modules statique et partags $ apache2ctl -S

Comme on le voit ci-dessus loption -S ne donne pas beaucoup dinfo allons donc voir directement la conguration dans les chiers.
### Config UTILISATEUR $ cat /etc/apache2/httpd.conf (empty) ### Config PORTS $ cat /etc/apache2/ports.conf # If you just change the port or add more ports here, you will likely also # have to change the VirtualHost statement in # /etc/apache2/sites-enabled/000-default # This is also true if you have upgraded from before 2.2.9-3 (i.e. from # Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and # README.Debian.gz NameVirtualHost *:80 Listen 80 <IfModule mod_ssl.c> # SSL name based virtual hosts are not yet supported, therefore no # NameVirtualHost statement here Listen 443 </IfModule>

189

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
## Config GLOBAL $ cat /etc/apache2/apache2.conf (voir lien en bas de ce listing) ## Config SITES (hosts) $ cat /etc/apache2/sites-enabled/000-default <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost>

apache2.conf (docs/sr009-ch01-apache2-conf-original.txt) (conguration par dfaut) On voit notemment la conguration est tablit par des directives encadr par des tag XML, que le serveur est sens couter le port 80; que Server Root "/etc/apache2" est le repertoire contenant les chiers de conguration, erreur, logs, etc; que des sites par dfaut est congur et pointe vers /var/www

190

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes Si je pointe mon navigateur sur http://localhost ou http://debstal4.ermansion.net, je vois bien par le bien du serveur HTTP le contenu du repertoire /var/www.

10.1.3.5. Rgle dOR: Vrier linstallation du serveur Web avec le systme


Note : Ne jamais faire conance aux scripts de dmarrage et ce quils renvoient lcran !!! Toujours vrier linstallation avec le systme.

###==> Par dfaut le service http (indiqu www ici) utilise le port 80 par dfaut $ grep http /etc/services # Updated from http://www.iana.org/assignments/port-numbers and other # sources like http://www.freebsd.org/cgi/cvsweb.cgi/src/etc/services . www 80/tcp http # WorldWideWeb HTTP https 443/tcp # http protocol over TLS/SSL https 443/udp http-alt 8080/tcp webcache # WWW caching service http-alt 8080/udp # WWW caching service

### Pas besoin de le dmarrer il fonctionne dj $ apache2ctl start httpd (pid 12090) already running ### Vrifions la table de processus $ ps aux | grep apache root 12090 0.0 0.6 13252 2764 www-data 12091 0.0 0.4 13160 1984 www-data 12092 0.0 0.8 234732 3384 www-data 12095 0.0 0.6 234732 2608 root 12713 0.0 0.1 3940 776

? ? ? ? pts/7

Ss S Sl Sl S+

21:19 21:19 21:19 21:19 23:39

0:04 0:00 0:00 0:00 0:00

/usr/sbin/apache2 /usr/sbin/apache2 /usr/sbin/apache2 /usr/sbin/apache2 grep apache

-f -f -f -f

/etc/a /etc/a /etc/a /etc/a

### Le service est actif, verifions quil le port 80 $ netstat -natupw | grep 80 tcp 0 0 127.0.0.1:3306 0.0.0.0:* tcp 0 0 0.0.0.0:80 0.0.0.0:* udp6 0 0 :::58033 :::*

LISTEN LISTEN

4580/mysqld 12090/apache 1649/avahi-d

### Test de connection $ telnet 10.0.1.5 80 Trying 10.0.1.5... Connected to 10.0.1.5. Escape character is ^]. GET index.html <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>400 Bad Request</title> </head><body> <h1>Bad Request</h1> <p>Your browser sent a request that this server could not understand.<br />

191

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
</p> <hr> <address>Apache/2.2.9 (Debian) Server at debstafil4.ermansion.net Port 80</address> </body></html> Connection closed by foreign host.

A ce stade, je suis sr que le service est bien oprationnel. Sil y a un problme, cela ne vient pas de sa conguration de base. Soit cela vient dextensions (domaines virtuels, conguration sur des rpertoires, droits daccs...), mais le service globalement fonctionne.
Note : la place du client telnet on aurait pu utliser le client nc de lapplication netcat (http://netcat.sourceforge.net).

10.1.3.6. Fichier de trace (logs)


Source(s):

Web: Apache Log Files (http://httpd.apache.org/docs/2.2/fr/logs.html)

Trace dErreur (Error log) : Nom et localisation paramtrs par la directive ErrorLog (/var/log/apache2/error.log (docs/sr009-ch01-apache-error-log.txt) par dfaut). Trace les erreurs rencontres lors du traitement des requte et des information de diagnostic. A regarder en premier. La directive LogLevel (niveau de gravit) permet dajuster le type derreur enregistr.
$ tail -f /var/log/apache2/error.log

## Monitorer en temps rel ce qui se passe sur le se ## Ideal en priode de test :)

Trace dAccs (Access log) : Nom et localisation paramtr par la directive CustomLog (/var/log/apache2/access.log (docs/sr009-ch01-apache-access-log.txt) par dfaut). Trace toutes les requtes traites par la serveur. La directive LogFormat permet de simplier la selection du contenu. Trace de sites (Vhost Access log) : Si les directives CustomLog ou ErrorLog sont placs linterieur de la section <VirtualHost> (/var/log/apache2/other_vhosts_access.log (docs/sr009-ch01-apache-other_vhosts_access-log.txt) par dfaut), toutes les requtes ou erreurs pour lhte virtuel irrons senregistrer dans le chier spci. Les traces de tout hte virtuel qui nont pas ces directives renseignes, sont simplement enregistres avec les traces du serveur. Autres (Module logs) : Trace des octets mis et reu, "Forensic Logging", Fichier de PID (PID File), Trace de Script (Script Log), Trace de r-criture des URL (Rewrite Log), etc...

192

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes

10.1.4. Base de donnes - MYSQL - Installation et conguration


Source(s):

OF: SR009-ch02-mysql.pdf (docs/eof/sr009-ch02-mysql.pdf) Web: mysql.com (http://www.mysql.com/)

La deuxime brique dont nous avons besoin, cest une base de donnes pour enregistrer les informations de nos pages dynamique
Une base de donnes (Abr. : BD ou BDD ) est un stock dinformations organis et structur de manire pouvoir tre facilement manipul et stocker efcacement de trs grandes quantits dinformations http://fr.wikipedia.org/wiki/Base_de_donnes (http://fr.wikipedia.org/wiki/Base_de_donn%C3%A9es)

Petit point dactualit sur MySQL :)


In April 2009, Oracle Corporation entered into an agreement to purchase Sun Microsystems, current owners of the MySQL intellectual property. Suns board of directors unanimously approved the deal, it was also approved by Suns shareholders, and by the U.S. government on August 20, 2009. On December 14 2009, Oracle pledged to continue to enhance MySQL. In Europe the merge is under scrutiny by EU antitrust regulators, whose main concerns are on conict of interests with existing database software by Oracle. Michael Widenius, father of MySQL, launched a petition to pledge EU Commission to stop the deal. http://en.wikipedia.org/wiki/MySQL#Product_History

Ici nous installerons MySQL mais il en existe dautres: PostgreSQL, SQLlite, IngresDB, etc (http://fr.wikipedia.org/wiki/Syst%C3%A8me_de_gestion_de_base_de_donn%C3%A9es#Quelques_SGBD)

10.1.4.1. Installation de base


Je pourrais compiler Mysql et linstaller (http://dev.mysql.com/doc/refman/5.0/en/installing-binary.html) depuis la source mais dans le cadre dune premire dcouverte je me contenterais du paquet Debian avec la conguration par dfaut. Ce sera gage dune meilleure stabilit dans un premier temps.
## Installation $ apt-get update $ apt-get install mysql-server-5.0 ## En fin dinstallation le mot de passe root ## pour laccs la BD est requis comme paramtre obligatoire ## Vrification Version $ mysql --version mysql Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (i486) using readline 5.2

193

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
## Localisation $ whereis mysqld mysqld: /usr/sbin/mysqld /usr/share/man/man8/mysqld.8.gz ## Processus $ ps aux | grep mysql root 4541 0.0 0.1 4692 mysql 4580 0.1 0.7 119332

560 ? 2836 ?

S Sl

Dec28 Dec28

root

4581

0.0

0.1

3800

492 ?

Dec28

0:00 /bin/sh /usr/bin/mysqld_saf 4:54 /usr/sbin/mysqld --basedir= --datadir=/var/lib/mysql --pid-file=/var/run/mysqld --skip-external-locking ---socket=/var/run/mysqld/m 0:00 logger -p daemon.err -t mys

## Connection $ mysql -u root ERROR 1045 (28000): Access denied for user root@localhost (using password: NO)

$ mysql -h localhost -u root -p ## localhost cest ma machine, Enter password: ## -p est indispensable pour pouvoir entrer le mot de passe Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 39 Server version: 5.0.51a-24+lenny2 (Debian) Type help; or \h for help. Type \c to clear the buffer. mysql> ## Sortie XML $ mysql --xml -u root -e "SHOW VARIABLES LIKE version%" -p Enter password:

<resultset statement="SHOW VARIABLES LIKE version% " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <row> <field name="Variable_name">version</field> <field name="Value">5.0.51a-24+lenny2</field> </row> <row> <field name="Variable_name">version_comment</field> <field name="Value">(Debian)</field> </row> <row> <field name="Variable_name">version_compile_machine</field> <field name="Value">i486</field> </row> <row> <field name="Variable_name">version_compile_os</field> <field name="Value">debian-linux-gnu</field>

194

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
</row> </resultset>

10.1.4.2. Mot de passe: root, debian-sys-maint


Lors de linstallation de MySQL, un certain nombre dutilisateurs sont crs automatiquement :

- debian-sys-maint : utilisateur qui sert certains scripts Debian : il ne doit pas tre su - root@localhost : il sagit du compte administrateur, ayant tous les droits sur toutes les

Les utilisateurs de MySQL (ainsi que dautres informations relatives notamment aux droits daccs) sont contenus dans la table user dune base de donnes nomme mysql.
mysql> use mysql ## Selectionner la BD named "mysql" mysql> select host,user,password from user; ## Lancer une requte sur la table "user" +------------+------------------+-------------------------------------------+ | host | user | password | +------------+------------------+-------------------------------------------+ | localhost | root | *F83365F186D5B45C390EBD9B01A200B1D113D0BC | | debstafil4 | root | *F83365F186D5B45C390EBD9B01A200B1D113D0BC | | 127.0.0.1 | root | *F83365F186D5B45C390EBD9B01A200B1D113D0BC | | localhost | debian-sys-maint | *2377A473D938D4CE7A0C76D42F6DE68BB247CF68 | +------------+------------------+-------------------------------------------+ 4 rows in set (0.00 sec)

Note : Pour changer le mot de passe root:


mysql> set password for root@localhost=PASSWORD(mot_de_passe_root);

Choisir un bon mot de passe, cest--dire dau moins huit caractres, et contenant des majuscules, minuscules et au moins un chiffre.

10.1.4.3. Accder la documentation

En local :
$ man mysql

Au promt serveur :

$ mysql> help chane_rechercher ## indiquer dans la chane_rechercher les mots clefs de re

195

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes

## Par exemple mysql> help ## Liste MySQL commandes mysql> help content ## Affiche le contenu de laide mysql> help set ## Obtenir information sur la commande SET Name: SET Description: Syntax: SET variable_assignment [, variable_assignment] ... variable_assignment: user_var_name = expr | [GLOBAL | SESSION] system_var_name = expr | [@@global. | @@session. | @@]system_var_name = expr The SET statement assigns values to different types of variables that affect the operation of the server or your client. Older versions of MySQL employed SET OPTION, but this syntax is deprecated in favor of SET without OPTION. URL: http://dev.mysql.com/doc/refman/5.0/en/set-option.html

En ligne (web) : MySQL 5.0 Reference Manual (EN) (http://dev.mysql.com/doc/refman/5.0/en/index.html) MySQL 5.0 Reference Manual (FR) (http://dev.mysql.com/doc/refman/5.0/fr/index.html)

10.1.4.4. Arrt/Dmarrage du service de BD (daemon) - mysql

## Le mieux est dutiliser le script de dmarrage utilis lors de linitialisation de la mac ## En tant que root... ## start|stop|restart|reload|force-reload|status $ /etc/init.d/mysql stop Stopping MySQL database server: mysqld. $ /etc/init.d/mysql start Starting MySQL database server: mysqld .. Checking for corrupt, not cleanly closed and upgrade needing tables.. $ /etc/init.d/mysql reload $ /etc/init.d/mysql force-reload Reloading MySQL database server: mysqld. $ /etc/init.d/mysql status /usr/bin/mysqladmin Ver 8.41 Distrib 5.0.51a, for debian-linux-gnu on i486 Copyright (C) 2000-2006 MySQL AB This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL license Server version 5.0.51a-24+lenny2 Protocol version 10

196

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 27 sec Threads: 1 Questions: 80 Slow queries: 0 Opens: 23 Flush tables: 1 Open tables: 17

Que

## Alternatives /usr/sbin/mysqld /usr/bin/mysqld_safe

## Dmarrer le service de BD ## Essaie de dterminer les options correctes avant de lancer mysqld

10.1.4.5. Fichier de Conguration (my.conf) et de donnes


Source(s):

Web: Fichier doptions my.cnf (http://dev.mysql.com/doc/refman/5.0/fr/option-les.html) Variables du serveur MySQL (http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html)

Il y a trois chiers de conguration, qui sont lus successivement dans lordre ci-dessous, les options dnies en dernier crasant celles dnies prcdemment.

GLOBAL - /etc/mysql/my.cnf (docs/sr009-ch02-mysql-etc-my-cnf.txt) : Il sagit du chier de conguration global du serveur MySQL fonctionnant sur la machine. SERVEUR - DATADIR/my.cnf : est le chier de conguration propre chaque serveur MySQL. Il se trouve dans le dossier de base du serveur. Aucun existant par dfaut. UTILISATEUR - ~/.my.cnf (docs/sr009-ch02-mysql-user-my-cnf.txt) : plac dans le dossier dun utilisateur, ce chier de conguration donne les options pour cet utilisateur. Aucun existant par dfaut. SPECIFIC - defaults-extra-le : Le chier spci par --defaults-extra-le=#

On peut placer dans ce chier le login et le mot de passe, en sassurant videmment quil ne soit pas lisible par dautres utilisateurs. MySQL serveur maintient un system de plusieurs variables qui indiquent comment il est congur. Chaque variables a une valeur par dfaut. Ces variables peuvent-tre paramtres au dmarrage du service avec les options de ligne de commande ou via un chier de conguration. La plupart peuvent changer dynamiquement lorsque le serveur est en cours dexecution en utilisant la commande SET qui permet des modications sans stopper ou redmarrer le serveur. Il y a plusieurs moyens de connatres ses variables et leur valeur:
$ mysqld --verbose --help

## Afficher les variables/valeurs par dfaut la co ## et modifies par le fichier de configuration. $ mysqld --no-defaults --verbose --help ## Afficher les variables/valeurs par dfaut la co

197

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes

$ mysql > SHOW VARIABLES; $ my_print_defaults client mysql

## ignorant toute modification ultrieure. ## Afficher les variables/valeurs courantes du serve ## Afficher les options des groupes [client] et [mys

Plus dinformation : Variables du serveur MySQL (http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html)


## Extrait 1 $ mysqld --verbose --help mysqld Ver 5.0.51a-24+lenny2 for debian-linux-gnu on i486 ((Debian)) Copyright (C) 2000 MySQL AB, by Monty and others This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL license Starts the MySQL database server Usage: mysqld [OPTIONS] Default options are read from the following files in the given order: /etc/mysql/my.cnf ~/.my.cnf /usr/etc/my.cnf The following groups are read: mysql_cluster mysqld server mysqld-5.0 The following options may be given as the first argument: --print-defaults Print the program argument list and exit --no-defaults Dont read default options from any options file --defaults-file=# Only read default options from the given file # --defaults-extra-file=# Read this file after the global files are read -?, --help Display this help and exit. --abort-slave-event-count=# Option used by mysql-test for debugging and testing of replication. --allow-suspicious-udfs Allows use of UDFs consisting of only one symbol xxx() without corresponding xxx_init() or xxx_deinit(). That also means that one can load any function from any library, for example exit() from libc.so -a, --ansi Use ANSI SQL syntax instead of MySQL syntax. This mode will also set transaction isolation level serializable. --auto-increment-increment[=#] Auto-increment columns are incremented by this --auto-increment-offset[=#] Offset added to Auto-increment columns. Used when auto-increment-increment != 1 ... --log-slave-updates Tells the slave to log the updates from the slave thread to the binary log. You will need to turn it on if you plan to daisy-chain the slaves. --log-slow-admin-statements

198

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
Log slow OPTIMIZE, ANALYZE, ALTER and other administrative statements to the slow log if it is open. ... --old-passwords Use old password encryption method (needed for 4.0 and older clients). --old-style-user-limits Enable old-style user limits (before 5.0.3 user resources were counted per each user+host vs. per account) --pid-file=name Pid file used by safe_mysqld. ... --wait_timeout=# The number of seconds the server waits for activity on a connection before closing it. Variables (--variable-name=value) and boolean options {FALSE|TRUE} --------------------------------help abort-slave-event-count allow-suspicious-udfs auto-increment-increment auto-increment-offset ... master-retry-count master-ssl ... old-passwords old-style-user-limits pid-file port port-open-timeout profiling_history_size relay-log ... sysdate-is-now tc-heuristic-recover temp-pool timed_mutexes tmpdir ... wait_timeout

Value (after reading options) ----------------------------TRUE 0 FALSE 1 1 86400 FALSE FALSE FALSE /var/run/mysqld/mysqld.pid 3306 0 15 (No default value) FALSE (No default value) TRUE FALSE /tmp 28800

To see what values a running MySQL server is using, type mysqladmin variables instead of mysqld --verbose --help.

## Extrait 2 $ mysql> show variables; +---------------------------------+-----------------------------+ | Variable_name | Value | +---------------------------------+-----------------------------+ | auto_increment_increment | 1 | | auto_increment_offset | 1 | | automatic_sp_privileges | ON |

199

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
| back_log | 50 | | basedir | /usr/ | | binlog_cache_size | 32768 | | bulk_insert_buffer_size | 8388608 | | character_set_client | latin1 | | character_set_connection | latin1 | ... | version_comment | (Debian) | | version_compile_machine | i486 | | version_compile_os | debian-linux-gnu | | wait_timeout | 28800 | +---------------------------------+-----------------------------+ 232 rows in set (0.00 sec)

Pour savoir o se trouve le repertoire DATADIR :


$ mysql> show variables where Variable_name like datadir; +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | datadir | /var/lib/mysql/ | +---------------+-----------------+ 1 row in set (0.01 sec) # Alternative $ mysqld --verbose --help | grep datadir -h, --datadir=name Path to the database root. datadir /var/lib/mysql/

Par dfaut on voit que, MySQL DATADIR (repertoire de donnes) est /var/lib/mysql. Cest cet endroit que les base de donnes sont stockes. Un dossier par base de donnes.
## Fichiers associs la base de donne mysql sur le serveur $ ls /var/lib/mysql/mysql columns_priv.frm help_relation.MYI time_zone_leap_second.frm columns_priv.MYD help_topic.frm time_zone_leap_second.MYD columns_priv.MYI help_topic.MYD time_zone_leap_second.MYI db.frm help_topic.MYI time_zone.MYD db.MYD host.frm time_zone.MYI db.MYI host.MYD time_zone_name.frm func.frm host.MYI time_zone_name.MYD func.MYD proc.frm time_zone_name.MYI func.MYI proc.MYD time_zone_transition.frm help_category.frm proc.MYI time_zone_transition.MYD help_category.MYD procs_priv.frm time_zone_transition.MYI help_category.MYI procs_priv.MYD time_zone_transition_type.frm help_keyword.frm procs_priv.MYI time_zone_transition_type.MYD help_keyword.MYD tables_priv.frm time_zone_transition_type.MYI

200

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
help_keyword.MYI help_relation.frm help_relation.MYD tables_priv.MYD tables_priv.MYI time_zone.frm user.frm user.MYD user.MYI

Note : Il est possible de changer le repertoire DATADIR simplement en changeant dans le chier de conguration. Attention migrer toutes base de donnes existantes: Moving the MySQLs datadir directory (http://rajshekhar.net/blog/archives/90-Moving-the-MySQLs-datadir-directory..html).

Dans les scripts Shell, on peut aussi utiliser le programme my_print_defaults pour analyser les chiers doptions. Lexemple suivant montre le rsultat que my_print_defaults peut produire lorsquon lui demande dafcher les options des groupes [client] et [mysql] :
$ my_print_defaults client mysql --port=3306 --socket=/var/run/mysqld/mysqld.sock ## Sans prciser des groupes on obtient... $ my_print_defaults my_print_defaults Ver 1.6 for debian-linux-gnu at i486 This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL license Prints all arguments that is give to some program using the default files Usage: my_print_defaults [OPTIONS] groups -c, --config-file=name Deprecated, please use --defaults-file instead. Name of config file to read; if no extension is given, default extension (e.g., .ini or .cnf) will be added -#, --debug[=#] This is a non-debug version. Catch this and exit -c, --defaults-file=name Like --config-file, except: if first option, then read this file only, do not read global or per-user config files; should be the first option -e, --defaults-extra-file=name Read this file after the global config file and before the config file in the users home directory; should be the first option -g, --defaults-group-suffix=name In addition to the given groups, read also groups with this suffix -e, --extra-file=name Deprecated. Synonym for --defaults-extra-file. -n, --no-defaults Return an empty string (useful for scripts). -?, --help Display this help message and exit. -v, --verbose Increase the output level -V, --version Output version information and exit. Default options are read from the following files in the given order: /etc/mysql/my.cnf ~/.my.cnf /usr/etc/my.cnf

201

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes

Variables (--variable-name=value) and boolean options {FALSE|TRUE} --------------------------------config-file defaults-file defaults-extra-file defaults-group-suffix extra-file

Value (after reading options) ----------------------------my my (No default value) (No default value) (No default value)

Example usage: my_print_defaults --defaults-file=example.cnf client mysql

Comme indiqu ci-dessus et observ dans le chier de conguration my.cnf, les options peuvent tre regroupes par groupes :

[mysql] ou [mysqld] : sont des options lus et appliqus uniquement par le serveur MySQL. [client] : sont des options de group lus et appliqus par tous les programs client mais pas par le serveur mysqld. Elle specie les options appliquer au client. Par example on peut specier le mot de passe utiliser pour se connecter au serveur (,dans ce cas le chier ne doit pas tre lu par dautres utilisateurs !!!).

Quelques options de base interressantes :

[client] port = 3306 ## Port utiliser par les programmes client socket = /var/run/mysqld/mysqld.sock ## Prise de communication utiliser par les programme ... [mysqld] user pid-file socket port basedir datadir tmpdir language

= = = = = = = =

mysql /var/run/mysqld/mysqld.pid /var/run/mysqld/mysqld.sock 3306 /usr /var/lib/mysql /tmp /usr/share/mysql/english

## ## ## ##

Utilisateur par dfaut si non spcifi sur la lign Fichier didentifiant du processus Prise de communication Port dcoute du serveur

## Repertoire de donnes ## Language par dfaut du serveur

Modions la langue utilise pour que les messages derreur apparaissent en franais:
$ ls /usr/share/mysql/ charsets ## pour voir les options disponible

202

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
czech danish ... english ... french ... ukrainian

## Beaucoup de langues disponible par dfaut...

## Mofifions le fichier de configuration /etc/mysql/my.cnf language = /usr/share/mysql/french ## Puis redmarrons le service pour quil prenne en compte le changement $ /etc/init.d/mysql restart

## Vrifions $ mysql ## Sans spcifier dutilisateur ERROR 1045 (28000): Accs refus pour lutilisateur: root@@localhost (mot de passe: NON)

Dnissons des options propres lutilisateur root dans le chier de conguration /root/.my.cnf. On pourrait faire de mme pour un autre utilisateur.
# /root/.my.cnf [client] user = root password = mot_de_passe_root [mysql] database = mysql

## Bien prendre soin de remplace mot_de_passe_root par le mdp

## TEST OK $ mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 29 Server version: 5.0.51a-24+lenny2 (Debian) Type help; or \h for help. Type \c to clear the buffer. mysql> prompt (\u@\h) [\d]>\_ PROMPT set to (\u@\h) [\d]>\_ (root@localhost) [mysql]> ## En changeant laffichage du prompt (man mysql)

## Je vois bien que je suis connect en tant que root

## Alternativement pour vrifier qui je suis et quelle BD est en cours dutilisation mysql> status --------------

203

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
mysql Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (i486) using readline 5.2

Connection id: 32 Current database: mysql ## Base de donnes mysql OK Current user: root@localhost ## Utilisateur root OK SSL: Not in use Current pager: stdout Using outfile: Using delimiter: ; Server version: 5.0.51a-24+lenny2 (Debian) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1 UNIX socket: /var/run/mysqld/mysqld.sock Uptime: 16 min 50 sec Threads: 1 Questions: 145 -------------Slow queries: 0 Opens: 23 Flush tables: 1 Open tables: 17

Qu

Note : Ce chier de conguration contient des donnes sensibles (mot de passe), il est donc ncessaire dassurer sa condentialit :
$ ls -l .my.cnf -rw-r--r-- 1 root root 66 jan $ chmod go-rwx .my.cnf $ ls -l .my.cnf -rw------- 1 root root 66 jan ## Droits par dfaut 1 23:55 .my.cnf ## Enlve tous les droits au groupe et ## aux utilisateurs autres que le propritaire 1 23:55 .my.cnf ## Vfification nouveaux droits

Note : Plusieurs possibilits pour changer les prompt MySQL (user@host) [database]> par exemple. Pour plus dinformation voir la page : man mysql (section MYSQL COMMANDES).
# Utiliser les variables denvironements $ export MYSQL_PS1="(\u@\h) [\d]> " # Utiliser loption de ligne de commande mysql --prompt $ mysql --prompt="(\u@\h) [\d]> " # Utliser une option de configuration dans le groupe [mysql] [mysql] prompt=(\\u@\\h) [\\d]>\\_ ## Les anti-slashe doivent tre doubls dans ce cas... # Utiliser la mthode inter-active

204

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
mysql> prompt (\u@\h) [\d]>\_

10.1.4.6. Rgle dOR: Vrier linstallation de la Base de Donnes avec le systme


Note : Ne jamais faire conance aux scripts de dmarrage et ce quils renvoient lcran !!! Toujours vrier linstallation avec le systme.

Sassurer que le service de BD est bien actif et oprationnel:

### Un serveur de base de donnes comme MySQL ou PostgreSQL attend des requtes sur un port. ### pour PostgreSQL il sagit du port 5432. ### Par dfaut le service mysql (indiqu mysqld ici) utilise le port 3306 $ grep mysql /etc/services mysql 3306/tcp mysql 3306/udp ### Pas besoin de le dmarrer le service fonctionne dj $ /etc/init.d/mysql start Starting MySQL database server: mysqld already running. ### Vrifions la table de processus $ ps aux | grep mysql root 3649 0.0 0.3 4692 1288 ? mysql 3688 0.1 4.2 127376 16972 ?

S Sl

Jan01 Jan01

root root

3689 3889

0.0 0.0

0.1 0.1

3800 3940

612 ? 768 pts/1

S R+

Jan01 00:28

0:00 /bin/sh /usr/bin/mysqld_saf 0:02 /usr/sbin/mysqld --basedir= --datadir=/var/lib/mysql --user= --pid-file=/var/run/mysqld/mysql --skip-external-locking --port=3 --socket=/var/run/mysqld/mysqld. 0:00 logger -p daemon.err -t mys 0:00 grep mysql

### Le service est actif, verifions quil coute le port 3306 $ netstat -natupw | grep 3306 tcp 0 0 127.0.0.1:3306 0.0.0.0:* ### Test de connection $ telnet 10.0.1.5 3306 Trying 10.0.1.5... telnet: Unable to connect to remote host: Connection refused $ telnet 127.0.0.1 3306 Trying 127.0.0.1... Connected to 127.0.0.1.

LISTEN

3688/mysqld

205

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
Escape character is ^]. 5.0.51a-24+lenny2...Connection closed by foreign host. $ mysql -h 10.0.1.5 -u root -p Enter password: ERROR 2003 (HY000): Cant connect to MySQL server on 10.0.1.5 (111) $ mysql -h 127.0.0.1 -u root -p Enter password: Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 36 Server version: 5.0.51a-24+lenny2 (Debian) Type help; or \h for help. Type \c to clear the buffer. mysql>

A ce stade, je suis sr que le service est bien oprationnel. Sil y a un problme, cela ne vient pas de sa conguration de base. Soit cela vient dextensions, mais le service globalement fonctionne. QUESTION : On voit bien ci-dessus quil est possible de se connecter que par laddresse 127.0.0.1 et pas 10.0.1.5 est-ce normal ? Puisque cette dernire nest pas lcoute ? Ou pas autoris dans la base MySQL ? QUESTION : Les commandes indiques dans le cours sont tapes en majuscules mais elles fonctionnent sans soucis en minuscules. Sagit-il dune convention dans le monde des bases de donnes ? juste pour le cours ? Doit-on prendre cette habitude ? Oui, cest purement conventionnel an de distinguer les mots rservs du reste.

10.1.4.7. Cration dun compte utilisateur et mise en place des droits


Cration dun utilisateur nomm mysqlUser auquel nous nassignerons aucun droit sur aucune base dans un premier temps
mysql> GRANT USAGE ON *.* TO mysqlUser@localhost IDENTIFIED BY mdpmysqlUser; Query OK, 0 rows affected (0.00 sec) mysql> SELECT user FROM users; ERROR 1146 (42S02): La table mysql.users nexiste pas

206

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
mysql> SELECT user FROM user; +------------------+ | user | +------------------+ | root | | root | | debian-sys-maint | | mysqlUser | | root | +------------------+ 5 rows in set (0.01 sec)

## Test de connection $ mysql -u mysqlUser -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 36 Server version: 5.0.51a-24+lenny2 (Debian) Type help; or \h for help. Type \c to clear the buffer. mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | +--------------------+ 1 row in set (0.00 sec) mysql> SHOW TABLES; +---------------------------------------+ | Tables_in_information_schema | +---------------------------------------+ | CHARACTER_SETS | | COLLATIONS | | COLLATION_CHARACTER_SET_APPLICABILITY | | COLUMNS | | COLUMN_PRIVILEGES | | KEY_COLUMN_USAGE | | PROFILING | | ROUTINES | | SCHEMATA | | SCHEMA_PRIVILEGES | | STATISTICS | | TABLES | | TABLE_CONSTRAINTS | | TABLE_PRIVILEGES | | TRIGGERS | | USER_PRIVILEGES | | VIEWS | +---------------------------------------+ 17 rows in set (0.00 sec)

207

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes

mysql> USE mysql; ## Accs une autre base refus ! ERROR 1044 (42000): Acc<65533>s refus<65533> pour lutilisateur: mysqlUser@@localhost. B

La base de donnes information_schema fournit un accs aux mtadonnes sur les bases de donnes. Chaque utilisateur MySQL a le droit daccder ces donnes, mais seules les lignes concernant des objets pour lesquels il a des droits seront visibles.

10.1.4.8. Cration dune base de donne et dune table


Note : En mode interactif, les guillemets simple () et double (") ne sont pas accepter par linterprteur... pour la cration dune base de donne ou dune table il ne sont pas requis...dans ce mode

Cration dune petite base de donnes permettant de grer une bibliothque. Creating and Selecting a Database (http://dev.mysql.com/doc/refman/5.0/en/creating-database.html) :
mysql> CREATE DATABASE bibliotheque; Query OK, 1 row affected (0.00 sec) mysql> USE bibliotheque; ## Crer la BD bibliotheque

## Utiliser la BD bibliotheque

Cette base de donnes ne contient quune seule table livre, dont les champs sont dnis dans le tableau suivant :
champ idLivre titre auteur annee Type entier chane chane type anne Taille 3 chiffres 128 caractres 128 caractres 4 chiffres

Commentaire doit sincrmenter automatiquement, unique pour ch titre du livre auteur du livre anne de parution

Creating a Table (http://dev.mysql.com/doc/refman/5.0/en/creating-tables.html) :


mysql> CREATE TABLE livre ( -> idLivre INT (3) NOT NULL AUTO_INCREMENT, -> titre VARCHAR(128) NOT NULL, -> auteur VARCHAR(128) NOT NULL, -> annee YEAR(4) NOT NULL, -> UNIQUE(idLivre) -> )TYPE=MYISAM; ## ## ## ## ## ## ##

Crer une nouvelle table livre dans cet Identifiant du livre 3 chiffres, champs n Titre de 128 charactres maximum, champs Auteur de 128 charactres maximum, champs Anne 4 chiffres, champs non-vide Identifiant du livre doit tre unique Choix du type de table: MYISAM

208

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
Query OK, 0 rows affected, 1 warning (0.04 sec) mysql> SHOW TABLES; +------------------------+ | Tables_in_bibliotheque | +------------------------+ | livre | +------------------------+ 1 row in set (0.00 sec)

## Afficher les tables de la BD bibliothequ

mysql> DESCRIBE livre; ## Afficher la structure de la table livre +---------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+----------------+ | idLivre | int(3) | NO | PRI | NULL | auto_increment | | titre | varchar(128) | NO | | NULL | | | auteur | varchar(128) | NO | | NULL | | | annee | year(4) | NO | | NULL | | +---------+--------------+------+-----+---------+----------------+ 4 rows in set (0.00 sec)

Ajouter un enregistrement dans cette table. Loading Data into a Table (http://dev.mysql.com/doc/refman/5.0/en/loading-tables.html) :

mysql> INSERT INTO livre (idLivre,titre,auteur,annee) VALUES (,Une brve histoire du temps Query OK, 1 row affected, 1 warning (0.05 sec) mysql> INSERT INTO livre (idLivre,titre,auteur,annee) VALUES (,MySQL 5, Cyril Thibaud, Query OK, 1 row affected, 1 warning (0.00 sec)

Note : idLivre sincrmente automatiquement...

Afchons le contenu de notre table. Retrieving Information from a Table (http://dev.mysql.com/doc/refman/5.0/en/retrieving-data.html) :


mysql> SELECT * FROM livre; ## Afficher tous les enregistrements de la table +---------+------------------------------+-----------------+-------+ | idLivre | titre | auteur | annee | +---------+------------------------------+-----------------+-------+ | 1 | Une brve histoire du temps | Stephen Hawking | 1990 | | 2 | MySQL 5 | Cyril Thibaud | 2006 | +---------+------------------------------+-----------------+-------+ 2 rows in set (0.02 sec)

209

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
mysql> SELECT annee, auteur FROM livre; +-------+-----------------+ | annee | auteur | +-------+-----------------+ | 1990 | Stephen Hawking | | 2006 | Cyril Thibaud | +-------+-----------------+ 2 rows in set (0.00 sec) ## Filtrer sur les colonnes

mysql> SELECT * FROM livre WHERE auteur LIKE Stephen Hawking; ## Filtrer sur les enregist +---------+------------------------------+-----------------+-------+ | idLivre | titre | auteur | annee | +---------+------------------------------+-----------------+-------+ | 1 | Une brve histoire du temps | Stephen Hawking | 1990 | +---------+------------------------------+-----------------+-------+ 1 row in set (0.00 sec)

mysql> SELECT annee, auteur FROM livre WHERE annee=1990; +-------+-----------------+ | annee | auteur | +-------+-----------------+ | 1990 | Stephen Hawking | +-------+-----------------+ 1 row in set (0.02 sec)

## Filter sur lignes et colonne

Mettre jour un enregistrement existant :


mysql> UPDATE livre SET annee=2000 WHERE auteur=Stephen Hawking; Query OK, 1 row affected (0.01 sec) Enregistrements correspondants: 1 Modifis: 1 Warnings: 0 mysql> SELECT * FROM livre WHERE auteur LIKE Stephen Hawking; +---------+------------------------------+-----------------+-------+ | idLivre | titre | auteur | annee | +---------+------------------------------+-----------------+-------+ | 1 | Une brve histoire du temps | Stephen Hawking | 2000 | +---------+------------------------------+-----------------+-------+ 1 row in set (0.00 sec)

Autoriser lutilisateur mysqlUser accder la base de donnes bibliotheque. En root, on excute la commande suivante :
mysql> GRANT select ON bibliotheque.* TO mysqlUser@localhost; Query OK, 0 rows affected (0.07 sec)

## bibliotheque.* accorde le ## toutes les tables de la b

210

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
## Vrification... (mysqlUser@localhost) [(none)]> USE bibliotheque Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed (mysqlUser@localhost) [bibliotheque]> SELECT * FROM livre; +---------+------------------------------+-----------------+-------+ | idLivre | titre | auteur | annee | +---------+------------------------------+-----------------+-------+ | 1 | Une brve histoire du temps | Stephen Hawking | 2000 | | 2 | MySQL 5 | Cyril Thibaud | 2006 | +---------+------------------------------+-----------------+-------+ 2 rows in set (0.00 sec)

(mysqlUser@localhost) [bibliotheque]> INSERT INTO livre (idLivre, titre, auteur, annee) > VALUES (, "On a perdu la moiti de lUnivers", Jean-Pierre Petit, 2001); ERROR 1142 (42000): La commande INSERT est interdite lutilisateur: mysqlUser@@localh ##==> mysqlUser peut pas ajouter un enregistrement

Autoriser lutilisateur mysqlUser ajouter des donnes dans la table livre :


mysql> GRANT insert ON bibliotheque.* TO mysqlUser@localhost; Query OK, 0 rows affected (0.00 sec)

## Vrification... (mysqlUser@localhost) [bibliotheque]> INSERT INTO livre (idLivre, titre, auteur, annee) > VALUES (, "On a perdu la moiti de lUnivers", Jean-Pierre Petit, 2001); Query OK, 1 row affected, 1 warning (0.00 sec)

(mysqlUser@localhost) [bibliotheque]> UPDATE livre SET annee=1995 WHERE auteur=Stephen Ha ERROR 1142 (42000): La commande UPDATE est interdite lutilisateur: mysqlUser@@localh ##==> mysqlUser peut pas modifier un enregistrement

Note : Pour que le changement de droits soit effectif, il semble ncessaire que lutilisateur se dconnecte/re-connecte au serveur MySQL

Accorder tous les droits sur la base de donnes (slection, insertion, cration de nouvelles tables. . .), la syntaxe est la suivante :
mysql> GRANT ALL PRIVILEGES ON bibliotheque.* TO mysqlUser@localhost; Query OK, 0 rows affected (0.00 sec)

211

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes

## Vrification... (mysqlUser@localhost) [bibliotheque]> UPDATE livre SET annee=1995 WHERE auteur=Stephen Ha Query OK, 1 row affected (0.00 sec) Enregistrements correspondants: 1 Modifis: 1 Warnings: 0

10.1.4.9. Executer des requtes SQL dans un script (batch le)


Il est possible dexecuter des requtes SQL dans un script via un chier (batch le mode) Syntaxe :
$ mysql db_name < script.sql > output.tab

10.1.4.10. Sauvegarde & Restauration


Differentes mthodes disponible en bref... Pour plus dinformation : Backup and Recovery (http://dev.mysql.com/doc/refman/5.0/en/backup-and-recovery.html) Mthode1: Copier les chiers de tables (via commande systme cp, scp, tar, rsync) :
Pour lengin de stockage qui reprsente chaque table dans son propre fichier, les tables peuvent tre sauvegards en copiant simplement ces fichiers. Par example, les tables MyISAM sont stocks dans des fichiers :*.frm, *.MYD, and *.MYI, il suffit simplement des les copiers. Pour obtenir une sauvegarde consistent, il est ncessaire de stopper le serveur ou de faire un LOCK TABLES sur chacune des tables suivit dun FLUSH TABLES pour les tables.

Mthode2 : Crer des chiers texte contenu des tables :


## Syntaxe mysql> SELECT * INTO OUTFILE file_name FROM tbl_name; ## Example mysql> SELECT * INTO OUTFILE livre.txt FROM livre; Query OK, 3 rows affected (0.01 sec)

212

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes

mysql> SELECT * INTO OUTFILE /home/filostene/livre.txt FROM livre; ERROR 1 (HY000): Cant create/write to file /home/filostene/livre.txt (Errcode: 13)

Note : Par dfaut, le chier livre.txt (docs/sr009-ch02-bibliotheque-livre.txt) est cr dans le repertoire /var/lib/mysql/bibliotheque/. Il nest pas possible de changer cette location moins de donner accs lutilisateur systme mysql cette dite location

Mthode3 : mysqldump (programme)


## Syntaxe $ mysqldump db_name > dump_file $ mysqldump --tab=/path/to/some/dir db_name ## Example $ mysqldump bibliotheque > bibliotheque.txt $ mkdir /tmp/dump/ $ chgrp mysql /tmp/dump/ $ chmod g+w /tmp/dump/ $ mysqldump --tab=/tmp/dump/ bibliothequels $ ls -l /tmp/dump/ -rw-r--r-- 1 root root 1403 jan 2 15:42 livre.sql -rw-rw-rw- 1 mysql mysql 141 jan 2 15:42 livre.txt

## Alternative

Resultat : bibliotheque.txt (docs/sr009-ch02-mysqldump1-bibliotheque.txt) livre.sql (docs/sr009-ch02-mysqldump2-livre.sql) livre.txt (docs/sr009-ch02-mysqldump2-livre.txt)


Note : mysqldump est plus gnral parce quil peut sauvegarder tout type de tables tandis que mysqlhotcopy ne fonctionne pas avec tous les engins de stockage.

RESTAURER : les chiers dump au format SQL on peut utiliser le client mysql. Pour les chiers text-dlmits on peut utiliser la commande MySQL LOAD DATA INFILE ou le script mysqlimport. Mthode4: mysqlhotcopy (script pour tables MyISAM), ibbackup (script pour tables InnoDB) :
## Syntaxe $ mysqlhotcopy db_name /path/to/some/dir ## Example $ mysqlhotcopy bibliotheque /tmp/dump/ Locked 1 tables in 0 seconds. Flushed tables (bibliotheque.livre) in 1 seconds.

213

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
Copying 4 files... Copying indices for 0 files... Unlocked tables. mysqlhotcopy copied 1 tables (4 files) in 1 second (1 seconds overall). $ ls -l /tmp/dump/bibliotheque -rw-rw---- 1 mysql mysql 65 jan -rw-rw---- 1 mysql mysql 8664 jan -rw-rw---- 1 mysql mysql 152 jan -rw-rw---- 1 mysql mysql 2048 jan

2 2 2 2

12:05 12:40 14:02 15:52

db.opt livre.frm livre.MYD livre.MYI

RESTAURER: Utiliser mysqlhotcopy (ou ibbackup pour InnoDB) pour copier en retour les tables dans le repertoire dorigine

10.1.5. Vulnrabilits du moteur PHP


Source(s):

Web: Vulnrabilits du moteur PHP (AtLab la scurit offensive) (http://www.ossir.org/paris/supports/2010/2010-01-12/ATLAB-OSSIR.pdf)

10.1.6. Language de script - PHP - Installation et conguration


Source(s):

OF: SR009-ch03-php.pdf (docs/eof/sr009-ch03-php.pdf)

La troisime brique dont nous avons besoin est un language de script pour interfacer nos page Web dynamique avec la base de donnes.
Un langage de script est un langage de programmation qui permet de manipuler les fonctionnalits dun systme informatique congur pour fournir linterprteur de ce langage un environnement et une interface qui dterminent les possibilits de celui-ci. Le langage de script peut alors saffranchir des contraintes de bas niveau prises en charge par lintermdiaire de linterface et bncier dune syntaxe de haut niveau. http://fr.wikipedia.org/wiki/Langage_de_script

214

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes Ici nous installerons PHP mais il en existe dautres: python, ruby, perl, etc... (http://fr.wikipedia.org/wiki/Langage_de_script#Liste_des_langages_de_script)
PHP (ofciellement, ce sigle est un acronyme rcursif pour PHP: Hypertext Preprocessor) est un langage de scripts gnraliste et Open Source, spcialement conu pour le dveloppement dapplications web. Il peut tre intgr facilement au HTML. http://www.php.net/manual/fr/intro-whatis.php

10.1.6.1. Installation de base


Source(s):

Web: Considrations gnrales sur linstallation (http://www.php.net/manual/fr/install.general.php) Apache 2.0 sur les systmes Unix (http://www.php.net/manual/fr/install.unix.apache2.php) Notes dinstallation sous Debian GNU/Linux (http://www.php.net/manual/fr/install.unix.debian.php)

Dans le cadre dune premire dcouverte je me contenterais du paquet Debian avec la conguration par dfaut. Ce sera gage dune meilleure stabilit dans un premier temps. Description des paquets de base :

php5

Il sagit dun mtapaquet qui, une fois install, vous guarantit que vous disposez dun interprteur php5 cot serveur fonctionnel. Si Apache 2 est install sur votre machine, alors le paquet libapache2-mod-php5 sera automatiquement install. Pour Apache 1.3, ce sera le paquet libapache-mod-php5. ce paquet vous fournit linterprteur de commande /usr/bin/php5 utile pour tester les scripts php dans un terminal, ou mme pour crire de vritables scripts si python ou perl vous font peur. ce paquet fournit un module php pour les connexions directes aux bases de donnes MySQL depuis un script php.

php5-cli

php5-mysql

Installation :
$ apt-get update $ apt-get install php5 php5-cli php5-mysql Lecture des listes de paquets... Fait Construction de larbre des dpendances Lecture des informations dtat... Fait Les paquets supplmentaires suivants seront installs : apache2-mpm-prefork libapache2-mod-php5 php5-common Paquets suggrs :

215

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
php-pear Les paquets suivants seront ENLEVS : apache2-mpm-worker Les NOUVEAUX paquets suivants seront installs : apache2-mpm-prefork libapache2-mod-php5 php5 php5-cli php5-common php5-mysql 0 mis jour, 6 nouvellement installs, 1 enlever et 2 non mis jour. Il est ncessaire de prendre 5628ko dans les archives. Aprs cette opration, 12,0Mo despace disque supplmentaires seront utiliss. ... Stopping web server: apache2 ... waiting .. ... Starting web server: apache2. ... Paramtrage de php5-common (5.2.6.dfsg.1-1+lenny4) ... Paramtrage de libapache2-mod-php5 (5.2.6.dfsg.1-1+lenny4) ... Creating config file /etc/php5/apache2/php.ini with new version Reloading web server config: apache2. Paramtrage de php5 (5.2.6.dfsg.1-1+lenny4) ... Paramtrage de php5-cli (5.2.6.dfsg.1-1+lenny4) ... Creating config file /etc/php5/cli/php.ini with new version Paramtrage de php5-mysql (5.2.6.dfsg.1-1+lenny4) ...

Le serveur Apache a t redmarr durant lopration... Deux chiers de conguration on t crs...

10.1.6.2. Test en ligne de commande - Premier script


Vrier si linterprteur en ligne de commande est correctement install et fonctionnel:
$ ls -lh /usr/bin/php lrwxrwxrwx 1 root root 21 jan

2 16:39 /usr/bin/php -> /etc/alternatives/php

$ ls -lh /etc/alternatives/php lrwxrwxrwx 1 root root 13 jan 2 16:39 /etc/alternatives/php -> /usr/bin/php5

## Test mode interactif $ php -a Interactive mode enabled <?php echo "Hello world!"; Hello world! ?> ^C

## lancer linterprteur en mode interactif

## Appuyez sur ctrl+C pour quitter linterprteur.

## Test mode script $ cat > test.php <<EOF

216

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
> > > > > > <?php echo "Ceci est un script php\n"; \$i=1; echo "i vaut \$i\n"; ?> EOF

$ php test.php Ceci est un script php i vaut 1

Note : En mode interactif, il nest pas forcment ncessaire dintroduire le script par <?php, cette commande peut parfois ne pas tre reconnue par linterprteur et peut gnrer une erreur. Pour PHP, lorsquon lance linterprteur en cli, il est normal de ne pas avoir besoin de lui prciser quon vas faire du PHP, puisquon es dj dans linterprteur php :)

Rendons le script excutable directement :


## Ajouter simplement la ligne suivante au dbut du programme ## pour indique directement dans le script linterprteur utiliser : #!/usr/bin/php ## Rendre le script executable $ chmod u+x test.php ## Lancer le script $ ./test.php Ceci est un script php i vaut 1

10.1.6.3. Interrogation dune base de donnes


Un script minimaliste bibliotheque.php (docs/sr009-ch03-bibliotheque-php.txt) permet de se connecter la base de donnes bibliotheque que nous avez cre prcdemment et y faire une requte. La connexion la base de donnes se fera avec lutilisateur mysqlUser. Il est suppos que la base de donnes bibliotheque est cre et que lutilisateur peut effectivement se connecter cette base de donnes.
$ chmod u+x bibliotheque.php $ ./bibliotheque.php connexion russie ! la slection de la base a russi !

217

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
rsultat : ======== Une brve histoire du temps Stephen Hawking 1995 MySQL 5 Cyril Thibaud 2006 On a perdu la moiti de lUnivers Jean-Pierre Petit 2001

Note : Si une erreur du type suivant avait t obtenu :

Fatal error: Call to undefined function mysql_pconnect() in /home/grossard/bibliotheque.php on lin

Il aurait fallut vriez que la ligne suivante soit dcommente dans le chier /etc/php5/cli/php.ini :
extension=mysql.so ## Module PHP de connection la base de donnes MySQL

10.1.6.4. Test avec le serveur HTTP (Apache)


Lobjectif est ici de vrier que Apache est capable dinterprter correctement un script php : test.php On copie le chier la racine des documents du serveur Apache /var/www, on ouvre un navigateur et on saisielURL :
http ://localhost/test.php

Note : La page ne safche pas correctement, le navigateur propose simplement de la tlcharger ! Apache doit tre congurer pour interprter les script PHP.

Congurer Apache :

218

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
Modifier le fichier de configuration de Apache afin de linformer : 1. quil doit utiliser la bilbiothque de php5, 2. quil doit considrer les fichiers portant les extensions php, php3 ou php4 (ou ce que vous voulez) comme des scripts php, 3. quil doit automatiquement interprter index.php sil existe.

Les modications nont pas t effectues automatiquement lors de linstallation de PHP. Vriez tout de mme la prsence des lignes suivantes dans les chier de conguration dApache.
$ ls /etc/apache2/mods-enabled/ ... php5.load ... ## Le fichier existe

$ cat /etc/apache2/mods-enabled/php5.load ## Contenu OK LoadModule php5_module /usr/lib/apache2/modules/libphp5.so ## Indique Apache o trouver ## la bibliothque de fonctions $ ls -l /usr/lib/apache2/modules/libphp5.so ## Bibliothque bien prsente -rw-r--r-- 1 root root 5450680 nov 22 02:49 /usr/lib/apache2/modules/libphp5.so

$ ls -l /etc/apache2/mods-available/php5.conf -rw-r--r-- 1 root root 133 nov 22 02:48 /etc/apache2/mods-available/php5.conf

$ cat /etc/apache2/mods-available/php5.conf <IfModule mod_php5.c> AddType application/x-httpd-php .php .phtml .php3 ## indique Apache que les fichiers av AddType application/x-httpd-php-source .phps ## .php .phtml et .php3 sont interpr </IfModule> ## comme des scripts php

La conguration est correcte ! Essayons de re-dmarrer le serveur pour quil reprenne en compte cet conguration :
$ /etc/init.d/apache2 restart Restarting web server: apache2 ... waiting . ## Testons nouvau dans le navigateur... http ://localhost/test.php

Note : Cette fois a marche, la page safche correctement, le script test.php est correctement interprt. Si on le renome en index.php, le serveur Apache le prends en compte directement.

219

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes Figure 10-1. Script PHP avec Apache

10.1.6.5. Accder la documentation

Page de Manuel en Local (man) :


$ man php

En ligne (web) : Documentation / Tutoriels (http://php.net/docs.php) Manuel PHP (FR) (http://php.net/manual/fr/index.php)

10.1.6.6. Fichier de Conguration - php.ini

Web : Congurer PHP (FR) (http://www.php.net/manual/fr/conguration.php) Directives du php.ini (http://www.php.net/manual/fr/ini.php) Dernire version du php.ini (http://svn.php.net/viewvc/php/php-src/trunk/php.ini-production?view=co)

220

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes Toutes les options de conguration de php sont regroupes dans un chier unique nomm php.ini se trouvant dans les dossiers :
$ find / -name php.ini -print /etc/php5/apache2/php.ini /etc/php5/cli/php.ini

## Utilis par le serveur web Apache ## Utilis par la librairie CLI (ligne de commande - Interf

On peut y congurer des choses comme les balises prendre en compte, la gestion de la scurit ou encore les ressources du systme alloues php. Ce chier est galement lu par Apache chaque dmarrage du serveur web ou par utilis par la librairie CLI (php en ligne de commande - Interface interactive). Dans un premier temps, laissons les chiers dorigine avec les options par dfaut : /etc/php5/apache2/php.ini (docs/sr009-ch03-apache2-php-ini.txt) & /etc/php5/cli/php.ini (docs/sr009-ch03-cli-php-ini.txt) La diffrence entre les deux chiers est minime :
$ diff /etc/php5/apache2/php.ini /etc/php5/cli/php.ini 270c270 < memory_limit = 128M ; Maximum amount of memory a script may consume (128MB) --> memory_limit = 32M ; Maximum amount of memory a script may consume (32MB)

Quelques options de conguration intressantes :


Option doc_root rpertoire

open_basedir rpertoire

include_path rpertoire

magic_quotes_gpc on|off

magic_quotes_runtime on|off

max_execution_time secondes memory_limit octets

Description Nom du rpertoire racine de php. Quand loption safe_mode est active, seuls les scripts php accessibles sont ceux situ ce rpertoire liste des rpertoires accessibles aux fonctions daccs aux fi de php. . indique que seuls les fichiers du rpertoire cou peuvent tre ouverts liste des rpertoires dans lesquels chercher les fichiers appe par les fonctions include et require. Ceci permet de crer des bibliothques de fonctions communes plusieurs sites Si cette option est active, les apostrophes, \ et NULL sont a tomatiquement prcds dun \ pour les variables GET, POST et les cookies Si cette option est active, les apostrophes, \ et NULL sont a matiquement prcds dun \ pour les chanes provenant dune base de donnes ou dun fichier Temps maximal dexcution dun script mmoire maximale alloue un script

221

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
track_vars on|off

Si cette option est active, les tableaux associatifs HTTP_GET_VARS, HTTP_POST_VARS et HTTP_COOKIE_VARS sont crs au dbut de chaque script file_uploads on|off Si cette option est active, le client peut envoyer des fichie sur le serveur upload_tmp_dir rpertoire rpertoire dans lequel sont stocks les fichiers envoys par l client (/tmp par dfaut sous Linux) upload_max_filesize taille taille maximale des fichiers envoys par le client safe_mode on|off Si cette option est active, php est excut en mode scuris. ce cas, seuls les scripts situs sous doc_root peuvent tre ex safe_mode_exec_dir rpertoire si loption safe_mode est active, seuls les programmes situs dans ce rpertoire pourront tre excuts avec la fonction sys

10.1.6.7. Afcher conguration courante : phpinfo()


La fonction phpinfo() permet dafcher de nombreuses informations sur PHP, concernant sa conguration courante : options de compilation, extensions, version, informations sur le serveur, et lenvironnement (lorsquil est compil comme module), environnement PHP, informations sur le systme, chemins, valeurs gnrales et locales de conguration, en-ttes HTTP et la licence PHP.

Comme tous les systmes sont congurs diffremment, phpinfo() sert gnralement vrier la conguration ainsi que les variables prdnies, pour une plate-forme donne. phpinfo() est un bon outil de dbogage, car il afche le contenu de toutes les variables EGPCS (Environnement, GET, POST, Cookie, Serveur). http://uk3.php.net/manual/fr/function.phpinfo.php

Crons un chier info.php contenant le code suivant, et plaons le dans repertoire /var/www/ :
$ > > > > cat > /var/www/info.php <<EOF <?php phpinfo(); ?> EOF

Puis ouvrons le navigateur :


http://localhost/info.php

222

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes Figure 10-2. Script PHPinfo() avec Apache

C ti pa bo a !!!

10.1.6.8. Rgle dOR: Vrier linstallation de PHP avec le systme


Note : Ne jamais faire conance aux scripts de dmarrage et ce quils renvoient lcran !!! Toujours vrier linstallation avec le systme.

Sassurer que PHP est bien actif et oprationnel. Le langage doit tre install, ventuellement avec ses bibliothques. Comment vrier quil est bien prsent (on ne parle pas encore des bibliothques). Il y a plusieurs faons de faire :

223

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
## Liste des paquets php qui sont installs $ dpkg -l * | grep php | grep ^ii ii libapache2-mod-php5 5.2.6.dfsg.1-1+lenny4 ii php5 5.2.6.dfsg.1-1+lenny4 ii php5-cli 5.2.6.dfsg.1-1+lenny4 ii php5-common 5.2.6.dfsg.1-1+lenny4 ii php5-mysql 5.2.6.dfsg.1-1+lenny4

server-side, server-side, command-line Common files MySQL module

HTML-embedded scripting lang HTML-embedded scripting lang interpreter for the php5 scr for packages built from the for php5

## Emplacement de linterprteur (vue du systme donne par la variable $PATH) $ which php5 | xargs ls -al -rwxr-xr-x 1 root root 5318592 nov 22 02:49 /usr/bin/php5 ## Version installe $ php -v PHP 5.2.6-1+lenny4 with Suhosin-Patch 0.9.6.2 (cli) (built: Nov 22 2009 02:38:03) Copyright (c) 1997-2008 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies ## Vrifions que linterprteur fonctionne avec un script $ cat > test.php <<EOF > <?php > echo coucou; > ?> > EOF $ php test.php coucou

L plus de soucis, a fonctionne :))

10.1.7. phpMyAdmin - Installation et conguration


Source(s):

OF: SR009-ch04-phpmyadmin.pdf (docs/eof/sr009-ch04-phpmyadmin.pdf) Web: phpMyAdmin on the web (EN) (http://www.phpmyadmin.net/home_page/) phpMyAdmin on SourceForge (EN) (http://sourceforge.net/projects/phpmyadmin/)

phpMyAdmin (PMA) est une interface de gestion pour systme de gestion de base de donnes MySQL ralise en PHP et distribue sous licence GNU GPL. http://fr.wikipedia.org/wiki/PhpMyAdmin

224

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes

10.1.7.1. Installation de base


Jaurais pu tlcharger et installer la dernire version disponible de phpMyAdmin (http://www.phpmyadmin.net/home_page/downloads.php) mais dans le cadre dune premire dcouverte je me contenterais du paquet Debian avec la conguration par dfaut. Ce sera gage dune meilleure stabilit dans un premier temps. Linstallation de phpMyAdmin est immdiate :
$ apt-get install phpmyadmin Lecture des listes de paquets... Fait Construction de larbre des dpendances Lecture des informations dtat... Fait Les paquets supplmentaires suivants seront installs : libgd2-xpm libmcrypt4 libt1-5 php5-gd php5-mcrypt Paquets suggrs : libgd-tools libmcrypt-dev mcrypt Les paquets suivants seront ENLEVS : libgd2-noxpm Les NOUVEAUX paquets suivants seront installs : libgd2-xpm libmcrypt4 libt1-5 php5-gd php5-mcrypt phpmyadmin 0 mis jour, 6 nouvellement installs, 1 enlever et 2 non mis jour. Il est ncessaire de prendre 3384ko dans les archives. Aprs cette opration, 11,3Mo despace disque supplmentaires seront utiliss. ... Paramtrage de phpmyadmin (4:2.11.8.1-5+lenny3) ... Reloading web server config: apache2.

Durant linstallation, lcran suivant est apparu et a t renseign comme suit :

225

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes Figure 10-3. phpMyAdmin Install Prompt

lissue de linstallation, tous les scripts de phpMyAdmin (et autres chiers) sont placs dans le rpertoire /usr/share/phpmyadmin et il y a normalement un lien symbolique dans /var/www qui pointe sur le rpertoire dinstallation :

226

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
$ ls /usr/share/phpmyadmin/ browse_foreigners.php license.php server_sql.php calendar.php main.php server_status.php changelog.php navigation.php server_variables.php ... config.header.inc.php phpinfo.php tbl_addfield.php config.inc.php phpmyadmin.css.php tbl_alter.php ... db_sql.php print.css tbl_replace.php db_structure.php querywindow.php tbl_row_action.php docs.css readme.php tbl_select.php Documentation.html scripts tbl_sql.php error.php server_binlog.php tbl_structure.php ... lang server_privileges.php user_password.php libraries server_processlist.php view_create.php $ ls -l /var/www/ drwxr-xr-x 2 root root 4096 dc 25 01:12 htdig -rw-r--r-- 1 root root 117 jan 2 17:47 index.php -rw-r--r-- 1 root root 20 jan 3 15:18 info.php

Note : Pour une raison que jignore il ny a pas de lien symbolique dans /var/www/ mais cela ne semble pas utile.

Vrions que cela fonctionne, naviguons :


http://localhost/phpmyamdin

## Il faut videmment au pralable lancer les serveurs Apache e

227

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes Figure 10-4. phpMyAdmin - Page daccueil

228

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes

10.1.7.2. Accder la documentation

En local : http://localhost/phpmyadmin/Documentation.html (EN) (http://localhost/phpmyadmin/Documentation.html) Web : phpMyAdmin Manuel (FR) (http://www.phpmyadmin.net/localized_docs/fr/Documentation.html) Documentation principale (EN) (http://www.phpmyadmin.net/home_page/docs.php) Documentation en Francais (FR) (http://www.phpmyadmin.net/localized_docs/fr/)

10.1.7.3. Conguration de phpMyAdmin


Source(s):

Web: Description des paramtres de conguration (http://www.phpmyadmin.net/localized_docs/fr/Documentation.html#cong)

Il y a les chiers de conguration dans /etc/phpmyadmin cest l que lon peut modier les paramtres :
## Fichiers utiliss sur Debian $ ls -l /etc/phpmyadmin/ -rw-r--r-- 1 root root 983 -rw-r--r-- 1 root root 168 -rw-r--r-- 1 root root 168 -rw-r--r-- 1 root root 1936 -rw-r----- 1 root www-data 8 -rw-r--r-- 1 root root 500

oct oct oct oct jan oct

24 24 24 24 3 24

12:34 12:34 12:34 12:34 18:24 12:34

apache.conf ## Ce fichier est copier config.footer.inc.php (docs/sr009-ch04-phpmyadm config.header.inc.php (docs/sr009-ch04-phpmyadm config.inc.php (docs/sr009-ch04-phpmyadmin-etchtpasswd.setup lighttpd.conf

## Fichiers non utiliss sur Dbian $ ls -l /usr/share/phpmyadmin/conf* -rw-r--r-- 1 root root 181 oct 24 12:34 -rw-r--r-- 1 root root 181 oct 24 12:34 -rw-r--r-- 1 root root 1263 oct 24 12:34 -rw-r--r-- 1 root root 1751 jui 28 2008

/usr/share/phpmyadmin/config.footer.inc.php (docs/s /usr/share/phpmyadmin/config.header.inc.php (docs/s /usr/share/phpmyadmin/config.inc.php (docs/sr009-ch /usr/share/phpmyadmin/config.sample.inc.php

$ diff /etc/apache2/conf.d/phpmyadmin.conf /etc/phpmyadmin/apache.conf ## Aucune diffrence. Le premier est celui effectivement utilis par Apache...

Presque toutes les donnes de conguration sont places dans cong.inc.php.

229

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
Note : Attention, il y a un chier dans /etc/phpmyadmin et un autre dans /usr/share/phpmyadmin qui fait les inclusions de chiers (de /etc/phpmyadmin et autres...) et congure des valeurs par dfaut si besoin. Sur Debian, le chier de conguration est maintenu dans /etc/phpmyadmin et peut-tre different certains gard de la documentation phpMyAdmin (source: Distribution Debian spcique (http://www.phpmyadmin.net/home_page/downloads.php#distributions)).

Les paramtres relatifs la conception (comme les couleurs), se trouvent dans themes/themename/layout.inc.php. Il est possible galement de modier les chiers cong.footer.inc.php et cong.header.inc.php pour ajouter du code spcique inclure en en-tte et en pied de chaque page. Quelques options interressantes :
$cfg[blowfish_secret] chane Le mode dauthentification par cookie utilise lalgorithme blowfish pour chiffrer le mot de passe. $cfg[Servers] tableau Contient les informations de connexions pour les diffrents serveurs. Le premier $cfg[Servers][$i][host] contient le nom dhte du premier serveur, le second $cfg[Servers][$i][host] le nom dhte du second serveur, etc. $cfg[Servers][$i][host] chane Le nom dhte ou ladresse IP de votre $i-me serveur MySQL. Cest--dire localhost. $cfg[Servers][$i][port] chane Le numro de port de votre $i-me serveur MySQL. Par dfaut : 3306 (laissez blanc pour utiliser la valeur par dfaut). $cfg[Servers][$i][socket] chane Le chemin daccs vers le socket utiliser. Laissez blanc pour utiliser la valeur par dfaut. $cfg[Servers][$i][ssl] boolen Pour activer ou pas une connexion SSL vers le serveur MySQL.

$cfg[Servers][$i][connect_type] chane Quel type de connexion utiliser avec le serveur MySQL. Vos choix sont socket et tcp. Par dfaut, cest tcp... $cfg[Servers][$i][extension] chane Dfinit lextension php MySQL utilise pour la connexion. Les options autorises sont : mysql : Lextension MySQL classique. Cest loption recommande et par dfaut ce jour. mysqli : Lextension MySQL amliore. Cette extension devient disponible avec php

230

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
version 5.0.0, et recommande pour se connecter sur un serveur excutant MySQL version 4.1.x ou suivantes.

$cfg[Servers][$i][compress] boolen Pour utiliser ou non un protocole compress pour la connexion au serveur MySQL (exprime Cette fonctionnalit requiert PHP version 4.3.0 ou ultrieure.

$cfg[Servers][$i][auth_type] chane [HTTP|http|cookie|config|signon] Dfinit le mode dauthentification config, cookie, signon ou HTTP qui sera utilis sur l ... Veuillez consulter la section Installation sur Utiliser les modes dauthentification pour plus de renseignements. $cfg[Servers][$i][user] chane $cfg[Servers][$i][password] chane En utilisant auth_type = config, cest la paire utilisateur/mot de passe quutilisera phpMyAdmin pour se connecter au serveur MySQL. Cette paire utilisateur/mot de passe nest pas ncessaire quand les modes dauthentification HTTP ou cookie sont utiliss, et doit rester vide.

$cfg[Servers][$i][only_db] chane ou tableau Sil est indiqu un nom de base de donnes (ou un tableau de noms de bases de donnes) , seule(s) cette (ces) base(s) sera (seront) affiche(s) lutilisateur. $cfg[Servers][$i][pdf_pages] chane Depuis la version 2.3.0, phpMyAdmin peut crer des pages PDF montrant les relations entre vos tables. Pour ce faire, il a besoin de deux tables pdf_pages (qui stocke les informations sur les pages PDF disponibles) et table_coords (qui stocke les coordonnes o chaque table sera place sur le schma PDF ralis). ... Astuce dutilisation : Ralisation de PDF. $cfg[Servers][$i][AllowRoot] boolen Autoriser ou non un accs la racine. Il sagit seulement dun raccourci pour les rgles AllowDeny ci-dessous. $cfg[Servers][$i][AllowNoPassword] boolen Permet dautoriser les connexions sans mot de passe. La valeur par dfaut est false... $cfg[Servers][$i][AllowDeny][order] chane Si votre rgle order est vide, alors lauthentification IP est dsactive.

Si votre rgle order est dfinie deny,allow alors le systme applique toutes les rgles deny puis les rgles allow . Laccs est autoris par dfaut... $cfg[Servers][$i][SignonURL] chane URL o sera redirig lutilisateur pour se connecter avec le mode dauthentification signon. Doit tre absolue et inclure le protocole. $cfg[Servers][$i][LogoutURL] chane URL o sera redirig lutilisateur aprs la dconnexion (ceci naffecte pas la mode dauthentification config). Doit tre absolue et inclure le protocole.

231

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes

$cfg[ServerDefault] entier Si vous avez plus dun serveur, vous pouvez dfinir $cfg[ServerDefault] sur nimporte lequel dentre eux pour sauto-connecter sur celui-ci quand phpMyAdmin est dmarr, ou le dfinir 0 sur tous les serveurs pour avoir une liste de serveurs auxquels se connecter. Si vous navez quun seul serveur, $cfg[ServerDefault] DOIT tre dfini sur ce serveur

$cfg[PersistentConnections] boolen Dfinit si les connexions persistantes doivent tre utilises (mysql_connect ou mysql_pc $cfg[ForceSSL] boolen Pour forcer ou pas lutilisation de https lors de laccs phpMyAdmin. $cfg[ExecTimeLimit] entier [nombre de secondes] Dfinit le nombre de secondes alloues un script pour sexcuter. Si le nombre de secondes est dfini zro, aucune limite de temps nest impose. $cfg[MemoryLimit] entier [nombre doctets] Dfinit le nombre doctets quun script est autoris allouer. Si ce nombre est dfini zro, aucune limite nest impose. $cfg[ShowSQL] boolen Dfinit si les requtes SQL gnres par phpMyAdmin doivent tre affiches. $cfg[ShowPhpInfo] boolen $cfg[ShowChgPassword] boolen $cfg[ShowCreateDb] boolen Dfinit si on affiche les liens Afficher les informations relatives PHP et Modifier le mot de passe ou le formulaire de crtion de base de donnes dans le cadre principal (de droite) de dmarrage. ...

$cfg[MaxRows] entier Nombre de colonnes affiches lors de la navigation sur un ensemble de rsultats. Si le nombre des colonnes est suprieur, des liens Suivant et Prcdent seront a

$cfg[ZipDump] boolen $cfg[GZipDump] boolen $cfg[BZipDump] boolen Dfinit si on utilise la compression zip/GZip/BZip2 lors de la cration de fichiers dex

$cfg[CompressOnFly] boolen Dfinit si on autorise la compression la vole pour des exportations au formats GZip/B

$cfg[DefaultLang] chane Dfinit la langue par dfaut utiliser, si ce nest pas le cas, la configuration du navigateur ou celle de lutilisateur sera utilise. Voir le script select_lang.lib.php pour connatre les valeurs autorises pour ce paramt

$cfg[Lang] chane Force : toujours utiliser cette langue (doit tre dfini dans le script select_lang.lib.

232

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes

$cfg[FilterLanguages] chane Limite la liste des langues disponibles celle concordant une expression rgulire do Par exemple, si vous ne voulez que le tchque et langlais, vous devrez dfinir le filtre suivant : ^(cs|en). $cfg[TrustedProxies] tableau Liste les proxies et les en-ttes HTTP qui sont srs pour IP Allow/Deny. Cette liste est vide par dfaut. $cfg[SaveDir] chane Le nom du rpertoire o les fichiers dexportation peuvent tre sauvegards. Si vous voulez un rpertoire diffrent pour chaque utilisateur, %u sera remplac par le nom dutilisateur... $cfg[TempDir] chane Le nom du rpertoire o les fichiers temporaires peuvent tre stocks... $cfg[Export] tableau Dans ce tableau sont dfinis les paramtres par dfaut pour les fichiers dexportation; $cfg[Import] tableau Dans ce tableau sont dfinis les paramtres par dfaut pour limportation. ...

10.1.7.4. Modes dauthentication


Il existe trois modes dauthentication dans phpMyAdmin :
- par HTTP - par cookie (par dfaut) - partir du fichier de configuration

Note : Quelle que soit la mthode dauthentication utilise, gardons lesprit que le mot de passe transite en clair, moins dutiliser le protocole HTTPS. Pour ma part je choisis de conserver la mthode par dfaut pour le moment.

10.1.7.4.1. Par HTTP Avec ce mode dauthentication, lors de la connexion phpMyAdmin, le serveur Apache propose une bote dauthentication dans laquelle il demande le nom dutilisateur et le mot de passe. Il doit sagir dun compte MySQL valable. Si cest le cas, une session est ouverte.

233

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes Pour ce mode dauthentication, phpMyAdmin a besoin dun utilisateur de contrle - pma - ayant seulement le privilge SELECT sur les tables mysql.user. Sur Debian, lors de linstallation de phpMyAdmin, cet utlisateur est automatiquement cr dans MySQL et ses droits correctements positionns. Si aucun compte na encore t cr, le comte root du serveur de base de donnes peut tre utilis. Pour activer ce mode dauthentication, assurez-vous que la ligne suivante est prsente dans le chier cong.inc.php :
$cfg[Servers][$i][auth_type] = http;

10.1.7.4.2. Par cookie (mode par dfaut) Bien sr, avec cette mthode dauthentication, lutilisateur doit activer les cookies dans son navigateur. Avec ce mode, lutilisateur peut rellement se dconnecter de phpMyAdmin et se reconnecter avec le mme nom dutilisateur. La mthode dauthentication par cookie utilise lalgorithme blowsh pour chiffrer le mot de passe. Voici la ligne correspondante dans le chier de conguration /var/lib/phpmyadmin/blowsh_secret.inc.php :
$cfg[blowfish_secret] = mettez ici la phrase de votre choix; ## Fait ;-)

Note : Il y a un chier de cr par dfaut dans /etc/phpmyadmin qui est inclus (directive include) dans /usr/share/phpmyadmin/

Jy est rentr la phrase de mon choix. Elle sera utilise de manire interne par lalgorithme blowsh : cette phrase mot de passe ne mest plus demande. Le nombre maximum de caractres pour ce paramtre semble tre 46. La mthode dauthentication sur cookie peut galement tre paramtrer dans le chier de conguration cong.inc.php :
$cfg[Servers][$i][auth_type] = cookie;

234

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes 10.1.7.4.3. Par chier de conguration (le moins scuris) Ce mode est le moins scuris car il requiert de remplir les champs $cfg[Servers][$i][user] et $cfg[Servers][$i][password] dans le chier de conguration. Mais vous navez pas besoin de dnir un utilisateur de contrle - pma , ici lutilisation de $cfg[Servers][$i][only_db] savre sufsante. Il est recommend de ne pas dutiliser cette mthode dauthentication, dautant plus que lutilisateur de contrle pma est dj cr sur mon systme. 10.1.7.4.4. Test de connection Figure 10-5. phpMyAdmin - Connection Root

Figure 10-6. phpMyAdmin - Connection Utilisateur

235

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes

10.1.7.5. Conseils pour scuriser phpMyAdmin


Si vous utilisez un serveur qui ne peut pas tre accd par dautres personnes, il est sufsant dutiliser la protection de rpertoire fournie avec votre serveur web (avec Apache vous pouvez utiliser les chiers .htaccess, par exemple). Si dautres personnes ont un accs telnet votre serveur, vous devriez utiliser la fonctionnalit dauthentication HTTP de phpMyAdmin. Suggestions :

- Votre fichier config.inc.php devrait tre chmod 660. - Tous les fichiers phpMyAdmin devraient tre chown -R phpmy :apache, o phpmy est un utilis dont le mot de passe est connu de vous seul, et apache (en gnral www-data sur les dist sur Debian) est le groupe avec lequel Apache est excut. - Vous devriez utiliser le mode scuris de PHP, pour vous protger des autres utilisateurs inclure votre fichier config.inc.php dans leurs scripts.

10.1.7.6. phpMyAdmin, apprenons nous en passer !


Le mode interactif "mysql>" nest pas si terrible prendre en main ; il faut tre bien au fait des commandes et syntaxe SQL, ce qui demande un certain apprentissage que phpMyAdmin peut aider acqurir. MySQLnavigator (http://sourceforge.net/projects/mysqlnavigator/) est un autre outil en interfaces graphiques qui semble plus lger utiliser que phpMyAdmin, il ne ncessite pas de browser web. Dans le cadre de la formation CP2LL, on nous demande dinstaller phpMyAdmin, mais par la suite, il faudra quon sache faire sans (interfaces graphiques), cela nous rendra dautant plus performant... En matire dadministation de serveur on a rarement les machines sous la main et quasiment jamais dinterface graphique.

10.1.7.7. Didacticiel
En suivant le didacticiel contenu dans le poly OF...les requtes ci-dessous safchent...
## Root execute : # requte SQL 1: CREATE DATABASE videotheque ;

236

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
# requte SQL 2: CREATE USER michel@localhost IDENTIFIED BY ******;

GRANT USAGE ON * . * TO michel@localhost IDENTIFIED BY ****** WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTION # requte SQL 3: GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , DROP , INDEX , ALTER , CREATE TEMPORARY TABLES , CREATE VIEW , SHOW VIEW , CREATE ROUTINE, ALTER ROUTINE, EXECUTE ON videotheque . * TO michel@localhost;

Figure 10-7. phpMyAdmin - Connection Michel

## Michel execute : # requte SQL 4: CREATE TABLE videotheque.dvd ( idDvd INT( 3 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , titre VARCHAR( 128 ) NOT NULL , realisateur VARCHAR( 128 ) NOT NULL , annee YEAR( 4 ) NOT NULL ) ENGINE = MYISAM # requte SQL 5: INSERT INTO videotheque.dvd ( idDvd , titre , realisateur , annee ) VALUES (

237

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes
NULL , Harry Potter le Prince de sang ml, David Yates, 2009 ), ( NULL , L-haut, Pete Docter, 2009 );

Figure 10-8. phpMyAdmin - Table DVD (Resultant du Didacticiel)

238

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes

10.1.8. Atelier - Installation dune application (Promethe) tlcharge partir dun zip ou dun tar.gz
Source(s):

OF: SR009-ch05-installation-application.pdf (docs/eof/sr009-ch05-installation-application.pdf)

Installation de lapplication Promethe http ://promethee.eu.org/ qui est un logiciel visant fournir un intranet pdagogique et administratif clef en main aux tablissements de lenseignement public.

10.1.8.1. Tlcharger les sources de lapplication et la documentation

## Tlcharger la dernire version francaise disponible... $ mkdir /mnt/hsubuntu/promethee $ cd /mnt/hsubuntu/promethee/ $ wget http://promethee.eu.org/demo/download/source/promethee.zip ## Tlcharger la documentation $ wget http://promethee.eu.org/index.php?file=download/ftp/docs/documentation $ wget http://promethee.eu.org/index.php?file=download/ftp/docs/documentation $ wget http://promethee.eu.org/index.php?file=download/ftp/docs/documentation $ wget http://promethee.eu.org/index.php?file=download/ftp/docs/documentation $ wget http://promethee.eu.org/index.php?file=download/ftp/docs/documentation $ wget http://promethee.eu.org/index.php?file=download/ftp/docs/documentation $ wget http://promethee.eu.org/index.php?file=download/ftp/docs/documentation $ wget http://promethee.eu.org/index.php?file=download/ftp/docs/documentation ## Autres Documents collaboratifs dipsonible : http://promethee.eu.org/index.php?item=34&IDgroup=0&IDroot=5

francaise/Debi francaise/Inst francaise/Guid francaise/Guid francaise/Guid francaise/Guid francaise/eof. francaise/plaq

10.1.8.2. Installation de base


Pour installer PROMETHEE sur ma machine, il faut au pralable vrier que mon systme dexploitation donne accs :
- un serveur de pages internet (ex : Apache - www.apache.org) - au langage de programmation PHP4 ou suprieur (www.php.org) - au systme de base de donnes MySQL (www.mysql.com)

239

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes Suite aux diffrentes tapes dcritent dans les sections prcdente de mon journal, je peux dire que cest dj le cas :) Linfrastructure LAMP existe et est entirement oprationnel. Je souhaite que lapplication soit disponible via http://localhost/promethee et que les chiers de lapplication Web soit dans le repertoire /var/www/promethee La premire tape est de crer le repertoire o sera localis lapplication :
$ mkdir /var/www/promothee

Il ne doit tre accessible que par lapplication elle mme (le serveur web), donc on change les droits...
$ chown -R www-data:www-data /var/www/promothee # ls -l /var/www/ ... drwxr-xr-x 2 www-data www-data 4096 jan 4 00:31 promethee

La deuxime tape est donc de congurer le serveur Web Apache pour que cela soit le cas :)) Je cre le chier /etc/apache2/conf.d/promethee.conf qui contient :
# phpMyAdmin default Apache configuration Alias "/promethee" "/var/www/promethee/" <Directory "/var/www/promethee/"> Options Indexes FollowSymLinks Includes AllowOverride All #Order allow,deny Allow from all </Directory>

Puis je redmarre Apache pour prendre en compte la conguration :


$ /etc/init.d/apache2 restart

Le serveur a bien redmarr, je vrie les logs /var/log/apache2/error.log pour tre sr... mais rien de particulier signaler...

240

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes Soyons fou, je copie /var/www/test.php et /var/www/info.php (mes deux scripts de tests crs dans les sections prcdente lors de linstallation de linfrastructure LAMP) et je tente une tentative de connection :
http://localhost/promethee/ ## Affiche index.php http://localhost/promethee/info.php ## Affiche info sur PHP

Ourah ! a marche impecable :)) Cette application peut apparement fonctionner sans base de donnes mais comme conseill, il est prfrable den utiliser une pour amliorer la gestion. Nous utiliserons MySQL. Je vais donc crer une base "epl" et un utilisateur "epl-admin" ddi pour la gestion de cette base. Il aura tous les droits sur cette base et pourra donner des droits dautres. Ceci permettrais ou permettra de dlguer la gestion de la base au besoin sans donner accs au compte root ou dautres bases. A laide de phpMyAdmin connect en tant que root :
# requte SQL 1: CREATE DATABASE epl ; # requte SQL: CREATE USER epl-admin@localhost IDENTIFIED BY *********; GRANT USAGE ON * . * TO epl-admin@localhost IDENTIFIED BY ********* WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; # requte SQL: CREATE USER epl-admin@localhost IDENTIFIED BY *********; GRANT USAGE ON * . * TO epl-admin@localhost IDENTIFIED BY ********* WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

On vrie la connection la base de donne :


$ mysql -u epl-admin -p epl Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 115 Server version: 5.0.51a-24+lenny2 (Debian) Type help; or \h for help. Type \c to clear the buffer. mysql> status -------------mysql Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (i486) using readline 5.2

241

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes

Connection id: 115 Current database: epl Current user: epl-admin@localhost SSL: Not in use Current pager: stdout Using outfile: Using delimiter: ; Server version: 5.0.51a-24+lenny2 (Debian) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1 UNIX socket: /var/run/mysqld/mysqld.sock Uptime: 10 hours 48 min 40 sec Threads: 1 Questions: 1578 -------------mysql> Slow queries: 0 Opens: 26 Flush tables: 1 Open tables: 19

Connection OK ! Maintenant il nous faut dzipper lapplication tlcharg et copier le contenu dans le repertoire Web :
$ unzip /mnt/hsubuntu/05-SR009-Interfacer-Apache-avec-un-langage-de-script-etun-serveur-de-base-de-donnes/promethee/promethee.zip -d /var/www/promethee/

An que les utilisateurs de promethee puissent disposer des sources PROMETHEE, on copie larchive ZIP dans le rpertoire download/source.
$ cp /mnt/hsubuntu/05-SR009-Interfacer-Apache-avec-un-langage-de-script-etun-serveur-de-base-de-donnes/promethee/promethee.zip /var/www/promethee/download/source/

En fait il faut que le propritaire et le groupe soient bien Apache (www-data) et les droits Unix soient positionns rwxr-xr-x pour les chiers et les sous rpertoires, comme indiqu dans la doc :
$ chown -R www-data:www-data /var/www/promethee/ $ ls -l /var/www/promethee/ -rw-r--r-- 1 www-data www-data 4815 nov 10 21:22 absent_flash.php -rw-r--r-- 1 www-data www-data 12551 oct 8 15:14 absent_gestion.htm ...

242

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes

$ chmod -R 755 /var/www/promethee/* $ ls -l /var/www/promethee/ total 4592 -rwxr-xr-x 1 www-data www-data 4815 nov 10 21:22 absent_flash.php -rwxr-xr-x 1 www-data www-data 12551 oct 8 15:14 absent_gestion.htm -rwxr-xr-x 1 www-data www-data 1789 sep 16 19:06 absent_mvc.php ...

Je me connecte maintenant Promethee pour me laissez-vous guider par la procdure dinstallation automatise en 4 tapes.
http://localhost/promethee/setup.php

## Se rfrer au guide dinstallation pour plus dinfo

243

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes Figure 10-9. Promethe - Installation 1/7

244

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes Figure 10-10. Promethe - Installation 2/7

245

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes Figure 10-11. Promethe - Installation 3/7

246

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes Figure 10-12. Promethe - Installation 4/7

247

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes Figure 10-13. Promethe - Installation 5/7

248

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes

Figure 10-14. Promethe - Installation 6/7

249

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes Figure 10-15. Promethe - Installation 7/7

250

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes Figure 10-16. Promethe - Ecran de connexion

Je me connecte avec :
ID Utilisateur : admin Mot de passe : (laisser vide)

251

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes Figure 10-17. Promethe - Ecran dAccueil

La premire chose faire cest de changer le mot de passe de lutilisateur "admin" et de supprimer le chier "setup.php" dans le dossier /var/www/promethee :)) Ca y est ! PROMETHEE est congur et oprationnel. Il ne reste plus qu :

- crer les comptes des utilisateurs (table user_id), - crer les comptes des lves (table user_student), - ventuellement, renseigner les adresses IP des postes clients connects au serveur intrane (table ip) afin didentifier les stations et de scuriser lintranet par filtrage IP7.

Il existe deux mthodes pour crer un compte :


- par invitation, - par importation de donnes.

Pour le reste consulter le guide dinstallation et dadministration.

252

Chapitre 10. SR009 Interfacer Apache avec un langage de script et un serveur de base de donnes

10.1.9. Dveloppement dune application et mise disposition sous la forme dun tgz
Source(s):

OF: SR009-ch06-developpement-application.pdf (docs/eof/sr009-ch06-developpement-application.pdf) Rsultat: sr009.tar.gz (docs/sr009.tar.gz)

Cest loin dtre parfait... mais dans lensemble cela devrait rpondre au cahier des charges...

253

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


11.1. Outils de test - Laboratoire: Netkit & Clownix
Source(s):

Tools: Netkit -The poor mans system to experiment computer networking (netkit.org) (http://wiki.netkit.org/index.php/Main_Page) Prsentation de netkit (Keepin.eu) (http://keepin.org/pdf/keepin-netkit.pdf) Clownix (http://clownix.net/) (Jeune Projet, pas encore mature)

11.1.1. Netkit
11.1.1.1. Installation
# # $ $ # $ $ $ # $ $ $ Netkit installation Crer un dossier dinstallation mkdir ~/netkit cd ~/netkit

Tlcharger Netkit Core, Filesystem et Kernel wget http://wiki.netkit.org/download/netkit/netkit-2.7.tar.bz2 wget http://wiki.netkit.org/download/netkit-filesystem/netkit-filesystem-i386-F5.1.tar.bz2 wget http://wiki.netkit.org/download/netkit-kernel/netkit-kernel-i386-K2.8.tar.bz2 Dcompresser tar -xjSf netkit-2.7.tar.bz2 tar -xjSf netkit-filesystem-i386-F5.1.tar.bz2 tar -xjSf netkit-kernel-i386-K2.8.tar.bz2

# Ajouter les lignes suivante dans le fichier ~/.bashrc ###### ## RL Customisation :) # # Environment variable for netkit export NETKIT_HOME=/home/filostene/Documents/netkit/netkit export MANPATH=:$NETKIT_HOME/man export PATH=$NETKIT_HOME/bin:$PATH # Tester $ cd ~/netkit/netkit $ ./check_configuration.sh

254

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


# Si tout OK, dmarrer un simple machine virtuelle $ vstart pc1 # Afficher les machines virtuelles dmarres $ vlist USER VHOST PID filostene pc1 4486 Total virtual machines: Total consumed memory: 1 (you), 61588 KB (you),

SIZE 61588

INTERFACES

1 (all users). 61588 KB (all users).

# Arrter la machine virtuelle depuis lhte des machines $ vhalt pc1 Halting virtual machine "pc1" (PID 4486) owned by filostene [.....

# Par dfaut conserve l # pour les dmarrages

# OU $ vhalt -r pc1 Halting virtual machine "pc1" (PID 4486) owned by filostene [..... Removing filesystem "/home/filostene/Documents/netkit/netkit/pc1.disk"... done. ## On peut aussi maintenant enlever le fichier log : pc1.log

# Option # et la

## Alternativement, les machines virtuelles (VM) peuvent tre arrter directement depuis la $ halt

11.1.1.2. Un petit lab ! en trois temps trois mouvement


Source(s):

Exemple de lab Netkit: Archives ofciels de laboratoires virtuels ofciels implments avec Netkit (http://wiki.netkit.org/index.php/Main_Page) Ces laboratoires prsentent des concepts rseau spcique: 1 hte (http://wiki.netkit.org/netkitlabs/netkit-labs_basic-topics/netkit-lab_single-host/netkit-lab_single-host.pdf), 2 htes (http://wiki.netkit.org/netkit-labs/netkit-labs_basic-topics/netkit-lab_two-hosts/netkit-lab_twohosts.pdf), adresse static (prsentation (http://wiki.netkit.org/netkit-labs/netkit-labs_basic-topics/netkit-lab_static-routing/netkit-lab_staticrouting.pdf), lab (http://wiki.netkit.org/netkit-labs/netkit-labs_basic-topics/netkit-lab_static-routing/netkit-lab_staticrouting.tar.gz)), ARP, routage interdomain. Chacun est quip dune prsentation qui introduit les sujets considr et les experimentations proposes ralis de faon interactive sur le lab.

Mes labs netkit: sr004-net01-ch03-etude-de-cas-rlr-netkit-lab03.tar.bz2 (docs/sr004-net01-ch03-etude-de-cas-rlr-netkit-lab03.tar.bz2) sr011-ch02-tp-pare-feu-rlr-netkit-lab04.tar.bz2 (docs/sr011-ch02-tp-pare-feu-rlr-netkit-lab04.tar.bz2)

255

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


Note : Avant de se lancer dans la conguration dun lab Netkit on prendra soin de toujours faire un diagramme claire du scenario que lon souhaite muler!

## Un petit lab avec 2 babasses et un routeur au milieu ## Merci qui ? Merci Alix pour le tuyau !!! $ mkdir myLAB && cd myLAB $ mkdir -p pc1 pc2 routeur $ cat << EOF >lab.conf pc1[0]=A pc2[0]=B routeur[0]=A routeur[1]=B EOF $ lstart ##Y a plus qu jouer avec la commande ifconfig ou ip ;-) $ ifconfig eth0 10.0.0.1 netmask 255.255.255.0 broadcast 10.0.0.255 up # OU alternativement pour obtenir une configuration permanente # il suffit dditer avec vi ou mcedit le fichier # /etc/network/interfaces ( linterieur de la VM pc1, 2 ou routeur) et dajouter: auto eth0 iface eth0 inet static address 10.0.0.1 network 10.0.0.0 netmask 255.255.255.0 # Rpter pour chacune des machines. # La configuration sera permante jusqua tout changement ultrieur # ou que le systme de fichier est effac lors de larrt de la VM

11.1.1.3. Connecter son Lab une rseau rel (LAN, Internet,...)


Connecter une VM un rseau externe un rseau rel est possible. Les droits administrateur son requis pour cela (root ou sudo). Suivant comment Netkit est congur, le mot de passe root peut-tre demand par Netkit.
###### ## Attacher une interface rseau virtuel eth0 la VM pc1, # # Executer: $ vstart pc1 --eth0=tap,TAP-ADDRESS,GUEST-ADDRESS # OU # Ajouter une option dans le fichier de configuration lab.conf: vm[0]=tap,TAP-ADDRESS,GUEST-ADDRESS

# TAP-ADDRESS est ladresse IP dune nouvelle interface du ct de lhte qui est utilis po # GUEST-ADDRESS est ladresse IP automatiquement assign linterface linterieur de la m

256

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

# TAP-ADDRESS et GUEST-ADDRESS doivent appartenir au mme rseau local quel quil soit (Netk # Voir la page man de vstart pour plus dinformation.

Note : La mot de passe root ne sera demand quune seule fois. TAP-ADDRESS sappliquera uniquement la premire machine virtuelle qui dmarrera avec linterface tap. Pour utiliser une autre TAP-ADDRESS pour une autre interface du lab ou dun autre lab, il est necessaire de r-initialiser la TAP-ADDRESS.
###### ## Re-initialiser la TAP-ADDRESS # # Arrter toutes les machines virtuelles puis executer: $ vclean -T # Rarement utilis car comme netkit utilise NAT, la TAP-ADDRESS a rarement besoin dtre change.

11.2. NET01 Base


11.2.1. En Bref
Source(s):

Tutoriel: TP Conguration du rseau (http://www.ac-creteil.fr/reseaux/systemes/linux/debian/deb-tp-reseau.html) Introduction to Debian Networking Setup (http://www.debian-administration.org/article/An_introduction_to_Debian_networking_setup)

Ceci est une bref introduction la conguration rseau sous Debian. Elle est comparable aux autres distributions GNU/Linux, notemment dans la conguarion DNS (Domain Name Server = Server de Nom de Domaine).

257

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

11.2.1.1. Quatres points essentiels: Nom dhte / Addresse IP / Passerelle / Domaine (Nom et DNS)
Les lments suivants constituent les quatres points essentiels de conguration dun rseau:

le nom dhte (Hostname): Ceci est le nom de la machine qui complet avec le nom de domaine forme le FQDN (fully qualied domain name = Nom de domaine quali complet) laddresse IP (IP Address) : Numero identiant la machine de faon unique sur le rseau la passerelle par dfaut (default gateway - GW) : Adresse IP de la machine permettant de communiquer avec dautres rseaux le nom de domaine et le(s) server(s) DNS (Domain Name Server = Server de Nom de Domaine) : permettent didentier ladresse dune machine sur un domaine via son nom.

11.2.1.2. Congurer le nom dhte


Le nom dhte est habituellement conguer lors de linstallation Il peut tre afch ou changer tout moment avec la commande hostname.
# Voir le nom dhte $ /bin/hostname debstafil # Changer le nom dhte temporairement $ /bin/hostname newname # Changer le nom dhte de faaon permanente Editer le fichier /etc/hostname et indiquer un nouveau nom. Ce fichier est lu automatiquement au dmarrage du systme. Le changement sera effective au prochain dmarrage.

11.2.1.3. Conguer laddresse IP


Laddresse IP associe une carte rseau est lue depuis le chier /etc/network/interfaces (man interfaces pour plus dinfo)
##### ## Pour une machine avec addresse IP static ## Adresse IP 192.168.1.90 ## Passerelle par dfaut 192.168.1.1 ## Masque rseau 255.255.255.0

258

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


## le fichier de configuration serait: # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.168.1.90 gateway 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 ##### ## Pour une machine configure via DHCP ## le fichier de configuration serait: # The loopback network interface auto lo iface lo inet loopback # The primary network interface - use DHCP to find our address auto eth0 iface eth0 inet dhcp

Note : La conguration DHCP requiert linstallation dun client DHCP : paquet pump (http://packages.debian.org/search?suite=default&section=all&arch=any&searchon=names&keywords=pump) ou dhcp-client (http://packages.debian.org/search?keywords=dhcp-client).

Pour rendre tout changement de conguration dans ce chier effectif, executer:

$ /etc/init.d/networking restart ou $ ifup -a

11.2.1.4. Conguer la passerelle par dfaut (Gateway GW)


Comme indiqu dans la section prcdente, la passerelle par dfaut pour une machine avec une adresse IP statique est congure dans le chier /etc/network/interfaces.
# Afficher la passerelle par dfaut courante:

259

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


$ netstat -nr Kernel IP routing table Destination Gateway 192.168.1.0 0.0.0.0 0.0.0.0 192.168.1.1

Genmask 255.255.255.0 0.0.0.0

Flags U UG

MSS Window 0 0 0 0

irtt Iface 0 eth0 0 eth0

# Commande alternative $ /sbin/route # ou $ /sbin/route pour Kernel IP routing table Destination Gateway Genmask 192.168.1.0 255.255.255.0 * default router 0.0.0.0

afficher les numeros de rseau au lieu de le Flags Metric Ref U 0 0 UG 0 0 Use Iface 0 eth0 0 eth0

# Pour changer la passerelle par dfaut, il faut dabbord supprimer la courante: $ /sbin/route del default gw 192.168.1.1

# Sans passerelle, la machine sera incapable de communiqer avec dautres localis hors du r # Ajouter un nouvelle passerelle par dfaut $ /sbin/route add default gw 192.168.1.100

11.2.1.5. Conguer nom de domaine et DNS (serveur de nom)


Pour des resolutions de noms static ajouter des entres (Adresse IP Nom dhte.Domain Alias) dans le /etc/hosts La machine peut aussi consulter des servers de nom (DNS), pour cela il suft dindiquer leur adresse IP dans le chier /etc/resolv.conf
###### ## Pour le serveur DNS (IP address 192.168.1.1) ## le ficher serait : # search my.flat nameserver 192.168.1.1

11.2.2. Cours IP (Protocole Internet) - Concept retenir :)


Source(s):

OF: SR004-net01-ch01-ip.pdf (docs/eof/sr004-net01-ch01-ip.pdf) Cours: Le guide de ladministration de la couche IP avec Linux (http://linux-ip.net)

260

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

Tutoriel: Structure des trames et fonctionnement de protocoles de transport (TCP, UDP) (http://www.frameip.com) A quoi ressemblent les paquets IP, TCP, UDP (http://www.netlter.org/documentation/HOWTO/fr/networking-concepts-HOWTO-8.html) Web: Networking-concepts HOWTO (http://www.netlter.org/documentation/HOWTO/fr/networking-concepts-HOWTO.html) Linux in the Network (http://www-uxsup.csx.cam.ac.uk/pub/doc/suse/sles9/adminguide-sles9/ch21.html)

11.2.2.1. TCP/IP
TCP/IP (Transmission Control Protocol/Internet Protocol) est une famille de protocoles rseaux qui gre le routage sur les systmes informatiques (Unix/Linux, Windows. . .) et lInternet. Ses spcications sont dnies dans des documents RFC (Request For Comments - Appels commentaires) du domaine public. Ils sont produits par lIETF ( Internet Engineering Task Force) au sein de lIAB (Internet Architecture Board). TCP/IP et OSI: Chaque couche du modle TCP/IP correspond une ou plusieurs couches du modle OSI (Open Systems Interconnection) dni par lISO (International Standards Organization). Comparer (docs/sr004-net01-ch01-TCP-IP-OSI.pdf) Figure 11-1. Datagramme IP

261

Chapitre 11. SR004 Interconnecter un rseau TCP/IP TCP (Transmission Control Protocol,Protocole de contrle de la transmission) - FIABLE fournit un service scuris de remise des paquets. TCP fournit un protocole able, "scuris", orient connexion, au-dessus dIP (ou encapsul lintrieur dIP). TCP/IP est adapt pour la transmission de donnes base sur la session, les applications client-serveur et les services critiques tels que le courrier lectronique ... Ce protocole exige du destinataire un accuse rception (ACK) ... Sur une connexion TCP entre deux machines du rseau, les messages (ou paquets TCP) sont acquitts et dlivrs en squence. UDP (User Datagram Protocol) - MULTICAST UDP est un protocole de transport, comme TCP, mais qui offre un service de datagrammes sans connexion qui ne garantit ni la remise ni lordre des paquets dlivrs (sommes de contrle facultatives) ... permet dchanger des donnes sur des rseaux abilit leve sans utiliser inutilement des ressources rseau ou du temps de traitement ... Les messages (ou paquets UDP) sont transmis de manire autonome (sans garantie de livraison) ... Le protocole UDP prend galement en charge lenvoi de donnes dun unique expditeur vers plusieurs destinataires (Multicast). ICMP (Internet Control Message Protocol) - PING ICMP (Internet Control Messaging Protocol) est un protocole de maintenance utilis pour les tests et les diagnostics, qui vhicule des messages de contrle. Il permet deux systmes dun rseau IP de partager des informations dtat et derreur. RIP (Routing Information Protocol) RIP est un protocole de routage dynamique qui permet lchange dinformations de routage sur un inter-rseau. ARP (Address Resolution Protocol) Le protocole ARP permet de dterminer ladresse physique (ou MAC) dun noeud partir de son adresse IP ... Informations transmises et leur enveloppe, selon le niveau:

message(ou de ux) entre applications datagramme (ou segment) au niveau TCP paquet au niveau IP trames au niveau de linterface rseau (Ethernet ou Token Ring)

Les protocoles application connus :

HTTP (Hyper Text Transfer Protocol) : accs aux documents HTML et le transfert de chiers depuis un site WWW FTP (File Transfer Protocol) : pour le transfert de chiers (TCP) Telnet (remplac par ssh) : connexion distance en mulation terminal, un hte Unix/Linux SMTP (Simple Mail Transfer Protocol) : messagerie lectronique (UDP et TCP) SNMP (Simple Network Management Protocol) : ladministration du rseau NFS (Network File System) : partage des chiers Unix/Linux POP/IMAP : remise de courrier

262

Chapitre 11. SR004 Interconnecter un rseau TCP/IP ... Figure 11-2. Applications TCP/IP : Modle client/serveur

Sur la machine serveur un processus serveur (en jargon daemon qui nest autre quun service) traite les requtes des clients. Client et serveur dialoguent en changeant des messages qui contiennent des requtes et des rponses.

263

Chapitre 11. SR004 Interconnecter un rseau TCP/IP Diffrents Services: Email, Web, FTP, Serveur de Noms, ... Par exemple un navigateur Internet (Firefox) envoie une requte TCP un serveur Web tournant sur un autre noeud du rseau. Mais imaginons que le noeud qui fait tourner un serveur Web dispose aussi dun serveur de courrier lectronique, dun serveur FTP et dun serveur de noms: comment savoir quel serveur est destine la connexion TCP? Cest pour a que le TCP et lUDP possdent le concept de ports. Chaque paquet contient un espace mmoire o il stocke son port de destination, qui dit quel service le paquet est adress. Par exemple, le port TCP 25 est le serveur mail, et le port TCP 80 le serveur Web (bien quon puisse parfois trouver des serveurs Web sur des ports diffrents). Une liste de ports peut tre trouve dans /etc/services. De mme, lorsque deux fentres Firefox accdent chacune une partie diffrente dun mme site Web, comment fait la machine Linux pour distinguer quels paquets TCP sont destins un Firefox plutt qu lautre ? Cest ici que le port source entre en jeu: chaque nouvelle connexion TCP reoit un port source diffrent, pour que chacune puisse tre diffrencie, mme si elles sont diriges vers la mme adresse IP et le mme port de destination. Habituellement le premier port source donn sera le port 1024 et sera incrment au fur et mesure des connexions.
Note : Protocole de communication entre applications = un numro de protocole + un numro de port (pour identier lapplication)

Des numros de port [entre 0 et 1023] sont rservs pour les applications standards. Ce sont les ports bien connus (Well Known Ports) comme assigns par lIANA1 (http://www.iana.org/assignments/port-numbers) Des numros de port [entre 1024 et 65535] sont disponibles pour les applications dveloppes par les utilisateurs Liste des ports de services (docs/sr004-net01-ch01-serviceports.txt) (/etc/services) Rseaux et Adresses physiques (MAC) ; Rseaux et adresses logiques (IP) ; Toute machine sur un rseau IP a 2 adresses:

une adresse MAC (Medium Access Control) : 48 bits soit six octets (par exemple : 08-00-14-57-69-69) - Addresse physique unique (et permanante) de la carte rseau qui sert communiquer au niveau de la couche liaison. Rseaux physique. ET

264

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

une adresse IP : IPv4 32 bits soit quatres octets (par exemple : 172.18.1.2) ou IPv6 [TOCOMPLETE] - Addresse logique unique (et modiable) du poste rseau qui sert communiquer au niveau de la couche transport. Rseaux logiques. LIcann de lInter-NIC (Network Information Center) garantie lunicit des identicateurs de rseau IP sur toute la plante.

Le protocole ARP (Adress Resolution Protocol) assure la correspondance entre ladresse IP et ladresse MAC en effectuant une diffusion (multicast) du type "qui est X.X.X.X ?" et en conservant la rponse dans une cache (Table IP<=>MAC) pour une une dure de vie limite (TTL ou Time To Leave).
Note : Adresse IP = Numro de rseau + Numro dhte (noeud n au sein du rseau)

Different classe dadresse IPv4 existe:

X.0.0.0 (Classe A, X de 1 126) X.Y.0.0 (Classe B, X.Y de 128.0 191.255) X.Y.Z.0 (Classe C, X.Y.Z de 192.0.0 223.255.255)

Voir poly OF pour plus dinformation. Blocs dadresse reserves:


0.0.0.0 (route par defaut) 127.0.0.0 (blouclage=loopack) A X.0.0.0|B X.Y.0.0|C X.Y.Z.0 (rseau) A X.255.255.255|B X.Y.255.255|C X.Y.Z.255 (diffusion=multicast) A 10.0.0.0/8->255.0.0.0|B 172.16.0.0/16->172.31.0.0|C C 192.168.0.0/24->192.168.255.0 (prive) 169.254.0.0/16(auto-conguration)

Voir RFC 3330 (http://www.rfc-archive.org/getrfc.php?rfc=3330) et RFC 1918 (http://www.rfc-archive.org/getrfc.php?rfc=1918) pour les block dadresses spciaux et rserves.

265

Chapitre 11. SR004 Interconnecter un rseau TCP/IP Figure 11-3. Dcoupage des blocs dadresses IPv4

Autres formats disponibles avec liens actifs pour ce document: PDF (docs/sr004-net01-ch01-ip-special-address-blocks.pdf), ODS (docs/sr004-net01-ch01-ip-special-address-blocks.ods).
Note : Pour les rseaux privs de classe C, ne serait-ce pas plutt 192.168.0.0/16 comme indiqu sur la RFC 3330 de Septembre 2002 ? Il est exact que cest lintgralit de la plage qui est rserve lusage priv, mais, pour les raisons de classe vu prcdemment, des raisons historiques donc, on dcoupe en /24 dans ce range. Cest donc un abus de langage. Toute la plage est effectivement rserve cet usage, en /16, mais avec des dcoupages la plupart du temps en /24. La 3330 le dit bien, mais la rfrence est la 1918.

Le masque de rseau (netmask) sert identier prcisment les bits qui concernent le N de rseau dune adresse IP (il "masque" la partie hte de ladresse): A 255.0.0.0|B 255.255.0.0|C 255.255.255.0 Les masques de sous-rseaux (subnet mask) permettent de segmenter un rseau en plusieurs sous-rseaux. On utilise alors une partie des bits de ladresse dhte pour identier des sous-rseaux. Toutes les machines appartenant un sous-rseau possdent le mme numro de rseau. Pour connatre ladresse du sous-rseau auquel une machine appartient, on effectue en ralit un ET logique entre ladresse de la machine et le masque. Une passerelle (gateway) ou un routeur est un quipement qui fait le lien (routage) entre diffrents rseaux ou entre sous-rseaux. Pour cela elle utilise une table de routage pour dterminer la meilleure route pour transfrer les paquets IP hors du rseau local vers un rseau distant. Si lhte de destination se trouve sur le rseau local, les donnes sont transmises lhte destination directement (pas de routage). Routage Dynamique: RIP (Routing Information Protocol) et le protocole OSPF (Open Shortest Path First) sont des protocoles dchange dynamique des tables de routage IP sur un rseau local. Mis en

266

Chapitre 11. SR004 Interconnecter un rseau TCP/IP oeuvre pour construire dynamiquement les chemins entre routeurs. Domaine dacheminement: EGP (Exterior Gateway Protocol) et BGP (Border Gateway Protocol) sont des protocoles particuliers dchanges entre passerelles de chaque domaine de routage.

11.2.2.2. Exercices dapplication


## On donne ladresse 193.12.10.195/26, on demande : - quelle classe appartient le rseau dorigine ? 1er octet entre 192 et 223 donc classe C - Combien de sous-rseaux ont t crs ? /26 signifie que les 26 premiers bits du masque sont 1 Le masque rseaux est donc: 11111111.11111111.11111111.11000000 soit 255.255.255.192 Nombre de 1 dans le dernier octet = 2 Donc 2 ^ 2 = 4 sous-rseaux possible - quel sous rseau appartient la machine ? 255.255.255.192/26 (voir rponse prcedente) - Combien peut-on mettre dhtes par sous-rseau ? Nombre de 0 dans le dernier octet = 6 Donc 2 ^ 6 - 2 (reserve: rseau/diffusion) = 62 adresses dhtes - Quelle est ladresse de la machine dans le sous-rseau ? IP:193.12.10.195/26 donc Numro dhte 0.0.0.3 (195 - 192 = 3) - Quelle est ladresse de diffusion du sous-rseau ? Si on place tout les bits dhte 1 on obtient 11111111 = 255 193.12.10.255 ## On donne ladresse 160.1.129.195/17, on demande : - quelle classe appartient le rseau dorigine ? 1er octets entre 128 et 191 donc classe B - Combien de sous-rseaux ont t crs ? /17 signifie que les 17 premiers bits du masque sont 1 Le masque rseau est donc: 11111111.11111111.10000000.00000000 soit 255.255.128.0 Nombre de 1 dans lavant dernier octets = 1 Donc 2 ^ 1 = 2 sous-rseaux - quel sous rseau appartient la machine ? 255.255.128.0/17 (voir rponse prcedente) - Combien peut-on mettre dhtes par sous-rseau ? Nombre de 0 dans les deux derniers octets = 15 Donc 2 ^ 15 - 2 (reserve: rseau/diffusion) = 32766 adresse dhtes - Quelle est ladresse de la machine dans le sous-rseau ? IP:160.1.129.195/17 donc Numro dhte 0.0.1.195 (129.195 - 128.0 = 1.195) - Quelle est ladresse de diffusion du sous-rseau ? Si on place tout les bits dhte 1 on obtient 11111111.11111111 = 255.255 160.1.255.255 ## On donne ladresse 13.0.0.0/8, on demande : - Quel masque faut-il pour avoir 3 sous-rseaux ? 2 ^ 1 = 2 2 ^ 2 = 4 # Pour avoir 3 sous-rseaux il faut au moins 2 bits supplmentaire pour le numro Donc 11111111.11000000.00000000.00000000 soit 255.196.0.0

267

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

- Quel masque faut-il pour avoir 256 sous-rseaux ? 2 ^ 8 = 256 # Pour avoir 256 sous-rseaux il faut au moins 8 bits supplmentaire pour le num Donc 11111111.11111111.00000000.00000000 soit 255.255.0.0 - Combien dadresses dispose t-on si on masque sur 20 bits ? Masque de 20 bits: 11111111.11111111.11110000.00000000 32-20 = 12 bits disponibles pour laddressage des htes soit 2 ^ 12 - 2 (reserve: rseau/diffusion) = 2094 adresse dhtes

11.2.3. Adresse IP publique et prive


Toutes adresse IP appartenant au block dadresse non reserv est considr comme une addresse IP Publique. Elle est potentiellement accessible par tous via le rseau Internet. Identier mon adresse IP publique : mon-ip.com (http://mon-ip.com/) whatismyip.com (http://www.whatismyip.com/) adresseip.com (http://www.adresseip.com/mon-ip.php)

11.2.4. Outil pour les calculs IP (masque, etc...) : gip, sipcalc


outil de calcul IP/masque pour calculer les ip en binaire, les sous rseaux, les masques, ladresse de diffusion, etc... gip () : en mode graphique

# Installation $ sudo apt-get install gip # Dmarrage $ gip

sipcalc () : outil en ligne de commande


# Installation $ sudo apt-get install sipcalc # Calculer sipcalc 10.0.1.5/24 -[ipv4 : 10.0.1.5/24] - 0 [CIDR] Host address Host address (decimal)

- 10.0.1.5 - 167772421

268

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


Host address (hex) Network address Network mask Network mask (bits) Network mask (hex) Broadcast address Cisco wildcard Addresses in network Network range Usable range A000105 10.0.1.0 255.255.255.0 24 FFFFFF00 10.0.1.255 0.0.0.255 256 10.0.1.0 - 10.0.1.255 10.0.1.1 - 10.0.1.254

11.2.5. DMZ - Zone dmilitarise


Voir section ddie SR010 Scurit > Un epace hermtique > DMZ (Zone dmilitarise)

11.2.6. Les chiers importants


Source(s):

OF: SR004-net01-ch02-net-le.pdf (docs/eof/sr004-net01-ch02-net-le.pdf)

11.2.6.1. /etc/hostname : nom dhte de la machine locale (modiable par ladministrateur avec la commande hostname).
# cat /etc/hostname debstafil # hostname debstafil4 # cat /etc/hostname debstafil # hostname debstafil4

# Renomer lhte avec un nouveau nom

Question: Pourquoi sur ma machine, la commande hostname nafche pas la mme chose que la commande cat ? Voir commande hostname pour lexplication...

11.2.6.2. /etc/hosts : table statique pour la rsolution de noms dhtes


Ligne au format AdresseIP Nom1 [Nom2 ...]
$ cat /etc/hosts

269

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


127.0.0.1 localhost 127.0.1.1 debstafil4.ermansion.net debstafil4 10.0.1.4 macfil.ermansion.net 10.0.1.3 debstafil3.ermansion.net

fil4 macfil hsbuntu debstafil3

# The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts

11.2.6.3. /etc/host.conf : congurer le processus de rsolution de nom de la machine


$ cat /etc/host.conf multi on

Question: Pourquoi le chier host.conf sur ma Debian ne contient ni la mention hosts, ni la mention bind (service DNS) comme cela devrait ? Est-ce parce que loption multi est ON ?

11.2.6.4. /etc/resolv.conf : dclarer les serveurs de noms (DNS) utiliss par le poste.
Source(s):

Web: Rsolution des noms avec resolvconf sous Linux Debian (http://www.coagul.org/spip.php?article488)

# cat /etc/resolv.conf ### BEGIN INFO # # Modified_by: NetworkManager # Process: /usr/bin/NetworkManager # Process_id: 2044 # ### END INFO

### # Example OF search foo.bar

# Par dfaut, rechercher rsoudre le nom "blabla.foo.bar" # si uniquement le nom hte "blabla" est indiqu

270

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


nameserver 192.168.1.1 nameserver 192.168.1.2 nameserver 192.168.1.3

Question: Le chier /etc/resolv.conf est vide par dfaut. Il nest utile que si le host utilise un service DNS pour la resolution de noms. Ce chier ne devrait-il pas contenir au moins des DNS publique par dfaut ? Rponse: non. DNS fonctionne indpendamment de ton chier host. Par contre, il est utile, voire recommand davoir le localhost dni dans le chier, sinon, on peux rencontrer des problmes. Pour savoir pourquoi il est vide, il faudrait demander aux dveloppeurs Debian. Souvent il ne lest pas :))

11.2.6.5. /etc/network/interfaces : conguration des interfaces rseau (utiliser man interfaces pour connatre les options disponibles).
Ce chier est utilis par les commandes ifup et ifdown pour congurer/decongurer les interfaces rseaux.
#### # Sur ma Debian :-) $ cat /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet dhcp

# Autre configuration possible pour # la carte rseau principale eth0 ... auto eth0 iface eth0 inet static address 192.168.1.90 gateway 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 ## Utilisation de resolvconf avec une interface de type eth0 dns-nameservers 192.168.0.1 212.27.53.252 212.27.52.252 ## Serveur DNS de la Gateway et dns-search mon-domaine.local ...

271

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

Voir un autre exemple de chier de conguration: section above. eth0 est la premire interface ethernet, eth0 serait la deuxime, etc...
Note : Au dmarrage la command "ifup -a" est execute (via script de dmarrage) pour activer les interfaces rseaux dont la ligne commence par "auto" dans le chier /etc/network/interfaces

Note : La conguration DHCP requiert linstallation dun client DHCP : paquet pump (http://packages.debian.org/search?suite=default&section=all&arch=any&searchon=names&keywords=pump) ou dhcp-client (http://packages.debian.org/search?keywords=dhcp-client).

Pour rendre tout changement de conguration dans ce chier effectif, executer:

$ /etc/init.d/networking restart ou $ ifup -a

ALIAS: Une interface peut avoir plusieurs adresses, par exemple:


eth0:0 eth0:1 ... 192.168.0.1 192.168.0.2

Note : La notion dalias est intressante car elle permet de congurer plusieurs adresses IP la fois sur une seule et unique carte rseau physique. A tester plus tard !

Note : Sous RedHat et similaires (Fedora/Mandrake), les scripts ou paramtres de dmarrage du rseau se trouvent sous /etc/syscong/network Sous FreeBSD /etc/rc.network

272

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

11.2.6.6. /etc/networks : affecter un nom logique un rseau


Pour pouvoir afcher un rseau ou ladresser par son nom au lieu de son adresse. Le(s) nom(s) peuvent tre utiliser pour modier la table de routage.
# cat /etc/networks default 0.0.0.0 loopback 127.0.0.0 link-local 169.254.0.0

# Passerelle par dfaut # Hte lui mme

11.2.6.7. /etc/services (docs/sr004-net01-ch01-serviceports.txt) : dcrit pour chaque grand service le ou les ports utiliss
Utile de sy rfrer quand on ne connat pas le port utilis par un service. Utilis par les commandes rseau comme netstat pour afcher les noms des services eu lieu des ports.
### # Liste des services utilisant le protocole SSL et leur numro de port $ cat /etc/services | grep SSL https 443/tcp # http protocol over TLS/SSL nntps 563/tcp snntp # NNTP over SSL ldaps 636/tcp # LDAP over SSL ftps-data 989/tcp # FTP over SSL (data) telnets 992/tcp # Telnet over SSL imaps 993/tcp # IMAP over SSL ircs 994/tcp # IRC over SSL pop3s 995/tcp # POP-3 over SSL suucp 4031/tcp # UUCP over SSL suucp 4031/udp # UUCP over SSL ssmtp 465/tcp smtps # SMTP over SSL

Par exemple le protocole HTTPs utilise le port 443 pour les communications encrypts.

11.2.6.8. /etc/protocols (docs/sr004-net01-ch01-protocols.txt) : rfrence par protocole, son numro et son nom
ce chier est utilis par les analyseurs de trame pour afcher les noms des protocoles en lieu et place des numros.
$ grep tcp /etc/protocols tcp 6 TCP # transmission control protocol $ grep udp /etc/protocols ## Protocole NUM=6 udp 17 UDP # user datagram protocol udplite 136 UDPLite # UDP-Lite ## Protocole NUM=136

273

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

11.2.7. Les commandes rseaux importantes : ip, ifcong, ifup/ifdown, arp, route, netstat, traceroute, dig, host, hostname, whois, ping, mtr, bing, telnet, curl, nc(netcat), iftop
Source(s):

OF: SR004-net01-ch03-net-cmd.pdf (docs/eof/sr004-net01-ch03-net-cmd.pdf)

Web: Conguration et test dune interface rseau sur une station GNU/Linux (http://webmail.appert44.org/~plegal/index.php/Conguration_et_test_d%27une_interface_r%C3%A9seau_sur_une_stat

11.2.7.1. ifcong
conguration des interfaces rseau et de visualiser la conguration IP dune interface. Voir aussi la commande ip Syntaxe: ifcong interface adresse [parametres]
# OPTIONS USUELLES interface logique ou physique, il est obligatoire, up active linterface down dsactive linterface mtu dfinit lunit de transfert des paquets netmask affecter un masque de sous-rseau broadcast dfinit ladresse de broadcast arp ou !-arp activer ou dsactiver lutilisation du cache arp de linterface metric paramtre utilis pour ltablissement des routes dynamiques, et dterminer le ~cot~ (nombre de sauts ou ~hops~) dun chemin par le protocole RIP. multicast active ou non la communication avec des machines qui sont hors du rseau. promisc ou !-promisc activer ou dsactiver le mode promiscus de linterface. En mode promiscuous, tous les paquets qui transitent sur le rseau sont reus galement par linterface. Cela permet de mettre en place un analyseur de trame ou de protocole.

274

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

## Afficher information sur la configuration de mes interfaces rseaux $ /sbin/ifconfig # Le chemin complete doit tre indiqu dans mon cas, sinon la commande est eth3 Link encap:Ethernet HWaddr 08:00:27:89:1d:4f inet adr:10.0.2.15 Bcast:10.0.2.255 Masque:255.255.255.0 adr inet6: fe80::a00:27ff:fe89:1d4f/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2434 errors:0 dropped:0 overruns:0 frame:0 TX packets:2289 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:2254590 (2.1 MiB) TX bytes:380079 (371.1 KiB) Interruption:11 Adresse de base:0xd020 lo Link encap:Boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 adr inet6: ::1/128 Scope:Hte UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:42 errors:0 dropped:0 overruns:0 frame:0 TX packets:42 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 RX bytes:3120 (3.0 KiB) TX bytes:3120 (3.0 KiB) ## Dsactiver les interfaces $ /sbin/ifconfig lo down $ ping localhost PING localhost (127.0.0.1) 56(84) bytes of data. --- localhost ping statistics --17 packets transmitted, 0 received, 100% packet loss, time 16127ms $ /sbin/ifconfig lo up ## Ractiver loopback $ ping localhost PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.042 ms 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.039 ms 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.036 ms ^C --- localhost ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 1998ms rtt min/avg/max/mdev = 0.036/0.039/0.042/0.002 ms $ route -n # Loption -n pour afficher les addresses Table de routage IP du noyau Destination Passerelle Genmask Indic 10.0.2.0 0.0.0.0 255.255.255.0 U 0.0.0.0 10.0.2.2 0.0.0.0 UG $ route del -net 10.0.2.0/24 dev eth3 $ route -n Table de routage IP du noyau Destination Passerelle Genmask 0.0.0.0 10.0.2.2 0.0.0.0

IP des reseaux au lieu de leur noms (p Metric Ref 0 0 0 0 Use Iface 0 eth3 0 eth3

Indic Metric Ref UG 0 0

Use Iface 0 eth3

275

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


# 3 machines Host Ubuntu (10.0.1.4), VM3 Debian Fil3 (10.0.1.3), VM4 Debian Fil4 (10.0.1.5) # - Sur 10.0.1.5 faites un ifconfig, relevez les valeurs des registres TX/RX. debstafil4:~# ifconfig eth3... RX packets:530 ... TX packets:613 ... # - sud 10.0.1.4 faites un ping 10.0.1.5 macfil:~$ ping debstafil4 PING debstafil4.ermansion.net (10.0.1.5) 56(84) bytes of data. 64 bytes from debstafil4.ermansion.net (10.0.1.5): icmp_seq=1 ttl=64 time=18.9 ms ...

# - sur 10.0.1.5 relevez les nouvelles valeurs des registres TX/RX. Il y a bien eu change R debstafil4:~# ifconfig eth3... RX packets:539 ... TX packets:621 ... # - 10.0.1.4 faites un ping 10.0.1.3 macfil:~$ ping debstafil3 PING debstafil3.ermansion.net (10.0.1.3) 56(84) bytes of data. 64 bytes from debstafil3.ermansion.net (10.0.1.3): icmp_seq=1 ttl=64 time=16.7 ms ...

# - sur 10.0.1.5 relevez les nouvelles valeurs des registres TX/RX. debstafil4:~# ifconfig eth3... RX packets:547 ... # Rx est bien modifi TX packets:623 ... # mais pas Tx. La machine bien reu des paquets (arp) mais n

# - sur 10.0.1.4 faites un ping 10.0.1.4. ifconfig nindique aucun registre modifi, donc le debstafil4:~# ping 10.0.1.5 PING 10.0.1.5 (10.0.1.5) 56(84) bytes of data. 64 bytes from 10.0.1.5: icmp_seq=1 ttl=64 time=0.000 ms ... debstafil4:~# ifconfig eth3... RX packets:547 ... TX packets:623 ...

# - sur 10.0.1.5 modifiez le MTU ( Message Transfert Unit ) qui dtermine lunit de transfe # Il est par dfaut 1500, mettez le 300, avec la commande : debstafil4:~# ifconfig eth3... MTU:576 ... # Tiens mon MTU dorigine est inferieur a celui par dfaut :)) # Certainement du a la virtualisation et/ou au pont rseau... # sur lhte Ubuntu il est 1500 debstafil4:~# ifconfig eth3 mtu 300 debstafil4:~# ifconfig eth3... MTU:300 ...

Pour chaque interface (couche 1) il faudra indiquer une route au protocole de routage (couche 3)

pour atteindre le rseau ; sinon aucun paquet ne va jusqu la carte, donc ne sort sur le rseau ;

276

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


Le ping sur une adresse locale ne teste pas les routes, cela signie que la pile de protocoles

TCP/IP peut fonctionner tandis que le systme ne descend pas jusqu la couche 2 ou 1 (interface physique). Pas de communication entre lhte et son voisin sur le mme rseau locale.

Note : LOOPBACK (ou bouclage): cette interface permet de tester un programme utilisant le protocole IP sans envoyer de paquets sur le rseau physiquement.

Questions: -- Pourquoi /sbin/ifcong requit au lieu de ifcong ? -- Pourquoi mon interface eth03 ne peut pas tre dsactiv ? Elle semble ractive automatiquement... udev ? upstart ? Remarques: erreur dans le poly OF cest route del -net 10.0.2.0/24 dev eth3 et non pas route -del net 10.0.2.0/24 dev eth3

11.2.7.2. ifup / ifdown


Dmarrer/Stopper linterface rseau. Congure / Dcongurer les interfaces rseaux suivant les paramtres du chier /etc/network/interfaces.
#Stopper linterface rseau eth0 : $ ifdown eth0 # Dmarrer linterface rseau eth0 : ifup eth0

# Ceci ne doit pas tre confondu avec la commande qui suit, qui relance explicitement tous l /etc/init.d/networking restart

11.2.7.3. arp (Address Resolution Protocol)


Visualiser ou modier la table du cache de linterface (correspondance entre une adresse IP et une adresse Ethernet (MAC)).Cette table peut tre statique et(ou) dynamique.
# Afficher la table ARP $ arp Address macfil.ermansion.net Base-Station-e1c421.loc

HWtype ether ether

HWaddress 00:26:bb:13:31:96 00:17:f2:e1:c4:21

Flags Mask C C

Iface eth3 eth3

$ arp -va macfil.ermansion.net (10.0.1.4) at 00:26:bb:13:31:96 [ether] on eth3 Base-Station-e1c421.local (10.0.1.1) at 00:17:f2:e1:c4:21 [ether] on eth3 Entres: 2 Ignores: 0 Trouves: 2

277

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

# Ajouter une entre statique - option -s $ arp -s 10.0.1.6 00:71:f2:1e:4c:21 $ arp -va ? (10.0.1.6) at 00:71:f2:1e:4c:21 [ether] PERM on eth3 Base-Station-e1c421.local (10.0.1.1) at 00:17:f2:e1:c4:21 [ether] on eth3 Entres: 2 Ignores: 0 Trouves: 2 # Supprimer une entre - option -d $ arp -d 10.0.1.6 $ arp -va ? (10.0.1.6) at incomplete> on eth3 Base-Station-e1c421.local (10.0.1.1) at 00:17:f2:e1:c4:21 [ether] on eth3 Entres: 2 Ignores: 0 Trouves: 2 # Utilisation # a. Premire partie (aucun commentaire) # b. Deuxime partie ... ## - Quel est le contenu, aprs cela de la table ARP ? $ arp -av Base-Station-e1c421.local (10.0.1.1) 00:17:f2:e1:c4:21 [ether] sur eth2 debstafil3.ermansion.net (10.0.1.3) 08:00:27:89:1d:4f [ether] sur eth2 debstafil4.ermansion.net (10.0.1.5) 08:00:27:89:1d:4f [ether] sur eth2 ==> Conflit daddressage 1 MAC pour 2 IP ?!

11.2.7.4. route
Le routage dnit le chemin emprunt par les paquets entre son point de dpart et son point darrive. Cette commande permet dafcher et de congurer la talbe de routage IP de pc, de switchs, de routeurs, etc... Deux types de routages: statique et dynamique.

Le routage statique (adapt pour les rseau locaux) consiste imposer aux paquets la route suivre. Le routage dynamique (adapt pour les rseaux importants ou tendus) met en oeuvre des algorithmes, qui permettent aux routeurs dajuster les tables de routage en fonction de leur connaissance de la topologie du rseau. Cette actualisation est ralise par la rception des messages reus des n uds (routeurs) adjacents. Le routage dynamique permet davoir des routes toujours optimises, en fonction de ltat du rseau (nouveaux routeurs, engorgements, pannes).
Note : En gnral, les deux types de routages sont combins

278

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

###### ## SYNTAXE: route add [net | host] addr [gw passerelle] [mtric cot] [ netmask masque] [dev ###### - net ou host indique ladresse de rseau ou de lhte pour lequel on tablit une route - adresse de destination, - adresse de la passerelle, - valeur mtrique de la route, - masque de la route ajouter, - interface rseau qui on associe la route. ##### ## Example dajout/suppression de route ##### # Ajoute la route par dfaut vers la passerelle 192.3.2.254 # Identique au champs gateway dans /etc/network/interfaces $ route add default gw 192.3.2.254 # Ajoute la route vers le rseau 130.2.0.0 via la passerelle 192.3.2.1 sur linterface 0 $ route add -net 130.2.0.0 netmask 255.255.0.0 gw 192.3.2.1 dev eth0 # Efface la route vers le rseau 130.2.0.0 $ route del 130.2.0.0 ###### ## Example table de routage ###### Kernel IP routing table Destination Gateway 192.168.1.0 * 127.0.0.0 * default 192.168.1.9

Genmask 255.255.255. 255.0.0.0 0.0.0.0

Flags 0U U UG

Metric 0 0 0

Ref 0 0 0

Use Iface 2 eth0 2 lo 10 eth0

## Explication - Destination : adresse de destination de la route, - Gateway : adresse IP de la passerelle pour atteindre la route, * sinon (voir note ci-desso - Genmask : masque utiliser. - Flags : indicateur dtat (U -> Up, H -> Host, G -> Gateway, D -> Dynamic, M -> Modified), - Metric : cot mtrique de la route (0 par dfaut), - Ref : nombre de routes qui dpendent de celle-ci, - Use : nombre dutilisation dans la table de routage, - Iface : interface eth0, eth1, lo. . .

Note : Les *(astrisque) dans une table de routage IP dsignent les routes dinterface qui sont des itinraires assigns lune des interfaces rseau (cartes rseau connectes directement dans la machine), et non une adresse IP xe (cest--dire celle de la passerelle). De cette faon, il est possible de congurer des routes pour des destinations dont ladresse IP de passerelle nest pas encore connue au moment de la conguration ou lorsque aucune adresse IP nest associe linterface du poste local.

279

Chapitre 11. SR004 Interconnecter un rseau TCP/IP 11.2.7.4.1. Petite tude de cas Le diagramme de ltude de cas a t ralis avec le logiciel Dia. Le laboratoire dtude a t ralis avec Netkit

Sources: SR004-net01-ch03-etude-de-cas.dia (images/sr004-net01-ch03-etude-de-cas.dia) Lab Netkit : sr004-net01-ch03-etude-de-cas-rlr-netkit-lab03.tar.bz2 (docs/sr004-net01-ch03-etude-de-cas-rlr-netkit-lab03.tar.bz2)

Figure 11-4. Diagramme - Etude de cas

280

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


###### ## On veut # - que - que - que

: les stations de chaque rseau puissent accder Internet, les stations de chaque rseau puissent communiquer entre-elles, les stations du rseau B, utilisent le serveur de noms le moins possible.

###### ## On demande : # - Configuration des postes du rseau B, 1. Configuer Nom dhte sur chaque machine Avec netkit le nom dhte est configur automatiquement partir du fichier lab.conf Sinon on peut editer /etc/hostname et indiquer: quartz sur la machine 1 puis executer /etc/init.d/hostname.sh silex sur la machine 2 puis executer /etc/init.d/hostname.sh

2. Configurer linterface rseau eth0 Il est suppos que que chaque machine ne possde quune seule interface rseaux Ethernet eth Ni le rseaux A ni le rseau B ne sont quips de service DHCP donc laddresse IP de chaque 130.2.0.0 est de classe B, donc le masque rseau 255.255.0.0 considrant que B na pas de so Pour la machine quartz executer: $ ifconfig eth0 130.2.0.2 (ou configurer /etc/network/interfaces) Pour la machine silex executer: $ ifconfig eth0 130.2.0.3 (ou configurer /etc/network/interfaces) ==> le masque devrait tre configur automatiquement 3. Verifier le routage et la communication Voir ci-dessous pour les routes 4. Configurer les rseaux dans /etc/networks (pour pAB seulement) 5. Configuer le nom de domaine, sur chacune des machines dans le fichier /etc/hosts Voir ci-dessous pour le contenu :)) ==> ceci permettra aux machines sur le net B dtre interconnect et de pouvoir communiquer ==>Vrifier la resolution des noms locaux.

6. Configurer le DNS sur chacune des machines dans le fichier /etc/resolv.conf ==> Le server DNS netant pas actif pour le moment les autres poste ne sont pas accessible p - Configuration des postes du rseau A, Similaire aux poste B hormis le fichier /etc/hosts pas ncssaire car utilisation du DNS.

Fichiers de conguration pour chaque machine (hosts , resolv.conf , chier de conguration de carte).

Quartz (docs/sr004-net01-ch03-etude-de-cas-quartz_exportcong.txt) Silex (docs/sr004-net01-ch03-etude-de-cas-silex_exportcong.txt)

281

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


pAB (docs/sr004-net01-ch03-etude-de-cas-pAB_exportcong.txt) Platine (docs/sr004-net01-ch03-etude-de-cas-platine_exportcong.txt) Uranus (docs/sr004-net01-ch03-etude-de-cas-uranus_exportcong.txt) Mercure (docs/sr004-net01-ch03-etude-de-cas-mercure_exportcong.txt) rGW (docs/sr004-net01-ch03-etude-de-cas-rGW_exportcong.txt)

- de donner la liste des routes mettre :

## sur les postes du rseau A, route add default gw 192.3.2.254 ==> dfinit dans le fichier /etc/network/interfaces (gatewa

## sur les postes du rseau B, route add default gw 130.2.0.1 ==> dfinit dans le fichier /etc/network/interfaces (gateway)

## pAB - Passerelle qui relie les 2 rseaux, route add default gw 192.3.2.254 dev eth0 ==> dfinit dans le fichier /etc/network/interface

## rGW - Routeur du rseau A. route add -net 130.2.0.0 netmask 255.255.0.0 gw 192.3.2.1 dev eth0 ==> peut-tre dfinit dan

route add default gw 10.0.5.1 dev eth1 ==> dfinit automatiquement par netkit lors quon uti

11.2.7.5. netstat
Tester la conguration du rseau, visualiser ltat des connexions, tablir des statistiques (surveillance).
###### (Sans argument) Donne ltat des connexions $ netstat Connexions Internet actives (sans serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat tcp 1 0 macfil.local:60882 77.67.21.51:www CLOSE_WAIT tcp 1 0 macfil.local:35879 weather.noaa.gov:www CLOSE_WAIT Sockets du domaine UNIX actives (sans serveurs) Proto RefCnt Flags Type State I-Node Chemin unix 2 [ ] DGRAM 3125 @/org/kernel/udev/udevd unix 2 [ ] DGRAM 5365 @/org/freedesktop/hal/udev_event unix 18 [ ] DGRAM 4820 /dev/log unix 2 [ ] DGRAM 63258 unix 3 [ ] STREAM CONNECTE 51077 @/tmp/.X11-unix/X0 unix 3 [ ] STREAM CONNECTE 51076 ... ###### #-a afficher toutes les informations sur ltat des connexions,

282

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

$ netstat -a Connexions Internet actives (serveurs et tablies) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat tcp 0 0 localhost:ipp LISTEN *:* tcp 1 0 macfil.local:60882 77.67.21.51:www CLOSE_WAIT tcp 1 0 macfil.local:35879 weather.noaa.gov:www CLOSE_WAIT tcp6 0 0 localhost:ipp [::]:* LISTEN udp 0 0 *:mdns *:* udp 0 0 *:58305 *:* udp 0 0 *:bootpc *:* Sockets du domaine UNIX actives (serveurs et tablies) Proto RefCnt Flags Type State I-Node Chemin unix 2 [ ACC ] STREAM LISTENING 9224 /tmp/orbit-filostene/linc-84b-0-5 unix 2 [ ACC ] STREAM LISTENING 9247 /tmp/orbit-filostene/linc-858-0-6 unix 2 [ ACC ] STREAM LISTENING 9332 /tmp/orbit-filostene/linc-87a-0-1 unix 2 [ ACC ] STREAM LISTENING 10674 /tmp/orbit-filostene/linc-8d7-0-3 unix 2 [ ACC ] STREAM LISTENING 13048 /tmp/orbit-filostene/linc-97b-0-7 unix 2 [ ACC ] STREAM LISTENING 34732 /tmp/orbit-filostene/linc-cdb-0-6 unix 2 [ ACC ] STREAM LISTENING 5139 /var/run/acpid.socket ... ######-i affichage des statistiques, $ netstat -i Table dinterfaces noyau Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500 0 0 0 0 0 0 0 0 eth2 1500 0 20667 0 0 0 25814 551 0 lo 16436 0 24 0 0 0 24 0 0 ######-c rafrachissement priodique de ltat du rseau, $ netstat -c | grep gdm unix 3 [ ] STREAM CONNECTE 7464 unix 3 [ ] STREAM CONNECTE 7464 unix 3 [ ] STREAM CONNECTE 7464 unix 3 [ ] STREAM CONNECTE 7464 unix 3 [ ] STREAM CONNECTE 7464 ...

0 BMU 0 BMRU 0 LRU

@/tmp/gdm-session-NgtqpKET @/tmp/gdm-session-NgtqpKET @/tmp/gdm-session-NgtqpKET @/tmp/gdm-session-NgtqpKET @/tmp/gdm-session-NgtqpKET

######-n affichage des informations en mode numrique sur ltat des connexions $ netstat -n Connexions Internet actives (sans serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat tcp 1 0 10.0.1.4:60882 77.67.21.51:80 CLOSE_WAIT tcp 1 0 10.0.1.4:35879 140.90.128.70:80 CLOSE_WAIT Sockets du domaine UNIX actives (sans serveurs) Proto RefCnt Flags Type State I-Node Chemin unix 2 [ ] DGRAM 3125 @/org/kernel/udev/udevd unix 2 [ ] DGRAM 5365 @/org/freedesktop/hal/udev_event unix 18 [ ] DGRAM 4820 /dev/log unix 2 [ ] DGRAM 63258 unix 3 [ ] STREAM CONNECTE 51077 @/tmp/.X11-unix/X0 unix 3 [ ] STREAM CONNECTE 51076 unix 3 [ ] STREAM CONNECTE 50975 /home/filostene/.pulse/dd63a3c0cc

283

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


unix unix ... 3 3 [ ] [ ] STREAM STREAM CONNECTE CONNECTE 50974 50933

@/tmp/dbus-grsV2mLnzq

######-r affichage des tables de routage, $ netstat -r # Mme resultat que route Table de routage IP du noyau Destination Passerelle Genmask 10.0.1.0 255.255.255.0 * link-local 255.255.0.0 * default Base-Station-e1 0.0.0.0

Indic U U UG

MSS 0 0 0

Fentre irtt Iface 0 0 eth2 0 0 eth2 0 0 eth2

######-t informations sur les sockets TCP $ netstat -t Connexions Internet actives (sans serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante tcp 1 0 macfil.local:60882 77.67.21.51:www tcp 1 0 macfil.local:35879 weather.noaa.gov:www ... ######-u informations sur les sockets UDP. $ netstat -u Connexions Internet actives (sans serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante ...

Etat CLOSE_WAIT CLOSE_WAIT

Etat

######-p indique quel programme (PID) utilise la socket $ netstat -p | more Connexions Internet actives (sans serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name Sockets du domaine UNIX actives(sans serveurs) Proto RefCnt Flags Type State I-Node PID/Program name hemin unix 2 [ ] DGRAM 2325 682/udevd /org/kernel/udev/udevd unix 2 [ ] DGRAM 5535 2004/hald /org/freedesktop/hal/udev_event ...

C @ @

11.2.7.5.1. Exercices sur la commande netstat On donne les rsultats de 3 commandes netstat ci-dessous, extraites de la mme machine :

$ netstat -nr Kernel IP routing table Destination Gateway 198.5.203.0 0.0.0.0

Genmask 255.255.255.0

Flags MSS U 1500

Window irtt Iface 0 0 eth0

284

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


127.0.0.0 0.0.0.0 0.0.0.0 198.5.203.3 255.0.0.0 0.0.0.0 U UG 3584 1500 0 0 0 0 lo eth0

$ netstat Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address Tcp 0 127 uranus:telnet 194.206.6.143:1027 $ netstat -i Iface MTU Met Lo 3584 0 eth0 1500 0

State ESTABLISHED

RX-OK 764 410856

RX-OVR 764 33286

TX-OK 89 210

Flags BLRU BRU

On demande :

## - Quels sont les noms et adresse de la machine consulte ? Comme indiqu dans le champs Local Address la machine sappelle uranus Son addresse est 198.5.203.X (ou X est un nombre qui ne peut tre dtermin mais different d ## - Quel type de session est-elle en train de supporter ? Comme indiqu dans le champs Local Address une session Telnet ## - quoi correspond ladresse 198.5.203.3 ? Cest laddresse IP de la passerelle (Gateway) par dfaut pour cette machine ## - Pourquoi une interface porte-t-elle les Flags BLRU et lautre BRU ? Linterface avec le Flag L est linterface de bouclage (loopback) ## - Quelle est la taille des paquets utilise par la passerelle par dfaut ? 1500 comme indiqu dans la troisime ligne de la colonne MMS de la table de routage

11.2.7.6. traceroute
Source(s):

Web: Effectuer un traceroute - Sortie graphique 2D et 3D (graphviz/imagemagick/visual) (http://trac.secdev.org/scapydoc-com/wiki/FrTraceroute)

traceroute est un outil de diagnostic des rseaux, prsents sur la plupart des systmes dexploitation, permettant de dterminer le chemin suivi par un paquet. La commande traceroute permet ainsi de dresser une cartographie des routeurs prsents entre une machine source et une machine cible. Cette commande est importante, car elle permet dquilibrer la charge dun rseau, en optimisant les routes.

285

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


Note : La commande traceroute permet de suivre la trace le passage de routeur en routeur pour atteindre un hte sur le rseau tandis que la commande ping permet de vrier la abilit dune route donne.

Il semble plus complexe datteindre le server de lOF quun server google !

$ traceroute google.fr traceroute to google.fr (209.85.229.104), 30 hops max, 40 byte packets 1 Base-Station-e1c421.local (10.0.1.1) 7.996 ms 3.998 ms 3.998 ms 2 10.175.104.1 (10.175.104.1) 11.994 ms 15.992 ms 15.992 ms 3 osr01camd-v15.network.virginmedia.net (62.30.250.97) 15.992 ms 15.992 ms 15.992 ms 4 osr02hari-tenge71.network.virginmedia.net (62.30.250.45) 15.992 ms 15.992 ms 15.992 m 5 pop-bb-b-ae1-0.network.virginmedia.net (195.182.178.169) 15.992 ms 15.992 ms 15.992 m 6 pop-bb-a-ae0-0.network.virginmedia.net (213.105.174.229) 11.994 ms 31.984 ms 31.984 m 7 man-bb-b-as1-0.network.virginmedia.net (212.43.162.86) 63.968 ms 63.968 ms 63.968 ms 8 tele-ic-3-ae0-0.network.virginmedia.net (212.43.163.70) 35.982 ms 35.982 ms 35.982 ms 9 158-14-250-212.static.virginmedia.com (212.250.14.158) 35.982 ms 35.982 ms 39.980 ms 10 209.85.252.76 (209.85.252.76) 35.982 ms 35.982 ms 209.85.255.175 (209.85.255.175) 35. 11 66.249.95.170 (66.249.95.170) 67.966 ms 39.980 ms 72.14.232.134 (72.14.232.134) 39.98 12 216.239.49.45 (216.239.49.45) 39.980 ms 72.14.236.191 (72.14.236.191) 31.984 ms 209.85 13 209.85.243.85 (209.85.243.85) 31.984 ms 209.85.243.81 (209.85.243.81) 31.984 ms 209.85 14 ww-in-f104.1e100.net (209.85.229.104) 31.984 ms 31.984 ms 31.984 ms

$ traceroute ferry.eof.eu.org traceroute to ferry.eof.eu.org (195.202.1.13), 30 hops max, 40 byte packets 1 Base-Station-e1c421.local (10.0.1.1) 7.996 ms 7.996 ms 3.998 ms 2 10.175.104.1 (10.175.104.1) 11.994 ms 15.992 ms 15.992 ms 3 osr01camd-v15.network.virginmedia.net (62.30.250.97) 39.980 ms 39.980 ms 39.980 ms 4 osr01hari-tenge71.network.virginmedia.net (62.30.250.33) 27.986 ms 27.986 ms 27.986 m 5 bre-bb-a-ae1-0.network.virginmedia.net (195.182.178.165) 47.976 ms 47.976 ms 43.978 m 6 bre-bb-b-ae0-0.network.virginmedia.net (213.105.174.226) 23.988 ms 27.986 ms 27.986 m 7 telc-ic-1-as0-0.network.virginmedia.net (62.253.185.74) 27.986 ms 11.994 ms 11.994 ms 8 195.66.226.85 (195.66.226.85) 11.994 ms 31.984 ms 31.984 ms 9 * * * 10 212.161.179.106 (212.161.179.106) 39.980 ms 39.980 ms 39.980 ms 11 195.141.236.206 (195.141.236.206) 39.980 ms 35.982 ms 35.982 ms 12 e513-e-rci65-3-ne2.cern.ch (192.65.184.78) 39.980 ms 39.980 ms 31.984 ms 13 192.65.184.61 (192.65.184.61) 31.984 ms 31.984 ms 27.986 ms 14 gw1-cri.citic74.net (195.202.0.132) 27.986 ms 27.986 ms 27.986 ms 15 * * * 16 * * * 17 * * * 18 * * * 19 * * * 20 * * * 21 * * * 22 * * * 23 * * * 24 * * * 25 * * * 26 * * *

286

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


27 28 29 30 * * * * * * * * * * * *

11.2.7.7. dig
Source(s):

Web: Dig HOWTO (EN) (http://www.madboa.com/geek/dig/) Principaux type denregistrements DNS (http://fr.wikipedia.org/wiki/Domain_Name_System#Principaux_enregistrements_DNS)

Note : Voir aussi la section SR005 Administrer un serveur DNS > TP1 pour dautres exemple dutilisation de la commande dig

La commande dig remplace ce qui tait la commande nslookup. Cette commande sert diagnostiquer des dysfonctionnements (ou le bon fonctionnement) dans la rsolution de nom. (Service DNS).
# $ $ $ $ Retourne les informations sur le domaine concern. dig freenix.org # Information de type A (par dfaut) dig ns freenix.org # Information de type NS (Name Server = Serveur de Nom) dig nx freenix.org # Information de type NX (MX ou Mail eXchanger = Serveur SMTP) dig any freenix.org # Tout type dinformation

; >> DiG 9.6.1-P1 >> any freenix.org ;; global options: +cmd ;; Got answer: ;; (HEADER) opcode: QUERY, status: NOERROR, id: 17031 ;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;freenix.org. IN ANY ;; ANSWER SECTION: freenix.org. 259200 freenix.org. 259200 freenix.org. 259200 freenix.org. 259200 freenix.org. 259200 freenix.org. 259200 freenix.org. 259200

IN IN IN IN IN IN IN

SOA cabale.usenet-fr.net. hostmaster.freenix.org. 2009122101 21600 7 NS ns.eu.org. NS ns6.gandi.net. NS cabale.usenet-fr.net. NS ns2.freenix.org. NS ns.frmug.org. MX 10 ns2.freenix.org.

;; Query time: 77 msec ;; SERVER: 10.0.1.1#53(10.0.1.1) ;; WHEN: Thu Dec 24 23:32:52 2009

287

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


;; MSG SIZE rcvd: 211

11.2.7.8. host (hte)


host interroge les serveurs de noms (DNS). Utilise pour dtecter des dysfonctionnements sur un rseau (serveurs hors services) ou tout simplement pour obtenir le nom dune machine partir dune adresse IP ou linverse. domainname:
$ host ferry.eof.eu.org ferry.eof.eu.org has address 195.202.1.13 $ host 195.202.1.13 13.1.202.195.in-addr.arpa domain name pointer eof.hosting.cri74.org. $ host linux-france.org linux-france.org has address 80.247.225.35 linux-france.org mail is handled by 50 mx2.nfrance.com. linux-france.org mail is handled by 100 mx3.nfrance.com. linux-france.org mail is handled by 10 tuxinette.linux-france.org.

11.2.7.9. hostname (nom dhte - afche/congure) // dnsdomainname (nom de domaine - afche)


Source(s):

Tutoriel: Linux Hostname Conguration (http://jblevins.org/computing/linux/hostname) HOWTO Hostname (http://movealong.org/hostname.html) Debian Rfrence - Hostname (http://www.debian.org/doc/manuals/debian-reference/ch03.fr.html#_the_hostname)

Le noyau conserve le nom de machine du systme. Dans Debian, le script dinitialisation du niveau de fonctionnement S qui est li symboliquement /etc/init.d/hostname.sh dnit le nom de machine hostname au moment du dmarrage (en utilisant la commande hostname) avec le nom qui est enregistr dans /etc/hostname . Ce chier ne devra contenir que le nom de machine du systme et pas un nom de domaine pleinement quali.
# hostname $ hostname debstafil4 $ hostname debstafil4 $ hostname Commande Options # Afficher nom de lhte -s # idem -a # Afficher les alias

288

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

debstafil4 fil4 $ hostname -f # Afficher le FQDN (Fully Qualified Name = NomHte.Domain) debstafil4.ermansion.net $ hostname -d # Afficher le domaine ( utiliser au lieu de domainname proscrire) ermansion.net $ dnsdomainname ermansion.net # Mme rsultat que la commande prcdente ( utiliser au lieu de domainname

# $ $ $ $ $ # # # # $ $ # # # # # # # # # #

Afficher le nom de lhte hostname # Mthode 1 et 2: lit le fichier /etc/hostname cat /etc/hostname uname -n # Mthode 3,4 et 5: lit le fichier /proc/sys/kernel/hostname cat /proc/sys/kernel/hostname sysctl kernel.hostname Nouveau nom dhte, par exemple "filou" Changer le nom de lhte temporairement en informant le noyau dutiliser un nouveau nom jusqu la prochaine requte de changement Requiert les droits root ou sudo hostname filou # Mthode 1 sysctl kernel.hostname=NEW_HOSTNAME # Mthode 2 Changer le nom de lhte de faon permanente Chaque distribution a un script execut au dmarrage pour configurer le nom de lhte La mthode diffre selon la distribution:

Systmes bass sur (Debian, Ubuntu, etc.) Pour changer le nom de domaine de faon permanente, simplement indiquer le nom dhte, et seulement le nom (sans qualifier le domaine) dans /etc/hostname et executer /etc/init.d

Slackware Utiliser /etc/HOSTNAME. Configurer le nom approprier en consquence et executer hostname -

# Sytmes bass sur Red Hat cherche un ligne HOSTNAME=gauss dans /etc/sysconfig/network. # Pour changer le nom immdiatement executer "hostname filou" as root or simply reboot.

11.2.7.10. whois
La commande whois interroge des bases de donnes (directory services) de registrar pour retourner des informations sur des adresses IP ou des noms rseaux (domaines, servers, etc...).
$ whois google.fr %% %% This is the AFNIC Whois server. * %% %% complete date format : DD/MM/YYYY %% short date format : DD/MM . %% version : FRNIC-2.5

* . *

. . * * . .

* * /.\ . /.^\ * /.\ /.^.\ . /.^.\ .

289

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


%% %% %% %% %% %% %% %% %% %% ^^|_|^^ * * Rights restricted by copyright. See http://www.afnic.fr/afnic/web/mentions-legales-whois_en Use -h option to obtain more information about this service. [94.170.73.28 REQUEST] >> -V Md4.7 google.fr RL Net [##########] - RL IP [#########.]

domain: status: hold: holder-c: admin-c: tech-c: zone-c: nsl-id: registrar: anniversary: created: last-update: source: ns-list: nserver: nserver: nserver: nserver: source: registrar: type: address: address: address: country: phone: fax-no: e-mail: website: anonymous: registered: source: nic-hdl: type: contact: address: address: address: address:

google.fr ACTIVE NO GI658-FRNIC TT599-FRNIC MC239-FRNIC NFC1-FRNIC NSL4386-FRNIC eMARKMONITOR Inc. dba MARKMONITOR 03/06 27/07/2000 03/06/2009 FRNIC NSL4386-FRNIC ns1.google.com ns2.google.com ns3.google.com ns4.google.com FRNIC eMARKMONITOR Inc. dba MARKMONITOR Isp Option 1 Emerald Tech Center 391 N. Ancestor Place ID 83704 BOISE US +1 208 389 5740 +1 208 389 5771 ccops@markmonitor.com http://www.markmonitor.com NO 10/01/2002 FRNIC MC239-FRNIC ROLE MARKMONITOR CCOPS eMarkmonitor Inc. dba MarkMonitor PMB 155 10400 Overland Road 83709-1433 Boise, Id

290

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


address: phone: e-mail: admin-c: tech-c: changed: anonymous: obsoleted: source: ... US +01 2083895740 ccops@markmonitor.com DL534-FRNIC DL534-FRNIC 10/10/2008 ccops@markmonitor.com NO NO FRNIC

11.2.7.11. ip
Source(s):

Web: Manuel de Reference pour la commande ip (http://linux-ip.net/gl/ip-cref/ip-cref.html) Iproute 2 (http://irp.nain-t.net/doku.php/100iproute:020_iproute2) linux-ip.net (http://linux-ip.net/) Linux Advanced Routing & Trafc Control (http://lartc.org/)

La commande ip sert, entre autres, la conguration des interfaces rseaux tout comme ifcong sauf que, ip peut faire beaucoup dautres choses trs sophistiques mais est plus complexe. Elle necessite linstallation du paquet iproute (pas install par dfaut). Elle gre trs bien tout ce quon peut faire en rseau sous GNU/Linux et notament la congurer de tunnel GRE sur une interface.
# Afficher laide de la commande :) $ ip Usage: ip [ OPTIONS ] OBJECT { COMMAND | help } ip [ -force ] [-batch filename where OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable | tunnel | maddr | mroute | monitor | xfrm } OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] | -f[amily] { inet | inet6 | ipx | dnet | link } | -o[neline] | -t[imestamp] } ## Afficher information sur les interfaces rseaux $ ip addr $ ip addr list 1: lo: LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth3: BROADCAST,MULTICAST,UP,LOWER_UP> mtu 300 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 08:00:27:89:1d:4f brd ff:ff:ff:ff:ff:ff inet 10.0.1.3/8 brd 10.255.255.255 scope global eth3

291

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


## Autres examples $ ip link show $ ip link list # Equivalent 1: lo: <:LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 576 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 08:00:27:89:1d:4f brd ff:ff:ff:ff:ff:ff ## Rgle dexploitation des tables de routage (rule = ~nom de la table) $ ip rule list ## Afficher la route $ ip route $ ip route list $ ip route list table local ## Ajouter une route la table de routage pop3 $ ip route add default via 192.168.0.3 dev eth0 table pop3 ## ARP $ ip neigh list ## Afficher la table ARP $ ip neigh flush all ## Vider la table ARP La page "man ip" est trs claire :)) Pour le reste on verra lusure...

QUESTION : Un tunnel cest un lien (link) encrypt, correct ? Est-ce quel les tunnels utiliss pour les rseaux VPN sont ceux la mme cr avec la commande ip ? RPONSE : un tunnel est un tunnel. Il peut ou non tre chiffr. Il y a diffrents types de tunnels et diffrentes manires den faire, comme en utilisant le protocole GRE par exemple. Nous ferons des tunnels dans lavenir (de la formation). QUESTION : - A quoi sert loption "-family link" ( ne pas confondre avec lobjet link), dans quel cas est-elle utlis ? Quel est la difference entre "-family link" et objet "link" ormis le fait que lun est une option, lautre un objet... RPONSE : Voir man ou help ou lune des ressources indiques plus haut. Si ce nest pas l dedans faut aller voir les sources. Apperemment il est rare de trouver quelque chose dintressant sur le net qui puisse aider vraiment sur ip.En ce qui concerne le type de trame, si ce nest pas de lipv4 ni de lipv6 tu peux prciser si cest du decnet, de lafnet, de lipx... QUESTION : Quest ce que lobjet addrlabel ? Comment a sutilise, je veux dire dans quel cas ? Comment un label est choisi et pas un autre au moment de lutilisation dans la table de routage ?

292

Chapitre 11. SR004 Interconnecter un rseau TCP/IP RPONSE : Pas sr que jutilises a dans les mois qui viennent. Cest pour rpondre une problmatique particulire dcrite dans la RFC 3484 "Default Address Selection for Internet Protocol version 6 (IPv6)". Problme qui ne concerne dailleurs pas quIPv6 mais aussi IPv4, savoir (en rsumant hyper vite car cest moins simple que cela), si tu as 1 interface rseaux qui a plusieurs adresses IP (2 en IPv4 et 1 ou 2 en IPv6) tu fais comment pour indiquer celle qui est prioritaire pour les services (rsolution de nom...) et que le processus client ne se casse pas la gure aprs un timeout. Pour du http ce nest pas trop grave, sur une conversation a devient plus gnant et sil agit du pilotage dun drne arm a peut devenir cata. Caricatural, mais cest l quintervient addrlabel.

11.2.7.12. ping
Permet denvoyer une requte ICMP Echo dune machine une autre machine. Si la machine ne rpond pas il se peut que lon ne puisse pas communiquer avec elle. Cette commande rseau de base permet dobtenir des informations et en particulier le temps de rponse de la machine travers le rseau et aussi quel est ltat de la connexion avec cette machine (renvoi code derreur correspondant).
$ ping localhost PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.078 ms 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.038 ms ... --- localhost ping statistics --7 packets transmitted, 7 received, 0% packet loss, time 5994ms rtt min/avg/max/mdev = 0.036/0.056/0.134/0.035 ms $ ping google.fr PING google.fr (74.125.77.104) 56(84) bytes of data. 64 bytes from ew-in-f104.1e100.net (74.125.77.104): icmp_seq=1 ttl=63 time=30.5 ms 64 bytes from ew-in-f104.1e100.net (74.125.77.104): icmp_seq=2 ttl=63 time=497 ms ... --- google.fr ping statistics --4 packets transmitted, 4 received, 0% packet loss, time 3019ms rtt min/avg/max/mdev = 30.512/266.418/501.459/233.148 ms $ ping ferry.eof.eu.org PING ferry.eof.eu.org (195.202.1.13) 56(84) bytes of data. 64 bytes from eof.hosting.cri74.org (195.202.1.13): icmp_seq=1 ttl=63 time=30.2 ms 64 bytes from eof.hosting.cri74.org (195.202.1.13): icmp_seq=3 ttl=63 time=35.8 ms ... --- ferry.eof.eu.org ping statistics --5 packets transmitted, 3 received, 40% packet loss, time 4016ms rtt min/avg/max/mdev = 30.259/189.525/502.480/221.304 ms

11.2.7.13. mtr
La commande mtr est un outil de diagnostic rseau qui combine traceroute et ping...!

293

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


# Installation $ sudo apt-get install mtr

# Installed par dfaut sur Ubuntu # mais pas sur Debian

# Traceroute $ mtr -r -c 30 ferry.eof.eu.org HOST: debstafil4 1. Base-Station-e1c421.local 2. 10.175.104.1 3. osr01camd-v15.network.virgin 4. osr01hari-tenge71.network.vi 5. bre-bb-a-ae1-0.network.virgi 6. bre-bb-b-ae0-0.network.virgi 7. telc-ic-1-as0-0.network.virg 8. 195.66.226.85 9. ??? 10. 212.161.179.106 11. 195.141.236.206 12. e513-e-rci65-3-ne2.cern.ch 13. 192.65.184.61 14. gw1-cri.citic74.net 15. eof.hosting.cri74.org

Loss% 13.3% 16.7% 13.3% 13.3% 6.7% 16.7% 16.7% 16.7% 100.0 10.0% 13.3% 10.0% 3.3% 13.3% 3.3%

Snt 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30

Last 0.0 12.0 16.0 16.0 8.0 16.0 12.0 36.0 0.0 40.0 32.0 32.0 28.0 28.0 36.0

Avg 4.8 13.0 14.2 15.4 15.9 21.1 14.7 15.8 0.0 44.8 52.9 39.4 35.6 34.2 33.9

Best 0.0 4.0 8.0 8.0 4.0 4.0 8.0 8.0 0.0 28.0 24.0 28.0 28.0 28.0 24.0

Wrst StDev 8.0 2.5 20.0 4.5 28.0 4.4 48.0 8.4 36.0 8.0 76.0 17.9 36.0 5.6 48.0 10.1 0.0 0.0 184.1 30.4 240.1 52.4 140.1 22.5 48.0 5.7 52.0 6.0 48.0 7.3

11.2.7.14. bing
un testeur de bande passante. Outil de mesure de bande passante brut (raw) en point point bas sur ping.
# Bing nest pas install par dfaut # Pour installer $ apt-get install bing # Test $ bing -S 400 10.0.1.5 google.fr BING 10.0.1.5 (10.0.1.5) and ew-in-f104.1e100.net (74.125.77.104) 44 and 400 data bytes (5696 bits) ew-in-f104.1e100.net: 0.003bps 2147483614.984ms 377016084.091292us/bit ew-in-f104.1e100.net: 0.003bps 2147483614.984ms 377016084.091292us/bit ew-in-f104.1e100.net: 0.003bps 2147483614.984ms 377016084.091292us/bit ew-in-f104.1e100.net: 0.003bps 2147483614.984ms 377016084.091292us/bit ^Cew-in-f104.1e100.net: 0.003bps 2147483614.984ms 377016084.091292us/bit --- 10.0.1.5 statistics --bytes out in dup loss rtt (ms): min 44 5 5 0% 0.000 400 5 5 0% 0.000

avg 0.000 0.000

max 0.000 0.000

std dev 0.000 0.000

--- ew-in-f104.1e100.net statistics --bytes out in dup loss rtt (ms): min avg max 44 5 5 0% 32.016 37.619 48.024 400 4 0 100%

std dev 7.801

294

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

--- estimated link characteristics --host bandwidth ms ew-in-f104.1e100.net: not enough received packets

11.2.7.15. telnet (mieux vaux utiliser ssh [ou cURL pour test HTTP])
telnet est une commande permettant de crer une session Telnet sur une machine distante. Cette commande a dabord t disponible sur les systmes Unix, puis elle est apparue sur la plupart des systmes dexploitation. Telnet (TErminal NETwork ou TELecommunication NETwork, ou encore TELetype NETwork) est un protocole rseau utilis sur tout rseau supportant le protocole TCP/IP. Il appartient la couche session du modle OSI et la couche application du modle ARPA. Il est normalis par lIETF (RFC 854 et RFC 855). Selon, lIETF, le but du protocole Telnet est de fournir un moyen de communication trs gnraliste, bi-directionnel et orient octet. http://fr.wikipedia.org/wiki/Telnet ### Test de connection hte 10.0.1.5 sur $ telnet 10.0.1.5 80 Trying 10.0.1.5... Connected to 10.0.1.5. Escape character is ^]. GET index.html <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML <html><head> <title>400 Bad Request</title> </head><body> <h1>Bad Request</h1> <p>Your browser sent a request that this </p> <hr> <address>Apache/2.2.9 (Debian) Server at </body></html> Connection closed by foreign host. le port 80

2.0//EN">

server could not understand.<br />

debstafil4.ermansion.net Port 80</address>

11.2.7.16. cURL/libcurl (Test requte HTTP,FTP,etc... en ligne de commande - automatiser les jobs HTTP)
Source(s):

Web: Using cURL to automate HTTP jobs (http://curl.haxx.se/docs/httpscripting.html) cURL (Wikipedia EN) (http://en.wikipedia.org/wiki/CURL) cURL (Wikipedia FR) (http://fr.wikipedia.org/wiki/CURL)

295

Chapitre 11. SR004 Interconnecter un rseau TCP/IP cURL est un outil en ligne de commande (bas sur la bibliothque logicielle libcurl) pour transferrer/rcuprer des donnes/ressources accessibles sur un rseau informatique via divers protocols. Les protocoles supports sont : FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, FILE et LDAP. La ressource est dsigne laide dune URL. Le logiciel permet de crer ou modier une ressource (contrairement wget, lcriture peut se faire en HTTP en utilisant les commandes POST ou PUT), il peut ainsi tre utilis en tant que client REST. La bibliothque libcurl est accessible aux programmeurs qui veulent disposer des fonctionnalits daccs au rseau dans leurs programmes. Des interfaces ont t cres dans de nombreux langages (C++, Java, .NET, Perl, PHP, Ruby...).
Note : cURL est un bon remplacement de Telnet pour tester des requtes HTTP et visualiser les en-tte et rponses.

# Requte HTTP GET standard sur port 80 $ curl http://google.fr # Rponse (contenu) <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <H1>301 Moved</H1> The document has moved <A HREF="http://www.google.fr/">here</A>. </BODY></HTML> # Inclure len-tte HTTP $ curl http://google.fr -i # avec le contenu de la rponse $ curl http://google.fr -I # sans le contenu (affiche uniquement len-tte) HTTP/1.1 301 Moved Permanently Location: http://www.google.fr/ Content-Type: text/html; charset=UTF-8 Date: Sat, 29 May 2010 09:14:29 GMT Expires: Mon, 28 Jun 2010 09:14:29 GMT Cache-Control: public, max-age=2592000 Server: gws Content-Length: 218 X-XSS-Protection: 1; mode=block (...) # Afficher des statistiques (utile pour verifier des transferts de fichier # Requiert de rediriger le resultat de requte (option -o) $ curl http://google.fr -o resultat.txt % Total % Received % Xferd Average Speed Time Time Time Dload Upload Total Spent Left 109 218 109 218 0 0 237 0 --:--:-- --:--:-- --:--:-PUT, GET)

Current Speed 683

296

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

11.2.7.17. nc (netcat) Couteau Suisse TCP/IP de larme ! [peu remplacer telnet]


Source(s):

Web: netcat (http://netcat.sourceforge.net)

netcat est un utilitaire permettant douvrir des connexions rseau, que ce soit UDP ou TCP. Il est conu pour tre incorpor aisment dans un large panel dapplications. En raison de sa polyvalence, netcat est aussi appel le couteau suisse du TCP/IP . Il existe sur plusieurs systmes dexploitation et sutilise en ligne de commande. Il peut tre utilis pour connatre ltat des ports la faon dun scan de ports. http://fr.wikipedia.org/wiki/Netcat ### Test de connection hte 10.0.1.5 sur $ nc 10.0.1.5 80 get index.html <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML <html><head> <title>400 Bad Request</title> </head><body> <h1>Bad Request</h1> <p>Your browser sent a request that this </p> <hr> <address>Apache/2.2.9 (Debian) Server at </body></html> le port 80

2.0//EN">

server could not understand.<br />

debstafil4.ermansion.net Port 80</address>

11.2.7.18. iftop
Source(s):

Web: iftop (http://webmail.appert44.org/~plegal/index.php/Conguration_et_test_d%27une_interface_r%C3%A9seau_sur_une_stat

iftop permet de mesurer le trac sur une interface rseau


$ iftop -i eth3

297

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

11.2.8. Utilisation de commandes rseau


Source(s):

OF: SR004-net01-ch04-trace-reseau.pdf (docs/eof/sr004-net01-ch04-trace-reseau.pdf) Kivio Diagramme: SR004-net01-ch04-traceroute.w (images/sr004-net01-ch04-traceroute.w)

Lobjectif dans cet exercise est de dcouvir les relations entre les routeurs, la topographie dInternet, au moins en partie, etc... de voir comment nous sommes tous interconnects et comment certaines passerelles peuvent tre incontournable (noeud racine du rseau Internet).

298

Chapitre 11. SR004 Interconnecter un rseau TCP/IP Figure 11-5. Diagramme - Traceroute

299

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

###### ## Voici mes tentatives du jour... toutes ne marchent pas sauf les deux dernires, miracle ! # ## Trace vers OF # tracert ferry.eof.eu.org # tcptraceroute ferry.eof.eu.org # traceroute ferry.eof.eu.org -w # traceroute ferry.eof.eu.org -w # traceroute ferry.eof.eu.org -w # traceroute ferry.eof.eu.org -w # traceroute ferry.eof.eu.org -w # traceroute ferry.eof.eu.org -w

0.5 0.5 0.5 0.5 0.5 0.5

-N -N -N -N -N

1 1 1 1 1

-p -p -p -p

80 80 -q 1 80 -q 1 -F 80 -q 1 -F -I

# traceroute ferry.eof.eu.org -N 1 -p 80 -q 1 -F -I # traceroute ferry.eof.eu.org -N 1 -p 443 -I # Les options minimum indiquer sont: # -N traceroute to ferry.eof.eu.org (195.202.1.13), 30 hops max, 40 byte packets 1 Base-Station-e1c421.local (10.0.1.1) 12.006 ms 2 10.175.104.1 (10.175.104.1) 12.006 ms 3 osr01camd-v15.network.virginmedia.net (62.30.250.97) 16.008 ms 4 osr01hari-tenge71.network.virginmedia.net (62.30.250.33) 12.006 ms 5 bre-bb-a-ae1-0.network.virginmedia.net (195.182.178.165) 16.008 ms 6 bre-bb-b-ae0-0.network.virginmedia.net (213.105.174.226) 16.008 ms 7 telc-ic-1-as0-0.network.virginmedia.net (62.253.185.74) 12.006 ms 8 195.66.226.85 (195.66.226.85) 16.008 ms 9 * 10 212.161.179.106 (212.161.179.106) 28.014 ms 11 195.141.236.206 (195.141.236.206) 28.014 ms 12 e513-e-rci65-3-ne2.cern.ch (192.65.184.78) 32.016 ms 13 192.65.184.61 (192.65.184.61) 24.012 ms 14 gw1-cri.citic74.net (195.202.0.132) 36.018 ms 15 eof.hosting.cri74.org (195.202.1.13) 28.014 ms

## Trace de moi vers Christiane # traceroute 86.67.63.125 -N 1 -p 80 -I traceroute to 86.67.63.125 (86.67.63.125), 30 hops max, 40 byte packets 1 Base-Station-e1c421.local (10.0.1.1) 4.002 ms 8.004 ms 4.002 ms 2 10.175.104.1 (10.175.104.1) 8.004 ms 16.008 ms 12.006 ms 3 osr01camd-v11.network.virginmedia.net (62.30.144.161) 12.006 ms 28.014 ms 20.010 ms 4 osr01hari-tenge71.network.virginmedia.net (62.30.250.33) 12.006 ms 12.006 ms 12.006 m 5 bre-bb-a-ae1-0.network.virginmedia.net (195.182.178.165) 36.018 ms 20.010 ms 12.006 m 6 gfd-bb-b-as1-0.network.virginmedia.net (212.43.163.105) 12.006 ms 32.016 ms 24.012 ms 7 redb-ic-1-as0-0.network.virginmedia.net (62.253.185.78) 8.004 ms 16.008 ms 12.006 ms 8 linx.n9uf.net (195.66.224.214) 40.020 ms 24.012 ms 24.012 ms 9 145.178.96-84.rev.gaoland.net (84.96.178.145) 44.022 ms 24.012 ms 40.020 ms 10 154.243.103-84.rev.gaoland.net (84.103.243.154) 28.014 ms 40.020 ms 28.014 ms 11 206.237.70-86.rev.gaoland.net (86.70.237.206) 32.016 ms 52.026 ms 28.014 ms 12 125.63.67-86.rev.gaoland.net (86.67.63.125) 72.036 ms 64.032 ms 64.032 ms ## Trace de moi vers Pierre-Yves

300

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

$ traceroute 82.67.118.36 -N 1 -p 80 -I traceroute to 82.67.118.36 (82.67.118.36), 30 hops max, 40 byte packets 1 Base-Station-e1c421.local (10.0.1.1) 8.004 ms 0.000 ms 0.000 ms 2 10.175.104.1 (10.175.104.1) 12.006 ms 20.010 ms 20.010 ms 3 osr01camd-v15.network.virginmedia.net (62.30.250.97) 140.070 ms 156.078 ms 204.102 ms 4 osr02hari-tenge71.network.virginmedia.net (62.30.250.45) 16.008 ms 16.008 ms 12.006 m 5 pop-bb-b-ae1-0.network.virginmedia.net (195.182.178.169) 12.006 ms 16.008 ms 8.004 ms 6 pop-bb-a-ae0-0.network.virginmedia.net (213.105.174.229) 12.006 ms 20.010 ms 16.008 m 7 amst-ic-1-as0-0.network.virginmedia.net (213.105.175.6) 16.008 ms 28.014 ms 20.010 ms 8 amsix-6k-1.routers.proxad.net (195.69.144.251) 24.012 ms 24.012 ms 20.010 ms 9 londres-6k-1-po100.intf.routers.proxad.net (212.27.56.41) 20.010 ms 32.016 ms 32.016 10 bzn-crs16-1-be1102.intf.routers.proxad.net (212.27.51.185) 48.024 ms 52.026 ms 36.018 11 cbv-6k-1-po20.intf.routers.proxad.net (212.27.50.190) 32.016 ms * 36.018 ms 12 * * rennes-6k-1-v804.intf.routers.proxad.net (212.27.50.142) 48.024 ms 13 vil35-1.dslg.proxad.net (213.228.11.145) 40.020 ms 44.022 ms 44.022 ms 14 * * * 15 vil35-1-82-67-118-36.fbx.proxad.net (82.67.118.36) 68.034 ms 64.032 ms 68.034 ms ## Trace de Christiane vers moi $ sudo traceroute 94.170.73.28 -N 1 -p 80 -q 1 -F -I [sudo] password for chr: traceroute to 94.170.73.28 (94.170.73.28), 30 hops max, 60 byte packets 1 neufbox (192.168.1.1) 4.149 ms 2 * 3 205.237.70-86.rev.gaoland.net (86.70.237.205) 43.286 ms 4 153.243.103-84.rev.gaoland.net (84.103.243.153) 44.054 ms 5 * 6 195.66.224.23 (195.66.224.23) 58.086 ms 7 gfd-bb-b-as0-0.network.virginmedia.net (62.253.185.77) 58.785 ms 8 bre-bb-a-as3-0.network.virginmedia.net (212.43.163.106) 63.355 ms 9 osr01hari-pc200.network.virginmedia.net (195.182.178.166) 61.672 ms 10 osr01camd-tenge71.network.virginmedia.net (62.30.250.34) 61.807 ms 11 camd-cmts-10-ge02.network.virginmedia.net (62.30.144.181) 61.740 ms 12 cpc3-camd10-0-0-cust283.hari.cable.virginmedia.com (94.170.73.28) 73.569 ms

11.2.9. Init : initialisation du systme sous Linux


Source(s):

OF: SR004-net01-ch05-init.pdf (docs/eof/sr004-net01-ch05-init.pdf) Web: Cours Linux Runlevels (http://www.generation-linux.fr/index.php?post/2009/01/22/Cours-Linux-%3A-les-runlevels)

301

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

11.2.9.1. Processus de BOOT (5 tapes dinitialisation)


BIOS ==> charge bootstrap qui contient chargeur Chargeur de Systme (Grub, LILO, autres...) ==> charge noyau Noyau de Linux (micro-systme) ==> initialise matriel et priphriques, charge pilote et module, start programme init Init (programme et periphriques) ==> execute dautres scripts et programmes (/etc/init.d/rcS puis /etc/rcx.d) Extensions et services (daemons)

11.2.9.2. Les niveaux dexecution (N)


S : Initialiser le systme au dmarrage 0 : Arrter le systme 1 : Mode mono-utilisateur 2 5 : Diffrents modes multi-utilisateurs 6 : Redmarrer le systme

## Afficher le niveau dexcution en cours $ runlevel N 5

Note : Le niveau dexecution est dni dans /etc/inittab (ex: "id:2:initdefault:"). Suivant la distribution, ce niveau par dfaut peut tre diffrent : Debian 2, Mandriva 5, etc...

Question: A quoi serve les differents mode multi-utilisateurs ? Dans quel cas sont-ils utiliss ? Rponse: [2 : rseau][3 : multi utilisateur][4 : xdm][5 : X] mais bon, cest pour les vieux de la vieille, a na plus aucun sens maintenant. man init. Question: Pour le niveau 5, est-ce que tous les scrips des niveaux prcdent (excpt 0) sont-ils executs ou uniquement ceux du niveau 5 ? Est-ce que le systme passe par chacun des niveaux avant datteindre celui souhait ? Rponse: les scripts prsents dans 2, 3 ou 4 sont-ils prsent dans 5 ? Si oui, la rponse est implicite... en fait cest le cas donc on va directement au niveau souhait sans pass par les autres...

302

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

11.2.9.3. Changer le niveaux dexecution (/sbin/telinit)


Le niveau dexecution peut-tre chang si un administrateur excute la commande /sbin/telinit qui envoie les signaux appropris au processus init pour lui indiquer de changer le niveau dexcution. Mais dautres mthode existes... Pour changer le niveau dexecution:
### Par dfaut... # Le mode dexcution par dfaut peut tre modifi dans /etc/inittab (action initdefault) ### Lors du dmarrage de Linux... # A laffichage du prompt boot: linux single ## Mode mono-utilisateur # ou boot: linux 1 ### En cours dexcution... $ /sbin/telinit 5 ## (Re-)Initialise le systme au niveau dexecution 5

11.2.9.4. /sbin/init & /etc/inittab

/sbin/init : Program (ou commande) dinitialisation. Premier processus lanc aprs dmarrage du noyau.
## (Re-)Initialise le systme au niveau dexecution 5 $ /sbin/init 5 # ou $ /sbin/telinit 5 # Prfrable de passer par telinit

/etc/inittab : Fichier de conguration tu processus dinitialisation. Consulter la page de manuel: man inittab

$ cat /etc/inittab ... # The default runlevel. id:2:initdefault: ## Niveau dexecution par dfaut ... # Boot-time system configuration/initialization script. si::sysinit:/etc/init.d/rcS ## Premier script dinitialisation dmarr ... l0:0:wait:/etc/init.d/rc 0 ## Suite dinstructions: "code:niveau daction:action:comman l1:1:wait:/etc/init.d/rc 1 ## Pour initialiser au niveau dexecution souhait l2:2:wait:/etc/init.d/rc 2 ... ### code:

reference unique de lenregistrement dans inittab

303

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

niveau daction: action:

liste des niveaux dexcution pour lesquels laction doit tre lance action executer: - respawn (redmarr si terminer), - wait (init attends la fin dexecution du processus), - once (excuter processus une fois seulement) - boot (excuter processus au dmarrage) - initdefault (dfinir niveau dexcution aprs dmarrage) - sysinit (excuter processus au dmarrage avant "boot") processus excuter

commande: ###

Note : Le chier de conguration dinit, /etc/inittab, spcie que le premier script excuter est /etc/init.d/rcS (rc.sysinit sur dautres distributions que Debian).

Note : Il y a plusieurs versions dinit : BSD , System V . BSD a ses chiers de conguration dans /etc tandis que System V (prononcer systme cinq) a ses chiers dans un sous-dossier de /etc/rc.d. init System V tend devenir le standard sous Linux.

11.2.9.5. dmesg & /var/log

dmesg : les messages de la phase de dmarrage sont consultables avec cette commande.
$ dmesg | more [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.26-2-686 (Debian 2.6.26-19lenny2) (dannf@debian .org) (gcc version 4.1.3 20080704 (prerelease) (Debian 4.1.2-25)) #1 SMP Wed Nov 4 20:45:37 UTC 2009 [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009fc00 (usable) [ 0.000000] BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 0000000018ff0000 (usable) [ 0.000000] BIOS-e820: 0000000018ff0000 - 0000000019000000 (ACPI data) [ 0.000000] BIOS-e820: 00000000fffc0000 - 0000000100000000 (reserved) [ 0.000000] WARNING: strange, CPU MTRRs all blank? [ 0.000000] ------------[ cut here ]-----------[ 0.000000] WARNING: at arch/x86/kernel/cpu/mtrr/main.c:696 mtrr_trim_uncache d_memory+0x178/0x183() [ 0.000000] Modules linked in: [ 0.000000] Pid: 0, comm: swapper Not tainted 2.6.26-2-686 #1 [ 0.000000] [<c01225f3>] warn_on_slowpath+0x40/0x66 [ 0.000000] [<c02b9b2b>] _spin_lock_irqsave+0x16/0x2f [ 0.000000] [<c02b9bb9>] _spin_unlock_irqrestore+0xd/0x10

304

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


[ 0.000000] [ 0.000000] --Plus-[<c0122a94>] release_console_sem+0x173/0x18c [<c0122f0b>] vprintk+0x2d2/0x2de

/var/log : Fichier de journalisation des messages de la phase de dmarrage.

11.2.9.6. /etc/init.d/rcS & /etc/init.d/rcS.d

/etc/init.d/rcS : Script dinitialisation systme. Premier script lanc par init. Il lance tous les scripts localiss dans /etc/init.d/rcS.d /etc/init.d/rcS.d : Contient des liens symboliques (ln -s) vers des scripts qui sont dans /etc/init.d, tous ces scripts sont lancs par /etc/init/d/rcS dans leur ordre dapparition, pour excuter des initialisations comme la vrication et le montage des systmes de chiers, le chargement des modules, le dmarrage des services rseau, le rglage de lhorloge et lexcution dautres initialisations.

11.2.9.7. /etc/init.d & /etc/rcN.d (N = chiffre entre 0 et 6)


Quand le script /etc/init.d/rcS se termine, init va ensuite excuter tous les scripts associs un niveau dexcution (runlevel) souhait.

/etc/init.d/rcN.d : Les rpertoires rc0.d rc6.d correspondent aux programmes qui seront chargs en fonction du niveau dexcution de Linux. Ces repertoires contiennent des liens symboliques (ln -s) vers des scripts qui sont dans /etc/init.d, tous les scripts localiss dans /etc/init.d/rcN.d sont lancs par /etc/init dans leur ordre dapparition, pour excuter des initialisations correspondant au niveau dexecution N. Par exemple, si 2 est le niveau dexcution souhait, le systme va excuter les scripts qui sont dans /etc/rc2.d. Si le script commence par K il sera arrt (kill). Sil commence par S, il sera dmarr (start). /etc/init.d : Contient tous les scripts dinitialisation, un script par service lanc au dmarrage (nfs, ftp, inet. . .). Tous les scripts dans /etc/init.d/rcX.d (X=[S|0|1|2|3|4|5|6]) sont des liens symboliques pointant vers les scripts qui sont dans /etc/init.d. Ceci an de ne pas multiplier les scripts sur la machine.

11.2.9.8. /etc/rc.local, /etc/rc.boot, /etc/rc.d, rc.serial, rc.news...

/etc/rc.local : Dans Debian, il ny a pas non plus de script rc.local par dfaut. Il est possible den mettre un dans /etc/init.d, mais il faut sassurer quil est excut en dernier, avant le chargement de linterface graphique. Ce script sert souvent, ladministrateur pour modier la conguration globale du systme une fois celle-ci termine par le systme. /etc/rc.boot : Les scripts de ce dernier dossier sont habituellement rservs ladministrateur systme, et leur utilisation dans des paquets est obsolte. /etc/rc.d : Debian nutilise pas de rpertoire rc.d mais dmarre son arborescence directement partir de /etc. Le rpertoire rc.d peut contenir galement les chiers rc.local, rc.serial, rc.news. . . rc.serial, rc.news. : Dautres scripts dinitialisation pouvant exister...

305

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

11.2.9.9. Utilitaire de conguration: update-rc.d & rcconf


Permettent de congurer le lancement des services. Il cre ou supprime automatiquement les liens symboliques vers les scripts dinitialisation de type System-V. La commande update-rc.d est plus gnralement utilise. Loutil rcconf est un outil pratique sous Debian.
# Dmarre le daemon /etc/init.d/daemonx dans les niveaux 2,3,4,5 et # le stopper dans les niveaux 0,1,6 # pour une priorit (ou ordre de lancement) 20 $ update-rc.d daemonx start 20 2 3 4 5 . stop 20 0 1 6 . # Pour dsactiver le script compltement $ update-rc.d -f daemonx remove

11.2.9.10. Dmarrer/Arrter un service


$ $ $ $ /etc/init.d/NomDuService stop /etc/init.d/NomDuService start /etc/init.d/NomDuService status /etc/init.d/NomDuService

# pour certains # vous donne lusage

Si vous avez besoin de lancer un script il est toujours possible de le crer dans /etc/init.d et de linitialiser pour quil soit excut dans les runlevels que vous voulez. Voir ci-avant. Pour excuter une commande chaque lancement, vous pouvez utiliser le script rc.local (ce script est excut en dernier, il permet dadapter la conguration de votre systme. Ce script nexistant pas sous Debian, il est possible de le crer:
# Mettre rc.local (mon code) dans /etc/init.d. $ emacs /etc/init.d/rc.local (coder ici) # Rendre le script executable. $ chmod 755 /etc/init.d/rc.local # Crez les liens symbolique avec update-rc.d de faon # ce quil soit excut en dernier dans les niveaux dexcution souhait. $ update-rc.d rc.local defaults 99 ## adapter

306

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

11.2.9.11. Arrter le systme: shutdown, halt, reboot, poweroff


Source(s):

Web: How to let normal users shut down the computer in Linux (http://www.spencerstirling.com/computergeek/shutdown.html)

shutdown : teindre le systme


Syntaxe: /sbin/shutdown [-t sec] [-arkhncfFHP] time [warning-message]

halt : Arrter le systme reboot : Redmarrer le systme


Note : Ne pas utiliser halt ou reboot mais prfrer shutdown. Sur les anciens systme, halt et reboot ne doivent pas tre invoqu directement. Depuis la version 2.74. ces deux commandes invoque shutdown si le systme nest pas en niveau dexcution 0 ou 6.

# $ # $ # $ # $

Arrter le systme immdiatement shutdown -h now ## -h pour halt ou halt Re-dmarrer le systme (Arrter et relancer) shutdown -r now ## -r pour reboot ou reboot

# Arrter le systme et prvenir les utilisateurs par un message # Les utilisateurs auront un message sur leur console et auront le temps de quitter leur ses $ shutdown -h +10 "les services rseaux vont sarrter et reprendre dans 10 minutes" # le temps peut tre indiqu : # au dlai: +m (m=nombre de minutes) # lheure: hh:mm (hh=heure dhorloge, mm=minutes) # # # # # # #

Autres options: -c annule la procdure darrt en cours -k nagit pas, mais envoi le messages aux utilisateurs -f ne pas contrler le systme de fichier (fsck) au dmarrage. -F forcer un contrle du systme de fichier (fsck) au dmarrage. -a utilise /etc/shutdown.allow pour vrifier si lutilisateur est autoris ou non teind -P arrter et teindre le courant

QUESTION: Jai essay de crer un chier /etc/shutdown.allow avec mon nom dutilisateur mais la commande shutdown refuse de sexecuter mme avec loption -a le compte root semble requis..., pourquoi ? Faut-il redmarrer un service pour le changement tre effectif ?

307

Chapitre 11. SR004 Interconnecter un rseau TCP/IP Peut tre parce que ta commande shutdown nappartient qu root ? Et pourquoi passer par l au lieu de passer par un su ou sudo ?
$ ls -l /sbin/shutdown -rwxr-xr-x 1 root root 18196 ao 12

2008 /sbin/shutdown

RPONSE: Quand un utilisateur est enregistr dans shutdown.allow, cela ne signie pas quil peut invoquer la commande shutdown (ou halt, reboot) mais plutt que lutilisateur pourra teindre la machine via CTRL+ALT+DEL si tant es que cela soit congurer dans /etc/inittab. La commande shutdown ne peut-tre utilis que par root. Pour quun utilisateur puisse lutiliser, il doit passer par la commande sudo si tant est quil ait les droits daccs ncessaire comme denit dans le chier /etc/sudoers (utilser la commande visudo pour modier ce chier). [Source: http://www.spencerstirling.com/computergeek/shutdown.html]

11.2.9.12. Upstart ou le successeur de init


Source(s):

Ubuntu: Upstart website (http://upstart.ubuntu.com) Getting started (http://upstart.ubuntu.com/getting-started.html) Successeur dInit ? (https://wiki.ubuntu.com/ReplacementInit) Wiki Upstart - Liste des venements disponible (http://upstart.ubuntu.com/wiki/) Debian: Debian switching to upstart (http://lwn.net/Articles/351013) Dependency based boot sequence (http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot) How Linux Boots: Boot Camp Part I: SysV Init (http://www.linuxplanet.com/linuxplanet/tutorials/7019/1/) Boot Camp Part II: The Upstart Startup Manager (http://www.linuxplanet.com/linuxplanet/tutorials/7033/1/) Tutorial: Use upstart to replace rc.local (http://www.miek.nl/s/8acb776ddc/)

upstart est donn comme le successeur dinit et upstart devrait aussi remplacer terme, cron, atd, anacron et peut-tre mme inetd. Dvelopp linitiative de Canonical Ltd, la socit lorigine de la distribution ubuntu doit rpondre des nouvelles contraintes quamnent les nouveaux noyaux Linux et les nouvelles technologies comme les priphriques hotplug USB. upstart fonctionne de manire asynchrone et remplit dj les tche dinit. Il gre le lancement des tches et daemons au dmarrage de la machine et soccupe galement de larrt lors du shutdown. Cependant, il assure en plus une supervision pendant le fonctionnement du systme. upstart utilise les notions de jobs et dvnements.

308

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

Jobs (placs dans /etc/event.d/) et Evnements : Un job est un script shell qui contient les actions raliser en fonction des vnements qui arrivent (par exemple start ou stop). Le langage utilis pour les scripts qui est beaucoup plus riche que ce qui est utilis avec init. La notion de gestion dvnements prend toute sa dimension car il est possible de dclencher de traitement avant ou aprs (pre-start, post-start) le lancement dun script, avant ou aprs (pre-stop, post-stop) larrt dun script.
## Lister les jobs $ ls /etc/event.d/ | sort

QUESTION: Pourquoi sur ma machine Ubuntu 9.10 il ny a pas de dossier event.d ormis le fait que upstart nest peut-tre pas install ? RPONSE: /etc/event.d no longer used (http://www.ubuntu.com/getubuntu/releasenotes/910#/etc/event.d%20no%20longer%20used). The version of upstart included in Ubuntu 9.10 no longer uses the conguration les in the /etc/event.d directory, looking to /etc/init instead. No automatic migration of changes to /etc/event.d is possible. If you have modied any settings in this directory, you will need to reapply them to /etc/init in the new conguration format by hand.

/etc/event.d/rc-default : Sur les systmes ubuntu, le chier /etc/event.d/rc-default indique le niveau dexcution (runlevel) par dfaut (niveau 2 par dfaut). initctl : commande de contrle des daemons prise en charge par upsart. Elle permet dobtenir la liste des services actifs, en arrter, en lancer...
## Documentation $ man initctl $ initctl --help $ initctl help commandes de Tche : start stop restart reload status list commandes de vnement : emit Autres commandes : reload-configuration version log-priority help

Start job. Stop job. Restart job. Send HUP signal to job. Query status of job. List known jobs.

Emit an event.

Reload the configuration of the init daemon. Request the version of the init daemon. Change the minimum priority of log messages from the init daemon display list of commands

309

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


## Exemples $ initctl list $ initctl status gdm $ initctl stop gdm $ initctl start gdm

# # # #

Liste services et leur status (+PID) Liste status du service gdm Arrter le service gdm Dmarrer le service gdm

Note : Un exemple concret est pass en revue dans le poly de lOF.

11.2.10. Modier ltape de boot


Source(s):

OF: SR004-net01-ch06-cong-init.pdf (docs/eof/sr004-net01-ch06-cong-init.pdf)

Il est possible de raliser des traitements automatiquement lors de linitialisation du systme. Des squelettes de scripts sont fournis avec la distribution. Questions se poser:

Avons nous juste quelques commandes passer (scripts simples) ou souhaitons-nous lancer un service serveur (daemon) ? Y a t-il juste un traitement au lancement du systme, uniquement larrt ou alors aux deux ? Les commandes doivent-elles tre lances avant les autres services ou la n ?

rc.local : Une solution qui permet de faire excuter un script au boot aprs le lancement de tous les services, est dutiliser le script rc.local. Cela revient, utiliser une solution des niveaux dinit de le mettre en S99z pour tre sr quil soit excut en dernier, les scripts tant lancs par ordre alphabtiques. Deux autres solutions :
- Daemon : raliser simplement un daemon (tudier plus loin dans le journal) - Upstart: utiliser upstart pour remplacer rc.local

310

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

11.2.11. Exercice - valuation


Source(s):

OF: SR004-net01-ch07-exercice1.pdf (docs/eof/sr004-net01-ch07-exercice1.pdf)

###### ## SR004-net01-ch07-Exercice1 # # - Donnez les commandes qui permettent de configurer les interfaces rseaux et les routes. "ifconfig" et "ip" pour les interfaces rseaux "route" et "ip" pour la table de routage # - Dans quel fichier sont stocks les paramtres de configuration des interfaces rseaux ? /etc/network/interfaces

# - Jarrive joindre le serveur de lentreprise mais je narrive pas joindre de sites su # alors que mon collgue, lui y arrive. Quel types de problmes peut-il y avoir ? Problme de routage. Les deux machines nont certainement pas la mme passerelle (gateway) p # - Jarrive joindre le serveur de lentreprise avec ping quand je mets ladresse ip mais Problme de rsolution de noms de domaine. Essayer la commande dig. Vrifier les fichier /etc/hosts, /etc/resolv.cong Vrifier que le serveur DNS est accessible sur le rseau (ping, statistics, etc...) Vrifier que le service DNS sur le rseau est accessible et operationel

# - Jai chang ladresse rseau dans le fichier de configuration, mais quand je fais un : # $ ip addr # en fait son adresse na pas chang. Que peut-il se passer ? Tout comme pour hostname, les fichiers de configuration rseau ne sont lu quau dmarrage de Tout changement dans le fichier de configuration doit-tre suivit dune commande qui r-init

QUESTION1: Pour mettre jour les interfaces rseaux suite un changement de configuration, Stopper linterface rseau eth0 : ifdown eth0 Dmarrer linterface rseau eth0 : ifup eth0

Ceci ne doit pas tre confondu avec la commande qui suit, qui relance explicitement tous les /etc/init.d/networking restart Rappel : pour connatre vos diffrentes interfaces rseau, on peut utilisez la commande : /sbin/ifconfig -a

RPONSE1: Pour tout mettre jour, mme les routes, il vaut mieux passer par le script de re

QUESTION2:- Si jai bien compris le service redmarre tous ce qui est li au rseau alors qu

311

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

RPONSE2: Lisons le contenu du script..., humm! Il semble que le script utilise les commande

11.2.12. Autres questions


Lorsque Christophe fais des traceroute, il obtiens assez frquemment des adresses de routeurs traverss en 10.125.x.x Par exemple :
$ whois 10.125.237.14

LIANA dlgue la gestion des .fr lAFNIC, mais que vient faire cette adresse sur sa route ??? Il y a deux ou trois possibilits :

- il reste chez le mme fournisseur et dans ce cas, le traceroute montre les passerelles par - il passe par diffrents fournisseurs et la patte par dfaut du routeur pointe vers une adr - il ny a pas de problme router un rseau non routable si tu restes sur ton rseau inter

11.2.13. Atelier - Fichier Hosts


Source(s):

OF: SR004-net01-ch08-chier-hosts.pdf (docs/sr004-net01-ch08-chier-hosts.pdf)

Dans un rseau, on assigne gnralement un nom chaque hte. Le terme dhte est pris dans son sens large, cest dire un nud de rseau. Une imprimante, un routeur, un serveur, un poste de travail sont des nuds qui peuvent avoir un nom dhte, sils ont une adresse IP. Le nom permet dadresser le noeud, autrement quavec ladresse IP. Le protocole TCP/IP se charge de la rsolution des noms dhtes, ensuite le protocole ARP, se charge de la rsolution des adresses IP en adresses MAC (Ethernet le plus souvent).

312

Chapitre 11. SR004 Interconnecter un rseau TCP/IP Avec un chier /etc/hosts contenant :
127.0.0.1 10.0.1.5 10.0.1.4 10.0.1.3 localhost localhost.ermansion.net debstafil4 hsbuntu fil4

debstafil4.ermansion.net macfil.ermansion.net

macfil

debstafil3.ermansion.net

debstafil3

195.202.1.13

ferry

## Raccourci ;-)

Je teste...
$ ping -c 1 localhost PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.052 ms $ ping -c 1 localhost.ermansion.net PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.059 ms $ ping -c 1 debstafil4.ermansion.net PING debstafil4.ermansion.net (10.0.1.5) 56(84) bytes of data. 64 bytes from debstafil4.ermansion.net (10.0.1.5): icmp_seq=1 ttl=64 time=0.057 ms $ ping -c 1 debstafil4 PING debstafil4.ermansion.net (10.0.1.5) 56(84) bytes of data. 64 bytes from debstafil4.ermansion.net (10.0.1.5): icmp_seq=1 ttl=64 time=0.051 ms $ ping -c 1 hsbuntu PING macfil.ermansion.net (10.0.1.4) 56(84) bytes of data. 64 bytes from macfil.ermansion.net (10.0.1.4): icmp_seq=1 ttl=64 time=43.6 ms $ ping -c 1 ferry PING ferry (195.202.1.13) 56(84) bytes of data. 64 bytes from ferry (195.202.1.13): icmp_seq=1 ttl=52 time=30.2 ms

Et encore...

$ telnet fil4 3306 ## Resolution du nom dhte OK Trying 10.0.1.5... ## Connection KO - Normal le serveur ncoute pas sur cette address telnet: Unable to connect to remote host: Connection refused $ telnet localhost 3306 Trying 127.0.0.1... Connected to localhost. ... $ telnet ferry ## Resolution du nom dhte OK ## Connection OK

## Resolution du nom dhte OK

313

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


Trying 195.202.1.13... ^C $ ftp ferry ^C $ ftp ferr ftp: ferr: Unknown host ## Resolution du nom dhte OK

## Nom dhte inconnu

Note : Lorsquon utilise souvent laccs ssh ou cvs sur la machine dadresse x.y.z.t qui a pour nom serveur-principal-du-domaine.domaine-qui-en-dit-long.org vous pouvez mettre dans votre chier hosts...
x.y.z.t nc

... et utiliser ensuite nc en lieu et place de lautre nom.

QUESTIONS 1. Quelle est la commande qui permet dobtenir le nom dhte de la machine locale ? hostname ou alternativement cat /etc/hostname ;-) 2. Quelles sont les informations que donne la commande ifcong ? Information sur les interfaces rseaux connectes lhte et leur status... 3. Donnez la commande qui permet de nenvoyer quun seul PING une machine distante (voir man ping) ? ping -c 1 your_hostname 4. Quelle est la taille par dfaut dun paquet envoy par la commande ping ? Par dfaut cest 56 octets qui se traduisent en 64 octets de donnes ICMP lorque combins avec les 8 bits de len-tte ICMP.
Le byte (prononc /bait/), de symbole B, est la plus petite unit adressable dun ordinateur. Aujourdhui, les bytes de 8 bits se sont gnraliss en informatique, alors quen tlcommunications ils peuvent contenir 8 ou 9 bits. En outre, jusque dans les annes 1970, il existait des processeurs avec des bytes de 6, 7, 8 ou 9 bits (et il existe mme, encore aujourdhui pour la programmation des automates ou quipements industriels simples des processeurs trs robustes utilisant des mmoires adressables par quantit de 4 bits voire 1 bit dans certains cas ou certains modes ou zones dadressage). En revanche, un octet, comme son nom lindique, a une taille dexactement 8 bits. http://fr.wikipedia.org/wiki/Byte

5. Quelle est la commande qui permet denvoyer des paquets de 1500 octets ? ping -s 1500 your_hostname

314

Chapitre 11. SR004 Interconnecter un rseau TCP/IP 6. Quelle est la commande ping qui permet denvoyer des paquets en ot ininterrompu ? -c (compteur) et -w (dlai) sont les deux options permettant de jouer sur la dure dexcution du ping. En indiquant un compteur ou un dlai lev on peut rallonger(ou raccourcir) le temps dexcution de la commande ping. Il nest pas possible denvoyer un ot permanant de PING moins dutiliser une boucle :) 7. Quel protocole utilise la commande ping ? ICMP protocol.

Internet Control Message Protocol est lun des protocoles fondamentaux constituant la suite de protocoles Internet. Il est utilis pour vhiculer des messages de contrle et derreur pour cette suite de protocoles, par exemple lorsquun service ou un hte est inaccessible.

ICMP se situe au mme niveau que le protocole IP bien quil ne fournisse pas les primitives de service habituellement associes un protocole de couche rseau. Son utilisation est habituellement transparente du point de vue des applications et des utilisateurs prsents sur le rseau. ICMP version 4 accompagne IPv4. Internet Control Message Protocol V6 accompagne IPv6. http://fr.wikipedia.org/wiki/ICMP

11.2.14. Approche des services Telnet et FTP


Source(s):

OF: SR004-net01-ch09-telnet-ftp.pdf (docs/sr004-net01-ch09-telnet-ftp.pdf)

Mise en place de deux services serveurs :


telnet [telnetd] : protocole [service] dmulation de terminaux virtuels (VTx) ftp [ftpd] : protocole [service] de transfert de chier

Cela doit nous permettre de comprendre le fonctionnement des processus en environnement client/serveur et dapprocher au travers de deux protocoles les premiers aspects de la conguraiton de services serveur sous GNU/-Linux, ainsi que les premiers aspects lis la scurit.
Note : Le service serveur telnetd est remplac par ssh (plus sr) Le service serveur ftpd est remplac par sftpd (plus sr aussi)

315

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

11.2.14.1. Le daemon inetd (ou xinetd) - Internet services daemon


Source(s):

Web: Le "super-serveur" inetd (http://www.freebsd.org/doc/fr_FR.ISO8859-1/books/handbook/network-inetd.html) xinetd a secure replacement for inetd (http://xinetd.org/)

Le daemon inetd (ou xinetd selon la solution utilise) est comparable ce quon pourrait appeler un super serveur, lcoute sur plusieurs ports et qui se charge de recevoir les demandes de connexion de plusieurs clients diffrents (telnet, ftp,. . .) et de lancer le serveur correspondant la demande.
Note : Dans certaines distributions, inetd a t remplac par xinetd (une autre solution plus scuris). Le principe est trs similaire, la seule diffrence est que, dans /etc/xinetd.d , chaque service (telnet, ftp, pop3...) dispose de son propre chier de conguration.

Note : Quand ils ne sont pas lancs par inetd (ou xinetd), ces services sont dits fonctionnant en mode autonome ou standalone.

son dmarrage il consulte les chiers :

/etc/services (docs/sr004-net01-ch01-serviceports.txt) : contient la liste gnrale des services TCP/IP avec leur numro de port et le protocole de transport associ. /etc/inetd.conf (docs/sr004-net01-ch09-inetd-conf.txt) (ou /etc/xinetd.conf (docs/sr004-net01-ch09-xinetd-conf.txt)) : contient la liste des services activs sur une machine donne.

11.2.14.2. Le daemon tcpd (TCP-Wrapper - Enveloppe tcp)


TCP-Wrapper est un service qui vient sinterfacer entre inetd et le service serveur lancer. Cest un outil de scurit rseau qui permet de contrler les accs, les tentatives de connexions sur une machine donne. Il permet tout instant de savoir (par journalisation sysklogd) qui essaie daccder sur un ordinateur mais galement de ltrer les accs. Il permet de mettre en place une stratgie de scurit. En schmatisant :
- Un client telnet passe une requte un serveur telnetd ; - Sur le serveur cest inetd qui reoit la requte et qui doit charger telnetd en mmoire ;

316

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


- Si tcpwrapper est install, en fait inetd va lancer tcpwrapper qui va vrifier que le client par exemple est autoris utiliser telnetd ; - Si le client est autoris, alors telnetd est activ, sinon la requte est rejete.

Pour ltrer les accs sa machine :


- /etc/hosts.deny : on indique dans ce fichier les services et les htes pour lesquels laccs est interdit. - /etc/hosts.allow : on indique dans ce fichier les services et les htes pour lesquels laccs est autoris

Note : Si une rgle est applicable dans hosts.allow, alors cette rgle est applique, sinon, si une rgle est applicable dans hosts.deny, alors cette rgle est applique, sinon, laccs est autoris.

Stratgie de scurit adopter :


1. hosts.allow : dcrire toutes les rgles pour les couples (services/clients) autoriss 2. hosts.deny : interdire systmatiquement tout le reste (ALL:ALL)

Les tentatives daccs depuis des machines extrieures sont toutes enregistres dans des chiers particuliers, les journaux. Ces enregistrements sont effectus par le processus sysklogd qui, son dmarrage, lit le chier /etc/syslog.conf pour trouver dans quel(s) chier(s) il doit enregistrer les diffrentes tentatives daccs.

11.2.15. Telnet et FTP mise en uvre


Source(s):

OF: SR004-net01-ch10-telnet-ftp-tp.pdf (docs/eof/sr004-net01-ch10-telnet-ftp-tp.pdf)

Installer les premiers services serveurs et vrier ensuite quils fonctionnent :


- telnetd sera pris en charge par inetd - ftpd sera install en mode autonome

317

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

11.2.16. Premiers pas dans la scurit


Source(s):

OF: SR004-net01-ch11-secu-init.pdf (docs/eof/sr004-net01-ch11-secu-init.pdf)

11.2.17. Lanalyse de trame (tcpdump, tshark, wireshark)


Source(s):

OF: SR004-net01-ch12-analyse-trame.pdf (docs/eof/sr004-net01-ch12-analyse-trame.pdf) Web: Packet Filtering HOWTO (http://www.netlter.org/documentation/HOWTO/fr/packet-ltering-HOWTO.html)

11.2.17.1. Prsentation
Lanalyse de trame peut-tre utilise pour extraire leur contenus (data), il faut avoir en gnral de bonne raisons pour faire cela (pirates, units de surveillance, ...) car a relve de lespionnage. Par dfaut, les donnes transitent en clair sur le rseau, cest dire quelles ne sont pas chiffres. Les administrateurs utilisent le plus frquemment lanalyse de trame surtout lors de dysfonctionnements sur un rseau, des tables de routage... an den dterminer les causes et pouvoir corriger. a peut tre utilis aussi dans le cadre dune tude statistique pour dterminer des charges, des heures pleines... comme partie dun projet de supervision de rseau an de pouvoir prendre de bonnes dcisions si certains aspects du rseau prsentait des faiblesses (mauvais temps de rponse par exemple). Lanalyse de trame prsente un cot processeur, on ne lutilise donc que ponctuellement comme un outils mis la disposition pour dterminer la source dun problme.

318

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

11.2.17.2. Les analyseurs de trames


Les distribtutions fournissent de nombreux analyseurs de trames. En standard, il existe 3 outils :

tcpdump (http://www.tcpdump.org) (mode texte) : outil fonctionnant en mode commande, incontournable car cest le premier quon a gnralement sous la main. tshark (http://www.wireshark.org/docs/man-pages/tshark.html) (mode texte) : la backend de wireshark qui fonctionne en mode commande . wireshark (http://www.wireshark.org/docs/man-pages/tshark.html) (mode graphique) : lanalyseur de trame graphique qui est devenu un standard.

Note : Les outils en mode commande sont privilgier pour la simple raison quil ny a gnralement pas dinterface graphique sur les serveurs. Cependant comme il est trs facile denregistrer une capture dans un chier , il est possible de retraiter ce chier avec un outils graphique.

11.2.17.3. Mode promiscuous (promisc)


Lanalyse de trame par dfaut nest pas ralisable car une interface rejette tout paquet qui ne lui est pas destin. Il faut donc mettre linterface en mode promiscuous (mode particulier) pour quelle traite tous les paquets quelle reoit. Information sur linterface rseau :
$ ifconfig eth2 eth2 Link encap:Ethernet HWaddr 00:26:bb:13:31:96 inet adr:192.168.1.100 Bcast:192.168.1.255 Masque:255.255.255.0 adr inet6: fe80::226:bbff:fe13:3196/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ...

Activer le mode promiscuous :


## En tant que root $ ifconfig eth2 promisc

319

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


## Vrification $ ifconfig eth2 eth2 Link encap:Ethernet HWaddr 00:26:bb:13:31:96 inet adr:192.168.1.100 Bcast:192.168.1.255 Masque:255.255.255.0 adr inet6: fe80::226:bbff:fe13:3196/64 Scope:Lien UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 ...

Dsactiver le mode promiscuous :


## En tant que root $ ifconfig eth2 -promisc ## Vrification $ ifconfig eth2 eth2 Link encap:Ethernet HWaddr 00:26:bb:13:31:96 inet adr:192.168.1.100 Bcast:192.168.1.255 Masque:255.255.255.0 adr inet6: fe80::226:bbff:fe13:3196/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ...

Note : La commande laisse des traces dans les journaux (kernel.log, syslog, messages) Les analyseurs de trame passent, gnralement, les interfaces en mode promisc automatiquement (il faut tre root) Il faut positionner lanalyseur de trame un bon endroit . En effet, certains probl1emes rencontrs peuvent tre li aux quipements de raccordements des n uds, qui sont dsormais des commutateurs (switchs). Il est possible dans ce cas que vous ne voyiez pas passer grand chose hormis vos propres paquets. Le problme est identique avec les Vlans.

11.2.17.4. Utilisation gnrale dun analyseur de trame


Le principe est gnralement identique, il faut savoir :
- sur quelle interface on souhaite lancer la capture - sur quel protocole on souhaite filtrer - pour quelle ou quelles machines on veut capturer le trafic.

320

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


Note : Par dfaut lanalyseur capture tout et sil y a beaucoup de trac, le travail de tri ne sen trouve pas simpli par la suite. Aprs il est possible de raliser des ltres complexes mais nous nirons pas jusque l.

11.2.17.5. tcpdump
## tcpdump options de base Option Description -i ethx prciser sur quelle interface se fait la capture -X afficher la capture en hexa et ascii -n numrique, pas de rsolution des noms -nn pas de rsolution des noms ni des ports -s0 capture de tout le paquet -cx capture seulement x paquets -v, -vv, -vvv augmente le mode verbeux -w outfile crire (write) la capture dans un fichier

## Activer mode promiscuous $ sudo ifconfig eth2 promisc ## Liste interfaces disponibles pour la capture $ tcpdump -D 1.eth0 2.eth2 3.any (Pseudo-device that captures on all interfaces) 4.lo ## Analyse de trame sur linterface eth2 $ tcpdump -i eth2 tcpdump: eth2: You dont have permission to capture on that device (socket: Operation not permitted) ##==> Erreur si pas excut en tant que root !!!

# tcpdump -i eth2 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth2, link-type EN10MB (Ethernet), capture size 96 bytes 12:05:58.896889 ARP, Request who-has 192.168.1.200 tell macfil.local, length 28 12:05:58.897381 IP macfil.local.37681 > resolver2.opendns.com.domain: 43785+ PTR? 200.1.168.192.in-addr.arpa. (44) 12:05:59.139107 ARP, Reply 192.168.1.200 is-at 00:e0:fc:18:21:16 (oui Unknown), length 28 12:05:59.447904 IP resolver2.opendns.com.domain > macfil.local.37681: 43785 NXDomain 0/0/0 ( 12:05:59.548316 IP macfil.local.mdns > 224.0.0.251.mdns: 0 PTR (QM)? 200.1.168.192.in-addr.a 12:06:00.104884 IP filostene.local.netbios-dgm > 192.168.1.255.netbios-dgm: NBT UDP PACKET(1 ... 6 packets captured 35 packets received by filter 0 packets dropped by kernel

321

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


## Sans rsolution de nom -n(numrique) # tcpdump -i eth2 -n ... 12:07:44.469209 IP 192.168.1.100.5060 > 94.75.247.45.5060: SIP, length: 2 12:07:54.472717 IP 192.168.1.100.5060 > 94.75.247.45.5060: SIP, length: 2 12:07:59.469990 ARP, Request who-has 192.168.1.200 tell 192.168.1.100, length 28 12:07:59.478236 ARP, Reply 192.168.1.200 is-at 00:e0:fc:18:21:16, length 28 12:08:04.433021 IP 94.75.247.45.5060 > 192.168.1.100.5060: SIP, length: 244 12:08:04.433712 IP 192.168.1.100.36292 > 208.67.220.220.53: 35811+ A? proxy.localphone.com. ... ## Capturer ce_qui_va_vers_vers/ce_qui_provient_de ladresse host 94.75.247.45 # tcpdump -i eth2 -n host 94.75.247.45 ... 12:11:35.533713 IP 94.75.247.45.5060 > 192.168.1.100.5060: SIP, length: 244 12:11:35.838162 IP 192.168.1.100.5060 > 94.75.247.45.5060: SIP, length: 349 12:11:35.926094 IP 192.168.1.100.5060 > 94.75.247.45.5060: SIP, length: 2 ... ## Capturer le traffic entre les machines 10.0.1.4(ici) et 10.0.1.1(labas) # tcpdump -i eth2 -n host 10.0.1.4 and 10.0.1.1 ... 16:22:44.768175 IP 10.0.1.4.43907 > 10.0.1.1.53: 26177+ A? books.google.com. (34) 16:22:44.784117 IP 10.0.1.1.53 > 10.0.1.4.43907: 26177 7/0/0 CNAME[|domain] 16:22:44.784273 IP 10.0.1.4.43397 > 10.0.1.1.53: 38124+ A? books.google.com. (34) 16:22:44.784291 IP 10.0.1.4.57027 > 10.0.1.1.53: 50650+ A? he.wikipedia.org. (34) 16:22:44.784364 IP 10.0.1.4.34618 > 10.0.1.1.53: 25317+ A? standards.ieee.org. (36) 16:22:44.784465 IP 10.0.1.4.52323 > 10.0.1.1.53: 51064+ A? www.pearsonhighered.com. (41) 16:22:44.786704 IP 10.0.1.1.53 > 10.0.1.4.43397: 38124 7/0/0 CNAME[|domain] ## Filtrer en fonction du sens du traffic dst ou src # tcpdump -i eth2 -n src 10.0.1.4 and dst 10.0.1.1 ... 16:21:50.419211 IP 10.0.1.4.44159 > 10.0.1.1.53: 37337+ A? en.wikipedia.org. (34) 16:21:50.542666 IP 10.0.1.4.53096 > 10.0.1.1.53: 25537+ A? en.wikipedia.org. (34) 16:21:55.413664 ARP, Request who-has 10.0.1.1 tell 10.0.1.4, length 28 16:22:14.292610 IP 10.0.1.4.33792 > 10.0.1.1.53: 11289+ A? upload.wikimedia.org. (38) 16:22:14.295743 IP 10.0.1.4.33038 > 10.0.1.1.53: 14296+ A? upload.wikimedia.org. (38) 16:22:14.794670 IP 10.0.1.4.52186 > 10.0.1.1.53: 47530+ A? creativecommons.org. (37) 16:22:14.794848 IP 10.0.1.4.33388 > 10.0.1.1.53: 21428+ A? meta.wikimedia.org. (36) 16:22:14.803752 IP 10.0.1.4.38521 > 10.0.1.1.53: 8646+ A? tools.ietf.org. (32) ## filtrer sur des ports (revient ## filtrer sur un protocole de niveau application) # tcpdump -n -i eth2 port 80 ... 16:43:46.171494 IP 91.198.174.2.80 > 10.0.1.4.46740: 16:43:46.188814 IP 91.198.174.3.80 > 10.0.1.4.47905: 16:43:46.206384 IP 10.0.1.4.46740 > 91.198.174.2.80: 16:43:46.223608 IP 10.0.1.4.47905 > 91.198.174.3.80: 16:43:46.519621 IP 91.198.174.2.80 > 10.0.1.4.46740: 16:43:46.519681 IP 10.0.1.4.46740 > 91.198.174.2.80: 16:43:46.520518 IP 91.198.174.3.80 > 10.0.1.4.47905:

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

322

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


... ## filtrer sur des protocoles # tcpdump -n -i eth2 arp ... 16:51:48.516162 ARP , Request who-has 10.0.1.1 tell 10.0.1.4, length 28 16:51:48.590694 ARP, Reply 10.0.1.1 is-at 00:17:f2:e1:c4:21, length 28 16:51:52.094244 ARP, Request who-has 10.0.1.3 (00:00:00:04:0a:00) tell 10.0.1.1, length 28 ...

## sortie sur la console et enregistrement du flux dans un fichier -l (line buffered) # tcpdump -n -i eth2 -l -c 10 | tee out.log (docs/sr004-net01-ch12-analyse-trame-out-log.txt tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth2, link-type EN10MB (Ethernet), capture size 96 bytes 16:58:13.403012 IP 10.0.1.4.60965 > 10.0.1.1.53: 58526+ A? en.wikipedia.org. 16:58:13.412130 IP 10.0.1.1.53 > 10.0.1.4.60965: 58526 3/0/0 CNAME[|domain] 16:58:13.412689 IP 10.0.1.4.48262 > 10.0.1.1.53: 55668+ A? en.wikipedia.org. 16:58:13.699918 IP 10.0.1.1.53 > 10.0.1.4.48262: 55668 3/0/0 CNAME[|domain] 16:58:14.003974 IP 10.0.1.4.57221 > 91.198.174.2.80: Flags [S], ... 16:58:14.004622 IP 10.0.1.4.57542 > 10.0.1.1.53: 16882+ A? bits.wikimedia.org. 16:58:14.004744 IP 10.0.1.4.33879 > 10.0.1.1.53: 16914+ A? upload.wikimedia.org. 16:58:14.325252 IP 10.0.1.1.53 > 10.0.1.4.57542: 16882 3/0/0 CNAME[|domain] 16:58:14.325793 IP 10.0.1.4.39747 > 10.0.1.1.53: 2164+ A? bits.wikimedia.org. 10 packets captured 11 packets received by filter 0 packets dropped by kernel 16:58:14.334314 IP 91.198.174.2.80 > 10.0.1.4.57221: Flags [S.], ... ## Sauvegarder dans un fichier pour traitement ultrieur ou via un autre logiciel ## Format libpcap (par ouvrable dans un diteur de texte) # Sauvegarde de la capture dans capture.pcap $ tcpdump -n -i eth2 -c 10 -w capture.pcap tcpdump: listening on eth2, link-type EN10MB (Ethernet), capture size 96 bytes 10 packets captured 10 packets received by filter 0 packets dropped by kernel # Ouverture avec loption -r de tcpdump $ tcpdump -r capture.pcap reading from file capture.pcap, link-type EN10MB (Ethernet) 17:07:20.933398 IP macfil.local.52260 > 10.0.1.1.domain: ... 17:07:20.975444 IP 10.0.1.1.domain > macfil.local.52260: ... 17:07:20.975856 IP macfil.local.41109 > 10.0.1.1.domain: ... 17:07:20.987053 IP 10.0.1.1.domain > macfil.local.41109: ... 17:07:21.434083 IP macfil.local.37014 > rr.esams.wikimedi... ... # Ouverture avec wireshark $ wireshark capture.pcap ## Dsactiver mode promiscuous $ sudo ifconfig eth2 -promisc

323

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

11.2.17.6. Dpannage avec tcpdump


Tester un ping:
## On lance un ping dans un console $ ping 10.0.1.1 -c 2 ## et on capture dans une autre. $ tcpdump -n -i eth0 icmp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth2, link-type EN10MB (Ethernet), capture size 96 bytes 17:18:36.050403 IP 10.0.1.4 > 10.0.1.1: ICMP echo request,... 17:18:36.520538 IP 10.0.1.1 > 10.0.1.4: ICMP echo reply, ... 17:18:37.051386 IP 10.0.1.4 > 10.0.1.1: ICMP echo request,... 17:18:37.537458 IP 10.0.1.1 > 10.0.1.4: ICMP echo reply, ...

Pour un ping normal et un ping anormal, on voit bien les paquets ICMP echo request mis et les paquets ICMP echo reply reus. Dans le cas anormal o le ping semble ne pas rpondre, on est ainsi sr que la machine distante est bien oprationnelle. tcpdump indique que sur linterface les paquets partent bien et que le retour se fait bien. Dans ce cas, la raison pour un ping anorma est que le rewall local dtruit les paquets ICMP entrants. Analyse de contenu de trame (ftp par example). Lextrait de capture sur un trafc ftp pour montrer que les donnes circulent bien de faon non chiffre sur les rseaux :

## Session tcpdump dans une fentre $ tcpdump -ni lo -s0 -A | grep -Ei "USER|PASS" .......)USER anonymous ........331 Anonymous login ok, (...) ...D... PASS foo@bar.org ...D...D230-Welcome, archive user anonymous@localhost ! ## Tentative de connexion ftp anonyme dans une autre console $ ftp localhost

324

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

Avertissement
"... les chanes didentication et dauthentication apparaissent clairement , et il en est ainsi pour tous les protocoles non chiffrs..."

11.2.17.7. tshark
tshark est lanalyseur de wireshark, le principe fondamental reste peu prs le mme que pour tcpdump. Pour plus dinfo sur son utilisation et le ltre, se rfrer au poly de lof :
## Capture de linterface eth2 $ tshark -i eth2 ## Filtre tcp port 80 et enregistrement dans un fichier. $ tshark -f "tcp port 80" -i eth0 -w /tmp/capture.cap ## Extraction filtre partir dun fichier ## Tous paquets ne correspondant pas au filtre sont omis $ tshark -R "ip.addr == 192.168.1.1" -r /tmp/capture.cap

11.2.17.8. Wireshark (anciennement Ethereal)


Depuis le mois de juin 2006, Ethereal a chang de nom, il sappelle dsormais Wireshark. Produit graphique vraiment accessible. Si vous avez besoin danalyser des trames sur une machine qui na pas dinterface graphique, vous pouvez raliser des captures avec tcpdump ou tshark, enregistrer dans un chier et les reprendre avec wireshark La fentre wireshark est compos de trois parties principale :
#- Liste des trames captures (partie du haut) #- Lencapsulation des diffrentes couches (partie centrale) #- Le contenu de la trame (partie du bas)

# Ouverture avec wireshark dun fichier de capture

325

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


$ wireshark capture.pcap

326

Chapitre 11. SR004 Interconnecter un rseau TCP/IP Figure 11-6. Wireshark : Ouvrir chier .pcap (format libpcap)

327

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

Capture simple dun trafc ARP


## Pralable : vider la cache ARP $ arp -d ... ## Puis lancer wireshark $ wireshark ## Puis choisir une interface (ex: eth2) puis lancer la capture...

328

Chapitre 11. SR004 Interconnecter un rseau TCP/IP Figure 11-7. Wireshark : Capture simple par dfaut (ARP, IP, DNS, etc...)

11.2.17.9. Application
Les tests effectus ci-avant ont permis de se familiarisez avec les outils, et apprendre utiliser les ltres sur des oprations simples.

329

Chapitre 11. SR004 Interconnecter un rseau TCP/IP Avec wireshark, une capture simple qui vous montre un trac ARP entre ma machine et la passerelle du rseau t ralis (voir ci-dessus) Capture avec authentication permettant de retrouver dans le chier les traces de login/mot de passe dun accs un site web ou webmail non chiffrs
## Connection http://192.168.56.101/phpldapadmin ## (Interface dadminsitration LDAP sur machine virtuelle) $ tcpdump -i vboxnet0 host 192.168.56.1 -l -s0 -A | tee snap.txt ... 19:36:52.710509 IP macfil.local.57819 > debstafil4.local.www: ... .1.a..3.cmd=login&server_id=0&dn=cn%3Dmanager%2Cdc %3Dermansion%2Cdc%3Dnet&login_pass=secret&submit=Authenticate ...

11.2.17.10. Exercise
Scnario : vous avez votre poste myhost en 192.168.0.1/32, un serveur DNS dnshost en 192.168.0.2/32 et un serveur qui est la fois serveur HTTP et serveur FTP srvhost en 192.168.0.3/32. Quelles seraient les commandes tcpdump pour raliser les oprations suivantes (passes sur le poste myhost) :
# tout ce qui va vers ou provient de srvhost ; $ tcpdump [-n] -i eth0 host srvhost $ tcpdump [-n] -i eth0 host 192.168.0.1 # Alternative # tout ce qui va vers ou provient de srvhost ou de dnshost ; $ tcpdump [-n] -i eth0 host srvhost or dnshost $ tcpdump [-n] -i eth0 host 192.168.0.1 or 192.168.0.3 # Alternative # capturer uniquement les requtes HTTP qui vont vers srvhost ; $ tcpdump [-n] -i eth0 dst srvhost and port 80 $ tcpdump [-n] -i eth0 dst 192.169.0.1 and port 80 # Alternative # $ $ $ capturer uniquement le trafic concernant la rsolution de nom ; tcpdump [-n] -i eth0 port 53 tcpdump [-n] -i eth0 host dnshost tcpdump [-n] -i eth0 host 192.168.0.2

# tout capturer sauf ce qui concerne la machine srvhost ; $ tcpdump [-n] -i eth0 not host srvhost $ tcpdump [-n] -i eth0 not host 192.168.0.1 # Alternative # tout capturer sauf ce qui concerne le trafic HTTP $ tcpdump [-n] -i eth0 not port 80

330

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

11.2.17.11. Autres utilitaires (ttcp, iptraf, nagios)


ttcp (http://linux.die.net/man/1/ttcp) : utilitaire Unix pour mesurer des dbits TCP et UDP entre diffrentes stations iptraf (http://iptraf.seul.org) : Iptraf est utile pour la visualisation des connexions tcp, de la translation de port et de la translation dadresse :
iptraf -i all iptraf -g iptraf -d eth0 # moniteur de traffic IP # statistiques gnrales des interfaces # informations dtailles dune interface

nagios (http://www.nagios.org) : (anciennement appel Netsaint) est une application permettant la surveillance systme et rseau. Elle surveille les htes et services spcis, alertant lorsque les systmes vont mal et quand ils vont mieux.

11.2.18. Dpannage rseau


Source(s):

OF: SR004-net01-ch13-depannage.pdf (docs/eof/sr004-net01-ch13-depannage.pdf)

11.2.19. netperf/ethtool : Mesure de performance rseau


ethtool : est une commande UNIX permettant dafcher et modier certains paramtres de la carte rseau, comme sa vitesse. netperf : Netperf est un outil de benchmark, qui peut tre utilis pour mesurer diffrents aspects des performances rseaux. Il reste un outil assez simple. Il sert surtout pour des tests de performances de transfert brut (stream ou stream unidirectionnel), et fonctionne sur un modle client/server.

331

Chapitre 11. SR004 Interconnecter un rseau TCP/IP Netperf sinstalle gnaralement depuis le source sur les deux points dextrmit du transfert mesurer. Sur lune on execute netserver (possible en non-root), sur lautre on execute netperf en indiquant lhte qui execute netserver. Voici un petit guide trs rapide sur Netperf (non test) :

Source: http://www-sop.inria.fr/mistral/personnel/Christophe.Retiere/tests.html $ netperf -l dure -H hte_serveur -t [TCP/UDP]_STREAM - m taille_paquets -s taille_buf_local -S taille_buf_dist Deux exemples de scripts simples: Tests pour UDP: #! /bin/sh duree=120 for size in 10 100 300 500 700 900 1100 1300 1400 do rep=/usr/local/sys/bin/netperf -P -v -l $duree -H $1 -t UDP_STREAM -- -m $siz e -s 65535 -S 65535 li=echo $rep | awk { pou=(($4-$9) / $4)*100 print $2":"$10":"pou } echo $li done Tests pour TCP: #! /bin/sh duree=120 for size in 10 100 300 500 700 900 1100 1300 1400 do rep=/usr/local/sys/bin/netperf -P -v -l $duree -H $1 -t TCP_STREAM -- -m $siz e -s 65535 -S 65535 li=echo $rep | awk { print $3":"$5 } echo $li done Les rsultats obtenus sont semblables a Ttcp, si ce nest une diffrence quant aux dbits engendrs en UDP (une diffrence de presque 200Mb/s apparait...A creuser) wsopi98a -> wsopi99a (G) (Sophia -> Sophia) : rsultats TCP et UDP TCP max = 389,28Mb/s UDP max = 699,36Mb/s wsopi98a -> wstli96a (G) (Sophia -> Rocquencourt): rsultats TCP et UDP TCP max = 76,87Mb/s UDP max = 684,12Mb/s

332

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


...

11.2.20. Le protocole ssh (ssh, rssh, sftp, etc...)


Source(s):

OF: SR004-net01-ch14-ssh.pdf (docs/eof/sr004-net01-ch14-ssh.pdf) Tutorial: SSH Tutorial for Linux (http://support.suso.com/supki/SSH_Tutorial_for_Linux) OpenSSH Public Key Authentication (http://sial.org/howto/openssh/publickey-auth/)

Lutilisation de ssh, demande au dbut un minimum dapprentissage, mais une fois ce travail l ralis on ne peut plus sen passer. Plus aucune connexion distante nest ralise sans chiffrement, donc en toute scurit.

11.2.20.1. Installation & Commandes de base


ssh est gnralement compos de 2 paquets :
- le serveur OpenSSH (openssh-server) - le client (openssh-clients)

$ apt-get install openssh-clients openssh-server

# Installation

## Laccs une machine distante requiert : ## - que la machine distante soit accessible via le ## - lexistance dun compte actif pour y accder $ ssh filostene@192.168.56.101 # # # #

rseau 1ere connection la VM Debian (IP 192.168.56.101) un nom de domaine peut-tre utilis en lieu et place de lIP

The authenticity of host 192.168.56.101 (192.168.56.101) cant be established. RSA key fingerprint is f2:16:34:af:0b:f6:3b:51:94:b0:f8:6e:11:37:e4:8e. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 192.168.56.101 (RSA) to the list of known hosts. filostene@192.168.56.101s password: # Entrer mot de passe du compte # filostene sur la machine Debian

Linux debstafil4 2.6.26-2-686 #1 SMP Wed Feb 10 08:59:21 UTC 2010 i686

333

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. You have new mail. Last login: Wed Dec 23 01:11:51 2009 filostene@debstafil4:~$ # Connection tablie :)

$ ssh-keygen -t dsa

# Gneration clefs (publique/prive) # de lutilisateur connect

## Copier la clef publique locale (~/.ssh/id_dsa.pub) vers le server distant $ scp ~/.ssh/id_dsa.pub filostene@192.168.56.101:.ssh/authorized_keys # ou $ cat .ssh/id_dsa.pub | ssh filostene@192.168.56.101 \ # alternative "cat - >>.ssh/authorized_keys" # pour la gestion # de plusieurs clefs # Attention, sur certaines machines, le fichier se nomme # authorized_keys, sur dautres authorized_keys2 # Dans lexemple qui est donn, le rpertoire .ssh doit exister. ## Testons en lanant une simple commande distante $ ssh filostene@192.168.56.101 ls =1000 bibliotheque.php~ Desktop etcaa etcab ... # La premire fois (dans la session en cours) le passphrase de # clef prive est ncessaire pour dverrouiller la clef prive, # les essais successifs ne requiert plus de mot de passe # la fin de session utilisateur :)

Note : A ce stage, le systme distant ne demande plus de mot de passe, par contre il me demande la passphrase si vous en avez mis une. Le mot de passe nest plus demand car ssh a dtect la cl prive sur votre machine et la cl publique sur le serveur distant.

Si cela ne fonctionne pas :


## Vrifier la configuration : - vrifiez que la cl publique est bien -sur le serveur -au bon endroit -dans le bon fichier

334

Chapitre 11. SR004 Interconnecter un rseau TCP/IP


- vrifiez les droits sur les fichiers - essayez avec les options -v, -vv, -vvv de ssh pour obtenir plus de traces. - regardez dans les logs.

11.2.20.2. Emprunte dune clef


## Obtenir le finger print dune cl $ ssh-keygen -l

11.2.20.3. Utilisation dun agent (viter la passephrase)


Lutilisation dun agent, vite davoir retaper la passphrase chaque fois que lon sollicite lutilisation dela cl prive. Un agent stocke en mmoire les cls prives. ssh-agent : programme qui dmarre avant X Windows et dmarre X Windows. Toutes les programmes X Windows hrite dune connection vers le ssh-agent incluant Gnome Terminal, aterm, xterm, etc... ce qui signie que lagent va pouvoir passer votre passe phrase votre place :) La plupart des distributions dmarre ssh-agent louverture de la session utilisateur via le manager de session tel que gdm (graphical login). ssh-add : programme pour ajouter votre passe phrase (une seule fois) au shh-agent Ceci permet une connection automatique par authentication transparente base de clefs (publique/privee) sans interaction humaine (tel que entrer un passphrase ou un mot de passe).
## Vrifier que ssh-agent est en cours dexecution $ ps auxw | grep ssh-agent ## Activer un agent $ ssh-agent # La commande met sur la sortie standard des variables # environnement dclarer et exporter. Faites le. SSH_AUTH_SOCK=/tmp/ssh-hiotV17831/agent.17831; export SSH_AUTH_SOCK; SSH_AGENT_PID=17832; export SSH_AGENT_PID; echo Agent pid 17832; ## Exporter les cls ssh (les mettre dans le cache de lagent) $ ssh-add # demande pour la passephrase Enter passphrase for /home/xyz/.ssh/id_dsa: Identity added: /home/xyz/.ssh/id_dsa (/home/xyz/.ssh/id_dsa)

335

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

## Vrifier la connexion $ ssh filostene@192.168.56.101 ls (...)

# plus besoin de taper # le mot de passe, ni la passphrase.

Toute connection ultrieur une machine distante se fera sans demande de passephrase... Dans le cas contraire, le passephrase est requis pour tablir la connection...
## Savoir quelles cls sont charges par lagent ## option -l $ ssh-add -l 1024 bc:d0:a6:fa:4b:5d:ee:d0:1a:30:68:fe:4f:7b:09:b4 filostene@macfil (DSA)

## Pour supprimer une cl (ici RSA) de lagent ## option -d $ ssh-add -d ~/.ssh/id_rsa ## Pour supprimer toutes les cls de lagent ## option -D $ ssh-add -D

Note : Pour rendre lajout du passephrase plus facile, ssh-add peut-tre ajouter dans la liste de programme dmarrer au dmarrage de la session utilisateur et il fera ainsi apparatre un prompt (ou appelle gtk2-askpass, x11-askpass, etc...) dans X Windows pour demander le passphrase ds que lutilisateur est connect.

11.2.20.4. Utilisation de ssh et mise en en place de services proxy


Utilisation un plus avance de ssh et de la collaboration avec dautres services. ...

11.2.20.5. rssh
Source(s):

Tutorial: SFTP & RSSH : Crer un serveur de chiers scuris (http://www.lealinux.org/documentations/index.php/SFTP_&_RSSH_:_Cr%C3%A9er_un_serveur_de_chiers_s%C3%A9curis%C3%A Principe et conguration de RSSH

336

Chapitre 11. SR004 Interconnecter un rseau TCP/IP (http://www.ba-cst.com/documents-techniques/165-restriction-de-connexions-ssh) HOWTO: chroot SFTP (only) (http://www.minstrel.org.uk/papers/sftp/index.html)

rssh est un interprteur de commandes, dont les fonctionnalits sont rduites autoriser uniquement des transferts de chiers (scp, sftp, cvs, svnserve (Subversion), rdist ou rsync). Ce shell restreint est utilis avec OpenSSH pour faciliter et scuriser davantage lutilisation de ces commandes. Il peut optionellement chrooter les connexions utilisateurs dans un espace clos (prison) lempchant ainsi daccdr aux repertoires et chiers systme. Lactivation de RSSH se fait en le dnissant comme interprteur de commandes pour les utilisateurs concerns. Si jai un serveur sur lequel je veux uniquement autoriser les utilisateurs copier des chiers du serveur via scp sans leur donner un access shell, je peux utiliser rssh. Reposant sur ssh et chroot il en possde les mme atot, contraintes, limitation (trous de scurit potentiels... :)

11.2.21. Exercice - valuation


Source(s):

OF: SR004-net01-ch15-exercice3.pdf (docs/eof/sr004-net01-ch15-exercice3.pdf)

11.2.22. VoIP : Le protocole sip


Source(s):

Web: Session Initial Protocole (SIP) (http://en.wikipedia.org/wiki/Session_Initiation_Protocol) VoIP Info (http://www.voip-info.org) VoIP in depth : Introductino to SIP Protocol (http://arstechnica.com/business/news/2010/01/voip-in-depth-an-introduction-to-the-sip-protocol-part1.ars) how SIP won the VoIP protocol wars (http://arstechnica.com/business/news/2009/12/wired-for-sound-how-sip-won-the-voip-protocolwars.ars) Comparaison: XMPP vs SIP (http://blog.radvision.com/voipsurvivor/2008/11/27/is-there-a-new-successor-to-sip) XMPP vs SIMPLE: The race for messaging standards (http://www.infoworld.com/t/platforms/xmpp-vs-simple-race-messaging-standards-295?page=0,0) SIP Softphone: Twinkle installation QuteCom installation X-Lite installation

337

Chapitre 11. SR004 Interconnecter un rseau TCP/IP Standardis par lIETF Bas sur les standards du web HTTP, DNS, etc... SIP est bas sur les sessions Tous les messages SIP transitent sur une architecture point--point (peer-to-peer) Extensible, il supporte la diffusion de media (audio, vido, ...) - SIMPLE extension

11.2.23. VoIP : Le protocole XMPP (anciennement nomm Jabber)


Source(s):

Web: XMPP Foundation (http://xmpp.org/) Comparaison: XMPP vs IRC (http://wiki.jabberfr.org/Comparatif_entre_MUC_et_IRC) XMPP vs SIP (http://blog.radvision.com/voipsurvivor/2008/11/27/is-there-a-new-successor-to-sip) XMPP vs SIMPLE (SIP): The race for messaging standards (http://www.infoworld.com/t/platforms/xmpp-vs-simple-race-messaging-standards-295?page=0,0)

Standardis par lIETF Bas sur XML et code ouvert (open source) XMMP est bas sur la prsence Tous les messages XMMP passent par un serveur central... supervision... Extensible, il supporte la diffusion de mdia (audio, video, ...)

338

Chapitre 11. SR004 Interconnecter un rseau TCP/IP

11.3. IPv6
11.3.1. Introduction
Cest par ici : Hacking 2010-05 Num 09 : Mcanismes IPv6 avancs p.40 (http://download.hakin9.org/fr/hakin9_05_2010_FR.pdf)

11.3.2. Tester votre connexion IPv6, faite danser la tortue :)


Cest par ici : http://www.kame.net, JP la fait en 2007 dj (http://jp.gaulier.info/blog/index.php?post/2007/12/26/249)..., pourquoi pas vous(nous) !

339

Chapitre 12. SR005 - Administrer un serveur DNS


Le but de ce module est de fournir les connaissances ncessaires la mise en place dun serveur DNS.

12.1. Lespace de noms - Arborescence DNS


Figure 12-1. DNS: Arborescence du Domain Name System

La structuration du systme DNS sappuie sur une structure arborescente dans laquelle sont dnis des domaines de niveau suprieurs (appels TLD, pour Top Level Domains), rattachs un noeud racine reprsent par un point. On appelle nom de domaine chaque noeud de larbre. Chaque noeud possde une tiquette (en anglais label) dune longueur maximale de 63 caractres. Lensemble des noms de domaine constitue ainsi un arbre invers o chaque noeud est spar du suivant par un point ( . ).

340

Chapitre 12. SR005 - Administrer un serveur DNS Lextrmit dune branche est appele hte, et correspond une machine ou une entit du rseau. Le nom dhte qui lui est attribu doit tre unique dans le domaine considr, ou le cas chant dans le sous-domaine. A titre dexemple le serveur web dun domaine porte ainsi gnralement le nom www. Le mot domaine correspond formellement au sufxe dun nom de domaine, cest--dire lensemble des tiquettes de noeuds dune arborescence, lexception de lhte. Le nom absolu correspondant lensemble des tiquettes des noeuds dune arborescence, spares par des points, et termin par un point nal, est appel adresse FQDN (Fully Qualied Domain Name, soit Nom de Domaine Totalement Quali). La profondeur maximale de larborescence est de 127 niveaux et la longueur maximale dun nom FQDN est de 255 caractres. Ladresse FQDN permet de reprer de faon unique une machine sur le rseau des rseaux. Ainsi www.commentcamarche.net. reprsente une adresse FQDN.

12.2. DNS : Domain Name Server (Server de noms)


Source(s):

OF: SR005-ch02-dns.pdf (docs/eof/sr005-ch02-dns.pdf) Web: Domain Name System (DNS) (http://fr.wikipedia.org/wiki/Domain_Name_System) DNS Comment a Marche (http://www.commentcamarche.net/contents/internet/dns.php3) DNS, Domaine, Zone, Dlgation dautorit (Jean-Philippe Gaulier) (http://jp.gaulier.info/cnam/inge/memoire.pdf) [Hors-Ligne] (docs/eof/annexe-memoire-JP-Gaulier.pdf)

Les machines appeles serveurs de nom de domaine permettent dtablir la correspondance entre le nom de domaine et ladresse IP des machines dun rseau. Chaque domaine possde un serveur de noms de domaines, appel serveur de noms primaire (primary domain name server), ainsi quun serveur de noms secondaire (secondary domaine name server), permettant de prendre le relais du serveur de noms primaire en cas dindisponibilit. Chaque serveur de nom est dclar dans un serveur de nom de domaine de niveau immdiatement suprieur, ce qui permet implicitement une dlgation dautorit sur les domaines. Le systme de nom est une architecture distribue, o chaque entit est responsable de la gestion de son nom de domaine. Il nexiste donc pas dorganisme ayant charge la gestion de lensemble des noms de domaines. Les serveurs correspondant aux domaines de plus haut niveau (TLD) sont appels serveurs de noms racine . Il en existe treize, rpartis sur la plante, possdant les noms a.root-servers.net m.root-servers.net .

341

Chapitre 12. SR005 - Administrer un serveur DNS

12.2.1. Protocole DNS (port 53, UDP/TCP)


Un protocole qui va faire la correspondance entre un nom de machine (mmorisable par un humain) et son adresse IP (et vice-versa). Ce mcanisme, appel rsolution de noms, est fourni par le protocole Domain Name System (DNS).

Avertissement
Ce service est, aprs le routage IP, la partie la plus critique et importante dun rseau.

Le protocole DNS est dni par lIETF dans une dizaine de RFC, mais les grands principes sont prsents dans les RFC 1034 (http://www.ietf.org/rfc/rfc1034.txt) et 1035 (http://www.ietf.org/rfc/rfc1035.txt). La rsolution DNS se fait par lenvoi dune question et la rception dune rponse depuis le serveur. Utilise le port 53 et les protocoles UDP (le plus souvent) et TCP (si question DNS >= 512 octets)

12.2.2. Rsolution de Nom - Mcanisme de dlgation


Le mcanisme consistant trouver ladresse IP correspondant au nom dun hte est appel rsolution de nom de domaine. Lapplication permettant de raliser cette opration (gnralement intgre au systme dexploitation) est appele rsolveur (en anglais resolver ). Lorsquune application souhaite se connecter un hte connu par son nom de domaine (par exemple www.commentcamarche.net ), celle-ci va interroger un serveur de noms dni dans sa conguration rseau. Chaque machine connecte au rseau possde en effet dans sa conguration les adresses IP de deux serveurs de noms de son fournisseur daccs. Si une requte DNS porte sur un domaine compltement extrieur, le serveur local ne va pouvoir y rpondre directement, il va aller poser la question un autre serveur DNS responsable du domaine en question. Une requte est ainsi envoye au premier serveur de noms (appel serveur de nom primaire ). Si celui-ci possde lenregistrement dans son cache, il lenvoie lapplication, dans le cas contraire il interroge un serveur racine (dans notre cas un serveur racine correspondant au TLD .net ). Le serveur de nom racine renvoie une liste de serveurs de noms faisant autorit sur le domaine (dans le cas prsent les adresses IP des serveurs de noms primaire et secondaire de commentcamarche.net).

342

Chapitre 12. SR005 - Administrer un serveur DNS La dlgations t mis en place car :

Il est impossible de stocker les donnes DNS du monde entier sur une seule machine, le rsultat serait norme en ressources disque (ou de traitement). a ne correspond pas lesprit originel dInternet (ou plutt dArpanet) o le rseau doit fonctionner correctement mme si des liens taient tombs ou des services injoignables. Il y aurait en permance des problmes de synchronisation.

Chaque serveur ne connat que la zone qui lui a t dlgue (son rseau local par exemple).
Note : Pour viter ces nombreuses requtes chaque question, des caches sont utilises au niveau des diffrents serveurs. Ainsi, si on a dj pos la question, la rponse sera immdiate.

12.2.3. Terminologie

Serveurs autoritaire (ou primaire) : Un serveur DNS en charge des informations dun domaine, cest--dire quil na besoin de contacter personne pour rpondre une question au sujet de sa zone. Serveurs secondaire : serveur autoritaires, mais ce sont des simples miroirs : ils nont quun droit de lecture seule sur les donnes. A loppos des serveurs primaires qui est un serveur autoritaire pour un domaine et est le matre . Pour un serveur secondaire, il suft dindiquer qui est le matre de la zone et la zone va tre automatiquement transfre vers lui.

Zone : domaine pour lequel un serveur DNS est autoritaire. Serveurs de cache (ou esclaves), "forwarders" : Loppos des serveurs autoritaires. Serveurs DNS ne possdant pas dinformation propre. Ils ne savent que poser des questions lextrieur et les mettre en cache pour acclrer les prochaines questions. Ils ont un rle de forwarder et sont (gnralement) rcursifs. Resolver : mcanisme/processus par lintermdiaire duquel la rsolution de nom par le client est faite.

12.2.4. Messages DNS (Enveloppe)


La structure dun message DNS est dnie prcisement dans la RFC 1035 (http://www.ietf.org/rfc/rfc1035.txt).

343

Chapitre 12. SR005 - Administrer un serveur DNS On peut envoyer une ou plusieurs questions dans un mme message DNS pour gagner du temps. Ainsi, il est ncessaire davoir une enveloppe DNS annoncant ce qui arrive (champs QDCOUNT indique le nombre de question). Voir le poly of pour plus de dtail et la schmatique. Lenveloppe contient un identiant(suppos unique), le nombre de questions ou de rponses et diverses options la suite de cette enveloppe, on trouve des ressources records (RR) ou enregistrements qui sont les donnes utiles (questions, rponses, erreurs, etc.). Diffrents types de requtes et principaux enregistrements DNS (http://fr.wikipedia.org/wiki/Domain_Name_System#Principaux_enregistrements_DNS) :
A AAAA NS CNAME SOA PTR 1 Nom vers Addresse IPv4 Nom vers Addresse IPv6

[rsolution dun nom de domaine en une adresse IP

2 Rcupre le nom du serveur autoritaire dun domaine 5 Alias 6 Zone dAutorit [se renseigner sur une zone] 12 Adresse vers nom [requtes DNS inverses : adresse IP vers un ou des nom(s) de domaine] [connatre la machine responsable des mails]

MX TXT

15 Rcupration du serveur de mail 16 Chane de caractres

[peuvent contenir des clefs de chiffrement publiq des informations pour lutter contre le spam (connatre les serveurs de mail sortant) se frayer un tunnel pour contourner les firewall

...

Note : La requte la plus courante, la rsolution de nom, est une requte de type A. Une requte inverse est de type PTR .

12.2.5. Liste des serveurs DNS existant


Plusieurs implmentations de serveurs DNS existent :

bind (http://www.isc.org) (autoritaire ou cache) : "Berkeley Internet Name Domain" est lanctre de tous les serveurs, fonctionnalits intressantes, en retard sur quelques points comme le stockage des zones, le plus respectueux des RFC, le plus compatible avec tous les clients et autres serveurs.

344

Chapitre 12. SR005 - Administrer un serveur DNS Dvelopp initialement par luniversit de Berkeley en Californie BIND est dsormais maintenu par lISC (Internet Systems Consortium).

PowerDNS (http://www.powerdns.com) (autoritaire seulement !) : le plus avanc en terme de fonctionnalits, possibilit de stocker les zones dans des bases de donnes ou de faciliter le load balancing. Doute que leur code ait t audit autant que celui de bind. Politique de scurit (http ://doc.powerdns.com/security-policy.html). MaraDNS (http://www.maradns.org) (autoritaire ou cache) : conu lorigine pour tre un serveur scuris. djbDNS (http://cr.yp.to/djbdns.html) (autoritaire ou cache) : rput pour sa scurit, pas compatible sur certains points (comme le transfert de zones) avec dautres serveurs classiques, licence non libre.

12.2.6. Installation & Maintenance


12.2.6.1. Matriel
Le service DNS nest pas consommateur en ressources, La seule chose importante est davoir une carte rseau correcte. Une simple machine bas de gamme (mais able!) est sufsante, un surplus de RAM nest pas de refus ;-)

12.2.6.2. Choix de version & Installation des paquets ncessaires


La meilleure solution de serveur DNS, par sa maturit et ses fonctionnalits, est bind (Berkeley Internet Name Domain). Pour bncier de fonctionnalits volus (comme les views, les acls,...) il faut utiliser la version stable 9.X .

Avertissement
Pour ne pas se tromper lors de la mise en place de votre serveur, toujours choisir la version fournie par votre distribution en utilisant les paquets crs. Vous serez ainsi sr de toujours avoir une version jour dun point de vue scurit.

Sous Debian GNU/Linux, le paquets bind9 et bind9-host (pour vous aider dans le debugging) peuvent tre installs.
Note : bind9-host fournit le programme host intgr avec les sources de BIND 9.X. Cette version est diffrente de celle livre dans le paquet host , qui est de NIKHEF, et possde un ensemble similaire (mais diffrent) de fonctionnalits/options.

345

Chapitre 12. SR005 - Administrer un serveur DNS

# Paquets disponible sous Debian $ apt-cache search ^bind9 bind9 - Internet Domain Name Server bind9-doc - Documentation for BIND bind9-host - Version of host bundled with BIND 9.X bind9utils - Utilities for BIND libbind9-40 - BIND9 Shared Library used by BIND

# Installation des paquets ncessaires

$ apt-get install bind9 bind9-doc bind9-host Lecture des listes de paquets... Fait Construction de larbre des dpendances Lecture des informations dtat... Fait bind9-host est dj la plus rcente version disponible. Les paquets supplmentaires suivants seront installs : bind9utils Paquets suggrs : resolvconf ufw Les NOUVEAUX paquets suivants seront installs : bind9 bind9-doc bind9utils 0 mis jour, 3 nouvellement installs, 0 enlever et 15 non mis jour. Il est ncessaire de prendre 601ko dans les archives. Aprs cette opration, 2048ko despace disque supplmentaires seront utiliss. Souhaitez-vous continuer [O/n] ? O Rception de : 1 http://security.debian.org lenny/updates/main bind9utils 1:9.5.1.dfsg.P3-1+ Rception de : 2 http://security.debian.org lenny/updates/main bind9 1:9.5.1.dfsg.P3-1+lenny Rception de : 3 http://security.debian.org lenny/updates/main bind9-doc 1:9.5.1.dfsg.P3-1+l 601ko rceptionns en 1s (530ko/s) Prconfiguration des paquets... Slection du paquet bind9utils prcdemment dslectionn. (Lecture de la base de donnes... 144884 fichiers et rpertoires dj installs.) Dpaquetage de bind9utils ( partir de .../bind9utils_1%3a9.5.1.dfsg.P3-1+lenny1_i386.deb) . Slection du paquet bind9 prcdemment dslectionn. Dpaquetage de bind9 ( partir de .../bind9_1%3a9.5.1.dfsg.P3-1+lenny1_i386.deb) ... Slection du paquet bind9-doc prcdemment dslectionn. Dpaquetage de bind9-doc ( partir de .../bind9-doc_1%3a9.5.1.dfsg.P3-1+lenny1_all.deb) ... Traitement des actions diffres ( triggers ) pour man-db ... Paramtrage de bind9utils (1:9.5.1.dfsg.P3-1+lenny1) ... Paramtrage de bind9 (1:9.5.1.dfsg.P3-1+lenny1) ... Ajout du groupe bind (identifiant 118)... Termin. Ajout de lutilisateur systme bind (identifiant : 113)... Ajout du nouvel utilisateur bind (identifiant : 113) avec le groupe bind ... Rpertoire personnel /var/cache/bind non cr. wrote key file "/etc/bind/rndc.key" # Starting domain name service...: bind9.

346

Chapitre 12. SR005 - Administrer un serveur DNS


Paramtrage de bind9-doc (1:9.5.1.dfsg.P3-1+lenny1) ...

12.2.6.3. Maintenance hebdomadaire


Ajout/Suppression d entres dans la zone du rseau Administration classique de la machine (lecture des logs, mise a jour, etc.) Ncessite uniquement une bonne comprhension des rseaux IP et la lecture les pages de manuel.

12.2.7. Documentation
Source(s):

Web: BIND 9 Administrator Reference Manual (9.3.2) (http://www.bind9.net/manuals) DNS Bind9 (Wikipedia) (http://wiki.kartbuilding.net/index.php/DNS_-_Bind9) DNS HowTo (http://www.tldp.org/HOWTO/DNS-HOWTO.html) Bind9 Howto (Mise en place) (http://snow-seb.9online.fr/bind_v2.htm) Example de conguration de base (Ubuntu-fr) (http://doc.ubuntu-fr.org/bind9) Securing an Internet Name Server (http://www.cert.org/archive/pdf/dns.pdf) Documents de rfrence (http://www.linux-france.org/prj/inetdoc/cours/admin.reseau.dns/admin.reseau.dns.refdocs.html)

# Naviguer en local dans BIND 9 Administrator Reference Manual file:///usr/share/doc/bind9-doc/arm/Bv9ARM.html man named man named.conf man host man dig # Aide sur le serveur DNS # Aide sur le fichier de configuration # Aide sur la commande host # Aide sur la command dig

12.2.8. Conguration
La conguration de bind nest base que sur des chiers textes /etc/bind/named.conf dcrit toutes les zones et options du serveur.

347

Chapitre 12. SR005 - Administrer un serveur DNS Peauner la conguration pour quelle corresponde vos besoins (ajout de serveurs secondaires, transfert de zone, limitation des zones, dlgations, etc.). Pour brider votre serveur, il va falloir utiliser les directives allow-transfer, allow-query, allow-recursion ou allow-notify...

12.2.8.1. Options
Liste des options disponibles : En local (le:///usr/share/doc/bind9-doc/arm/Bv9ARM.ch06.html#id2576862) En ligne (http://www.bind9.net/manual/bind/9.3.2/Bv9ARM.ch06.html#id2554668)
options { directory "/var/cache/bind"; allow-query { 10.10.0.0/24; 127.0.0.1;}; allow-transfer { none; } ; allow-recursion { 10.0.0.0/24; 127.0.0.1;} ; };

# # # # # #

Repertoire de cache Htes autoriss faire des requtes DNS Htes autoriss recevoir des transfert de zone depuis ce server Htes autoriss faire des requtes recursives sur ce serveur

12.2.8.2. Zones
Ensuite, pour chaque zone, indiquer le type de service propos : autoritaire ou secondaire. 12.2.8.2.1. Zone de serveur de cache (Forwarders) : Servie par un autre serveur (DNS FAI) Si vous ntes ni le serveur matre, ni le serveur esclave dune zone mais que vous savez qui contacter sans passer par linterrogation des root-servers (exemple des zones internes dune entreprise divise en de nombreux dpartements), vous pouvez donner un ou plusieurs forwarders.
// on sait que la zone hq.bar.org est servie // par 10.0.0.2 donc posons lui nos questions ! zone "hq.bar.org" { type forward; forwarders { 10.0.0.2;}; # DNS du FAI };

Note : Ce type de directive est souvent utilis lorsque vous tes un serveur de cache : Vous transmettez toutes vos requtes au serveur dns de votre fournisseur daccs qui se chargera dinterroger les root-servers votre place, ne vous laissant plus qu mettre en cache la rponse.

348

Chapitre 12. SR005 - Administrer un serveur DNS 12.2.8.2.2. Zone de serveur secondaire (Autoritaire non Matre) Les serveurs secondaires qui sont autoritaires, sont de simples miroirs : ils nont quun droit de lecture seule sur les donnes. Ainsi, pour un serveur secondaire, il suft dindiquer qui est le matre de la zone et la zone va tre automatiquement transfre vers lui. Pareil, si une modication est faite de la zone sur le serveur autoritaire, le serveur secondaire est noti du changement et un transfert de zone a de nouveau lieu.

// Serveur secondaire pour la zone foo.bar.org // en interogeant le matre 10.2.3.4 zone "foo.bar.org." { # Dfinit la zone type slave; # Dfinit comme serveur secondaire pour cette zon masters { 10.2.3.4; }; # Serveurs matres };

12.2.8.2.3. Zone de serveur primaire (Autoritaire Matre) Pour le serveur primaire, le chemin vers le chier qui contient la zone doit tre prcis.

zone "testme.fr" { notify no; type master; # Nous sommes le matre (autoritaire) de la zone testme file "/etc/bind/db.testme.fr"; # Zone dcrite dans le fichier db.testme.fr. };

Fichier db.testme.fr
;;PREAMBULE $TTL 604800 @ IN SOA

; "Time to Life" (Hrs) fix une semaine (604800/3600/24) par dfau

ns0.testme.fr. hostmaster.testme.fr. ( ; @ est un raccourci pour dsigner cette zone. ; IN = Internet ; "Start Of Autority" (SOA), se dclare autoritaire pour ; la zone nomme dans le fichier de conf. named.conf (testme.fr) ; ns0.testme.fr : serveur primaire responsable de cette zone ; hostmaster.testme.fr : adresse email de ladministrateur du servic ; (remplacer premier . par @)

2005081100

; ; ; ; ;

numro de srie ( version de la zone ) utilis lors du transfert de zone concatner lanne (sur quatre chiffres), le mois, le jour et un numro sur deux chiffres (incrment chaque changement si le mme jour).

8H

; rafraichissement (refresh) :

349

Chapitre 12. SR005 - Administrer un serveur DNS


; ; ; ; ; ; ; ; ; ; temps de rafraichissement minimal pour la zone. Ici 8 heures. La valeur recommande est de 24 heures. essai (retry) : temps dattente avant de ressayer en cas dchec. Ici, 2 heures. La valeur recommande est de 2 heures. expiration (expire) : le temps dexpiration, la dure de validit maximale de la zone. Ici, 1 semaine. La valeur recommande est de 1000 heures. minimum : valeur TTL minimum Ici, 1 jour. La valeur recommande est de 2 jours.

2H

1W

1D )

;;DATA ;Chaque ligne dcompose en quatre parties : ;C1: ;C2: ; ;C3: ;C4: ;C1 Nom denregistrement (on le dfinit), si partie est vide, elle dsigne lobjet courant Classe denregistrement, toujours la classe IN (pour Internet) moins dun environement exotique. Type denregistrement, A,NS, MX, CNAME, etc. La donne en dernire colonne ;C2 ;C3 TXT ;C4 "Private Network"

; Dcrit la zone @ (soit testme.fr) ; ; "Name Serveur" (NS) ;

NS NS

ns0.testme.fr. ns1.testme.fr.

;;Syntaxe ; mondomaine.fr. IN NS ns1.domaine.fr.; Dclarer ns0.domaine.fr responsable ; du domaine mondomaine.fr MX MX 10 20 mx1 mx.monfai.fr. ; ; ; ; ;

Service mail [Mail eXchanger (MX)] Pour rcuprer laddresse de la machine en charge de pour envoyer un mail un nom de domaine quivaut testme.fr. MX 10 mx0 testme.fr. MX 20 mx1

; Ici 10 et 20 indiquent la priorit ; le serveur avec la plus petite priorit ; est utilis en premier homer IN A 10.0.0.42 ; ; ; ; Simple nom de machine homer (appartenant au domaine @ ou testme.fr) pointe vers adresse IPv4 de classe IN 10.0.0.42 quivaut homer.testme.fr. IN A 10.0.0.42

homer

IN AAAA 2001:660:305:1::1:2

; Enregistrement daddresse IPv6 ; pour la machine homer ; Enregistrement de la machine ; maggie.testme.fr ; marge.testme.fr

maggie

IN A

10.0.0.33

marge

IN A

10.0.0.88

350

Chapitre 12. SR005 - Administrer un serveur DNS


ns0 ns1 IN A IN A 10.0.0.40 10.0.0.41

;; Pour les addresses IPv4 utiliser record type A ;; Pour les addresses IPv6 utiliser record type AAAA www cvs IN CNAME homer IN CNAME homer ; "Canonical Name" (CNAME) Alias dfinition ; www.testme.fr et cvs.testme.fr pointe vers homer

12.2.8.2.4. Resolution DNS Inverse : Adresse vers nom de domaine partir dune adresse IP, nous pouvons lui faire correspondre un nom de domaine. Similairement la hirarchie de rsolution classique, nous avons les mmes mcanismes pour les requtes inverses. Pour rsoudre 10.0.0.42, on utilise une zone spciale, in-addr.arpa comme racine et on descend dans larbre
// Provide a reverse mapping for the loopback address 127.0.0.1 zone "0.0.127.in-addr.arpa" { type master; file "localhost.rev"; notify no; };

12.2.8.2.5. Alias : "Canonical Name" (CNAME) Lorsque vous tes client dun rseau, il est toujours recommand dutiliser des noms de services comme adresse plutt que les vritables noms de machine. Dune part car il est plus facile et logique de mmoriser cvs.testme.fr plutt que homer.testme.fr mais surtout car le service CVS pourrait tre dplac sur un autre serveur.
www cvs IN CNAME homer IN CNAME homer ; "Canonical Name" (CNAME) Alias dfinition ; www.testme.fr et cvs.testme.fr pointe vers homer

Avertissement
!!!Attention!!! Les "Canonical Name" (CNAME) ne doivent jamais se trouver sur la partie droite dun enregistrement.

351

Chapitre 12. SR005 - Administrer un serveur DNS 12.2.8.2.6. Serveur de nom : "Nameserver" (NS) Un enregistrement Nameserver (NS) sert dclarer les serveurs DNS responsables dun nom de domaine. Ici,on ne fait pas de diffrenciation entre les serveurs primaires ou secondaires, ils doivent simplement tre autoritaires.
mondomaine.fr. IN NS ns0.domaine.fr.

Note : Pour un enregistrement NS le systeme attends un nom dhte... et pas une adresse IP... Il faudra toujours mettre un nom dhte la place de 192.3.2.3 par example ! Voici les passages de la RFC 1035 indiquant quune une ressource NS est forment un nom dhte :
,---| 3.3.11. NS RDATA format | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | / NSDNAME / | / / | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | where: | | NSDNAME A <domain-name> which specifies a host which should be | authoritative for the specified class and domain. ---Puis : ,---| <domain-name> is a domain name represented as a series of labels, and | terminated by a label with zero length. <character-string> is a single | length octet followed by that number of characters. <character-string> | is treated as binary information, and can be up to 256 characters in | length (including the length octet). ----

12.2.8.3. Transfert de Zone & Numros de srie


Source(s):

Web: DNS Zone Transfer (http://en.wikipedia.org/wiki/DNS_zone_transfer)

352

Chapitre 12. SR005 - Administrer un serveur DNS Transfert de Zone DNS, est souvent connu sous son nom de code menmonique AXFR, cest un type de transaction DNS.
$ dig yourdomain.com AXFR # # # # Si le domaine questionn permet les transferts DNS, il est possible de les obtenir :) Mais sur Internet, trs peu de domaine autorise de faon libre et unlimit le transfert de zone.

Cest un des mcanisme disponible ladminsitrateur pour procder la replication des bases de donnes contenant les donnes et enregistrement DNS travers un groupe de server DNS. Le transfert de Zone peut-tre de deux type : complet (opcode AXFR) ou incrmentale (IXFR). La partie prambule dune zone de transfert repose sur le numro de srie, et uniquement le numro de srie,pour dterminer si les donnes de la zone ont chang et donc que la zone requiert un transfert. Pour certains serveur DNS, le numro de srie des enregistrement de type SOA sont maintenu manuellement par les administrateurs. Chaque edition de changement de donne requierts deux changement : un sur lenregistrement changer et lautre sur le numro de srie de la zone. Ceci peut-tre laborieux et sujet erreur, ladminstrateur peut oublier de changer le numro de srie ou le changer de faon incorrect (en le diminuant ou en laugmentant trop).

Avertissement
Lorsquun serveur DNS reoit une mise jour directement (soit partir de ladministrateur, ou via les mises jour dynamiques) son numro de srie doit toujours tre augment .

Lorsquun serveur DNS reoit une mise jour via un transfert de zone :

Si le numro de srie spci dans le dbut de lautorit denregistrement SOA de la copie rplique de la zone est suprieur au numro de srie est spci dans lenregistrement SOA la copie locale de la zone, la zone sera rpliqu (transfert de zone). Si le numro de srie de la zone rplique est identique ou infrieur au numro de srie de la zone local, la zone local reste inchange.

12.2.9. Conguration dun serveur DNS sur le net


Cette conguration est possible , si vous possdez une IP xe ainsi quun nom de domaine. Dans ce cas, il faut renseigner au registrar lIP du serveur DNS.

353

Chapitre 12. SR005 - Administrer un serveur DNS Pour un rseau dentreprise qui possde parfois plusieurs IP publiques , avoir son propre serveur DNS peut savrer tres utile. En effet puisque lon gre de faon autonome son domaine, on peut dnir les noms et alias pour chaque IP publique. Il sufra de crer une zone de notre domaine. La zone inverse tant gre par le registrar , que vous pouvez bien souvent modier via linterface web dadministration sur le site du registrar. Pour lexemple, notre domaine aura pour nom mydomain.com :
$ORIGIN . $ttl 38400 mydomain.com.

IN

$ORIGIN mail www webmail www ftp

SOA mydomain.com. root.mydomain.com. ( 2004110129 5400 3600 604800 38400 ) NS ns.mydomain.com. NS ns.anotherdomain.com. MX 10 mail.mydomain.com. MX 20 mail.anotherdomain.com. A 123.45.67.89 mydomain.com. A 123.45.67.89 123.45.67.90 CNAME mail CNAME www CNAME www

Comme on peut le remarquer le chier de zone est peu prs similaire au chier de zone vu prcedement. On remarque quil y a deux champs NS et MX. Il sagit tout simplement des serveurs DNS (NS) et de courrier (MX) primaires et secondaires, toujours utile en entreprise. Dans lexemple , nous possdons deux adresses IP publiques 123.45.67.89 et 123.45.67.90. Un serveur mail sera hberg sur mail.mydomain.com (123.45.67.89) et un serveur web www.mydomain.com (123.45.67.90). On indique donc, le nom et ladresse IP du serveur correspondant par un champ A. On peut par la suite indiquer des alias grce aux champs CNAME.

354

Chapitre 12. SR005 - Administrer un serveur DNS

12.2.10. Pige viter


Source(s):

Web: Common DNS Operational and Conguration Errors [RFC1912] (http://www.ietf.org/rfc/rfc1912.txt)

Il existe des dizaines de piges mais vous les cultiverez avec le temps et lexprience, la RFC1912 (http://www.ietf.org/rfc/rfc1912.txt) documente les principales erreurs. Lors de la conguration, attention au caractre . (le point). Loubli ou lajout du point dans les noms de domaines est lerreur la plus frquente. Il est dune importance primordiale et vous vous ferez piegez coup sr. Rgle dor : si un nom ne se termine pas par un point, alors cela ajoute la n le domaine courant, autrement, on dsigne le nom pleinement quali "Fully Qualied Domain Name" (FQDN). Lorsqu un nom (homer, marge, etc) est dnit, il nest donc pas ncessaire dajouter la n de chaque nom de machine le domaine courant. Un autre oubli est de ne pas incrmenter le numro de srie de la zone lorsque vous la modiez, ce qui a pour consquence de ne pas mettre jour les serveurs secondaires si vous en avez. Un bon schma suivre pour crire ce serial est de concatner lanne (sur quatre chiffres), le mois, le jour et un numro sur deux chiffres. Par exemple, pour le 18 aot 2005 : 2005081800. Cette numrotation permet dtre assur que les numros de sries se suivent de facon cohrente et quil ny a pas derreur. Si dans une journe, vous fates plus dune modication, incrmentez simplement les deux derniers chiffres. Et si cest une autre journe, rcrivez intgralement le numro de srie : le 20 aot 2005 (2005082000) est forcment suprieur celui du 18 aot car 2005082000 > 2005081800. Ne pas oublier quun alias (CNAME) ne doit pas tre dans la partie droite dun enregistrement. Ainsi, pas de MX pointant sur un CNAME (erreur la plus frquente).

12.2.11. Outils de diagnostique et de vrication de la conguration


Lerreur est humaine et cest bien pour cela quil faut shabituer lutilisation doutils de diagnostique et de logiciels de vrication de zone

12.2.11.1. Outils de ligne de commande


Pour effectuer des requtes manuelles sur des serveurs DNS :

### dig # Le "Domain Information Groper" (dig) est la plus complte et flexible des commandes de dia

355

Chapitre 12. SR005 - Administrer un serveur DNS

Syntaxe : dig [@server] domain [query-type] [query-class] [+query-option] [-dig-option] [%co # The usual simple use of dig will take the form dig @server domain query-type query-class man dig # Pour plus dinfo ;-)

### host # Lutilitaire host (simple et facile) convertit des nom dhte en addresse IP

Syntaxe : host [-aCdlrTwv] [-c class] [-N ndots] [-t type] [-W timeout] [-R retries] hostnam man host # Pour plus dinfo ;-)

### nslookup [Il est recommend dutiliser dig au lieu de nslookup] # Permet de questionner des serveurs DNS pour obtenir des informations sur des htes et doma Syntaxe : nslookup [-option...] [[host-to-find] | [- [server]]]

12.2.11.2. Logiciel de vrication de zone


ZoneCheck (http://www.zonecheck.fr/) : est lun des meilleurs logiciels de vrication de zone. Le programme ZoneCheck effectue plusieurs tests sur la zone (domaine) an de sassurer que celle-ci est correctement congure et peut tre dlgue sans risque, fournissant un certain degr de qualit votre domaine.

12.2.11.3. Outils dadminsitration


### named-checkconf # Programme de vrification de la syntaxe du fichier named.conf $ named-checkconf [-jvz] [-t directory] [filename]

### named-checkzone # Programme de vrification de la syntaxe et cohrence du fichier de lautorit matre $ named-checkzone [-djqvD] [-c class] [-o output] [-t directory] [-w directory] [-k (ignore|warn|fail)] [-n (ignore|warn|fail)] zone [filename]

### rndc # Le "Remote Name Daemon Control" (rndc) programme permet ladminsitrateur # systme de controller les oprations du serveur de nom. $ rndc [-c config] [-s server] [-p port] [-y key] command [command...]

356

Chapitre 12. SR005 - Administrer un serveur DNS

12.2.12. Commandes utiles


12.2.12.1. Vrier les chiers de conguration et Zone
# Vrifier configuation du serveur $ named-checkconf /etc/bind/named.conf # Vrifier configuation dune zone $ named-checkzone blabla.mondomaine.lan /etc/blind/db.blabla.mondomaine.lan

12.2.12.2. Start, Restart, Stop


$ /etc/init.d/bind9 start $ /etc/init.d/bind start # restart | stop # Alternative

12.2.12.3. Flush DNS cache


$ rndc flush $ ndc flush $ /etc/init.d/nscd restart $ service nscd restart $ rndc restart $ rndc exec # Efface la cache dun serveur DNS # Bind9 # Bind8 # Flush DNS # Alternative parfois

# Avec un veille version # Alternative

Dans une machine virtuelle Netkit, il semble quaucune des ces commande ne soite disponisble. Le seul moyen que jai trouv cest de redmarrer tout le lab pour faire un ush DNS sur le machine virtuelle... ce qui est un peu trop barbare ... comment le faire hote par hote ?
# # # # Dans une Machin Virtuelle Netkit... Trouver le fichier named_dump.db et le supprimer Cest une autre solution barbare mais qui peut fonctionner hte par hte... :)

12.2.12.4. Reload conguration sans re-dmarrer


$ rndc reload domain-name-of-zone $ ndc reload domain-name-of-zone $ rndc reload foo.example bar.example # Bind9 # Bind8 # Recharger plusieurs zones

357

Chapitre 12. SR005 - Administrer un serveur DNS

$ /etc/init.d/bind9 reload

12.2.13. Verication du bon fonctionnement du serveur


Avant de lancer le serveur , il faut modier le chier /etc/resolv.conf sur toutes les machines clientes. Il faut indiquer le nom du domaine et ladresse IP du serveur DNS :
#/etc/resol.conf search maison.local nameserver 192.168.0.1

Pour vrier que notre serveur rsout bien les noms du rseau , il faut utiliser lutilitaire dig :
## Requte sur le champ A de machine1.maison.lan $ dig @192.168.0.1 machine1.maison.lan A # # # # # Dig va retourner une srie dinformations, celle qui nous intresse est "ANSWER SECTION" Si elle est absente ou errone, cest que vous vous tes tromps quelques part (srement un point oubli la fin des noms de domaines)

## Requte inverse sur lIP 192.168.0.3 $ dig @192.168.0.1 -x 192.168.0.3

12.2.14. Slow DNS lookup issues with bind9


Source:http://wiki.kartbuilding.net/index.php/DNS_-_Bind9#Slow_DNS_lookup_issues_with_bind9

If ping or netstat etc. takes a long time to return an ip - there is a problem. Carry out th dig www.burkesys.com

Identify the time taken. Try the same test on a different computer (your local one etc.). If

Solutions: Disable ipv6 on Debian Sarge, or Disable ipv6 bind lookup, or use a different dns It is difficult to cleanly disable ipv6 on Sarge, requiring reboot and trial and error.

358

Chapitre 12. SR005 - Administrer un serveur DNS

In order to Disable ipv6 lookup on bind9 with Debian Sarge - a recompile is required. If you The default bind9 that ships with Debian Etch (9.3.2-P1.0-1) can easily be configured to use

vi /etc/default/bind9 OPTIONS="-4 -u bind" //-4 = to use ipv4 only.

As I was using Debian Sarge, and wanted a quick solution to my DNS lookup times, I decided t search domainname.com nameserver 43.111.98.12 nameserver 43.111.21.45

Bind will still serve out all domain names when requested. The above simply uses the ISPs d

12.2.15. Architecture de Service DNS


Larchitecture du service DNS sera diffrente suivant si cest un serveur autoritaire, primaire, secondaire ou simplement de cache. Le point essentiel lors du dploiement des machines est le principe du moindre privilge, dans labsolu, il faudrait une machine par service. Ce rseau de serveurs devrait lui-mme tre contenu dans un rseau part entire (diffrent du rseau des machines clientes) (DMZ, ou zone dmilitarise). Il en est de mme pour le DNS, si possible, il faut un serveur pour traiter les requtes autoritaires , un autre pour les clients internes de votre rseau (pour leur servir de cache) et, dans le meilleur des mondes, un serveur de cache uniquement pour servir votre DMZ . bind (depuis la version 9) a la capacit de faire tourner diffrentes vues, on peut voir une vue comme une instance de bind indpendante des autres permettant de simuler laccs plusieurs machines disponibles. Dans un rseau avec une architecture simple, on peut faire tourner un bind avec deux vues :
### une pour les clients // On est autoritaire et on sert de serveur cache pour // les clients du rseau interne. // De plus, on propose la zone complte testme.fr pour // ces clients view "internal" { match-clients { 10.0.0.0/8; }; recursion yes; zone "testme.fr" {

359

Chapitre 12. SR005 - Administrer un serveur DNS


type master; file "db.full.testme.fr"; }; };

### une autre pour servir le monde entier # (si nous sommes autoritaires pour un quelconque domaine). // Une vue externe pour les requtes provenant dInternet // On offre une vue limite de la zone testme.fr (juste // ce quil faut) et on interdit la rcursion (on ne // veut pas servir de serveur de cache) view "external" { match-clients { any; }; recursion no; zone "testme.fr" { type master; file "db.limited.testme.fr.conf"; }; };

12.3. DNS : Travaux pratiques 1


Source(s):

OF: SR005-ch03-tp1.pdf (docs/eof/sr005-ch03-tp1.pdf)

12.3.1. dig : Mise en application


Source(s):

Web: Dig HOWTO (EN) (http://www.madboa.com/geek/dig/)

Note : Voir aussi la section SR004 Interconnecter un rseau TCP/IP > command dig pour un description de la commande dig

360

Chapitre 12. SR005 - Administrer un serveur DNS Les logiciels les plus courants sont : host, nslookup et dig. Chacun a ses avantages (host afche les informations plus simplement, nslookup a une interface interactive et dig est trs dtaill) dig afche plusieurs sections lorsquon lutilise :
Un rsum en deux lignes de lchange DNS La question qui a t pose La rponse, sil y en a Lautorit qui nous a rpondue Le champs additionnel (optionnel) Diverses donnes comme le temps total de la requte, le serveurs dns utilis ou la taille

Les lignes commencant par un ; (point-virgule) sont des commentaires.

$ dig www.isc.org ## Ligne de commande invoquant dig ; <<>> DiG 9.2.3 <<>> www.isc.org ;; global options: printcmd ## La section douverture indiquant ## - la version (version 9.2.3) ## - les paramtres de commande ## - les options globales ## Peut-tre enlev via loption +nocmd ## ( placer en premier argument de la commande) ;; ;; ;; ## ## Got answer: ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43071 flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3 Detail technique de la rponse reu du serveur DNS. Peut-tre ajouter/enlev via loption +[no]comments.

;; QUESTION SECTION: ;www.isc.org. IN A ## Dans la section QUESTION, dig rappel la requte en cours. ## Requte de tip (A) adresse Internet par dfaut. ## Peut-tre ajouter/enlev via loption +[no]question ;; ANSWER SECTION: www.isc.org.

600

IN

204.152.184.88

## Voici la REPONSE tant attendu ! Ladresse IP de www.isc.org est 204.152.184.88. ## Peut-tre ajouter/enlev via loption +[no]answer ;; AUTHORITY SECTION: isc.org. isc.org. isc.org.

2351 2351 2351

IN IN IN

NS NS NS

ns-int.isc.org. ns1.gnac.com. ns-ext.isc.org.

## La SECTION DAUTORIT quels serveurs DNS peuvent ## fournir une rponse autoritaire la question.

361

Chapitre 12. SR005 - Administrer un serveur DNS


## Ici isc.org a trois serveur de nom. ## Peut-tre ajouter/enlev via loption +[no]authority ;; ADDITIONAL SECTION: ns1.gnac.com. ns-int.isc.org. ns-int.isc.org.

171551 2351 2351

IN IN IN

A A AAAA

209.182.216.75 204.152.184.65 2001:4f8:0:2::15

## La SECTION ADDITIONNELLE affiche la liste des adresses IP ## des serveurs DNS list dans la section dautorit. ## Peut-tre ajouter/enlev via loption +[no]additional ;; ;; ;; ;; Query time: 2046 msec SERVER: 127.0.0.1#53(127.0.0.1) WHEN: Fri Aug 27 08:22:26 2004 MSG SIZE rcvd: 173

## La section FINAL de laffichage par dfaut ## contient les statistiques sur la requte ## Peut-tre ajouter/enlev via loption +[no]stats

12.3.2. dig : Resolution DNS Simple


Par dfaut, dig ne fait quune rsolution de type A, vous pouvez nanmoins prciser le type de requte : MX, NS,PTR, AXFR, etc.
$ dig eof.eu.org ; <<>> DiG 9.3.1 <<>> eof.eu.org ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62239 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0 ;; QUESTION SECTION: ;eof.eu.org. IN A ;; ANSWER SECTION: eof.eu.org. 259200 IN A 195.115.89.182 ;; AUTHORITY SECTION: eof.eu.org. 259200 IN NS ns.eof.eu.org. eof.eu.org. 259200 IN NS ns2.eof.eu.org. ;; Query time: 26 msec ;; SERVER: 172.16.0.42#53(172.16.0.42) ;; WHEN: Mon Aug 22 10:02:51 2005 ;; MSG SIZE r

362

Chapitre 12. SR005 - Administrer un serveur DNS 1. Interprtez ce rsultat. Qui est en charge de servir la zone eof.eu.org ? Lhte eof sur le domaine eu.org se trouve laddresse IPv4 195.115.89.182. Les serveurs DNS ns.eof.eu.org et ns2.eof.eu.org sont en charge de la zone.

2. Mettez-vous la place dun serveur DNS et indiquez toutes les requtes DNS effectues pour rsoudre eof.eu.org en utilisant dig. QUERY : 1 ==> Une seule requte trait. dig contact le serveur DNS de ma machine (cest dire le server DNS de mon FAI). Le DNS du FAI na pas lautorit sur la zone donc il cherche dans sa cache si lenregistrement existe, auquel cas il rponds directement sinon il rfre un root node (. puis ...). Le server DNS root node fait de mme jusqua ce que lun des serveur DNS en charge de la zone eof.eu.org soit identi. Lun de ses derniers reoit donc la question et y rponde en indiquant laddresse IP de lhte eof sur eu.org et les rfrences de serveur de nom qui peuvent tre mis en cache pour obtenir des rponse plus rapide des requtes sur le mme domaine. Ce quil se passe peut se rsumer ainsi :
$ dig NS . f.root-servers.net. $ dig @f.root-servers.net. NS org. 199.19.56.1 $ dig @199.19.56.1 NS eu.org. ns1.pasteur.fr. $ dig @ns1.pasteur.fr eof.eu.org. 86.64.63.108

3. Parmi les serveurs dns trouvs prcdemment, est-ce quil y en a qui supporte le protocole IPv6 ? Aucun des deux server DNS ne semble supporter le protocole IPv6 :
$ dig ns2.eof.eu.org aaaa ; <<>> DiG 9.6.1-P2 <<>> ns2.eof.eu.org aaaa ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54613

363

Chapitre 12. SR005 - Administrer un serveur DNS


;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;ns2.eof.eu.org. IN AAAA ;; ;; ;; ;; Query time: 64 msec SERVER: 10.0.1.1#53(10.0.1.1) WHEN: Fri Jan 22 23:06:37 2010 MSG SIZE rcvd: 32

$ dig ns.eof.eu.org aaaa ; <<>> DiG 9.6.1-P2 <<>> ns.eof.eu.org aaaa ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55315 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;ns.eof.eu.org. IN AAAA ;; ;; ;; ;; Query time: 56 msec SERVER: 10.0.1.1#53(10.0.1.1) WHEN: Fri Jan 22 23:06:48 2010 MSG SIZE rcvd: 31

Mais ceux en charge deu.org le sont :


% dig ns eu.org ; <<>> DiG 9.6.1-P2 <<>> ns eu.org ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12890 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1 ;; QUESTION SECTION: ;eu.org. ;; ANSWER SECTION: eu.org. eu.org. eu.org. eu.org. eu.org. eu.org. ;; ADDITIONAL SECTION: NS-V6.eu.org.

IN

NS

259200 259200 259200 259200 259200 259200

IN IN IN IN IN IN

NS NS NS NS NS NS

DNS3.GANDI.NET. NS-SLAVE.FREE.org. NS0.PASTEUR.FR. NS-V6.eu.org. NS1.PASTEUR.FR. AUTH1.DNS.ELM.NET.

259200

IN

AAAA

2a01:e35:8b50:2c40::4

364

Chapitre 12. SR005 - Administrer un serveur DNS


;; ;; ;; ;; Query time: 21 msec SERVER: 212.27.40.240#53(212.27.40.240) WHEN: Sun Jan 24 19:02:31 2010 MSG SIZE rcvd: 202

Cela ne veut pas dire que eof.eu.org peut tre atteint via IPv6 non ? Est-ce sufsant davoir le domaine suprieur "question-able" via IPv6 ? Non en effet, cela signie uniquement quon peut connatre les NS deof.eu.org en IPv6 :( Est-ce cela signie que si eu.org reoit la requte via IPv6 il peut la faire suivre en IPv4 vers eof.eu.org et ainsi rpondre ? Non, moins quil soit congur comme forwarder. Si ctait le cas, effectivement, il pourrait faire "bridge v4-v6".

Dautres example de rsolution DNS simple avec la commande dig :


$ dig free.fr $ dig a free.fr

# synonyme du prcdent

; <<>> DiG 9.6.1-P2 <<>> free.fr ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65478 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;free.fr. IN A ;; ANSWER SECTION: free.fr. 41487 IN A 212.27.48.10 ;; ;; ;; ;; Query time: 7 msec SERVER: 10.0.1.1#53(10.0.1.1) WHEN: Fri Jan 22 21:32:55 2010 MSG SIZE rcvd: 41

$ dig mx free.fr

# Connatre les serveurs de courriel de FREE

; <<>> DiG 9.6.1-P2 <<>> mx free.fr ;; global options: +cmd ;; Got answer:

365

Chapitre 12. SR005 - Administrer un serveur DNS


;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25682 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;free.fr. IN MX ;; ANSWER SECTION: free.fr. 32845 IN MX 10 mx1.free.fr. free.fr. 32845 IN MX 20 mx2.free.fr. ;; ;; ;; ;; Query time: 7 msec SERVER: 10.0.1.1#53(10.0.1.1) WHEN: Fri Jan 22 21:52:36 2010 MSG SIZE rcvd: 65

$ dig ptr free.fr $ dig 10.48.27.212.in-addr.arpa ptr in

# Incorrect !!! PTR sert faire des resolutions inv # Correct !!!

; <<>> DiG 9.5.1-P3 <<>> 10.48.27.212.in-addr.arpa ptr in ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49397 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;10.48.27.212.in-addr.arpa. IN PTR ;; ANSWER SECTION: 10.48.27.212.in-addr.arpa. 86400 IN PTR www.free.fr. ;; ;; ;; ;; Query time: 56 msec SERVER: 10.0.1.1#53(10.0.1.1) WHEN: Sat Jan 23 19:12:45 2010 MSG SIZE rcvd: 68

$ dig ns free.fr

# Connatre les serveurs DNS de FREE :)

; <<>> DiG 9.6.1-P2 <<>> ns free.fr ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56045 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;free.fr. IN NS ;; ANSWER SECTION: free.fr. 70500 IN NS freens2-g20.free.fr. free.fr. 70500 IN NS freens1-g20.free.fr. ;; Query time: 19 msec

366

Chapitre 12. SR005 - Administrer un serveur DNS


;; SERVER: 10.0.1.1#53(10.0.1.1) ;; WHEN: Fri Jan 22 21:56:09 2010 ;; MSG SIZE rcvd: 77

$ dig $ dig ns .

# quivalent

; <<>> DiG 9.6.1-P2 <<>> ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59510 ;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;. IN NS ;; ANSWER SECTION: . 49319 IN NS I.ROOT-SERVERS.NET. . 49319 IN NS C.ROOT-SERVERS.NET. . 49319 IN NS A.ROOT-SERVERS.NET. . 49319 IN NS K.ROOT-SERVERS.NET. . 49319 IN NS E.ROOT-SERVERS.NET. . 49319 IN NS G.ROOT-SERVERS.NET. . 49319 IN NS D.ROOT-SERVERS.NET. . 49319 IN NS M.ROOT-SERVERS.NET. . 49319 IN NS B.ROOT-SERVERS.NET. . 49319 IN NS F.ROOT-SERVERS.NET. . 49319 IN NS L.ROOT-SERVERS.NET. . 49319 IN NS H.ROOT-SERVERS.NET. . 49319 IN NS J.ROOT-SERVERS.NET. ;; ;; ;; ;; Query time: 29 msec SERVER: 10.0.1.1#53(10.0.1.1) WHEN: Fri Jan 22 22:00:54 2010 MSG SIZE rcvd: 228

12.3.3. dig : Resolution inverse


Examinons les requtes suivantes :
$ dig -x 195.115.89.182 ; <<>> DiG 9.3.1 <<>> -x 195.115.89.182 ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20866 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION:

367

Chapitre 12. SR005 - Administrer un serveur DNS


;182.89.115.195.in-addr.arpa. ;; ANSWER SECTION: 182.89.115.195.in-addr.arpa. 86390 IN ;; AUTHORITY SECTION: 89.115.195.in-addr.arpa. 86390 ;; ADDITIONAL SECTION: ns1.irisnet.fr. 86390 ;; Query time: 10 msec ;; SERVER: 172.16.0.42#53(172.16.0.42) ;; WHEN: Mon Aug 22 10:36:13 2005 ;; MSG SIZE rcvd: 119 IN PTR PTR pegase.aelif.org. IN IN NS ns1.irisnet.fr. A 195.115.88.35

$ dig ptr 195.115.89.182 ; <<>> DiG 9.3.1 <<>> ptr 195.115.89.182 ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 29005 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;195.115.89.182. IN PTR ;; AUTHORITY SECTION: . 10787 IN SOA A.ROOT-SERVERS.NET. \ NSTLD.VERISIGN-GRS.COM. 2005082801 1800 900 604800 86400 ;; Query time: 13 msec ;; SERVER: 172.16.0.42#53(172.16.0.42) ;; WHEN: Mon Aug 22 10:36:11 2005 ;; MSG SIZE rcvd: 107

1. Pourquoi est-ce que les rsultats sont diffrents ? Dans le 1er cas, dig execute la recherche automatiquement partir dun nom comme 182.89.115.195.in-addr.arpa et affecte requte le type PTR et la classe IN. Dans le 2me cas, dig lance une requte de type PTR partir de 195.115.89.182, ce qui est incorrect :)

2. Comment corriger la deuxime requte ? Dans le deuxime cas, pour obtenir le mme resultat que le 1er cas, il faudrait remplacer par :
$ dig 182.89.115.195.in-addr.arpa ptr in

Autres examples :
$ dig -x 212.27.48.10 $ dig -x 212.27.48.10 ptr in

# quivalent

368

Chapitre 12. SR005 - Administrer un serveur DNS

; <<>> -x 212.27.48.10 ptr ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26199 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;10.48.27.212.in-addr.arpa. IN PTR ;; ANSWER SECTION: 10.48.27.212.in-addr.arpa. 86400 IN PTR www.free.fr. ;; ;; ;; ;; Query time: 67 msec SERVER: 10.0.1.1#53(10.0.1.1) WHEN: Fri Jan 22 22:08:19 2010 MSG SIZE rcvd: 68

12.3.4. Manipulation des ags


Expliquons le rsultat suivant :

# 172.16.0.42 nest pas accessible donc jutilise en lieu et place le server DNS de Google : $ dig @8.8.8.8 +norecurse +short gluck.debian.org # Ligne 1 $ dig @8.8.8.8 +short gluck.debian.org # Ligne 2 150.203.164.38 $ dig @8.8.8.8 +norecurse +short gluck.debian.org # Ligne 3 150.203.164.38

Ligne 1 : Recherche auprs du serveur DNS 8.8.8.8 (Google ici) les information de type A sur le domaine gluck.debian.org sans recursion et afche le resultat selon le format court. ==> Aucun resultat Ligne 2 : Fait de mme mais la recursion est active par dfaut ==> Resulat OK Ligne 3 : Idem Ligne 1 ==> Resultat OK !!! Loption +norecurse de la requte dig permet dviter que le serveur DNS 8.8.8.8 (Google ici) de lancer une requte recursive vers un autre serveur DNS pour laddresse gluck.debian.org au cas ou il ne pourrait rpondre directement la question. Cest pourquoi la ligne 1 on obtient aucune rponse car le serveur DNS nest pas directement responsable de ce domaine.

369

Chapitre 12. SR005 - Administrer un serveur DNS En autorisant la recursivit la ligne 2, le serveur DNS 8.8.8.8 transfert la requte un autre serveur DNS qui lui renvoie la rponse quil met en cache avant de retourner lui mme le rsultat de la requte. En ligne 3, le resulat retourn provient de la cache du serveur DNS 8.8.8.8 car il nest pas autoris transfrer recursivemet la requte un autre serveur. Lorsque le TTL de mise en cache pour cet enregistrement sera atteint, il disparatra de la cache et on obtiendra de nouveau aucun resultat avec la ligne 3. Lors de lexecution de la ligne 1, les informations sur le domaine ntait pas encore dans la cache du serveur DNS 8.8.8.8. Autres examples...
### Option +trace $ dig @8.8.8.8 gluck.debian.org +trace ; <<>> DiG 9.5.1-P3 <<>> @8.8.8.8 gluck.debian.org +trace ; (1 server found) ;; global options: printcmd . 70655 IN NS E.ROOT-SERVERS.NET. . 70655 IN NS H.ROOT-SERVERS.NET. . 70655 IN NS K.ROOT-SERVERS.NET. . 70655 IN NS B.ROOT-SERVERS.NET. . 70655 IN NS C.ROOT-SERVERS.NET. . 70655 IN NS J.ROOT-SERVERS.NET. . 70655 IN NS F.ROOT-SERVERS.NET. . 70655 IN NS D.ROOT-SERVERS.NET. . 70655 IN NS A.ROOT-SERVERS.NET. . 70655 IN NS L.ROOT-SERVERS.NET. . 70655 IN NS M.ROOT-SERVERS.NET. . 70655 IN NS I.ROOT-SERVERS.NET. . 70655 IN NS G.ROOT-SERVERS.NET. ;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 33 ms org. 172800 IN NS D0.ORG.AFILIAS-NST.org. org. 172800 IN NS B2.ORG.AFILIAS-NST.org. org. 172800 IN NS B0.ORG.AFILIAS-NST.org. org. 172800 IN NS A2.ORG.AFILIAS-NST.INFO. org. 172800 IN NS C0.ORG.AFILIAS-NST.INFO. org. 172800 IN NS A0.ORG.AFILIAS-NST.INFO. ;; Received 436 bytes from 192.203.230.10#53(E.ROOT-SERVERS.NET) in 209 ms debian.org. 86400 IN debian.org. 86400 IN debian.org. 86400 IN ;; Received 136 bytes NS ns1.debian.org. NS ns2.debian.org. NS ns3.debian.org. from 199.249.120.1#53(B2.ORG.AFILIAS-NST.org) in 42 ms

gluck.debian.org. 1800 IN A 150.203.164.38 debian.org. 28800 IN NS ns3.debian.org. debian.org. 28800 IN NS ns4.debian.com.

370

Chapitre 12. SR005 - Administrer un serveur DNS


debian.org. 28800 IN NS ns1.debian.org. debian.org. 28800 IN NS ns2.debian.org. ;; Received 252 bytes from 140.211.166.43#53(ns2.debian.org) in 213 ms ## Depuis ma machine, sans prciser le DNS de Google la commande ## ci-dessous ne fonctionne pas alors que pour les autres tudiants ## a fonctionne :) $ dig @8.8.8.8 eof.eu.org +trace ; <<>> DiG 9.6.1-P2 <<>> @8.8.8.8 eof.eu.org +trace ; (1 server found) ;; global options: +cmd . 10759 IN NS E.ROOT-SERVERS.NET. . 10759 IN NS H.ROOT-SERVERS.NET. . 10759 IN NS K.ROOT-SERVERS.NET. . 10759 IN NS B.ROOT-SERVERS.NET. . 10759 IN NS C.ROOT-SERVERS.NET. . 10759 IN NS J.ROOT-SERVERS.NET. . 10759 IN NS F.ROOT-SERVERS.NET. . 10759 IN NS D.ROOT-SERVERS.NET. . 10759 IN NS A.ROOT-SERVERS.NET. . 10759 IN NS L.ROOT-SERVERS.NET. . 10759 IN NS M.ROOT-SERVERS.NET. . 10759 IN NS I.ROOT-SERVERS.NET. . 10759 IN NS G.ROOT-SERVERS.NET. ;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 45 ms org. 172800 IN NS B0.ORG.AFILIAS-NST.org. org. 172800 IN NS A0.ORG.AFILIAS-NST.INFO. org. 172800 IN NS B2.ORG.AFILIAS-NST.org. org. 172800 IN NS C0.ORG.AFILIAS-NST.INFO. org. 172800 IN NS D0.ORG.AFILIAS-NST.org. org. 172800 IN NS A2.ORG.AFILIAS-NST.INFO. ;; Received 430 bytes from 198.41.0.4#53(A.ROOT-SERVERS.NET) in 102 ms eu.org. 86400 eu.org. 86400 eu.org. 86400 eu.org. 86400 eu.org. 86400 eu.org. 86400 ;; Received 250 IN NS IN NS IN NS IN NS IN NS IN NS bytes dns3.gandi.net. ns1.pasteur.fr. ns-v6.eu.org. auth1.dns.elm.net. ns-slave.free.org. ns0.pasteur.fr. from 199.19.53.1#53(C0.ORG.AFILIAS-NST.INFO) in 21 ms

eof.eu.org. 259200 IN NS NS.eof.eu.org. eof.eu.org. 259200 IN NS NS2.eof.eu.org. ;; Received 95 bytes from 88.191.249.137#53(ns-slave.free.org) in 35 ms eof.eu.org. 86400 IN eof.eu.org. 86400 IN eof.eu.org. 86400 IN ;; Received 111 bytes A 86.64.63.108 NS ns2.eof.eu.org. NS ns.eof.eu.org. from 86.64.63.109#53(NS2.eof.eu.org) in 180 ms

371

Chapitre 12. SR005 - Administrer un serveur DNS


### +noall +answer ~$ dig yahoo.com NS +noall +answer

# Rponse courte - Methode 1

; <<>> DiG 9.5.1-P3 <<>> yahoo.com NS +noall +answer ;; global options: printcmd yahoo.com. 146045 IN NS ns4.yahoo.com. yahoo.com. 146045 IN NS ns1.yahoo.com. yahoo.com. 146045 IN NS ns3.yahoo.com. yahoo.com. 146045 IN NS ns6.yahoo.com. yahoo.com. 146045 IN NS ns5.yahoo.com. yahoo.com. 146045 IN NS ns2.yahoo.com. yahoo.com. 146045 IN NS ns8.yahoo.com.

### +short $ dig www.isc.org AAAA +short 2001:4f8:0:2::d $ dig -x 204.152.184.167 +short mx-1.isc.org.

# Rponse courte - Methode 2 # Adresse IPv6

### +nocmd +multiline $ dig +nocmd eof.eu.org any +multiline +noall +answer ; <<>> DiG 9.5.1-P3 <<>> eof.eu.org any +nocmd +multiline +noall +answer ;; global options: printcmd eof.eu.org. 86400 IN SOA ns.eof.eu.org. olivier.ricou.eu.org. ( 2009051801 ; serial 21600 ; refresh (6 hours) 3600 ; retry (1 hour) 3600000 ; expire (5 weeks 6 days 16 hours) 86400 ; minimum (1 day) ) eof.eu.org. 86400 IN NS ns.eof.eu.org. eof.eu.org. 86400 IN NS ns2.eof.eu.org. eof.eu.org. 86400 IN A 86.64.63.108 eof.eu.org. 86400 IN MX 5 mail.eof.eu.org.

12.3.5. Section additionnelle


$ dig mx eof.eu.org ; <<>> DiG 9.3.1 <<>> mx eof.eu.org ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25048 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1 ;; QUESTION SECTION: ;eof.eu.org. IN MX

372

Chapitre 12. SR005 - Administrer un serveur DNS


;; ANSWER SECTION: eof.eu.org. 259200 ;; AUTHORITY SECTION: eof.eu.org. 255046 eof.eu.org. 255046 ;; ADDITIONAL SECTION: mail.eof.eu.org. 259200 ;; Query time: 27 msec ;; SERVER: 172.16.0.42#53(172.16.0.42) ;; WHEN: Mon Aug 22 11:12:05 2005 ;; MSG SIZE rcvd: 100

IN IN IN IN

MX NS NS A

5 mail.eof.eu.org. ns.eof.eu.org. ns2.eof.eu.org. 195.115.88.38

1. Expliquer le but de cette section additionnelle. La section additionnelle afche la liste des adresses IP des serveurs DNS list dans la section dautorit. Elle peut-tre ajouter/enlev via loption +[no]additional.

12.4. DNS : Travaux pratiques 2


Source(s):

OF: SR005-ch04-tp2.pdf (docs/eof/sr005-ch04-tp2.pdf)

Vous tes ladministrateur principal dune trs grosse entreprise internationale, chaque succursale possde un administrateur expriment en charge de toutes les machines clientes et des divers services de chaque agence(serveur Web, etc.). Toutefois, le traitement des courriels entrants doit obligatoirement passer par la maison-mre

12.4.1. Plan de dlgation du rseau


Imaginons que le nom de domaine de la maison mre soit entreprise.int et que lensemble du rseau dentreprise se trouve sur le rseau 150.150.0.0/255.255.0.0 . Le traitement des courriels passerait par la maison mre donc par mail.entreprise.int. Chaque succursale sera donc responsable dun sous-domaine qui leur serait associ lintrieur du domaine de lentreprise : agence1.entreprise.int, agence2.entreprise.int, etc...

373

Chapitre 12. SR005 - Administrer un serveur DNS Chaque service (web, ftp, etc...) serait accessible via web.agenceX.entreprise.int, ftp.agenceX.entreprise.int, etc... o X est le numro identiant lagence :) Pour simplier, je considrais que tous les htes de lentreprises sont sur le mme rseau (masque 255.255.0.0), quil ny a pas de sous-rseaux ni de DMZ. En considrant que lon aurait pas plus de 254 sucursales et pas plus de 254 htes pour chacune dentre elles, ladresse IP 150.150.25.20 correspondrait donc lhte 20 sur le rseau de la 25eme agence (150.150.25.0). Le serveur DNS de lentreprise ns0.entreprise.int serait autoritaire sur les sous-domaines dagence mais dlguerait aux serveurs DNS de chacune des agences ns0.agenceX.entreprise.int lautorit sur leur propre domaine correspondant lagence en question et donc aux htes et services associs. Les htes et services de chacune des agences seraient enregistr et maintenu par les administrateurs dagence sur leur domaine local, tandis que chaque domaine dagence (sous-domaine de lentreprise) serait enregistr et maintenu par la maison mre sur le serveur DNS principal. Figure 12-2. DNS-TP2: Architecture de lentreprise

374

Chapitre 12. SR005 - Administrer un serveur DNS

12.4.2. Procdure et droulement pour arriver au rsultat


Testons linfrastructure DNS en utilisant le laboratoire Netkit cre lors de ltude de cas vu dans la section rseaux TCP/IP. Considrons Mercure comme le serveur DNS de la maison mre :
## Ajoutons sur Mercure dans /etc/bind/named.conf.local zone "entreprise.int" { type master; file "/etc/bind/db.entreprise.int; }

## Ajoutons sur Mercure dans /etc/bind/db.entreprise.int $TTL 3h @ IN SOA 2010012500 8H 2H 1W 1D )

ns0.entreprise.int. hostmaster.entreprise.int. (

;agence1

NS ns0.entreprise.int. NS ns0.entreprise.int.

;agence1 NS 150.150.1.3

; ; ; ;

Ncssaire ultrieurement pour que la Dlgation fonctionne !!! Incorrect !!! Pas daddresse IP dans un enregistrement de type NS

MX 10 mail.entreprise.int. ns0 mail hote1 hote2 IN A 150.150.0.3 IN A 150.150.0.2 IN A 150.150.0.30 IN A 150.150.0.31

## Testons la configuration $ named-checkconf /etc/bind/named.conf /etc/bind/named.conf.local:15: unexpected end of input ## ==> Il manque une " (double quote) la fin ## de la ligne file dans ce fichier ## Aprs correction, on teste nouveau /etc/bind/named.conf:41: missing ; before end of file ## ==> ; est manquant la fin du fichier /etc/bind/named.conf.local

375

Chapitre 12. SR005 - Administrer un serveur DNS


## On teste la zone $ named-checkzone entreprise.int /etc/bind/db.entreprise.int ## OK on peut dmarrer le service bind de la maison mre $ /etc/init.d/bind9 start

## OK on peut tester maintenant... nslookup > server 127.0.0.1 Default server: 127.0.0.1 Address: 127.0.0.1#53 ## Puis on linterroge : > mail.entreprise.int Server: 127.0.0.1 Address: 127.0.0.1#53 Name: mail.entreprise.int Address: 150.150.0.2 > hote1.entreprise.int Server: 127.0.0.1 Address: 127.0.0.1#53 Name: mail.entreprise.int Address: 150.150.0.2 > exit $ dig hote1.entreprise.int ; <<>> DiG 9.5.0-P2 <<>> hote1.entreprise.int ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21063 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;hote1.entreprise.int.

IN A

;; ANSWER SECTION: hote1.entreprise.int. 10800 IN A 150.150.0.30 ;; AUTHORITY SECTION: entreprise.int. 10800 IN NS ns0.entreprise.int. ;; ADDITIONAL SECTION: ns0.entreprise.int. 10800 IN A 150.150.0.3 ... ## Depuis Uranus (une autre machine sur le mme rseau) jobtiens le mme resultat.

376

Chapitre 12. SR005 - Administrer un serveur DNS


## En effet, sur Uranus, dans le fichier /etc/resolv.conf, le champs nameserver pointe vers ## Mercure (serveur DNS)

Considrons maintenant le serveur DNS de notre 1ere succursale agence1.entreprise.int comme tant Uranus (sur le mme rseau que Mercure) dans mon lab Netkit :
## Ajoutons sur Uranus (Agence1) dans /etc/bind/named.conf.local

zone "agence1.entreprise.int" { # Zone autoritaire grr par ladministrateur type master; # de la succursale file "/etc/bind/db.agence1.entreprise.int"; }; zone "entreprise.int" { type forward; forwarders {150.150.0.3; 192.3.2.4;}; };

# Zone autoritaire grr par ladministrateur # de la maison mre # Transfert de requte vers la maison mre po # resolution de requte sur dautres zone de ## La deuxieme addresse IP existe uniquement ## pour rendre le test fonctionnel dans mon l

## Dans la ralit, la dernire zone ci-dessus est optionel dans la mesure o ## le serveur DNS de la maison mre va tre configur en tant que forwarders ## dans les options du serveur DNS de lagence (voir ci-aprs)

## Ajoutons sur Uranus (Agence 1) dans /etc/bind/db.entreprise.int $TTL 3h @ IN SOA 2010012500 8H 2H 1W 1D )

ns0.agence1.entreprise.int. hostmaster.agence1.entreprise.int. (

NS ns0.agence1.entreprise.int. ns0 IN A 150.150.1.3

srvweb IN A 150.150.1.4 srvftp IN A 150.150.1.5 hote1 IN A 150.150.1.40 hote2 IN A 150.150.1.41 www ftp mail CNAME srvweb // set www.agence1.entreprise.int CNAME srvftp // set ftp.agence1.entreprise.int CNAME mail.entreprise.int. // set mail.agence1.entreprise.int // comme alias du serveur principal

377

Chapitre 12. SR005 - Administrer un serveur DNS

## Testons la configuration $ named-checkconf /etc/bind/named.conf $ named-checkzone agence1.entreprise.int /etc/bind/db.agence1.entreprise.int ## OK on peut dmarrer le service bind de lagence1 $ /etc/init.d/bind9 start

Aprs quelques testes sur le serveur DNS de lagence1, on voit quil fonctionne correctement Maintenant assurons nous que lorsque le serveur de la maison mre sera interrog il sera capable de rsoudre les questions sur les sous-domaines de lentreprise (dlgu chacun des serveurs DNS des sous-domaines) :
## Indiquons dans le serveur DNS de la maison mre (Mercure) ## que le serveur DNS Uranus (Agence1) est en charge du sous domaine agence1.entreprise.int ## Ajoutons dans /etc/bind/db.entreprise.int agence1 IN NS ns0.entreprise.int. ; Serveur DNS en charge de la zone ; de la 1ere succursale (agence1) ; Rcursion sur lui-mme

Note : Dans la zone entreprise.int je suis oblig davoir lenregistrement agence1 NS ns0.entreprise.int pour que la Dlgation fonctionne. Cet enregistrement doit exister en plus de la zone forward agence1.entreprise.int car la zone entreprise.int est parcouru en premier puis avec lenregistrement on redirige vers la zone dlgue agence1.entreprise.int

## ## ## ##

!!!Attention!!! ceci ne permet pas au serveur de la maison mre de resoudre les requtes sur le sous-domaine dagence Il faut donc aussi ajouter une zone forward dans /etc/bind/named.conf.local

zone "agence1.entreprise.int" { type forward; forwarders {150.150.1.3;192.3.2.3;};

## IP du serveur DNS de ma succursale 1 ## La deuxieme addresse IP existe uniquement ## pour rendre le test fonctionnel dans mon lab Ne

};

## On fera de mme pour chacune des succursales (agenceX) ## On prendra soin de remplacer X par le numro de lagence correspondant ! zone "agenceX.entreprise.int" {

378

Chapitre 12. SR005 - Administrer un serveur DNS


type forward; forwarders {150.150.X.3;}; };

## IP du serveur DNS de ma succursale X

## Chaque agence tant ensuite configure de la mme manire que lagence1 dans la ralit :

## Testons le changement de configuration $ named-checkconf /etc/bind/named.conf $ named-checkzone agence1.entreprise.int /etc/bind/db.agenceX.entreprise.int ## OK on recharge la configuration pour le service bind ## pour quil prenne en compte les changements $ /etc/init.d/bind9 reload

Aprs quelques tests, on voit que cela fonctionne mais ni le serveur de la maison mre ni le serveur DNS de la succursale ne peuvent rsoudre des domaines en dehors de celui de lentreprise ! Cest normal car dans ltat actuel, aucun des deux serveurs nont t congur de faon pouvoir transfrer vers un autres serveur les requtes sur des domaines dont ils nauraient pas autorit. Pour cela, nous allons paramtrer les forwarders dans les options de chacun des serveurs DNS :
## Sur DNS de la succursale Agence1 (Uranus) ## dans le fichier /etc/bind/named.conf.options ## on ajoute : options { ... forwarders { 150.150.0.3; 193.3.2.4; }; ... };

## IP du serveur DNS de la maison mre ## La deuxieme addresse IP existe uniquement ## pour rendre le test fonctionnel dans mon lab Netkit :)

## Sur DNS de la maison mre (Mercure) ## dans le fichier /etc/bind/named.conf.options ## on ajoute : options { ... forwarders { 8.8.8.8; 193.3.2.254; }; ... };

## IP des serveurs DNS du FAI de lentreprise ## La deuxieme addresse IP existe uniquement ## pour rendre le test fonctionnel dans mon lab Netkit :)

379

Chapitre 12. SR005 - Administrer un serveur DNS


## Puis sur chacun des serveurs $ named-checkconf /etc/bind/named.conf $ /etc/init.d/bind9 reload

# Test nouvelle configuration # Applique les changements si OK

Note : Sur chacun des serveurs DNS, je me suis assur que le chier /etc/resolve.conf est vide

Avertissement
Pour rendre le test totalement fonctionnel dans mon lab Netkit, le routeur rGW (IP 193.3.2.254) est considr comme un DNS du FAI. En effet, cause de infrastructure TAP (adresse) de Netkit qui implique une translation NAT, il semble que seul le routeur ait directement la possiblit de faire des ping sur des adresses externe ou de recevoir les rponses aux requtes DNS mises.

Pour que cela fonctionnne, il faut donc activer le service DNS sur le routeur est congurer des forwarders :
## Sur routeur rGW ## dans le fichier /etc/bind/named.conf.options ## on ajoute : options { ... forwarders { 8.8.8.8; 8.8.8.4; }; ... };

## IP des serveurs DNS de Google ## qui toutes les requte reu seront transmises

## Puis toujours sur le routeur rGW $ named-checkconf /etc/bind/named.conf $ /etc/init.d/bind9 start

# Test nouvelle configuration # Dmarre le service si OK

Note : Sur le routeur rGW, je me suis assur que le chier /etc/resolve.conf est vide Mme en ajoutant servername 8.8.8.8 dans ce chier, la rsolution de noms de fonctionne pas sans que le service bind soit convenablement congur sur le routeur et dmarr.

380

Chapitre 12. SR005 - Administrer un serveur DNS


Note : Optionellement on pourrait aussi indiquer que le DNS de la maison mre (Mercure) est en charge de la zone entreprise.int sur le routeur :
## Sur le routeur rGW dans /etc/bind/named.conf.local zone "entreprise.int" { type forward; forwarders {150.150.0.3; 192.3.2.4;}; }; # # # # # #

Zone autoritaire grr par ladministrateur de la maison mre Transfert de requte vers la maison mre pour la resolution de requte sur dautres zone de lentr La deuxieme addresse IP existe uniquement pour rendre le test fonctionnel dans mon lab Netk

Ceci ne peut pas tre test et ne sert pas vraiment grand chose, dans le cadre de mes test... cest juste pour la thorie... et pour madapter la structure de mon lab Netkit ;-)

Une fois que cela fonctionne, de la mme manire, on peut modier la conguration sur les deux serveurs pour rajouter une zone de resolution inverse :
0.150.150.in-addr.arpa (# pour la maison mre) X.150.150.in-addr.arpa (# pour les succursales) 1.150.150.in-addr.arpa (# soit pour lagence 1)

12.4.3. Fichiers de conguration (named, options, db, etc) et log de tests


Script utilis pour les tests de dernire colonne : test.sh (docs/sr005-ch04-tp2-testdns-sh.txt) Tableau 12-1. Fichiers de conguration et rsultat de tests Entreprise (IP) Zone dAutorit Nom dhte Netkit VM (IP) Conf. Options Conf. Local

381

Chapitre 12. SR005 - Administrer un serveur DNS Entreprise (IP) Zone dAutorit Nom dhte ns0 Netkit VM (IP) Mercure (192.3.2.4) Conf. Options named.conf.options (docs/sr005-ch04tp2-mercure-nameconf-options.txt) Conf. Local

DNS Maison Mre entreprise.int (150.150.0.3)

named.conf.local (docs/sr005ch04-tp2mercure-nameconf-local.txt)

DNS Succursale X (150.150.X.3)

agenceX.entreprise.int ns0

named.conf.options (docs/sr005ch04-tp2x-namedconfoptions.txt)

named.conf.local (docs/sr005ch04-tp2x-namedconflocal.txt)

DNS Succursale 1 (150.150.1.3)

agence1.entreprise.int ns0

Uranus (192.3.2.4)

named.conf.options (docs/sr005ch04-tp2uranusnamedconfoptions.txt)

named.conf.local (docs/sr005ch04-tp2uranusnamedconflocal.txt)

382

Chapitre 12. SR005 - Administrer un serveur DNS Entreprise (IP) Hote Succursale 1 (150.150.1.40) Zone dAutorit Nom dhte Netkit VM (IP) Conf. Options Conf. Local -

hote1.agence1.entreprise.int -

rGW

named.conf.options (docs/sr005ch04-tp2rGWnamedconfoptions.txt)

named.conf.local (docs/sr005ch04-tp2rGWnamedconflocal.txt)

12.4.4. Server Secondaire


Dans mon lab Netkit, je congure rGW en tant que server DNS secondaire de Mercure (maison mre), uniquement pour la zone entreprise.int et 150.150.0 :
# Ajouter sur rGW dans /etc/bind/named.conf.local $ mcedit /etc/bind/named.conf.local zone "entreprise.int" { type slave; file "/var/cache/bind/db.entreprise.int"; masters { 150.150.0.3; 192.3.2.4; }; }; zone "0.150.150.in-addr.arpa" { type slave; file "/var/cache/bind/db.150.150.0"; masters { 150.150.0.3; 192.3.2.4; }; };

Note : En faisant cela, il est inutile dindiquer les chiers zones (chier db.) sur le serveur DNS secondaire. Les chiers proviendront dune synchronisation avec le DNS primaire.

383

Chapitre 12. SR005 - Administrer un serveur DNS

Avertissement
Lutilisateur faisant fonctionner le serveur DNS doit avoir les droits dcriture sur les chiers zones renseigns dans la conguration ci-dessus.

Si AppArmor est install, il empche de toute manire bind dcrire dans le dossier /etc/bind en conguration type slave. Dans ce cas il faut utiliser le rpertoire /var/cache/bind :
... file "/var/cache/bind/db.entreprise.int"; ... file "/var/cache/bind/db.150.150.0"; ...

# Tester configuration $ named-checkconf /etc/bind/named.conf.local # OK - Chargeons le changement de configuration $ rndc reload

# Test de resolution sur rGW $ dig @127.0.0.1 mail.entreprise.int +short 150.150.0.2 $ dig @127.0.0.1 -x 150.150.0.40 +short hote1.entreprise.int # OK :)

12.5. Scuriser un serveur DNS


Source(s):

Web: Scuriser un serveur de nom (http://www.cgsecurity.org/Articles/dns_bind.html) Securing an Internet Name Server (http://www.cert.org/archive/pdf/dns.pdf) Transaction Signatures (TSIG) Conguration (http://www.cyberciti.biz/faq/unix-linux-bind-named-conguring-tsig) TSIG (Wikipedia) (http://en.wikipedia.org/wiki/TSIG) Domain Name System Security Extensions (DNSSEC) (http://en.wikipedia.org/wiki/DNSSEC)

384

Chapitre 12. SR005 - Administrer un serveur DNS Secure BIND Template (http://www.cymru.com/Documents/secure-bind-template.html) : patrons de chiers de conguration dun service DNS.

12.5.1. Tout interdire par dfaut ?


Prenons le parti dtre parano et interdisons tout par dfaut :
... options { also-notify { none; }; allow-transfer { none; }; allow-query { none; }; }; ...

also-notifydoit contenir les DNS secondaires non ofciels, cela permet de les prvenir immdiatement si une mise jour dune zone est effectue. allow-transfer indique quelles sont les machines autorises effectuer un transfert de zone, cest dire rcuprer toutes les informations dune zone, les seuls DNS secondaires devraient tre autoriss. allow-query indique qui peut interroger le serveur pour une zone donne.

12.5.2. Access Control Lists (ACL)


Les Access Control Lists (ACL) permettent de dnir des ensembles de machines et/ou de rseaux. Quatre ACL sont pr-dnies : any (tout le monde), none (personne), localhost (le serveur seulement) et localnets (ensemble de rseaux dnis par des addresses IP et masques rseau des machines). Une ACL se dnit de la faon suivante :
... acl name { address_match_list }; ... # Par exemple, je peux dfinir lacl mon_parc_info # contenant les IPs des machines de mon rseau.

385

Chapitre 12. SR005 - Administrer un serveur DNS


acl dns_sec_non_officiel { 192.3.4.30; 192.3.4.31; }

Utilisation des ACL :


# Pour obtenir la liste des DNS primaires, il suffit dexcuter la commande $ dig @ns.internic.net . ns > named.ca # La zone pour les requtes par dfaut # est la zone "." dfinie ci-dessous : zone "." { type hint; file "named.ca"; allow-query { mon_parc_info; }; };

# # # #

Dans certains cas darchitecture rseau ou pour des raisons de scurit, on peut vouloir forcer un DNS interne utiliser un serveur DNS bien spcifique pour rpondre aux requtes DNS. Dans ce cas-l, on va lui dfinir cette contrainte dans les options :

options { .... forward only; forwarders { mes_dns_en_sortie; }; };

# Une zone de rsolution inverse, # adresse IP vers nom de machine, # pour ladresse de loopback se dfinit ainsi zone "0.0.127.in-addr.arpa" { type master; allow-query { mon_parc_info; }; file "named.local"; }; # # # # Un serveur primaire doit tre interroger par tous mais nautoriser que les dns secondaires effectuer des transferts de zone. Le transfert de zone est comme son nom lindique le moyen par lequel un DNS rcupre la totalit des paramtres dune zone.

zone "domaine1.org" { type master;

386

Chapitre 12. SR005 - Administrer un serveur DNS


file "domain1/domaine1.org"; also_notify { dns_sec_non_officiel; }; allow-transfer { dns_sec_officiel; dns_sec_non_officiel; }; allow-query { any; }; } # # # # # # # # # # Les DNS indiqus dans le paramtre also_notify sont avertis ds quune modification est intervenue dans une zone. Cest utilis concrtement pour avertir les DNS secondaires non officiels, cest dire ceux qui ne sont pas explicitement dclar comme NS dans le fichier de dfinissant la zone. Certains services proposs par les ISP ne sont accessibles que par lutilisation de leur DNS. Ainsi, pour accder aux news ou lire son mail par linterface webmail de Wanadoo, il faut utiliser le DNS spcifi sur la feuille indiquant le login/password ou donn par le serveur DHCP.

zone "wanadoo.fr" { type forward; forwarders { 193.252.19.3; }; }; NB: Wanadoo filtre les IP accdant aux DNS, serveurs web,... rservs aux abonns.

12.5.3. Transfert scuris - Architecture utilisant les signatures de transfert de zones (TSIG)
12.5.3.1. Description
Transaction SIGnature (TSIG) est un protocole rseau dnit dans la RFC 2845 (http://www.ietf.org/rfc/rfc2845.txt). TSIG est un mcanisme utilis pour scuriser les messages DNS et pour fournir une communication scuris serveur--serveur, habituellement entre un primaire (master) et secondaire (slave) mais cela peut tre tendu au mise jour dynamique. TSIG utilise les "secrets" partags et une fonction hash sens-unique pour authentier les messages DNS en founissant un moyen scuris par cryptographie dindentier chaque extrmit dune connection comme tant autoris faire ou rpondre des mise jour DNS... TSIG est trs lger pour les "resolveur" et le service DNS.

387

Chapitre 12. SR005 - Administrer un serveur DNS TSIG peut protger les transactions suivantes entre deux serveurs DNS :
* * * * Transfert de Zone Notification Mise jour Dynamique Message de requte rcursive

TSIG est disponible dans BIND v8.2 et suprieur.

12.5.3.2. Comment TSIG fonctionne ?


1. Chaque serveur de nom ajoute un enregistrement TSIG dans la section de donnes dune requte ou dun message DNS lors dune communication serveur--serveur. 2. Lenregistrement TSIG signe le message DNS, prouvant que lmetteur du message a un clef cryptographique partage avec le destinataire et que le message na pas t modi aprs son dpart de lmetteur. 3. TSIG utilise un fonction hash sens-unique pour prouver lauthentication et lintgrit du message.

12.5.3.3. Conguration TSIG


Source(s):

Web: Transaction Signatures (TSIG) Conguration (http://www.cyberciti.biz/faq/unix-linux-bind-named-conguring-tsig) DNS dynamique scuris (http://ferry.eof.eu.org/lesjournaux/ll/public_html/ch09s03.html#tp2-secu-dns)

Rappel sur mon environment :


* Serveur DNS Primaire : ns0.entreprise.int - 150.150.0.3 (mercure/192.3.2.4 dans mon lab Netkit) * Serveur DNS Secondaire : ns1.entreprise.int - 150.150.0.10 (rGW/192.3.2.254 dans mon lab Netkit)

dnssec-keygen permet de gnrer des clefs pour DNSSEC (Secure DNS) comme dnit dans la RFC 2535 (http://www.ietf.org/rfc/rfc2535.txt) et RFC 4034 (http://www.ietf.org/rfc/rfc4034.txt). Cet

388

Chapitre 12. SR005 - Administrer un serveur DNS commande peut galement servir gnrer des clef utile une transaction sign (TSIG) comme dnit dans la RFC 2845 (http://www.ietf.org/rfc/rfc2845.txt).
# Options -a Spcifie lalgorithme dencryption (RSASHA1, DSA, DH, HMAC-MD5). -b Spcifie la taille de la clefs (nombre de bit). -n Specify le type de propritaire de la clef (a ZONE, a HOST, ENTITY, or USER) -k Pour gnrer une clef simple au lieu dune clef DNS (DNSKEY) $man dnssec-keygen # Pour plus dinfo...

Cration des clefs partages :


# Sur le serveur DNS Primaire execute $ cd /etc/bind/ $ dnssec-keygen -a DSA -b 1024 -n HOST -k tsig-key # Sans loption -k jobtiens # une erreur "invalid DNSKEY nametype HOST" # Comme cela prend trop de temps pour gnrer la clef dans Netkit, # Je vais rduire mes prententions en terme de scurit et crer # une clef plus simple $ dnssec-keygen -a HMAC-MD5 -b 128 -n HOST tsig-key Ktsig-key.+157+31040 #==> Cre deux fichiers contenant la clef gnre. $ ls -l ... Ktsig-key.+157+31040.key Ktsig-key.+157+31040.private ...

Note : dnssec-keygen a cre dexu chiers .key and .private. Les deux sont gnrs pour un algorithme dencryption symtrique (HMAC-MD5), les clef public et prive sont quivalentes.

# Visualiser la clef $cat Ktsig-key.+157+31040.key # Clef publique tsig-key. IN KEY 512 3 157 8f+/EU8cHBJlKrYrap3Rbw== $cat Ktsig-key.+157+31040.private Private-key-format: v1.2 Algorithm: 157 (HMAC_MD5) Key: 8f+/EU8cHBJlKrYrap3Rbw== Bits: AAA= # Clef prive # Champs spcifiques dalgorithme

# Clef DNS insrer dans une Zone

389

Chapitre 12. SR005 - Administrer un serveur DNS

Conguration du serveur primaire :


# Ouvrir le fichier de configuration $ mcedit /etc/bind/named.conf.local # Puis y ajouter include "/etc/bind/tsig.key"; # Enregistrer puis fermer le fichier. # Ensuite, crer/ouvrir le nouveau fichier $ mcedit /etc/bind/tsig.key # Puis diter comme suit : key clef_tsig { # Dfinition dune clef TSIG nomme clef_tsig algorithm hmac-md5; # dans la configuration DNS secret "8f+/EU8cHBJlKrYrap3Rbw=="; }; # IP Serveur DNS Secondaire server 192.3.2.254 { keys { clef_tsig; }; };

# # # # #

Rfrence la clef TSIG utiliser par le serveur DNS primare pour signer les requtes et transfert de zone vers le serveur distant (seconda Par cette dclaration, le serveur distant (secondaire de faire de mme lorsquil contactera le serveur prim

# Enregistrer puis fermer le fichier $ named-checkconf /etc/bind/named.conf $ rndc reload # Vrifier la nouvelle configuration # Si OK, charger la nouvelle configuration

Conguration du serveur secondaire :


# Ouvrir le fichier de configuration $ mcedit /etc/bind/named.conf.local # Puis y ajouter include "/etc/bind/tsig.key"; # Enregistrer puis fermer le fichier. # Ensuite, crer/ouvrir le nouveau fichier $ mcedit /etc/bind/tsig.key # Puis diter comme suit : key clef_tsig { # Dfinition dune clef TSIG nomme clef_tsig algorithm hmac-md5; # dans la configuration DNS secret "8f+/EU8cHBJlKrYrap3Rbw=="; };

390

Chapitre 12. SR005 - Administrer un serveur DNS

# IP Serveur DNS Primaire server 192.3.2.4 { keys { clef_tsig; }; };

# # # # #

Rfrence la clef TSIG utiliser par le serveur DNS secondaire pour signer les requte et transfert de zone vers le serveur primaire Par cette dclaration, le serveur primaire est pri de faire de mme lorsquil contactera le serveur seco

# Enregistrer puis fermer le fichier $ named-checkconf /etc/bind/named.conf $ rndc reload # Vrifier la nouvelle configuration # Si OK, charger la nouvelle configuration

Avertissement
Pour fonctionner, les horloges systmes des deux serveurs doivent tre synchronises. Au besoin, on peut les synchroniser par xntp.

La condentialit des cls est lie la scurit du serveur le plus vulnrable.

Restreindre le transfert de zone uniquement celle(s) signe(s) avec une clef spcique :
# On autorise les mises jour des enregistrements, en rajoutant la directive # suivante dans la configuration des zones du DNS : Syntaxe: allow-<type> { key <nom de cl> ;}; # O lon remplacera <type> par # query, transfert et/ou update.

# Sur le DNS primaire, modifier la configuration comme suit: $ mcedit /etc/bind/named.conf.local # Pour restreindre le transfert de la zone entreprise.int # celle signe avec la clef "tsig_cleg" zone "entreprise.int" { type master; file "/etc/bind/db.entreprise.int"; allow-transfer { key tsig_clef; }; }; # Verifier la nouvelle configuration puis recharger $ named-checkconf /etc/bind/named.conf $ rndc reload

391

Chapitre 12. SR005 - Administrer un serveur DNS

Vrication du fonctionnement :
# $ # $ # $ Vrifier le log du serveur DNS primaire ou les log systme : tail -f /var/log/messages OR tail -f /var/log/syslog OR grep entreprise.int/IN /var/log/syslog

.... Jan 26 13:43:11 ... named[9170]: client 192.3.2.254#52204: transfer of entreprise.int/IN: AXFR-style IXFR started: TSIG transfer .... Jan 26 13:43:11 ... named[9170]: client 192.3.2.254#52204: transfer of theos.in/IN: AXFR-style IXFR ended .... # Vrifier les messages similaire dans les log du server DNS secondaire ... Jan 26 19:18:33 ... named[17899]: client 192.3.2.254#32806: received notify for zone theos.in: TSIG transfer Jan 26 19:18:33 ... named[17899]: zone entreprise.int/IN: Transfer started. Jan 26 19:18:33 ... named[17899]: transfer of theos.in/IN from 192.3.2.254#53: connected using 192.3.2.254#45942 Jan 26 19:18:34 ... named[17899]: zone zone entreprise.int/IN: transferred serial 2008071011: TSIG transfer Jan 26 19:18:34 ... named[17899]: transfer of zone entreprise.int/IN from 192.3.2.254#53: end of transfer

12.5.4. Signature de requte et rponses DNS avec dig

ta ### Pour signer les requte DNS et leur rponses en utlisant les transactions de signature ( -k : specifier le fichier contenant la clef TSIG -y : specifier la clef TSIG directement sur la ligne de commande hmac est le type de TSIG, HMAC-MD5 par dfaut, name est le nom de la clef TSIG, et la clef est la clef elle-mme :) La clef est une chane de caractre de base-64 dnssec-keygen : permet de gnrer la clef

### Lorsquon utilise une authentification TSIG avec dig, le serveur DNS qui est questionnthe name server a besoin de savoir la clef TSIG et lalgorithm qui est utilis.

392

Chapitre 12. SR005 - Administrer un serveur DNS


Dans BIND il faut indiquer la clef et le serveur appropri dans named.conf

12.5.5. Diffuser une zone signe avec DNSSEC (2010)


Source(s):

Web: Basculement des serveurs DNS Racine ! (System Linux EU) (http://www.system-linux.eu/index.php?post/2010/01/26/Basculement-des-serveurs-DNS-Racine-!) Votre serveur DNS peut-il faire passer des paquets de toute taille ? (http://www.bortzmeyer.org/dns-size.html) Info: Site ofciel du projet de signature & calendrier de dploiement (http://www.root-dnssec.org) Lannonce du plan de signature de la racine (http://www.ripe.net/ripe/meetings/ripe59/presentations/uploads/presentations/Tuesday/Plenary%2014:00/AbleyDNSSEC_for_the_Root_Zone.mId7.pdf) Instructions dun serveur racine (http://labs.ripe.net/content/preparing-k-root-signed-root-zone) Test: Outil produit par lOARC (DNS Operations, Analysis and Research Center) (https://www.dns-oarc.net/oarc/services/replysizetest)

"... les grants de L.root-servers.net conrment la date o le premier serveur racine va commencer diffuser une zone signe avec DNSSEC : 27/01/2010 ... En juillet 2010, tous les serveurs de noms de la racine diffuseront des rponses cinq dix fois plus grandes quaujourdhui. Dans certains cas, cela pourra entraner une coupure quasi-complte de laccs linternet... La racine du DNS sera signe avec la technologie DNSSEC ... des signatures cryptographiques, ... de taille bien plus importante que les rponses DNS classiques. Elles dpasseront lancienne limite de 512 octets du DNS et mme la limite des 1500 octets de la MTU Ethernet (la plus rpandue sur lInternet). ...un certain nombre de pare-feux ou dautres quipements rseau qui, mal conus ou bien mal congurs, refusent les rponses DNS de plus de 512 octets. Parmi ceux qui les acceptent, certains ne grent pas correctement la fragmentation des paquets IP (par exemple parce quils bloquent tous les paquets ICMP) et ne peuvent donc pas recevoir des paquets DNS de taille suprieure la MTU, en gnral 1500 octets. Les rseaux qui rejettent les paquets DNS de plus de 512 octets, ou ... ceux de plus de 1500 octets, ne pourront plus parler la racine du DNS aprs juillet 2010 ... et nauront donc quasiment plus daccs

393

Chapitre 12. SR005 - Administrer un serveur DNS Internet ... ...tester votre rseau... Le moyen le plus simple est...
$ dig +short rs.dns-oarc.net txt "203.0.113.1 DNS reply size limit is at least 4023 bytes" # voir si la rponse indique plus de 1500 octets

Avertissement
Si le test indique que les paquets de plus de 1500 octets ne peuvent pas passer, vous devez analyser lensemble de votre rseau et tous les quipements intermdiaires (notamment les pare-feux) pour sassurer quils sont congurs correctement.

Essayez aussi avec une requte DNS directe :


$ dig +dnssec @192.134.0.49 DNSKEY ripe.net # La rponse fait plus de 1500 octets.

# Ou encore $ dig +short rs.dns-oarc.net txt rst.x4001.rs.dns-oarc.net. rst.x3985.x4001.rs.dns-oarc.net. rst.x4023.x3985.x4001.rs.dns-oarc.net. "192.168.1.1 sent EDNS buffer size 4096" "192.168.1.1 DNS reply size limit is at least 4023 bytes" #==> Ici, on voit que les rponses DNS de 4023 octets peuvent arriver.

# Avec des rsolveurs DNS mal configurs ou mal connects (ici, ceux dAlice, via une AliceB $ dig +short rs.dns-oarc.net txt rst.x486.rs.dns-oarc.net. rst.x454.x486.rs.dns-oarc.net. rst.x384.x454.x486.rs.dns-oarc.net. "213.228.63.58 lacks EDNS, defaults to 512" "213.228.63.58 DNS reply size limit is at least 486 bytes" #==> 486 octets arrivent passer, ce qui est insuffisant dans de nombreux cas.

Important : Si vous arrivez la recevoir, cest que le test prcdent avait un problme. Si vous ny arrivez pas, cest quil reste bien un ltrage maladroit quelque part.

394

Chapitre 12. SR005 - Administrer un serveur DNS

12.6. valuation pour le module sr005


Source(s):

OF: SR005-ch05-controle.pdf (docs/eof/sr005-ch05-controle.pdf)

12.6.1. Questions de cours


Les questions suivantes font appel peu de rexion et sont donc parfois videntes. Malgr tout, la pertinence et la prcision de vos rponses seront prises en compte :

- Quels sont les diffrents types de requtes DNS qui sont utiliss quotidiennement ? quoi A AAAA PTR Address record : associe Address record : associe Pointer record : associe reverse = exactement un nom dhte adresse IPv4 un nom dhte adresse IPv6 une adresse IP un enregistrement de nom de domaine le contraire du A record

MX NS SOA

Mail Exchange Record qui dfinit les serveurs de courriel pour le domaine Name Server Record qui dfinit les serveurs de noms pour le domaine

Start Of Authority record qui donne les informations gnrales de la zone : serveur principal, courriel de contact, diffrentes dures dont celle dexpiration, nu record permet un administrateur dinsrer un texte quelconque dans un enregistrement DNS

TXT

Donner un exemple dutilisation pour chacun: $ dig free.fr A +short 212.27.48.10 $ dig free.fr NS +short freens2-g20.free.fr. freens1-g20.free.fr. $ dig free.fr MX +short 20 mx2.free.fr. 10 mx1.free.fr. $ dig -x 212.27.48.10 +short www.free.fr. # PTR

395

Chapitre 12. SR005 - Administrer un serveur DNS


- Quels sont les changes entre un serveur matre et un serveur esclave ? Echange de zone (echange de configuration), requte rcursive (if forward-only),...

- Comment fixer le TTL (dfinir et expliquer ce terme) dune zone ? "Time To Live" = Dure de vie dun enregistrement RR (Ressource Record) Cest le temps par dfaut durant lequel les enregistrements (records) de la zone seront cons En complment... Source: Julien Aulagnier :)

"... Par dfaut le TTL est exprim en secondes mais il est possible de lcrire de cette man

* En tte du fichier de configuration grce la directive $TTL qui spcifie la valeur d

* Le TTL spcifi dans lenregistrement SOA et correspond au "TTL negatif". Il sagit de

* Le TTL spcifi chaque RR (entre le nom du RR et le TYPE) crase la valeur de $TTL p

Le serveur ayant en cache ces enregistrements les considra obsoltes une fois le dlai corr

- Comment le choisir ? Quels sont les avantages et inconvnients dune valeur haute ou basse Si les modifications de RR sont frquents dans une zone il conviendra de positionner un TTL

Une valeur haute conserve les donnes longtemps en cache. Lavantage est que cela rend les r Une valeur faible assure que les donnes en cache soient souvent mise jour et donc limite - Quelles sont les principales menaces qui planent sur votre service DNS ? Expliquer les !

La principale menance sur un service DNS cest quun personne mal intentionner puisse effect

Une deuxieme menaces, est le deni de service, cest dire que si le server DNS est surcharg

12.6.2. Architecture dune agence


Imaginez larchitecture dns (nombre de serveurs, placement sur le rseau, fonctionnalits, limitations (acl) des requtes, etc.) au niveau dune des agences avec les besoins suivants :

- Une agence propose divers services et possde donc des serveurs accessibles dInterne - Les machines du personnel mettent des requtes (pour aller sur le Web par exemple), - Une agence est autoritaire pour la zone monagence.magrosseboite.fr et peut recevoir d qutes du monde entier, - Pour plus de scurit, les serveurs situs dans la DMZ doivent avoir un serveur DNS d quement ou logiquement, au choix) du reste des serveurs dns. Cette contrainte est opt

396

Chapitre 12. SR005 - Administrer un serveur DNS Une reprsentation graphique, en plus du texte dexplication, est vivement conseille. Pour la rponse se rfrer ce site (http://ferry.eof.eu.org/lesjournaux/ll/public_html/ch09s04.html)

12.6.3. Conguration Bind


crire la conguration (named.conf minimale et au moins une zone) pour le serveur rpondant aux requtes provenant dInternet. Pour lexemple, notre domaine aura pour nom monagence.magrosseboite.fr. :
$ORIGIN . $ttl 38400 @ IN

SOA

monagence.magrosseboite.fr. 2004110129 5400 3600 604800 38400 )

admin.monagence.magrosseboite.fr. (

$ORIGIN mail www webmail www ftp

NS ns.monagence.magrosseboite.fr. NS ns.anotherdomain.com. MX 10 mail.monagence.magrosseboite.fr. MX 20 mail.anotherdomain.com. A 123.45.67.89 monagence.magrosseboite.fr. A 123.45.67.89 123.45.67.90 CNAME mail CNAME www CNAME www

397

Chapitre 13. SR006 - Administrer un serveur de messagerie (SMTP)


Le but de ce module est de fournir les connaissances ncessaires la mise en place dun serveur de messagerie.

13.1. La messagerie lectronique


Source(s):

OF: SR006-ch01-messagerie.pdf (docs/eof/sr006-ch01-messagerie.pdf)

13.1.1. Prsentation & Terminologie


La messagerie lctronique est devenue le systme critique dune entreprise puisque cest le cur de toutes communications entre employs. Le fonctionnement de ce service impactera directement sur lactivit de votre compagnie et ds lors, vous devrez rllement penser et prparer toute manipulation sur vos serveurs. Si un service doit tre favoris (systme de sauvegarde, scurit, qualit de service, etc.), cest celui- ci. Une messagerie est dcompose en au moins deux tapes signicatives et indpendantes : lenvoi et la rception. Techniquement on parle plutt de dialogues entre serveurs ou dun change client vers serveur. Mail User Agent (MUA) (http://en.wikipedia.org/wiki/Mail_user_agent) : client de messagerie (logiciel Mozilla Thunderbird, Outlook, etc...) Mail Transfert Agent (MTA) (http://en.wikipedia.org/wiki/Message_transfer_agent) : serveur de messagerie dont le rle est de relayer les courriels ou de les accepter sils sont destins au domaine courant. Simple Mail Transfert Protocol (SMTP) (http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol) : Protocole Internet standard (RFC 821 (http://tools.ietf.org/rfc/rfc821.txt) et RFC 5321 (http://tools.ietf.org/rfc/rfc5321.txt)) utilis par les MUAs et MTAs pour envoyer/recevoir (ou relayer) des messages courriels.

398

Chapitre 13. SR006 - Administrer un serveur de messagerie (SMTP)


Note : Voir aussi Extended SMTP (Wikipedia) (http://en.wikipedia.org/wiki/Extended_SMTP): denition dextension au protocole SMTP.

Internet Message Access Protocol (IMAP) (http://en.wikipedia.org/wiki/Internet_Message_Access_Protocol) ou Post Ofce Protocol (POP3) (http://en.wikipedia.org/wiki/Post_Ofce_Protocol) : Protocole par lequel lutilisateur se connecter sa bote aux lettres pour rcuprer ses courriels

13.1.2. Serveur de messagerie (Exim4, Postx, etc...)


Postx (http://www.postx.org) : dvelopp par le clbre spcialiste en scurit Wietse Venema et a tout ax sur lcriture dun remplaant performant et scuris de Sendmail. Objectif russi puisque Postx est devenu lune des rfrences grce la qualit du programme et son architecture modulaire. Enn il dipose de nombreuses fonctionnalits et galement dune syntaxe humaine ... Exim4 (http://www.exim.org) : bien que plus discret face ses concurrents, est trs prsent sur Internet, en particulier chez divers fournisseurs daccs mais aussi dans de grandes universits. La chose la plus apprciable dans Exim4 est sa modularit de conguration, il est ainsi possible de faire tout ce que lon veut ds lors que lon est prt retrousser ses manches. Mme si la scurit nest pas aussi forte que sous Posftix, son auteur Philip Hazel sest attach ne pas reproduire le pass de Sendmail. Dernier point et non des moindres, Exim est le seul mta a tre sous licence GPL, contrairement qmail Dautres existent : Sendmail (anctre remplac par Postx), Qmail (par recommend), MS Exchange (no comment !), ...

13.1.3. Choisir un serveur de messagerie, fonctionalits ncessaires


Le choix de vos serveurs doit faire intervenir la fois votre prfrence mais aussi vos besoins, certaines congurations sont plus facilement ralisables sur un mta plutt quun autre. En plus du choix du mta, vous devez galement tenir compte du serveur pop ou imap que vous allez utiliser donc ne ngligez pas votre choix : tous les composants de votre service de messagerie devront pouvoir sinterfacer entre eux.

## Exemple de besoin : - Domaines virtuels - Utilisateurs virtuels - Quotas - Authentification via fichiers plats, base de donnes, annuaire, etc. - Besoin douverture : le format de stockage des messages doit tre standard (Maildir, m - Filtrage du mail (Anti-virus, anti-spam, etc.) - Classement des mails (Sieve, Exim filters, procmail, etc

399

Chapitre 13. SR006 - Administrer un serveur de messagerie (SMTP) lheure actuelle, la solution la plus simple pour grer des domaines et utilisateurs virtuels est lutilisation de vpopmail... Important de poser tous ses besoins sur une feuille et dexaminer chaque logiciel pour voir sil est capable de les remplir...

13.1.4. Exim4 Documentation


$ man exim4 $ man update-exim4.conf ## Deamon options ## Documentation on Debian based configuration

## Documentation page http://www.exim.org/docs.html ## User Manuel - Exim4 Spcification http://www.exim.org/exim-html-current/doc/html/index.html ## README.Debian localis /usr/share/doc/exim4-base/README.Debian.gz ## Voir aussi (si existe) /usr/share/doc/exim4-base/spec.txt.gz

13.1.5. Exim4 conguration


Exim4 se congure laide dun chier texte (/etc/exim4/exim4.conf) dcompos en six parties :
dclaration de variables gnrales ## premire partie implicite begin acl ## contrle daccs begin routers ## routage begin transports ## transport begin retry ## begin rewrite begin authenticators

Si vous utilisez les paquets Debian et que vous avez activ loption (dc_use_split_cong dans /etc/exim4/update-exim4.conf.conf), vous pouvez clater votre chier de conguration en de multiples chiers de conguration et rpertoires. Cette division est fate pour bien dissocier les sections, routeurs, transports, ou ACL
Note : Le script update-exim4.conf gnre le chier de conguration principal dExim4 /var/lib/exim4/cong.autogenerated en fusionnant les donnes contenues dans le chier modle

400

Chapitre 13. SR006 - Administrer un serveur de messagerie (SMTP)


/etc/exim4/exim4.conf.template ou dans /etc/exim4/conf.d (arbre de repertoire) et dans /etc/exim4/update-exim4.conf.conf vers le chier de sortie /var/lib/exim4/cong.autogenerated. Il est possible de crer son propre chier de conguration centralis /etc/exim4/exim4.conf. Si ce chier existe, Exim va lutliser et ignor celui gnr automatiquement. Dans ce cas, il est prfrable de mettre dc_eximcong_congtype=none dans /etc/exim4/update-exim4.conf.conf pour prevenir debconf de poser trop de question sur exim4.

## Debconf configuration $ dpkg-reconfigure exim4-config

$ tree /etc/exim4 /etc/exim4 |-- conf.d | |-- acl | | |-- 00_exim4-config_header | | |-- 20_exim4-config_local_deny_exceptions | | |-- 30_exim4-config_check_mail | | |-- 30_exim4-config_check_rcpt | | -- 40_exim4-config_check_data | |-- auth | | |-- 00_exim4-config_header | | -- 30_exim4-config_examples | |-- main | | |-- 01_exim4-config_listmacrosdefs | | |-- 02_exim4-config_options | | |-- 03_exim4-config_tlsoptions | | -- 90_exim4-config_log_selector | |-- retry | | |-- 00_exim4-config_header | | -- 30_exim4-config | |-- rewrite | | |-- 00_exim4-config_header | | -- 31_exim4-config_rewriting | |-- router | | |-- 00_exim4-config_header | | |-- 100_exim4-config_domain_literal | | |-- 150_exim4-config_hubbed_hosts | | |-- 200_exim4-config_primary | | |-- 300_exim4-config_real_local | | |-- 400_exim4-config_system_aliases | | |-- 500_exim4-config_hubuser | | |-- 600_exim4-config_userforward | | |-- 700_exim4-config_procmail | | |-- 800_exim4-config_maildrop | | |-- 850_exim4-config_lowuid | | |-- 900_exim4-config_local_user | | -- mmm_mail4root | -- transport | |-- 00_exim4-config_header | |-- 10_exim4-config_transport-macros

401

Chapitre 13. SR006 - Administrer un serveur de messagerie (SMTP)


| |-- 30_exim4-config_address_file | |-- 30_exim4-config_address_pipe | |-- 30_exim4-config_address_reply | |-- 30_exim4-config_mail_spool | |-- 30_exim4-config_maildir_home | |-- 30_exim4-config_maildrop_pipe | |-- 30_exim4-config_procmail_pipe | |-- 30_exim4-config_remote_smtp | |-- 30_exim4-config_remote_smtp_smarthost | -- 35_exim4-config_address_directory |-- exim4.conf.template |-- passwd.client -- update-exim4.conf.conf

Vrier la version et le chier de conguration :

$ exim4 -bV Exim version 4.69 #1 built 30-Sep-2008 18:26:35 Copyright (c) University of Cambridge 2006 Berkeley DB: Berkeley DB 4.6.21: (September 27, 2007) Support for: crypteq iconv() IPv6 GnuTLS move_frozen_messages Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch nis nis0 pas Authenticators: cram_md5 plaintext Routers: accept dnslookup ipliteral manualroute queryprogram redirect Transports: appendfile/maildir/mailstore autoreply lmtp pipe smtp Fixed never_users: 0 Size of off_t: 8 Configuration file is /var/lib/exim4/config.autogenerated

13.2. Travaux pratiques 1


Source(s):

OF: SR006-ch02-tp1.pdf (docs/eof/sr006-ch02-tp1.pdf)

13.2.1. Gnral
### laide dun sniffer (tcpdump, ethereal) ou des RFCs, dcrivez lchange de message entre deux serveurs SMTP dans le cas le plus simple possible.
## Avec tcpdump (pour un traffic non encrypt)

402

Chapitre 13. SR006 - Administrer un serveur de messagerie (SMTP)


$ tcpdump -vvv -x -X -s 1500 -n -i eth2 port 587 or port 25 -l | tee smtp-com.txt # 587 est le port utilis par google pour le serveur SMTP ##==> Malheureusement, la connection tant encrypt automatiquement, il nest pas possible de voir lensemble de la transaction SMTP en clair.

## Depuis les RFCs Lors dun change, on distingue : - le serveur SMTP expditeur (celui qui envoi le message) - du serveur SMTP destinataire (qui le recoit). Un canal bi-directionel de communication est tablit entre les deux serveur (EHLO = HELLO prcdement) puis lexpditeur envoi des commandes SMTP auxquelles le dstinataire rponds. 1. Lexpditeur envoi la commande MAIL (indiquant laddresse courriel de lauteur du message) 2. Le destinataire rpond par un OK (sil accepte les courriels) 3. Lexpditeur envoi la command RCPT (indiquant laddresse courriel du destinataire du message) 4. Le destinataire rpond par un OK (sil accepte message pour ce destinataire) ou rejete simplemen le destinataire mais la la transaction SMTP en court... 5. Lexpditeur peut ngocier pour plusieur addresse courriel destinataire 6. Suite au OK du destinataire, lexpditeur envoi les donnes DATA du message en terminant avec une squence spcial. 7. Si le serveur destinataire traite correctement les donnes du message DATA, il rponds par un OK. +----------+ +----------+ +------+ | | | | | User |<-->| | SMTP | | +------+ | Sender- |Commands/Replies| Receiver-| +------+ | SMTP |<-------------->| SMTP | +------+ | File |<-->| | and Mail | |<-->| File | |System| | | | | |System| +------+ +----------+ +----------+ +------+ Sender-SMTP Receiver-SMTP

Model for SMTP Use

## Trace rseau via Claw mail * Connexion au serveur SMTP : smtp.gmail.com... [22:05:22] SMTP< 220 mx.google.com ESMTP q9sm20523082gve.19 [22:05:22] ESMTP> EHLO macfil.ermansion.net [22:05:23] ESMTP< 250-mx.google.com at your service, [92.40.114.158] [22:05:23] ESMTP< 250-SIZE 35651584 [22:05:23] ESMTP< 250-8BITMIME

403

Chapitre 13. SR006 - Administrer un serveur de messagerie (SMTP)


[22:05:23] ESMTP< 250-STARTTLS [22:05:23] ESMTP< 250-ENHANCEDSTATUSCODES [22:05:23] ESMTP< 250 PIPELINING ** SMTP AUTH non disponible [22:05:23] ESMTP> STARTTLS ## Scurise la communication [22:05:24] ESMTP< 220 2.0.0 Ready to start TLS [22:05:28] ESMTP> EHLO macfil.ermansion.net [22:05:29] ESMTP< 250-mx.google.com at your service, [92.40.114.158] [22:05:29] ESMTP< 250-SIZE 35651584 [22:05:29] ESMTP< 250-8BITMIME [22:05:29] ESMTP< 250-AUTH LOGIN PLAIN [22:05:29] ESMTP< 250-ENHANCEDSTATUSCODES [22:05:29] ESMTP< 250 PIPELINING [22:05:29] ESMTP> AUTH LOGIN [22:05:30] ESMTP< 334 VXNlcm5hbWU6 [22:05:30] ESMTP> [USERID] [22:05:31] ESMTP< 334 UGFzc3dvcmQ6 [22:05:31] ESMTP> [PASSWORD] [22:05:32] ESMTP< 235 2.7.0 Accepted [22:05:32] ESMTP> MAIL FROM:<filostene@gmail.com> SIZE=345 [22:05:33] SMTP< 250 2.1.0 OK q9sm20523082gve.19 [22:05:33] SMTP> RCPT TO:<filostene@gmail.com> [22:05:34] SMTP< 250 2.1.5 OK q9sm20523082gve.19 [22:05:34] SMTP> DATA [22:05:35] SMTP< 354 Go ahead q9sm20523082gve.19 [22:05:35] SMTP> . (EOM) [22:05:39] SMTP< 250 2.0.0 OK 1266962737 q9sm20523082gve.19 * Message envoy avec succs. [22:05:39] SMTP> QUIT [22:05:40] SMTP< 221 2.0.0 closing connection q9sm20523082gve.19

Note : STARTTLS (Transport layer security) est une extension au protocoles de communication en text brut. Elle offre un moyen dencrypter (TLS or SSL) une connection text brut au lieu dutiliser un autre port pour les communications encryptes. STARTTLS pour IMAP et POP3 est dnit dans la RFC 2595 (http://www.ietf.org/rfc/rfc2595.txt), pour SMTP dans la RFC 3207 (http://www.ietf.org/rfc/rfc3207.txt), et pour NNTP dans la RFC 4642 (http://www.ietf.org/rfc/rfc4642.txt).

### Quelles sont les mthodes dauthentication SMTP disponibles ? Utiliser les RFCs pour en dcouvrir dautres que PLAIN ou LOGIN. Pour chaque mthode, indiquer les avantages et inconvnients. Les mthodes dauthentication (http://en.wikipedia.org/wiki/Comparison_of_mail_servers) (SMTP-AUTH Authenticated SMTP) sont dnis dans la RFC 4954 (http://www.ietf.org/rfc/rfc4954.txt). Elles se prsentent sous forme dextension au protocole SMTP. Toutes les mthodes ne sont pas lists dans la RFC, il en existe de nombreuse dont limplmetnation varie grandement dun serveur de messagerie lautre.

404

Chapitre 13. SR006 - Administrer un serveur de messagerie (SMTP) Parmi elle on rescence :
PLAIN # 1 message - Non encrypt -"authid\0userid\0passwd" envoy en clair AVANTAGE: disponible sur tous les serveurs de messagerie INCONVENIENT: scurit quasi null # Challenge/Response mechanism Encodage BASE64 AVANTAGE: disponible sur bcp de serveurs de messagerie meilleur que PLAIN INCONVENIENT: scurit faibles

LOGIN

NTLM (or SPA) # Encodage BASE64 - (scurit faible) (MS Outlook Spcific) AVANTAGE: LOGIN equivalent INCONVENIENT: Microsoft oriented pas disponible sur tous les serveurs. CRAM-MD5

# Encodage HMAC-MD5 MAC algorithm AVANTAGE: Scurit forte Standard RFC 2195 (http://www.ietf.org/rfc/rfc2195.txt) INCONVENIENT: quoique plus difficile, ce mode dauthentification peut-tre d mot de passe soit stock en clair # Encodage HMAC-MD5 MAC algorithm AVANTAGE: Scurit plus forte Standard RFC 2831 (http://www.ietf.org/rfc/rfc2831.txt) Disponible dans de nombreux serveurs de messagerie

DIGEST-MD5

INCONVENIENT: Quoique plus difficile, ce mode dauthentification peut-tre d mot de passe stock en clair

Note : La mthode dauthentication DIGEST-MD5 est plus scurise que CRAM-MD5 parce quil prvient des dattaque de mot de passe en text brut. Pendant une authentication DIGEST-MD5 lors de lchange entre le client et le serveur, il y a des information additionnelles passes qui sont utiliser pour construire un algorithme de hash plus robuste lorsque compar la mthode CRAM-MD5, rendant plus difcile dchiffrer.

### Dcrivez le chemin quemprunte un message lorsquExim reoit une connexion SMTP depuis un serveur sur Internet destination dun domaine local. Vous pouvez vous aider dun schma. Pensez aux ACL, transports, routeurs, mthodes dauthentication, etc.

405

Chapitre 13. SR006 - Administrer un serveur de messagerie (SMTP) Figure 13-1. Exim4 : Chemin emprunt par un message SMTP reu

406

Chapitre 13. SR006 - Administrer un serveur de messagerie (SMTP)

a bounce message, or (failed) Delivery Status Notication (DSN) message, aka Non-Delivery Report/Receipt (NDR), Non-Delivery Notication (NDN), or simply a bounce is an automated electronic mail message from a mail system informing the sender of another message about a delivery problem. The original message is said to have bounced. http://en.wikipedia.org/wiki/Bounce_message

13.2.2. Expansion de variables


La syntaxe dExim est parfois droutante et est souvent la cause de svres dpressions chez les administrateurs cause de ses trop nombreuses accolades ouvrantes et fermantes. Cest le prix payer pour prendre en main ce langage qui sera en mesure de raliser toutes vos envies. La notion la plus importante est lexpansion de variable, lorsque vous attribuez des valeurs vos options dans vos routeurs ou transports, vous pouvez donner des constantes ou des chanes dynamiques, celle-ci sont values lorsquExim lit sa valeur. Vous les reprez par la notation ${monexpression}. Tout un langage de programmation (Turing complet !) a t crit cet effet : vous disposez ainsi de toutes les fonctions de manipulation de chanes de caractres, de lecture de chier, dcoute de socket rseau, calculs mathmatiques, etc. Exim permet de faire des recherches dans des chiers laide de la directive lookup (lookup et lsearch directive (http://exim.org/exim-html-4.50/doc/html/spec_9.html#IX653)). Les fonctions peuvent tre combines entre elles pour faire des manipulations plus complexes :
$ cat /etc/aliases ... root: filostene ... $ exim4 -be >${lookup{root}lsearch{/etc/aliases}} filostene >${lookup{root}lsearch{/etc/passwd}} x:0:0:root:/root:/bin/bash >${extract{5}{:}{${lookup{root}lsearch{/etc/passwd}}}} /root # Rcupration du rpertoire personnel # de lutilisateur root # partir du fichier /etc/passwd >... # option Expansion testing mode # rcuprer lutilisateur # en charge de ladresse de root

407

Chapitre 13. SR006 - Administrer un serveur de messagerie (SMTP)

13.2.3. Congurations possibles (Local, Smarthost, Satellite...)


Les paquets Debian ont popularis une certaine terminologie rprsentant les mode de conguration dun serveur SMTP :
- Local # Tout est fait en local, # il ny a pas dchange via le rseau. # Le serveur peut recevoir des mails directement, # mais tout le courrier sortant passe par un # autre serveur (centralisation). # Le serveur ne recoit pas de mail directement # et ne peut quenvoyer des mails via un serveur. # Le serveur envoie et reoit des mails directement.

- Smarthost

- Satellite

- Internet site

Questions : Quelle est lutilit du mode local ? Quels sont les programmes/services qui en dpendent ? Les programmes et services systmes pour par example informer ladminsitrateur root de dysfonctionnement, de lexecution de tache de maintenance (cron) ou de tentatives daccs non autorises (login)... Pourquoi utiliser le mode smarthost ? Quels sont les motifs les plus frquents de cet usage ? Pour pouvoir grer les e-mails appartenant un domaine local. Cest loption la plus courante pour un hte qui a une connectivit restreinte Internet, par example une connection residentiel ou un smarthost SMTP est gnralement utilis. Les FAIs bloquent toutes connection SMTP sortantes pour combattre les problmes de SPAM ce qui requiert dutiliser leur Smarthost pour lenvoi de-mail. Gnralement cest aussi une bonne ide de lutiliser lorsque la connection est bas sur une addresse IP dynamique puisque trs peu de site accepte directement la livraison de-mail via des rangs dadresse. crire la conguration dExim minimale pour servir de smarthost.
## Re-configuration minimum via Debconf

408

Chapitre 13. SR006 - Administrer un serveur de messagerie (SMTP)


$ dpkg-reconfigure exim4-config

Utilisation du serveur SMTP Goolge comme relay:


## /etc/exim4/update-exim4.conf.conf ... dc_eximconfig_configtype=satellite dc_other_hostnames= dc_local_interfaces=127.0.0.1 dc_readhost=ermansion.net dc_relay_domains= dc_minimaldns=false dc_relay_nets= dc_smarthost=smtp.gmail.com::587 CFILEMODE=644 dc_use_split_config=true dc_hide_mailname=true dc_mailname_in_oh=true dc_localdelivery=mail_spool ...

13.3. valuation pour le module sr006


Source(s):

OF: SR006-ch03-controle.pdf (docs/eof/sr006-ch03-controle.pdf)

Quelles sont les diffrences entre les protocoles IMAP et POP ? Les deux sont de protocoles standard Internet permettant de rcuprer les messages courriels de sa bote au lettre electronique. Le libre accs ces standard permet un libre choix de serveurs (et de FAI) ainsi que de client de courriels puisquils sont supports par la majorit dentre eux. Les deux protocoles sont supports par les logiciels de courriels mais pas forcment par tous le FAI dans le cas dIMAP (plus complexe congurer que POP). Dans le cas dIMAP, les logiciels clients tlcharge une copie du message lors dune requte dev lutilistateur et le conserve dans une cache local (au cas par cas). POP tlcharge systmatiquement en local avec la possibilit de conserver une copie sur le serveur (conguration gnrale du compte POP)

409

Chapitre 13. SR006 - Administrer un serveur de messagerie (SMTP) IMAP supporte en-ligne et hors-ligne operations. Les logiciels de courriels laisse gnralement les messages sur le serveur jusqua ce quil soit explicitement effac par lutilisateur. IMAP permet a de multiple client de grer la mme bote au lettre. This and other characteristics of IMAP operation allow multiple clients to manage the same mailbox. Temps de rponse plus rapide avec SMTP. IMAP version 4 permet de recuprer des partie individuel MIME (pice jointe) ou des portions individuelles dun messages. Ainsi un utilisteur peur recuprer uniquement la partie text dun message sans les pices jointes ou de dmarrer immdiatement un contenu en streaming. IMAP version 4 permet de conserver letat du message (drapeau) sur le serveur (lu, non lu, rpondu, etc...) donc si un client se connecte un autre moment ou dune autre localisation linformation peut-tre lu en temps reel. IMAP version 4 permet de crer, renomer ou effacer des botes aux lettres (dossier sur le serveur)et de dplacer des messages entre les botes aux lettres. Ceci permet notemment un meilleur partage possible de dossiers. Avec IMAP il est possible de demander au serveur de procder lui mme une recherche selon divers critres vitant ainsi au client de tlcharger tous les messages pour effectuer une telle recherche. Toutefois ceci peut augmenter lutilisation de ressources sur le serveur dans le cas de multiple recherche massives. IMAP est un protocole extensible via un mecanisme dextension. Avec IMAP4 une connection TCP/IP a besoin dtre maintenu toute instant pour tre noti de larrive de nouveaux messages. IMAP4 ne permet denvoyer et recevoir en une seule opration Quel est le protocole de rcupration de mail le plus adapt pour une personne qui ne lit ses mails que depuis sa machine personnelle ? Lun ou lautre fera bien laffaire dans un tel cas pour peu que le FAI fournisse un accs POP et/ou IMAP la bote de messagerie. Un mail chang entre deux entreprises distinctes transite par au moins combien de serveurs ? Prcisez lesquels.

410

Chapitre 13. SR006 - Administrer un serveur de messagerie (SMTP) Pour deux entreprises disctinctes appartenant au mme domaine, un serveur Si elle appartiennent deux domaines diffrents, deux serveurs: SMTP sortant de lentreprise A, SMTP entrant de lentreprise B.

411

Chapitre 14. SR007 Administrer un serveur Web (HTTP)


14.1. Serveur Web Apache
14.1.1. Introduction
Source(s):

OF: SR007-ch00-pagedegarde.pdf (docs/eof/sr007-ch00-pagedegarde.pdf) SR007-ch01-sr007-http.pdf (docs/eof/sr007-ch01-sr007-http.pdf)

14.1.2. Travaux pratiques 1: Base et Protocole


Source(s):

OF: SR007-ch02-tp1.pdf (docs/eof/sr007-ch02-tp1.pdf)

14.1.2.1. Installation de base


Crez un utilisateur et un groupe Sur Debian le compte www-data existe dj, jutilise celui-ci. Quoiquil puisse tre bien den crer un autre par souci de scurit en dsactivant le compte utilis par dfaut :) Crez la hirarchie de rpertoires pour accueillir votre site, en la justiant.
## Je verrais bien quelque chose du genre: /var/ermansion.net/www /var/ermansion.net/www/htdocs # Page Web /var/ermansion.net/www/logs # Logs daccs et derreur /var/ermansion.net/www/cgi-bin # Scripts ## Avec en plus tout autre repertoire pouvant tre vraiment utile au cas par cas... ## Mais pour un cas simple cela suffit emplement :) /var/ermansion.net/www/stats ## Statistiques du site :)

412

Chapitre 14. SR007 Administrer un serveur Web (HTTP) Quel est lintrt dune telle sparation ? Scurit et Contrle (Monitoring, Debuggage, Performance, etc...). Possibilit de dlguer ladminsitration du site (si Apache activ pour plusieurs comptes) Modiez le chier de conguration fourni dans la distribution dApache pour ladapter votre installation Crez quelques chiers et rpertoires la racine de votre site et essayez dy accder depuis votre navigateur Web. Un exercise similaire est dcrit au chapitre Serveur Web - Apache - Installation et conguration dans la partie SR009 Quelles doivent tre les permissions de vos chiers pour quApache puisse y accder ?
740 pour tous les repertoires et fichier (et ventuellement 760 pour un dossier dans lequel le serveur pourrait avoir besoin dcrire [transfert de fichier]) Lecture/Ecriture pour le propritaire Lecture pour le compte executant Apache Aucun accs pour tous les autres :)

14.1.2.2. Analyse du protocole


Pour mieux comprendre le protocole HTTP, vous allez consulter les pages de votre site laide de netcat.
## Supposons que le site Web soit sur la machine locale : $ nc localhost 80

laide de la RFC 2616 (http://tools.ietf.org/rfc/rfc2616.txt), construisons une requte HTTP valide :


## Une requte HTTP est dau moins une ligne GET http://localhost/phpldapadmin/index.php HTTP/1.1

# Methode (Commande) # + URI # + Protocole version

Quels sont les champs obligatoires avec HTTP/1.1 ?

413

Chapitre 14. SR007 Administrer un serveur Web (HTTP) Commande (Method) + Espace (SP) + URI + Espace (SP) + Protocole Version (HTTP-Version) + n de la ligne (CRLF)
Note : Lors de mon test, sans indiquer la version du protocole cela fonctionne trs bien aussi :) Sil nest pas indiqu, cest celui de la communication tablit qui est utilis (de ce que jai compris via la RFC).

14.1.2.3. Publication de pages des utilisateurs


Apache permet aux utilisateurs de possder leur propre espace Web. Ainsi, si vous accdez http: //www.testme.fr/~julien/, vous accdez la page Web cre par lutilisateur local. Mettez en place un systme identique laide de mod_userdir TO DO !!!

14.1.3. Travaux pratiques 2: SSL, Php et Virtual Host


Source(s):

OF: SR007-ch03-tp2.pdf (docs/eof/sr007-ch03-tp2.pdf)

14.1.3.1. SSL
Le cours SR016 documentera la cration de certicats SSL mais si vous tes impatient, vous pouvez utiliser les certicats installs par dfaut pour faire des tests ou bien gnrer vous-mme vos propres certicats avec le HOWTO adquat 1. Si la ligne de commande vous fait peur, vous pouvez utiliser TinyCA2 qui est une interface graphique. Maintenant, mettez en place le SSL pour votre site : TO DO...
Note : Il nest pas possible davoir deux certicats SSL diffrents sur une mme adresse IP, bien quil y ait des travaux sur la question.

414

Chapitre 14. SR007 Administrer un serveur Web (HTTP) Redirection HTTP vers HTTPS (http://www.commentcamarche.net/forum/afch-1059631-apache-redirection-http-vers-https)

14.1.3.2. PHP
Autorisez lexcution de scripts PHP et crire un script afchant le PID lorsquil est excut (utilisez la fonction posix_getpid()3. Que remarquez-vous ? Quelle aurait t la diffrence si ctait un script CGI ? Je nai pas test mais en toute vraisemblance dans le premier cas, le PID du script serait le mme que le PID dApache (processus identique), dans le second cas il serait compltement diffrent...(un processus par CGI)

14.1.3.3. Virtual Host


Mettre en place deux sites virtuels de type name based avec lun disposant des CGI. Un exercise similaire est dcrit au chapitre Serveur Web - Apache - Installation et conguration dans la partie SR009 Pour la mise en place de CGI il faudrait modier la conguration du VirtualHost :
<VirtualHost ermansion.net www.ermansion.net> ServerName ermansion.net DirectoryIndex index.html DocumentRoot /var/ermansion.net/www/htdocs ScriptAlias /cgi-bin/ /var/ermansion.net/www/cgi-bin <Directory /var/ermansion.net/www/cgi-bin> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> ErrorLog /var/ermansion.net/www/logs/error_log CustomLog /var/ermansion.net/www/logs/access_log combined </VirtualHost>

Avertissement
!!!Attention!!! La conguration ci-dessus na pas t test en environement rel...elle est purement throrique et peut-tre incorrect ce stade ! revoir ultrieurement...

415

Chapitre 14. SR007 Administrer un serveur Web (HTTP) Est-il possible de mettre en place du SSL pour ces sites ? Pourquoi ? Comment pourrait-ton faire ? SSL VirtualHost (http://www.hsc.fr/ressources/breves/ssl_virtualhosts.html.fr) Redirection et VirtualHost SSL (http://www.commentcamarche.net/forum/afch-1769865-apache-redirection-et-virtual-host-ssl)

14.1.4. Contrle
Source(s):

OF: SR007-ch04-controle.pdf (docs/eof/sr007-ch04-controle.pdf)

Il semble que le document de lof soit vide !!!

416

Chapitre 15. SR010 Les enjeux de la scurit


Bienvenus dans le domaine de JP ! Comme il le dit si bien : "... Durant trois semaines, nous allons tenter de vous faire rchir. Nous allons franchir le pas de ladministration systme pour rentrer dans celui de la scurisation. Nous nallons plus penser ce que les choses fonctionnent, mais ce quelles soient scurises, ce qui sous-entend forcment quelles fonctionnent... ... Fini donc les exclamations "a marche", il faudra aller un pas plus loin. Si vous fates une action et que celle-ci entrane votre perte, ce nest pas une bonne action. Comme vous le verrez, il y a deux types dadministrateurs : ceux qui se sont fait pirater et ceux qui vont se faire pirater... ... Ne vous ez pas au programme horaire afch, il parait que vous pouvez le multiplier par 12 pour les heures passer pour sr010. Cest lexprience que nous en avons, en tous cas... ...Plus vous irez loin, plus je vous accompagnerais... ... Vous allez revoir des notions dores et dj parcourues et normalement assimiles. Ce sera un trs bon moyen de sen assurer... ... Vous entrez dans le monde merveilleux de la scurit par le petit bout : il y a tout un univers dcouvrir. Nous ne sommes que votre porte dentre..."

15.1. Les enjeux (Password, Sauvegardes, etc...)


15.1.1. Introduction
Source(s):

OF: SR010-ch01-act001-sr010-enjeux_securite.pdf (docs/eof/sr010-ch01-act001-sr010-enjeux_securite.pdf) Web: ?[Link To ask en n de module]?(Recommend par JP) (docs/#) Linux Administration (Tome 3) - Scuriser un serveur Linux (informatif mais pas complet) (docs/sr010-ch01-doc-extern-secure-Linux-module3_Bouchaudy.pdf) Magazine: Haking 2010-05 Num 09 : Scurit sous Linux (http://download.hakin9.org/fr/hakin9_05_2010_FR.pdf)

417

Chapitre 15. SR010 Les enjeux de la scurit

On ne le rptera jamais assez : "...Il y a deux types dadministrateurs : ceux qui se sont fait pirater et ceux qui vont se faire pirater..." "...il ne faut faire conance personne, mme pas vous-mme. La paranoa est et restera votre meilleure amie..." "...la scurit informatique peut se mesurer la rsistance la plus forte de son maillon le plus faible..."

15.1.2. Choisir son mot de passe... mais un bon mot de passe, cest quoi ?
Source(s):

Web: Cassage et durcissement des mots de passe [En ligne] (http://www.hsc.fr/ressources/articles/mdp_misc5/index.html.fr) Cassage et durcissement des mots de passe [PDF Version] (docs/sr010-ch01-doc-extern-cassasage-et-durcissement-mot-de-passe-part2.pdf) SECCURE Elliptic Curve Crypto Utility for Reliable Encryption (http://point-at-innity.org/seccure) Construire un gnrateur de mot de passe alatoire (http://bentobako.org/david/blog/index.php?post/2009/04/09/Un-g%C3%A9n%C3%A9rateur-demots-de-passe-al%C3%A9atoires-en-ligne) Tenir compte de la scutit au quotidien [La-Linux] (http://www.lealinux.org/documentations/index.php/Fiches:Tenir_compte_de_la_s%C3%A9curit%C3%A9_au_quotidien)

Tout le monde na pas le mme niveau en arrivant dans ce module. Certaines personnes nont jamais mme rchi la notion de mot de passe et la complexit dentre trouver un valable. Pourtant, votre mot de passe est la clef de vote de votre scurit, il est extrmement important de le choisir correctement... mais aussi de le mmoriser facilement.

15.1.2.1. Quest-ce quun mauvais mot de passe ?


Pour commencer, un mauvais mot de passe est un mot de passe pour lequel vous pouvez rpondre "oui" lune des 7 questions suivantes:
- Avez vous crit sur un bout de papier votre mot de passe ? - Votre mot de passe est-il un mot commun que lon peut trouver dans le dictionnaire ? - Votre mot de passe est-il un mot commun suivi de 2 chiffres ? - Votre mot de passe est-il un nom de personne, de lieu ou danimal ?

418

Chapitre 15. SR010 Les enjeux de la scurit


- Quelquun dautre connait-il votre mot de passe ? - Utilisez vous le meme mot de passe pour plusieurs comptes et pour une longue priode ? - Utilisez vous le mot de passe par dfaut du constructeur ou de lditeur ?

15.1.2.2. Un bon mot de passe...


"...Un bon mot de passe est un mot de passe que lon ne peut pas trouver en usant dun dictionnaire, mme si ce dernier se voit dot dastuces basiques de substitution..." Un mot de passe doit tre sufsement long et complexe (different type de caractre dont ceux non-alphanumrique). Minimum 8 caractres mais attention au del de 14 caractre certains systme pourrait ne pas tre capable de le grer...
Note : Y a t il des caractres ne pas utiliser (/,\,<,>,& par example) ? Ca dpend de chaque implmentation dans chaque application au monde qui vrie une entre de mot de passe ;)Le plus simple est daller lire le code source o est implment la commande de vrication de mot de passe (passwd par example) cest dedans que lon peut sassurer des caractres autoriss.

Note : Pour ma part jaurais tendance penser quune harmonisation ce niveau au sein des applications dune mme entit peut faciliter la gestion de mot de passe pour les utilisateurs naux mais cest pas toujours vident d la diversication des sytmes de vrication existant.

En gros, partir de quel moment, quand on teste son mot de passe, on peut estimer quil est sr ? Une suite de caractre non squentielle, nayant aucun sens commun, utilisant lchelle des ~80 possibilits disponible tel que [A-Za-z0-9,?.;:/!*textmu%$^=+) _-("&{[|\^@\]}] Voir aussi: Cassage et durcissement des mots de passe [PDF Version] (docs/sr010-ch01-doc-extern-cassasage-et-durcissement-mot-de-passe-part2.pdf)

419

Chapitre 15. SR010 Les enjeux de la scurit

Avertissement
Attention, au disposition clavier (anglais, lituanien, etc), certains caractres apparatront/disparatront ;)

u Exemple de caractre disponible sur un clavier en lituanien : a ce ei u

15.1.2.3. Examples de mot de passe


Il est essentiel de choisir convenablement son mot de passe :
## Je propose #Phrase Code Up2hmlnfj2mal! > Un peu dhumour mme lourd ne fait jamais de mal au lit ! c33cq02u* > Cest en chantant quon devient une star ! ==> le deuxime n est peut-tre pas assez long... #Phrase/Name/Dates Richard2010Eleonore2011$ IsItDifficultEnough? ==> a cest BOF!!! #Combinaison au clavier QaZxCvW9182!!! Mnbvcxz546732891 #Cypher MBUfufBUPup999? > La tete a toto 1000-1 ? C3D1f1C1l32r? > cest difficile docteur ?

## Propos par Christophe # Avec loutil crypt perl -e print crypt("christophe","07")."\n" 07dkT4ubk8sqw perl -e print crypt("christophe","\$1")."\n" $10LK8S0DffXM perl -e print crypt("christophe","\$1\$06\$")."\n" $1$06$st6IX7Uo6mxkYEp2Q9Ua00 # Manuellement Voulez vous coucher avec moi, ce soir ? ---> Vvcam,cs? A lenvers ---> ?sc,macvV Un mot de passe mnmo-technique ---> tesoufouquoi? ==> devrait facilement tre trouv par un dictionnaire mon avis.

420

Chapitre 15. SR010 Les enjeux de la scurit


Le mme lenvers ---> ?iouquofuset En utilisant la disposition des touches du clavier: wcb,:qdgjl5 (une touche sur deux plus le chiffre 5 que jaime bien) ==> Sera trouv facilement par un ripper Adresse postale: 28ruejeanmarypavy35340LaBouexiere --> passphrase mais trop long.

## Propos par Alix Pour ne pas avoir retenir la chane drive partir du mnmo, on peut utiliser un algo de crypto, il ny a plus que la chane retenir. Sample, avec seccure-key : http://point-at-infinity.org/seccure/ sudo seccure-key Enter private key:Voulez vous coucher avec moi, ce soir ? The public key is: 0pRiE[YRE6oAQ$j0/@:UVH1de sudo seccure-key -c secp521r1 Enter private key:Voulez vous coucher avec moi, ce soir ? The public key is: !<k@DMuWp:O.5-!A%:KSKg2h=.<yK8.[;L$9%P@5[^m9(...)

## Propos par PYT Bien manger est le frre de bien boire B1mElF2bB! (15/20) Ne veut absolument rien dire QzX[Ty|Up (13/20), manque des chiffres 1 tien vaut mieux que 2 tu lauras 1TvMQ2tLa (15/20) Horizon pas net, reste la buvette HpN,RaLb! (13/20), manque des chiffres Il est plus dcent davoir un grand nez que deux petits. Ie+DdA1gNq2P! (18/20) Quand les mouettes ont pied, il est temps de virer QlMoP,iEt2v! (16/20) Qui trop coute la mto, passe sa vie au bistrot QtElM,pSvOb! (14/20), utiliser des chiffres Tempte pour y aller, ten chie pour revenir! TpYa,TeCpR! (15/20)

## Propos par Christelle 1er mot de passe: ArSvBMr "Agriculture Salon Rpublique Tlphonie Syndicalisme Ptisserie Vaches SFR Bavardages Rvol

421

Chapitre 15. SR010 Les enjeux de la scurit

2me mot de passe: Led8nPr6 "Le dbat nest pas rcent. En 1986..." 3me mot de passe: SueCPuen "Suc musculaire de boeuf concentr phosphoglycrate sodique sulfate de strychine" 4me mot de passe: RijG1TY4 (premires syllabes des 8 premiers paragraphes dun article en utilisant un code trs simple 5me mot de passe: cltEdFcea "Car lagriculture tue, et de faon cruelle, elle aussi..." 6me mot de passe: 94u4hOp1 "Illustration de une de lhebdomadaire lOeil de la police...,1910" (combin un autre code 7me mot de passe: uenyUrR "culard dsigne une hypertrophie musculaire de larrire-train..." 8me mot de passe: oqHOxEz "Le jour se lve a vous apprendra" (+ un code)

15.1.2.4. Commentaires...

Avertissement
Un truc cr par crypt ou une quelconque fonction de courbe elliptique ne sera jamais retenu car bien trop complexe :). Dans ce cas, utiliser un coffre-fort lectronique de type xkeepass (galement portable sur systme privatif) peut aider. Toutefois cela serait reserver des mots de passe dont lutilit nest pas journalire, sinon, "... tu peux commencer accrocher le rj45 la poutre..." (comme dirait JP)

Les mots de passe cyclique par exemple bas sur le calendrier genre on rajoute la n des mots de passe le numro de la semaine sur deux chiffres (semaine 1 --> 01, semaine 12 --> 12) sont viter aussi... Cest une mauvaise ide, car cest prdictible. 53 choix au plus. Sur un mot de passe de dix caractres, tu tombes 8, avec un choix restreint 52 caractres (alphabtique). Un peu plus si on rajoute les accents. Ca ne fait que 8^52 + 53 propositions, que lon peut rduire aux 12 dernires semaines, on passe donc de 53 12. Ca peut paratre norme quand on le dit comme cela, mais pour un calculateur, ce nest plus grand chose :) Un processeur ( acclrateur optique) 8 000 milliards doprations par seconde, soit la vitesse de la lumire ! (http://www.journaldunet.com/solutions/0310/031030_lumiere.shtml) Secouer un peu le tout pour obtenir un truc plus alatoire et moins prdictible.

422

Chapitre 15. SR010 Les enjeux de la scurit

Avertissement
Ceci est loin davoir fait le tour mais on a pas le temps de sattarder. On aurait voir la notion dala, entre autre problme gnr chez debian il y a deux ans pour le paquet SSl.

Un petit aperu (http://bentobako.org/david/blog/index.php?post/2009/04/09/Ung%C3%A9n%C3%A9rateur-de-mots-de-passe-al%C3%A9atoires-en-ligne) de la difcult de construire un gnrateur de mot de passe.

15.1.3. Priodicit (3 mois ou moins)


Un mot de passe, ne se conserve pas vie !!! Dans un environnement non sensible --> dure de vie normale = trois mois En environnement trs sensible --> quinze jours ou moins Il est trs difcile de faire comprendre lutilisateur lambda la ncessit de ce changement.

Avertissement
Attention ne pas tout mettre en zone sensible. Sil y a une politique trop restrictive, elle ne sera pas suivie par les utilisateurs. Pire, elle sera outrepasse.

Un mot de passe qui change souvent, cest aussi lassurance de ne plus sen souvenir un moment ou un autre. Il est bien entendu hors de question de linscrire sur un post-it accroch lintrieur dune armoire ou de le planquer sous le clavier. Cela reste un comportement dangereux et inacceptable. Nest-il pas plus sr, dans ce cas dallonger la dure de vie du mot de passe ? Tu prends un truc solide que tu ne changes quen cas de doute de compromisssion ou de risque. Il est aussi possible dutiliser un portefeuille de mot de passe qui chiffrera tout ce que vous lui donnez et qui vous demandera lui aussi un mot de passe avant de vous laisser accder au saint des saints. Ce portefeuille sera, of course, protg par un mot de passe. Dans ce cas, la problmatique du mot de passe est juste dplace.

423

Chapitre 15. SR010 Les enjeux de la scurit Il est plus facile de scuriser un point que den scuriser 30. Le gestionnaire de mot de passe ne fonctionnera pas avec un mot de passe, mais une passphrase, qui est plus longue et plus robuste. De plus, sil est bien fait, tu coupleras ton authentication avec une cl publique. Sans lun des deux, tu ne fais rien et l, a commence devenir chaud. Gaffe quand mme ne pas perdre lun des deux, car tous tes mots de passe seront perdus :p

Avertissement
Question importante : il est o physiquement ce portefeuille ? dans votre tte, ailleurs ? chiffr comment ? le paquet chiffr il est o ? et en combien dexemplaire ? vous avez mis quoi dedans ? la cl daccs votre frigo, votre compte bancaire, votre compte root, votre passe sur le forum ubuntu.org ?

15.1.4. Rsum (Rgle/Politique de scurit)


## Mot de passe - Taille: min 10 - max 14 caractres - Renouvellement: Tous les 3 mois ou moins - Contenu: Combinaison alatoir sans sens commun de caractre de type suivant: --> Au moins un de chaque type - Majuscules [A-Z] - Minuscules [a-z] - Chiffres [0-9] - Signes [,?.;:/!*textmu%$^=+) _-("&{][|\^@\}]

- Penser (passe)phrase plutt que de mot (de passe) - Ne pas lcrire ou le socker (sauf cas exceptionel dans un portefeuil chiffr de mot de passe) - Ne pas rutiliser les mots de passe expirs - Crer son propre systme mmotechnique/cypher...

15.1.5. Technique pour gnrer son mot de passe (Example simple)


Si vous vous trouvez dans la situation de gnrer un nouveau mot de passe, voici une technique simple mais qui a fait ses preuves:
- Choisissez un mot ou une phrase qui a un sens pour vous (mais qui reste obscur aux yeux des autres). Par exemple votre personnage prfr dans une pice, lanimal que vous aviez pendant votre enfance, etc... Notre exemple pour la suite sera "mot de passe"

424

Chapitre 15. SR010 Les enjeux de la scurit


- Enlevez les espaces et remplacer caractres non ASCII (difficile de trouver laccent sur un clavier QWERTY-us si vous tes en dplacement). Par exemple: "motdepasse" - Substituez les lettres qui sy prtent par des nombres. Par exemple: "m0tdep4ss3" - Mettez en majuscule certaines lettres. Par exemple: "m0TDep4SS3" - Ajoutez des nombres en fin du mot de passe. Par exemple: "m0TDep4SS301" - Ajoutez un ou plusieurs caractres qui ne sont ni des lettres, ni des nombres. Par exemple: "m0TDep4SS3#01"

Et voil, vous avez un beau mot de passe difcilement reconaissable mais mmorisable.

15.1.6. Tester son mot de passe


Source(s):

Web: John The Ripper (john) (http://www.openwall.com/john/) Trs bonne ressource de dictionnaire (http://www.securinfos.info/wordlists-dictionnaires.php)

Un mot de passe peut tre faillible. Comment sen assurer ? En effectuant exactement les mmes attaquesvque celles auxquelles vous pouvez tre soumises. Utilisez un logiciel tel que John the ripper (alias john). Vous pouvez insrer le dictionnaire que vous voulez ou laisser celui par dfaut.
Note : Cette mthode de test, doit tre appliqu en premier lieu. Par la suite en accord avec votre direction, il est ncessaire que les mots de passe de la globalit du SI soient vris, entre autre par attaque par dictionnaire, et ce de manire rgulire.

$ sudo apt-cache search john ... john - active password cracking tool john-data - active password cracking tool - character sets ...

425

Chapitre 15. SR010 Les enjeux de la scurit

$ sudo apt-cache show john Package: john ... Description: active password cracking tool john, mostly known as John the Ripper, is a tool designed to help systems administrators to find weak (easy to guess or crack through brute force) passwords, and even automatically mail users warning them about it, if it is desired. . It can also be used with different cyphertext formats, including Unixs DES and MD5, Kerberos AFS passwords, Windows LM hashes, BSDIs extended DES, and OpenBSDs Blowfish. Homepage: http://www.openwall.com/john/ ...

## Insatllation via le paquet disponible dans la distribution $ apt-get install john #OU ## Installation Manuelle de la dernire version stable $ wget http://www.openwall.com/john/g/john-1.7.3.4.tar.gz $ tar xzf john-1.7.3.4.tar.gz $ cd john-1.7.3.4/src $ make ... linux-x86-any Linux, x86 ... $ make clean linux-x86-any (ou $ make clean generic alternativement) ... $ cd ../run $ ./john --test

## Vrifier tous les mots de passe $ unshadow /etc/passwd /etc/shadow > passwordlist.txt $ john passwordlist.txt Loaded 8 password hashes with 8 different salts (FreeBSD MD5 [32/32]) eeeee (eeeee) ddddd (ddddd) bbbbb (bbbbb) aaaaa (aaaaa) ccccc (ccccc) toto (toto) guesses: 6 time: 0:00:00:26 48% (2) c/s: 4942 trying: Sulp Session aborted #==> 26 secondes pour trouver les mots de passe de dummy !!!

426

Chapitre 15. SR010 Les enjeux de la scurit


## Vrifier un utilisateur $ passwd aaaaa # fruit $ rm .john # supprimer lhistorique pour revrifier aaaaa $ unshadow /etc/passwd /etc/shadow > passwordlist.txt # Mise jour du fichier de mdp $ john -users:aaaaa passwordlist.txt Loaded 1 password hash (FreeBSD MD5 [32/32]) fruit (aaaaa) guesses: 1 time: 0:00:33:59 (3) c/s: 5228 trying: fruit #==> 33 minutes 59 secondes pour un simple mot du dictionnaire !!! ## pour casser le mdp de root ;-) $ john --users=0 ## Afficher la liste des mots de passe craqu $ john -show passwordlist.txt bbbbb:bbbbb:1002:1002:BBB,222,222,222,222:/home/bbbbb:/bin/bash ... toto:toto:1006:1010::/home/toto:/bin/sh 5 password hashes cracked, 3 left

Note : En ce qui concerne le temps dxecution de John The Ripper... John se base sur un dictionnaire pour effectuer les tests. Si celui-ci comporte lencyclopdie mdicale du 18 sicle, il y a de grandes chances que tu ne trouves jamais "fruit" par example. Maintenant, en changeant le dictionnaire par un comportant les types daliments comestibles, il est possible quil hack le mot de passe "fruit" instantanment.

Voir aussi : Cassage et durcissement des mots de passe [PDF Version] (docs/sr010-ch01-doc-extern-cassasage-et-durcissement-mot-de-passe-part2.pdf) Il est possible aussi dutiliser des sites sur internet qui testent la force du mot de passe en leur affectant une note. Cela donne une premire ide, par contre, ce nest pas trs scuris de faire cela !!! En effet, il pourrait commencer par tester sur les comptes quil connat de nous (il ne faut pas oublier quun tel site a notre addresse IP). De plus, la notation est utilise selon un algorithme quils dnissent eux-mme, a ne veut donc pas dire grand chose. Existe-t-il une application, autre que John The Ripper, qui permet de tester la force du mot de passe, et de lui donner une note ? Srement, mais a na pas de sens. Ce serait une note par rapport aux critres pr-programms. Si ces critres ne sont pas satisfaisant, que reste-t-il ? Par exemple, si un logiciel est crit pour donner une note qui dit : si il y a une lettre et un chiffre, jattribue 10/20. Sil y a deux lettres, 11, deux lettres et deux

427

Chapitre 15. SR010 Les enjeux de la scurit chiffres, 12. Un caractre spcial : 14. Deux ? 16. Cest la fte, mais a ne veut rien dire, surtout si cest ab12++.

15.1.7. Clef publique/prive


Finalement les systmes de clef publique/clef prive est-ce plus simple et plus sr ? Oui. Si lalgorithme est correctement implment, cest plus sr car plus difcile casser. Et se posera la question du maillon faible quest la cl prive, tout au moins lutilisateur qui dtient sa cl prive et ce quil en fait. Un bon mdp, ou un couple privKey/pubKey, mais a vous le verrez petit petit, ne fait pas tout, car son utilisation sinscrit dans des chanes assez complexes dutilisation verticales (protocoles) et horizontales (applications) et certaines astuces sont rellement trs trs fortes pour dtourner lattention dune personne an quelle donne linformation quon souhaite. Plus dinfo dans la section Le Chiffrement : Signature & Encryption (GnuPG) ci-aprs

15.1.8. Les sauvegardes


Voir section SR001 Commandes GNU/Linux > SYS01: Sauvegarde et archivage (Backup)

15.1.9. Le Chiffrement (GnuPG)


Voir la section ddie Le Chiffrement : Signature & Encryption (GnuPG) ci-aprs

15.1.10. Un espace hermtique


Voir la section ddie Un Espace Hermtique ci-aprs

15.2. Le Chiffrement : Signature Numrique & Encryption

428

Chapitre 15. SR010 Les enjeux de la scurit

(GnuPG)
Source(s):

OF: SR010-ch02-act001-a1-sr010-signature_electronique.pdf (docs/eof/sr010-ch02-act001-a1-sr010-signature_electronique.pdf) Web: Cryptographie Tutoriel (http://www.uqtr.ca/~delisle/Crypto) Une tude des messages secrets de lAntiquit nos jours (http://www.apprendre-en-ligne.net/crypto/menu/index.html) Analyse des algorithmes nalistes concourant pour le futur standard AES par JP. Gaulier [En Ligne] (http://jp.gaulier.info/rapport.pdf) Analyse des algorithmes nalistes concourant pour le futur standard AES par JP. Gaulier [Hors Ligne] (docs/eof/sr010-ch01-doc-extern-analyse-des-algorithmes-nalistesconcourant-pour-le-futur-standard-AES-rapport.pdf) GnuPG: GnuPG (encrypt & sign) (http://www.gnupg.org) Pour dmarrer... (http://www.gnupg.org/gph/fr/manual.html) HOWTOs (http://www.gnupg.org/documentation/howtos.en.html) OpenPGP Alliance (http://www.openpgp.org) OpenPGP Message Format (RFC 4880) (http://www.ietf.org/rfc/rfc4880.txt) Validating a PGP key without personal contact [Pas recommend !] (http://www.pps.jussieu.fr/~jch/software/pgp-validating.html) Using multiple subkeys in GPG (http://fortytwo.ch/gpg/subkeys) S/MIME versus PGP/MIME (http://www.imc.org/smime-pgpmime.html) PKI: Dploiement dune Infrastructure de Gestion de Cls publiques libre par M. Falzon (http://falzon.info/work/nds2005-mfalzon.pdf) [PDF Version] (docs/sr010-ch02-pki-nds2005-mfalzon.pdf)

15.2.1. Chiffrement symtrique (une clef) / asymtrique (paire de clefs)


Cryptographie n.f. Procd (signes conventionnels, modication de lordre, de la disposition dessignes, remplacement des signes...) permettant de rendre un message inintelligible, de protger des donnes. Deux grandes familles complmentaires : le symtrique (clef unique connue de tous) et lasymtrique (couple clef publique connu de tous et clef secrte connu du propritaire seulement).
- Une clef publique sert chiffrer ou vrifier une signature - Une clef prive sert dchiffrer et signer des donnes

Une cl publique consiste en la portion publique de la cl principale de signature, la portion publique des cls secondaires de chiffrement et de signature et les identiants utiliss pour associer la cl publique une personne relle. Chaque partie de la cl possde des informations sur elle mme : ses identiant dutilisateurs, sa date de cration, sa date dexpiration, etc. Pour un identiant, ces donnes incluent le nom de la personne relle quelle identie, un commentaire optionnel et une adresse email.

429

Chapitre 15. SR010 Les enjeux de la scurit Une cl prive consiste en une structure similaire, except quelle ne contient que les portions prives des cls, et quil ny a pas dinformations concernant les identiants dutilisateur.
## un exemple simple de chiffrement par rotation des lettres $ echo "je vais bien et toi ?" | tr a-z n-za-m wr invf ovra rg gbv ? $ echo "wr invf ovra rg gbv ?" | tr n-za-m a-z je vais bien et toi ?

15.2.2. Installation et conguration de GnuPG


## Installation $ apt-get install gnupg kgpg # gnupg (suite de commande GnuPG) # kgpg (interface graphique GnuPG)

## Configuration ~/.gnupg/gpg.conf (docs/sr010-ch02-gpg-conf.txt)

# Un fichier de configuration par utilisa

15.2.3. Lister les clefs de son trousseau


## Lister les clefs $ gpg --list-keys # Aucune nexiste par dfaut sur Debian :) /home/filostene/.gnupg/pubring.gpg # Par contre sur Ubuntu... ---------------------------------pub 1024D/88C7C1F7 1999-01-30 uid Steve McIntyre <steve@einval.com> uid Steve McIntyre <93sam@debian.org> uid Steve McIntyre <stevem@chiark.greenend.org.uk> uid Debian CD signing key <debian-cd@lists.debian.org> sub 1024g/9315EA5D 1999-01-30 # En tant que root ? $ gpg --list-keys gpg: rpertoire /root/.gnupg cr gpg: nouveau fichier de configuration /root/.gnupg/gpg.conf cr gpg: AVERTISSEMENT: les options de /root/.gnupg/gpg.conf ne sont pas encore actives cette gpg: le porte-cls /root/.gnupg/pubring.gpg a t cr gpg: /root/.gnupg/trustdb.gpg: base de confiance cre #==> On voit ainsi les fichiers minimum utilis par GnuPG

430

Chapitre 15. SR010 Les enjeux de la scurit

15.2.4. Gnrer un nouvelle paire de clefs


## Gnrer une nouvelle paires de clefs --gen-key $ gpg --gen-key gpg (GnuPG) 1.4.9; Copyright (C) 2008 Free Software Foundation, Inc. ... Slectionnez le type de cl dsir: (1) DSA et Elgamal (par dfaut) (2) DSA (signature seule) (5) RSA (signature seule) Votre choix ? 1 # Je choisis le type # de clef par dfaut # DSA et Elgamal La paire de cls DSA fera 1024 bits. les cls ELG-E peuvent faire entre 1024 et 4096 bits de longueur. Quelle taille de cl dsirez-vous ? (2048) La taille demande est 2048 bits # Je garde la taille # par dfaut Spcifiez combien de temps cette cl devrait tre valide. 0 = la cl nexpire pas <n> = la cl expire dans n jours <n>w = la cl expire dans n semaines <n>m = la cl expire dans n mois <n>y = la cl expire dans n annes La cl est valide pour ? (0) 0 La cl nexpire pas du tout Est-ce correct ? (o/N) o # Je choisi le temps # de validit par dfaut Vous avez besoin dun nom dutilisateur pour identifier votre cl; ... Vous avez slectionn ce nom dutilisateur: "Richard Lger (noComment) <richard.leger.AT.gmail.com>" # Mon nom dutilsateur Vous avez besoin dune phrase de passe pour protger votre cl secrte.

# Je choisis un passephrase

gpg: gpg-agent nest pas disponible dans cette session Un grand nombre doctets alatoires doit tre gnr. Vous devriez faire autre-chose (taper au clavier, dplacer la souris, utiliser les disques) pendant la gnration de nombres premiers; cela donne au gnrateur de nombres alatoires une meilleure chance davoir assez dentropie. ... Il ny a pas assez doctets alatoires disponibles. Faites autre chose pour que lOS puisse amasser plus dentropie ! (il faut 284 octets de plus) gpg: cl 78A9AF9E marque comme ayant une confiance ultime. les cls publique et secrte ont t cres et signes. gpg: vrifier la base de confiance gpg: 3 marginale(s) ncessaires, 1 complte(s) ncessaires, modle de confiance PGP

431

Chapitre 15. SR010 Les enjeux de la scurit


gpg: profondeur: 0 valide: 1 sign: confiance: 0-. 0g. 0n. 0m. 0f. 1u pub uid sub 0

1024D/78A9AF9E 2010-03-04 Empreinte de la cl = C49D 278A 3641 01AF B216 867F 8C7F 1AC9 78A9 AF9E Richard Lger (noComment) <richard.leger.AT.gmail.com> 2048g/97F7FF28 2010-03-04

Avertissement
Si lors de la gnration de la clef, le processus a besoin de plus dentropie, il suft daugmenter lactivit sur la machine (taper au clavier, ecouter de la musique, voir un video en streaming, etc...) jusqu ce que la clef soit gnre. ## Je vrifie... $ gpg --list-keys /home/filostene/.gnupg/pubring.gpg ---------------------------------... pub 1024D/78A9AF9E 2010-03-04 uid Richard Lger (NoComment) <richard.leger.AT.gmail.com> sub 2048g/97F7FF27 2010-03-04

15.2.5. Gnrer un certicat de rvocation


## Gnrer un certificat de rvocation --gen-revoke ## Syntaxe: $ gpg --output revoke.asc --gen-revoke mykey $ gpg --output revoke.asc --gen-revoke richard.leger.AT.@gmail.com $ gpg --output revoke.asc --gen-revoke 78A9AF9E # Alternative sec 1024D/78A9AF9E 2010-03-04 Richard Lger (noComment) <richard.leger.AT.gmail.com> Gnrer un certificat de rvocation pour cette cl ? (o/N) o ... Cause de rvocation: Aucune raison spcifie A utiliser en cas de clef compromise... Est-ce daccord ? (o/N) o Vous avez besoin dune phrase de passe pour dverrouiller la clef... ... Certificat de rvocation cr. # Ok # Je confirme

# Jindique une raison

# Je rentre mon passephrase

Dplacez-le dans un support que vous pouvez cacher ; si Mallory a accs ce certificat il peut lutiliser pour

432

Chapitre 15. SR010 Les enjeux de la scurit


rendre votre cl inutilisable. Une bonne ide consiste imprimer ce certificat puis le stocker ailleurs, au cas o le support devient illisible. Mais attention : le systme dimpression de votre machine pourrait stocker ces donnes et les rendre accessibles dautres personnes ! $ cat revoke.asc -----BEGIN PGP PUBLIC KEY BLOCK----Version: GnuPG v1.4.9 (GNU/Linux) Comment: A revocation certificate should follow iG8EIBECADA (...) XV+JFnkdrGT4= =k0jp

Note : Il est conseill, dimmdiatement crer un certicat de rvocation pour la cl principale. Si vous oubliez votre mot de passe, ou si votre cl prive est compromise ou perdue, ce certicat de rvocation peut tre publi pour notier aux autres que votre cl publique ne doit plus tre utilise. On peut toujours se servir dune cl publique rvoque pour vrier des signatures que vous avez faites par le pass, mais on ne peut sen servir pour chiffrer de nouveaux messages votre attention. Cela naffecte pas non plus votre capacit dchiffrer les messages qui vous ont t adresss prcdemment, si vous avez toujours accs votre cl prive.

15.2.6. Export de clefs


## Exporter une cl publique --export ## Pour envoyer un correspondant. ## Syntaxe : gpg --export mykey # Export au format binaire $ gpg --output richardbin.gpg --export richard.leger.AT.gmail.com $ gpg --output richardbin.gpg --export 78A9AF9E # Alternative $ cat richardbin.gpg 01100111000110100 (...) # # $ $ Export au format ASCII-armored (blindage ASCII) Pour envoye par email ou publie sur une page web gpg --armor --output richardascii.gpg --export richard.leger.AT.gmail.com gpg --armor --output richardascii.gpg --export 78A9AF9E # Alternative

$ cat richardascii.gpg -----BEGIN PGP PUBLIC KEY BLOCK----Version: GnuPG v1.4.9 (GNU/Linux) mQGiBEuPqfwRBACmyPhwyJKuBgXV1BtTgtoskpmSNZypTsu+tdNVSZQzvDKHXezC (...) ly4Zory5OLACpSMm9AvYcwRw2A== =P8fQ

433

Chapitre 15. SR010 Les enjeux de la scurit


-----END PGP PUBLIC KEY BLOCK-----

## Exporter la cl prive ## Syntaxe: gpg --export-secret-key keyid > seckey.pgp $ gpg --output richardbinsec.gpg --export-secret-key 78A9AF9E $ gpg --armor --output richardasciisec.gpg --export-secret-key 78A9AF9E

15.2.7. Import de clefs


## Importer une cl publique --import ## Ajoute votre trousseau de cls publiques $ gpg --import vincent.gpg # Peut tre binaire ou ascii

Voir aussi ci-aprs comment importer une clef publique depuis un serveur de clefs

15.2.8. Emprunte et signature de clef publique


Note : Lempreinte dune cl est vrie avec le propritaire de la cl. Ce peut tre fait en personne (le plus sr pour ver lidentit), au tlphone, ou par tout autre moyen, du moment que vous pouvez garantir que vous communiquez bien avec le vrai propritaire de la cl. Si lempreinte que vous obtenez est la mme que celle que le propritaire de la cl obtient, alors vous pouvez tre sr que vous avez une copie correcte de la cl.

Avertissement
Une clef publique ne doit pas tre signe tant que lon a pas rencontr physiquement son propritaire et que lon sest assur de son identit.

Avertissement
tant donn que la vrication des cls est un point faible du chiffrement cl publique, vous devez tre extrmement prudent et toujours vrier lempreinte dune cl avant de la signer.

Vous pouvez signer la cl pour la valider une fois que les conditions ci-dessus sont remplies.
## Editer la clef $ gpg --edit-key vincent@sondomaine.org

434

Chapitre 15. SR010 Les enjeux de la scurit


## Valider la clef importe ## en vrifiant son empreinte. Command> fpr

# Equivalent de --fingerprint option

## En la signant, vous certifiez que cest une cl valide. ## Aprs avoir vrifi lempreinte Command> sign ## Vrfifier Command> check

15.2.9. Chiffrer/Dchiffrer un document


## Chiffrer des documents (via cl publique) --encrypt $ gpg --output doc-encrypted.gpg --encrypt --recipient vincent@sondomaine.org --recipient alice@sondomaine.org doc-original

Note : Loption --recipient est utilise une fois pour chaque destinataire du message, et prend un argument supplmentaire spciant la cl publique pour laquelle le document doit tre chiffr.

Avertissement
Le document chiffr peut seulement tre dchiffr par quelquun possdant une cl prive qui correspond une des cls publiques des destinataires. En particulier, vous ne pouvez pas dchiffrer un document chiffr par vous, moins que vous ayez inclus votre cl publique dans la liste des destinataires. ## Dchiffrer des documents (via clef prive) --decrypt $ gpg --output doc-orgininal --decrypt doc-encrypted.gpg

Note : Vous avez besoin de la cl prive (et du passephrase correspondant) pour laquelle le message a t chiffr.

## Chiffrer des documents sans recourrir la cl publique --symmetric ## Chiffrement symtrique : cl drive du mot de passe fourni $ gpg --output doc-encrypted.gpg --symmetric doc-original Enter passphrase: $ gpg --output doc-orgininal --decrypt doc-encrypted.gpg Enter passphrase:

435

Chapitre 15. SR010 Les enjeux de la scurit

Avertissement
Le mot de passe ne doit pas tre le mme que celui que vous utilisez pour protger votre cl publique. Le chiffrement symtrique est utile quand le mot de passe na pas besoin dtre communiqu aux autres.

15.2.10. Signature Numrique (ou Electronique) dun document


## Gnrer une signature numrique --sign $ gpg --output doc-signe.sig --sign doc-original Enter passphrase: ## Documents signs en clair (pas de compression) alice% gpg --clearsign doc

Note : Le document est compress avant dtre sign, et la sortie est au format binaire Un usage commun des signatures numriques est de signer les messages email. Dans une telle situation, il est inopportun de compresser le document quand on le signe. Loption --clearsign entrane que le document est suivi par une signature ASCII-armored, mais le document nest pas modi outre mesure.

15.2.11. Vrier la signature dun document


## Vrifier la signature uniquement --verify $gpg --verify doc-signe.sig ## Vrifier la signature et rcuprer le document original --decrypt $ gpg --output doc-original --decrypt doc-signe.sig

Note : Une signature numrique certie et date un document. Si le document est modi dune quelconque manire, une vrication de la signature chouera. Un signature numrique peut servir les mmes besoins quune signature manuscrite, en outre elle ne peut pas tre contrefaite. La cration et la vrication des signatures utilisent les paires de cls prive/publique pour une opration diffrente du chiffrement et du dchiffrement. Une signature est cre en utilisant la cl prive du signataire. La signature est vrie en utilisant la cl publique correspondante.

436

Chapitre 15. SR010 Les enjeux de la scurit

15.2.12. Gestion du trousseau de clefs (publique/prive, sous-cls, etc...)


## Grer votre paire de cls (publique/prive) ## option de ligne de commandes --edit-key $ gpg --edit-key vincent@sondomaine.org Secret key is available.

# # # # # # # #

un drapeau indiquant si la cl prive est disponible suivit des informations sur chaque composant de la cl

pub sub

1024D/26B6AAE1 2048g/0CF8CB7A

created: 1999-06-15 expires: never created: 1999-06-15 expires: never

cl publique principale de si identifi par le type pub cl publique secondaire identifi par le type sub

sub 1792G/08224617 created: 1999-06-15 expires: 2002-06-14 sub 960D/B1F423E7 created: 1999-06-15 expires: 2002-06-14 (1) Vincent (Jester) <vincent@sondomaine.org> # Liste des identifiants dutil (2) Vincent (Plebian) <vincent@tel.net> Command> # Ligne de commande # Colonne deux indique la longueur de la cl en bits son type D-DSA, g-ElGamal(Chiffrement seul), G-ElGamal(Chiffrement&Signature) son identifiant.

# Colonne trois et quatre indiquens - dates de cration - dates dexpiration

## Basculer (toggle) entre la composante prive et la composante publique ## de la paire de cls (si elles sont effectivement disponibles). Command> toggle sec sbb 1024D/26B6AAE1 2048g/0CF8CB7A created: 1999-06-15 expires: never created: 1999-06-15 expires: never # # # #

cl prive principale de sign identifi par le type pub sbb identifie les cls priv secondaires

bb 1792G/08224617 created: 1999-06-15 expires: 2002-06-14 sbb 960D/B1F423E7 created: 1999-06-15 expires: 2002-06-14 (1) Chlo (Jester) <vincent@sondomaine.org> (2) Vincent (Plebian) <vincent@tel.net> ## Les informations fournies sont similaires celles affiches pour la cl publique.

## Vrification avec ma paire de clefs ! $ gpg --edit-key richard.leger@gmail.com gpg (GnuPG) 1.4.9; Copyright (C) 2008 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

437

Chapitre 15. SR010 Les enjeux de la scurit


La cl secrte est disponible. pub cr: 2010-03-04 expire: jamais utilisation: SC confiance: ultime validit: ultime sub 2048g/97F7FF27 cr: 2010-03-04 expire: jamais utilisation: E [ ultime ] (1). Richard Lger (fr74) <richard.leger@gmail.com> Commande> toggle sec ssb (1) 1024D/78A9AF9E cr: 2010-03-04 expire: jamais 2048g/97F7FF27 cr: 2010-03-04 expire: jamais Richard Lger (fr74) <richard.leger@gmail.com> 1024D/78A9AF9E

## Vrifier lintgrit de clefs $ gpg --edit-key mykey_tocheck Commande> check

Dautres commandes existent :


## Ajouter et supprimer des composantes une cl # Ajouter des identifiants dutilisateur Commande> adduid # nom, email, commentaire # Ajouter une sous-cl Commande> addkey # Require passphrase de la clef principale # Supprimer un identifiant dutilisateur Commande> uid 1 # selectionne/deselectionne le premier identifiant Commande> deluid # efface lidentifiant selectionn # Ajouter une sous-cl Commande> key 2 # selectionne/deselectionne la 2me sous clef Commande> delkey # efface la sous clef selectionne ## Rvoquer les composants dune cl Commande> revkey # rvoque la sous-cl slectionne ## Mettre jour la date dexpiration dune cl Commande> expire # Si aucune cl est slectionne, cest la date dexpiration # de la cl principale qui est mise jour. ## Afficher Finger print de clef Command> fpr # Equivalent de --fingerprint option ## Dfinir le niveau de confiance que ## vous avez dans le propritaire dune cl Commande> trust ## Quitter ldition de clefs

438

Chapitre 15. SR010 Les enjeux de la scurit


Commande> quit

Note : Des identiants dutilisateur supplmentaires sont utiles quand vous avez besoin de multiples identits. Par exemple, vous pouvez avoir besoin dune identit pour votre emploi et une pour votre engagement politique. Les sous-cls supplmentaires sont aussi ncessaires. Les identiants dutilisateur associs votre cl publique principale sont valids par les utilisateurs avec qui vous communiquez, et changer la cl principale ncessite de refaire les certications. Ce peut tre difcile et prendre beaucoup de temps si vous communiquez avec de nombreuses personnes. Dun autre ct, il est recommand de changer priodiquement les cls de chiffrement. Si la cl est casse, toutes les donnes qui sont chiffres avec elle sont vulnrables. Par contre, en changeant les cls, seules les donnes chiffres avec celle qui est casse seront rvles.

Infos complmentaires sur la notion de sous-clefs: GnuPG Handbook - Ajouter et supprimer des composantes une cl (http://www.gnupg.org/gph/fr/manual.html#AEN288) Dnition des dates dexpiration et utilisation des cls secondaires (http://www.gnupg.org/gph/fr/manual.html#AEN534) Using multiple subkeys in GPG (http://fortytwo.ch/gpg/subkeys) Using various subkeys (http://lists.gnupg.org/pipermail/gnupg-users/2002-August/014721.html) Using subkey signatures (http://lists.gnupg.org/pipermail/gnupg-devel/2002-September/007700.html) HOW TO MIGRATE A (SUB)KEY INTO A NEW KEY (http://atom.smasher.org/gpg/gpg-migrate.txt) HOW TO CREATE A GPG KEY WITH MORE THAN ONE PASS-PHRASE (http://atom.smasher.org/gpg/gpg-passwords.txt)

15.2.13. Distribution de cls (Serveur de cls)


Voir aussi Import/Export de clefs ci-avant...
## Distribution de cls ## Serveur de clef utilis par dfaut

439

Chapitre 15. SR010 Les enjeux de la scurit


$ cat ~/.gnupg/gpg.conf ... keyserver hkp://keys.gnupg.net #keyserver mailto:pgp-public-keys@keys.nl.pgp.net #keyserver ldap://keyserver.pgp.com ... ## Rcuprez la clef publique 0xFFAD5F7C de JP $ gpg --keyserver keys.gnupg.net --recv-key 0xFFAD5F7C $ gpg --keyserver keys.gnupg.net --recv-key jp@free.fr # Alternative si je # connais lidentit utilisateur $ gpg --recv-key 0xFFAD5F7C # Autre alternative quivalente # puisque le serveur est utilis # par dfaut (indiqu dans la configuration) gpg: gpg: gpg: gpg: gpg: gpg: requte de la cl FFAD5F7C du serveur hkp keys.gnupg.net cl FFAD5F7C: cl publique Jean-Philippe Gaulier <jp.AT.free.fr> importe 3 marginale(s) ncessaires, 1 complte(s) ncessaires, modle de confiance PGP profondeur: 0 valide: 1 sign: 0 confiance: 0-. 0g. 0n. 0m. 0f. 1u Quantit totale traite: 1 importe: 1

## Export de ma paire de clef $ gpg --keyserver keys.gnupg.net --send-key richard.leger.AT.cyb.org $ gpg --keyserver keys.gnupg.net --send-key 0x78A9AF9E # Alternative $ gpg --send-key 0x78A9AF9E # Autre alternative quivalente # puisque le serveur est utilis # par dfaut (indiqu dans la configuration) --keyserver : serveur de cls (du)auquel les cls sont envoyes/reues --send-keys : une ou plusieurs cls envoyes un serveur de cls --recv-keys : rcuprer les cls depuis un serveur de cls requiert lutilisation dun ID de cl pour spcifier la cl

Avertissement
--keyserver doit apparatre avant --send-key ou --recv-key (Cest d un bug apparement...)

Pour mettre jour votre cl, il vaut mieux rvoquer les composants plutt que de les effacer .Si vous envoyez votre cl un serveur de cls, la fusion a lieu quoi quil arrive, et toute personne qui tlchargera la cl depuis le serveur ne verra pas la cl avec les composants effacs.

De manire idale, vous devez distribuer vos cls en les donnant personnellement vos correspondants. En pratique, les cls sont souvent distribues par email, diffusion sur page Web, etc...

440

Chapitre 15. SR010 Les enjeux de la scurit Il existe aussi des serveurs de cls publiques qui sont utiliss pour collecter et distribuer les cls publiques. Une cl publique reue par le serveur est soit ajoute la base de donnes du serveur soit fusionne avec la cl existante si elle est dj prsente. Quand une requte de cl arrive au serveur, ce dernier consulte sa base de donnes et renvoie la cl publique sil la trouve. Lutilisation dun serveur de cls est aussi intressante quand de nombreuses personnes signent frquemment les cls dautres personnes. Lutilisation dun serveur de cls rend le procd plus facile. De nombreux serveurs de cls populaires sont en service travers le monde. Les serveurs de cls les plus importants se synchronisent entre eux ; il est donc sufsant de slectionner un serveur de cls proche de vous sur lInternet et de lutiliser rgulirement pour envoyer et recevoir des cls.
## Vrification de limport de clef $ gpg --list-keys ~/.gnupg/pubring.gpg ... pub 1024D/FFAD5F7C 2003-02-14 uid Jean-Philippe Gaulier <jp.AT.free.fr> uid Jean-Philippe Gaulier ... ... sub 4096g/08C5502C 2003-02-14

15.2.14. Chiffrement de messages courriels


## Envoyez JP un message sign $ gpg --output msgsigned.pgp --sign msg.txt #==> Puis envoi par courriel du fichier msgcruypted.pgp ## Envoyer JP un message chiffr $ gpg --output msgcrypted.pgp --encrypt --reciptient FFAD5F7C msg.txt #==> Puis envoi par courriel du fichier msgcruypted.pgp

Cette mthode quoi que fonctionnelle na pas le mrite dtre efcace car elle oblige deux actions: crer le chier, puis lenvoyer... Heureusement un certains nombre de logiciels peuvent travailler directement avec GnuPG notemment les logiciels courrier tel que Evolution, Thunderbird (requiert add-on Enigmail), Claws Mail(requiert module PGPCore PGPMIME), etc... nativement (module pr-charg) ou via des extensions installer pour permettre une signature ou le chiffrement de message la vol :) Info sur Thunderbird+Enigmail peuvent tre trouv : Welcome to the Enigmail Quick Start Guide (http://enigmail.mozdev.org/documentation/quickstart.php)
## Evolution - Configuration du chiffrement GPG

441

Chapitre 15. SR010 Les enjeux de la scurit


1.Choisissez dition > Prfrences, puis slectionnez Comptes de messagerie. 2.Slectionnez le compte pour lequel vous voulez ajouter la scurit, puis cliquez sur dition. 3.Cliquez sur longlet Scurit. 4.Indiquez votre identifiant de cl dans le champ ID de la cl PGP/GPG . 5.Cliquez sur Crer . 6.Cliquez sur Fermer. ## Evolution - Chiffrement des messages Pour chiffrer un message unique : 1.Ouvrez la fentre ddition dun message. 2.Choisissez Scurit > Chiffrer avec PGP. 3.crivez votre message. Cliquez sur Envoyer.

Avertissement
Le sujet du message ne sera pas chiffr et ne devrait pas contenir dinformation sensible.

## Configurer Evolution pour quil signe tous vos courriels : 1.Choisissez dition > Prfrences, puis slectionnez Comptes de messagerie. 2.Slectionnez le compte pour lequel vous voulez ajouter la scurit, puis cliquez sur diti 3.Cliquez sur longlet Scurit. 4.Cochez loption Toujours signer les messages sortants lors de lutilisation de ce compte. 5.Cliquez sur Crer . 6.Cliquez sur Fermer. ## Evolution - Dchiffrement dun message reu 1.Si vous recevez un message chiffr, vous devez le dchiffrer avant de pouvoir le lire. 2.Rappelez-vous que lexpditeur doit disposer de votre cl publique avant de pouvoir vous envoyer un message chiffr. 3.Lorsque vous affichez le message, Evolution vous demande votre mot de passe PGP. Saisissez-le et le message dchiffr apparatra.

## Claws Mail - Configuration 1.Choisissez Configuration > Modules 2.Cliquez sur Charger 3.Dans /usr/lib/claws-mail/plugins selectionner (press CTRL pour multi-selection) : pgpcore.so pgpinline.so pgpmime.so 4.Valider 5.Fermer 6.Choisissez Configuration > Configuration du compte courant

442

Chapitre 15. SR010 Les enjeux de la scurit


7.Selectionner section GPG 8.Selectionner "Spcifier la cl manuellement" puis rentrer le numro de cl (Ex: GTAD5F7C) 9.Valider Claws Mail - Chiffrement des messages Pour chiffrer un message unique : 1.Ouvrez la fentre ddition dun message. 2.Choisissez Options > Systme de confidentialit > PGP MIME 3.Choisissez Options > Signer (et/ou Chiffrer) 4.crivez votre message. Cliquez sur Envoyer.

15.2.15. PGP/inline, PGP/MIME, S/MIME (PKI)


Note : PGP/MIME et PGP/inline sont des mthodes qui dcrivent comment PGP and GnuPG sont utiliss lintrieur dun client e-mail. PGP/MIME a t developper pour pallier aux problme que peut causer PGP/inline. PGP/MIME est dnit dans les RFC 2015 (1996) et RFC 3156 (2001)
Avantage de PGP/MIME sur PGP/inline : - Pice jointe sont chiffres et sign (ex: text, spreadsheet, PDF documents, etc...) - "umlauts" et carctres non-ASCII peuvent tre utilis - la signature PGP est spar du corps de lemail (en pice jointes) rendant lemail plus lisible

Liste des clients e-mails qui supporte PGP/MIME (http://www.bretschneidernet.de/tips/secmua.html) S/MIME versus PGP/MIME (http://www.imc.org/smime-pgpmime.html) : Ce sont deux solutions de signature/chiffrement antinomiques. Avec S/MIME il nexiste pas de notion de chaine de conance mais on vient la notion dautorit de certication et la conance quon lui accorde. Le chiffrement S/MIME utilise galement une approche base sur les cls, pour certains semble prsenter certains avantages en terme de confort et de scurit. S/MIME utilise des certicats numrique qui sont comparables aux cls. La partie publique de chaque certicat est conserve par lexpditeur dun message et par lune des autorits de certication qui sont payes pour garantir lidentit dun expditeur et la scurit des messages. Evolution reconnat dj un grand nombre dautorits de certication. Ainsi, lorsque vous recevez un message dot dun certicat S/MIME, votre systme reoit automatiquement la partie publique du certicat et dchiffre ou vrie le message. S/MIME est intressant pour de nombreux changes (le plus souvent, S/MIME est utilis dans un environnement professionnel entre deux socits, lintrieur dune socit...), on fait conance tous

443

Chapitre 15. SR010 Les enjeux de la scurit message sign par lautorit X. Dans ce cas, les administrateurs fournissent des certicats quils ont acquis auprs dautorits de certication. Dans certains cas, une organisation peut jouer le rle dautorit de certication, avec ou sans la garantie dune autorit reconnue comme VeriSign ou Thawte. Dans tous les cas, cest ladministrateur systme qui vous fournit un chier de certicat. Il est possible de signer/chiffrer ses donnes avec une paire de cls gnres par OpenSSL, enn, une certaine implmentation/usage (sinon, a ne sappellerait pas S/MIME, mais ssl-mail :p) Au sein dune socit, il peut tre plus facile avec des gens qui ne comprennent rien, de mettre en place une solution S/MIME gre par le service IT que dimposer GPG tout le monde mais cest discutable selon certains... :) Inconvenient de S/MIME:
- Il faut avoir confiance dans lAutorit de Certification (AC), grer les rvocations, la perte de mots de passe, etc... - Cest une solution centralise...

Note : Une PKI (Public Key Infrastructure ou "Infrastructure de Gestion de Cls Publiques") est un systme semi autonome permettant de gnrer puis de contrler le cycle de vie de certicats numriques.

Note : Certicat numrique : Un certicat permet dassocier une cl publique une entit (organisation, machine, individu); il est en quelque sorte la carte didentit de la cl publique, dlivr par un organisme appel autorit de certication (souvent note CA pour Certication Authority ), que lon retrouve dans une PKI. Techniquement, il sagit dun bloc dinformations organises selon une structure particulire (Standard X.509 de lITU) qui impose que le certicat donne les informations suivantes :
le nom de lautorit de certification, le nom du propritaire du certificat, la date de validit du certificat, lalgorithme de chiffrement utilis, la cl publique du propritaire, la signature numrique des donnes ci-dessus par une personne ou entit prenant en charge la cration de ce certificat et ayant autorit de certification.

Lensemble de ces informations (informations + cl publique du demandeur) est sign par lautorit de certication; cela signie quune fonction de hachage cre une empreinte de ces informations, puis ce condens est chiffr laide de la cl prive de lautorit de certication, la cl publique ayant t pralablement largement diffuse an de permettre aux utilisateurs de vrier la signature avec la cl publique de lautorit de certication.

444

Chapitre 15. SR010 Les enjeux de la scurit

15.2.16. Gestionaires Graphique de clefs (publique/prive)


Il existe des gestionnaires graphiques de clefs compatible GnuPG tel que KGpg Les modules de client courrier (Enigmail, GPG/Core, etc...) permettant la signature/chiffrement de messages, fournissent aussi souvent de fonction de gestion de clefs (interface graphique GnuPG): Cration de clef, certicat de rvocation, recherche de clef publique sur serveurs de clef, etc...

15.3. Un espace hermtique


15.3.1. DMZ (Zone dmilitarise)
Source(s):

Web: DMZ (Wikipdia) (http://fr.wikipedia.org/wiki/Zone_d%C3%A9militaris%C3%A9e) DMZ (Comment a Marche) (http://www.commentcamarche.net/contents/protect/dmz-cloisonnement.php3) Strengthening network defenses by using a DMZ (http://articles.techrepublic.com.com/5100-22_11-5756029.html)

Une DMZ est une espce de zone blanche qui se trouve entre le rseau interne et lextrieur. Cette zone contiendra lensemble des serveurs devant tre accessibles par les deux bords (Internet et LAN).

En informatique, une zone dmilitarise (ou DMZ , de langlais "demilitarized zone") est un sous-rseau isol par un pare-feu. Ce sous-rseau contient des machines se situant entre un rseau interne (LAN - postes clients) et un rseau externe (typiquement, Internet). Le nom provient lorigine de la zone corenne dmilitarise.

Elle se dnit aussi comme une zone, un sous-rseau voire une plage dadresses IP (ou une seule adresse IP) sur un rseau ntant pas soumise aux rgles dun pare-feu. La DMZ permet ses machines daccder Internet et/ou de publier des services sur Internet sous le contrle du pare-feu externe. En cas de compromission dune machine de la DMZ, laccs vers le rseau local est encore contrl par le pare-feu interne. http://fr.wikipedia.org/wiki/Zone_dmilitarise (http://fr.wikipedia.org/wiki/Zone_d%C3%A9militaris%C3%A9e)

445

Chapitre 15. SR010 Les enjeux de la scurit Figure 15-1. Architecture DMZ avec deux pare-feu

446

Chapitre 15. SR010 Les enjeux de la scurit Figure 15-2. Architecture DMZ avec un seul pare-feu

15.3.2. Protger son rseau - Contrler les accs


Pour protger un rseau, il est important de contrler les accs (bas sur lutilisation et besoin des systmes/utilisateurs) :
- extrieurs et nautoriser que des flux vers votre zone dmilitarise (DMZ), En schmatisant, cest la face visible de liceberg que peut tre un systme, mais parfois peut se greffer aussi la notion dextranet. - ne laisser entrer personne sur votre rseau sans motif lgitime (employ mobile ayant besoin daccder au SI :vpn, ppp...) - de tout ce qui sort de votre rseau (p2p, messagerie instantane, protocoles non srs, ...

447

Chapitre 15. SR010 Les enjeux de la scurit


mais aussi virus, machines craques et qui sont devenus zombies, etc...)

15.3.3. Dnir les usages: Qui (Client/Serveur), Quoi (Service), Pourquoi, Comment (Interface, Ports)
Pour cela il est important de dnir les usages ou services utilis :
Serveur Web (WWW) et accs Web (HTTP, HTTPS) Serveur de Messagerie (SMTP, POP, IMAP) Un service Noms (DNS) Un serveur ftp (FTP, FTPS) Un serveur ssh (SSH) Backup/Synchronisation (RSYNC) Serveur de temps (NNTP) Connection VPN (?)

448

Chapitre 15. SR010 Les enjeux de la scurit

Avertissement
Il nest pas sufsant de dterminer seulement les services, la vrai question est qui accde quoi et comment ?

Examples :
- Un serveur ftp (FTP, FTPS) ? Pourquoi un service FTP et comment le justifier ? Une entreprise a-t-elle besoin de a ? pour qui ? pourquoi ? Faut-il le mettre sur la DMZ ? - Backup/Synchronisation (RSYNC) Do, vers o ? Rsync peut tre tunnel dans ssh, donc la question nest pas l...

Il faut penser client/serveur. Qui se connecte sur quoi ?


- est-ce le site distant qui se connecte sur ton serveur ? - est-ce ton serveur qui se connecte sur le site distant ?

Le service serveur nest pas localis au mme endroit.

Et on peut compltement reverser tout a en mettant des proxy.

Note : Bien garder lesprit quon a bien deux process :


- un serveur - un client

- Les bases de donnes ? O sont-elles ? Sur quels interfaces (et ports) coutent elles ?

Si un serveur coute sur localhost, il y a moins de risque que sil coute sur les interfaces physiques : l il y a possibilit de connexion extrieures (bd rparties par exemple) et cela devient donc plus critique.

449

Chapitre 15. SR010 Les enjeux de la scurit Cest un sujet de rexion avoir pour savoir quel service on ouvre (raisonner en terme de port et dinterface), pourquoi et comment ?

15.3.4. Dnir les ux client/serveur autoriss


Pour protger la DMZ et le rseau interne (LAN) via un pare-feu (trihomed rewall) les communications autoriss sont mis en place en valuant le trafc en fonction de son origine et de sa destination, il faut bien distinguer tous les ux. Sachant que par origine et destination, il faudrait distinguer aussi ce qui est ltr :
- couche - couche - couche si on ne 3 @IP/rseau 4 protocole de transport 5 application se restreint qu la pile IP.

Distinguons deux choses :


- les requtes client - les rponses serveur

En ralit on se concentre que sur les requtes clientes, car pour le reste ce sont des rponses une session si mode TCP utilis, donc nous nen tenons pas compte. Le ux client vers ux serveur. a permet de dduire les services serveurs qui peuvent tre en coute dans un sens et o :
## Traffic entrant de lInternet vers la DMZ # OK pour: dns http https smtp ssh vpn (oui pour un accs des services pour les salaris mais cest un tunnel) # A justifier: (en terme de besoin) ftp ftps

450

Chapitre 15. SR010 Les enjeux de la scurit


rsync nntp

## Traffic entrant de la DMZ vers le rseau interne (LAN) # NON pour: dns http https smtp imap pop ftp ftps ssh rsync nntp vpn (?)

Note : Ici on raisonne services serveurs. "Trafc entrant de la DMZ vers le rseau interne (LAN)" ce traduis par "il y a des process clients qui vont du LAN vers la DMZ, donc des services serveurs sur la DMZ qui rpondent des process clients du LAN" et non linverse ! On peut du LAN accder la DMZ :
- on aura donc par exemple sur la DMZ un DNS serveur pour les clients du LAN - par contre on N aura PAS sur le LAN un DNS serveur pour les clients de la DMZ

## Traffic entrant de lInternet vers le rseau interne (LAN) # OK pour : vpn (oui pour un accs des services pour les salaris mais cest un tunnel) # NON pour : http https ftp ftps

Note : Ici on nautorise rien parce que en fait tout va passer par la DMZ et donc aucun lien direct entre Internet et le rseau... Pour le VPN des utilisateurs (salaris dune entreprise par exemple) authentis peuvent avoir besoin daccder leurs dossiers partir de lextrieur. L nous sommes dans un cas particulier et il

451

Chapitre 15. SR010 Les enjeux de la scurit


est possible de mettre en place une solution PPP chiffre, L2TP... ou autre qui donne accs directement au LAN. Mais quest-ce quon a comme dialogue :
- client nomade --> serveur PPP (demande de cnx) - serveur PPP --> client nomade (demande auth) - ouverture de session et du rseau si ok

Dans ce cas, le serveur dauthentication est gnralement sur la DMZ car accessible de lextrieur. Les serveurs de data, sur le LAN ne le sont pas par dfaut.

## Traffic sortant du rseau interne (LAN) vers la DMZ # OK pour: http https smtp (ok, si smtp local) imap pop ssh # A justifier: (en terme de besoin) rsync nntp # NON pour: dns (prfrer un cache qui va faire la rsolution de nom en .local et celle du net) ftp (mettre en local) ftps (mettre en local)

Note : Ici le serveur de cache DNS est:


- client pour le DNS de la DMZ, pas serveur. - serveur pour le .local et pour les requtes des postes clients du LAN.

## Traffic sortant du rseau interne (LAN) vers lInternet # OK pour: http https # A Justifier pour: (en terme de besoin)

452

Chapitre 15. SR010 Les enjeux de la scurit


ftp ftps

## Traffic sortant de la DMZ vers lInternet # OK pour: dns smtp # NON http https ftp ftps ssh rsync nntp vpn pour: (ou alors expliquer, cas trs particuliers)

(ou alors expliquer) (l faut expliquer, car pas banal) ( la limite tunnel ?)

Note : Ici cela veut dire :


- que des process client DNS peuvent sortir de la DMZ vers dautres serveur DNS pour poser des questions - quil na pas de client http(s) dans la DMZ

Dans ce cas, comment les utilistaeurs Internet accde au site web de lentreprise localis en DMZ ? Est-ce parce que par dfaut la rponse une requte accept en entre est accept en sortie... et donc il nai pas ncessaire dautoriser un ux http, ou https sortant. Cest une question qui sera aborde concernant le traitement des transaction tcp (et dans notre cas) le fonctionnement de la pile netlter. Ce nest pas trivial mais raisonnons tcp :
- un client passe une requte un serveur (port x vers port 80 par ex) - il y a tablissement de la session - le serveur rpond En fait le firewall va : - 1 laisser passer la requte vers le port 80 - laisser passer les requtes des sessions tablies (donc le retour)

453

Chapitre 15. SR010 Les enjeux de la scurit

En fait on the cherche bloquer que lintialisation dune requete cliente vers un serveur... par dfaut toute rponse une requte cliente autoris est par dfaut autoris... si congur ainsi :
- On ne laisse entrer que les requtes clientes (initialisation de requte) vers les ports (services serveurs) quon autorise - Le FW est configur pour suivre et traiter toutes les requtes en cours dinitialisation ou initialises. Il laisse passer les requtes des sessions tablies (donc le retour) Tout le reste est rejet.

Avertissement
Ce comportement nest pas automatique (par dfaut) il doit tre congur manuellement (spci donc). Par dfaut, il ny a rien, tout doit tre congur.

15.3.5. IDS - Systme de dtection dintrusion


Un systme de dtection dintrusion (ou IDS : Intrusion Detection System) est un mcanisme destin reprer des activits anormales ou suspectes sur la cible analyse (un rseau ou un hte). Il permet ainsi davoir une connaissance sur les tentatives russies comme choues des intrusions. Un IDS, cest une sonde de dtection dintrusion (fonction particulire).

15.3.6. Sparer/Re-grouper les services Rseau/Scurit


Dans lespace hermtique a peut sembler plus cohrent de faire glisser et de runir des services qui ont un mme usage sur un mme serveur :
- Installer le service anti-spam sur le relai SMTP. - Installer le service antivirus HTTP sur le mandataire (Proxy).

454

Chapitre 15. SR010 Les enjeux de la scurit Toutefois, sparer les quipements rseaux et de scurit (ainsi quutiliser differente type et marque de matriel) peut sembler une solution tout aussi sduisante. Cela peut donner un peu plus de mal lattaquant, sil doit changer de matriel et de technologie. Cela peut tre une alternative possible...

15.3.7. Pare-feu
Voir section ddie SR011

15.3.8. Serveur Proxy (Serveur Mandataire)


Voir section ddie SR011

15.4. Principes gnraux pour scuriser un systme


Source(s):

OF: SR010-ch03-act002-sr010-secure_system.pdf (docs/eof/sr010-ch03-act002-sr010-secure_system.pdf) Tenir compte de la scutit au quotidien [La-Linux] (http://www.lealinux.org/documentations/index.php/Fiches:Tenir_compte_de_la_s%C3%A9curit%C3%A9_au_quotidien)

15.4.1. Quelques rgles simple garder en mmoire


La scurit nest pas un produit, cest un processus (Security is not a product, its a process) Bruce Schneier

Lide que vous pourriez scuriser votre machine une bonne fois pour toute lors de linstallation et ne plus y toucher ensuite nest tout simplement pas envisageable. Maintenir une dfense contre les agressions des pirates est une veille constante de ltat de votre machine. La paranoa est notre amie :) Accorder une attention la scurit de votre machine qui est proportionnelle la valeur que vous accordez ce quelle protge.

455

Chapitre 15. SR010 Les enjeux de la scurit Quelque rgles qui permettent de scuriser votre ordinateur et se prmunir contre des attaques (du simples et faciles mettre en uvre aux plus complexes) : 1. Attention vos mots de passe (choisissez les bien et ne les conez pas des inconnu(e)s) 2. Prfrez les protocoles chiffrs (prfrez ssh telnet, scp ftp, pop+ssl pop, ...) 3. Nexecutez et/ou installez pas nimporte quoi (attention aux chevaux de Troie, packages non signs) 4. Passez root le moins souvent possible (root a beaucoup de droits et cela peut se retourner contre vous) 5. 6. Appliquez le principe du privilge minimum (Ne donnez un droit que sil est ncessaire) 7. Minimisez vos services (Si cest inutile alors cest dangereux) 8. Mettez votre distribution jour (Appliquez les correctifs de scurit aussi souvent que possible) 9. Filtrez et surveillez votre trac rseau (Activez le rewall et ventuellement un IDS) 10. Gardez un il sur vos donnes (Sauvegardez-les et utilisez des logiciels comme tripwire) 11. Renforcez votre noyau (Ajoutez des modules de scurit optionnels: SELinux, ASLR, ...)

15.4.2. Principe du privilge minimum


Chaque programme et chaque utilisateur du systme devrait oprer en utilisant le plus petit nombre de privilges possible pour accomplir sa tche. Le principe du privilge minimum (http://www.lealinux.org/documentations/index.php/Fiches:Tenir_compte_de_la_s%C3%A9curit%C3%A9_au_quotidien)(apparu au milieu des annes 70)

Sous Linux, le modle des privilges de base identie des objets (les chiers), des actions (read, write, execute) et des acteurs (les utilisateurs et les groupes). Le type de contrle que lon peut exercer sur les privilges est donn par le modle du Discretionary Access Control (DAC) qui veut quune fois un utilisateur authenti il ait tous les droits sur tous les objets quil possde.
Note : Dautres modles de contrle existent, notamment de le Mandatory Access Control (MAC) implment par SELinux et dautres (Role-Based Access Control, RBAC).

Pour appliquer le principe du privilge minimum, il faut vous demander si chaque objet qui vous appartient a vraiment besoin dtre ouvert en lecture, criture ou encore excution. Si ce nest pas le cas, supprimez ce droit. Par exemple, pourquoi laisser les autres utilisateurs avoir accs votre compte en lecture ? Cest certes plus pratiques de temps en temps, mais si vous ny prtez pas attention, un attaquant pourrait sinltrer dans votre compte et voler des informations que vous ne voudriez pas voir partir. Le mieux est donc de mettre votre umask 700 et de restreindre ainsi laccs votre compte.

456

Chapitre 15. SR010 Les enjeux de la scurit

15.4.3. BIOS - Protger par mot de passe


Protger lentre dadministration du BIOS par un mot de passe Affecter le disque dur principal comme priphrique de dmarrage par dfaut aprs installation du systme. Bloquer les autres priphriques de dmarrage (USB, oppy, CD-Rom) Dsactivez toute notion dallumage distance (si vous nen avec pas la ncessit) Insrer un mot de passe pour la lecture du disque dur (bios modernes coupls aux disques durs adquats)

15.4.4. Chargeur de dmarrage (Grub, Lilo) - Protger par mot de passe


Source(s):

Web: GRUB commands (http://<8203>grub.enbug.<8203>org/<8203>CommandList) Grub Docs (http://www.lea-linux.org/documentations/index.php/Grub) LILO Docs (http://www.lea-linux.org/documentations/index.php/Admin-admin_boot-LILO) GRUB 2 chier de menu (grub.cfg) (http://grub.enbug.org/grub.cfg.fr) GRUB 2 Authentication (http://grub.enbug.org/Authentication) Magasine: Exploring the GRUB 2 boot manager (Ubuntu User Magazine Num 5) (http://www.ubuntu-user.com/content/download/1336/9242/le/036-038_grub2.pdf) Fixing GRUB: The Revenge of GRUB 2 (Ubuntu User Magazine Num 5) (http://www.ubuntu-user.com/content/download/1344/9314/le/056-059_answers.pdf)

Note : A propos de GRUB2 (source: Ubuntu User Magazine) : GRUB2 offre :


automatisation, design modulaire esttique au dmarrage (interface graphique et thme) :) support pour jeux de caractre internationaux (incluant les caractres non Latin) configuration facile le schma de numrotation des partitions commence 1 (et plus zro comme avant)

Diffrents chiers de conguration...


/boot/grub/grub.cfg /etc/default/grub /etc/grub.d # Fichier de configuration central (cr automatiquement) Liste les entres du menu. Ne peut pas tre modifier manuellement. # Options gnrales (mais pas les entres du menu) # Rpertoire des scripts GRUB2 pour la detection des partitions

457

Chapitre 15. SR010 Les enjeux de la scurit


et systme dexploitation. Pour rajouter une entre au menu, ajouter son script dans ce repertoire.

Note : /boot/grub/grub.cfg agit comme un container de la conguration "statique" cr dynamiquement via la commande sudo update-grub partir des options gnrales et de scripts.

Pour ajouter manuellement une entre dans le menu (systme non detect automatiquement, dmarrage avec options personnelles, etc...), il faut crire son propre script. Quand GRUB 2 dmarre, il execute tous les scripts localiss dans /etc/grub.d qui sont executables (sudo chmod u+x script_name). Par dfaut les scripts systme ont les bonnes permissions.
# Exemple de script de dmarrage GRUB2 # Crer une entre personalise # script_name echo "Entre personalise pour dmarrer Rescue CD depuis une image iso" >&2 cat <<EOF menuentry "Dmarrer System Resuce CD from disk"{ set root=(hd0,10) linux /sysrcd/rescuecd subdir=sysrcd setkmap=fr initrd /sysrcd/initram.igz } EOF

Dans cet exemple, linux et initrd met en place les chemins vers le noyau et le "ramdisk" initial en passant deux paramtres au noyau.

Note : Amliorer leffet visuel de GRUB 2 en ajoutant une image de fond personalise ! (source: Ubuntu User Magazine) GRUB 2 peut utiliser des images PNG, TGA ou JPG comme image de fond. Les sauvegarder en resolution 640x400 pixels dans le repertoire /usr/share/images/grub (si ce repertoire nexiste pas, il doit tre cr manuellement avec la commande mkdir). Puis installer le paquet gestionnaire dimage :
$ sudo apt-get install grub2-splashimages

Puis crer un scipt de dmarrage GRUB 2 pour indiquer au systme quelle image utiliser :
#!/bin/bash -e # exemple de script # /etc/grub.d/05_debian_theme # Image : airplane.jpg

458

Chapitre 15. SR010 Les enjeux de la scurit

source /usr/lib/grub/grub-mkconfig_lib set_mono_theme() { cat <<EOF set menu_color_normal=white/black set menu_color_highlight=black/white EOF } # Vrifier lutilisation dun fond dcran use_bg=false if [ "$GRUB_TERMINAL_OUTPUT" = "gfxterm" ] ; then for i in {/boot/grub/, /usr/share/images/grub}/airplane.{png,jpg,tga}; do if is_path_readable_by_grub $i; then bg=$i fi done

Enn, ne pas oublier dappliquer les changements de conguration GRUB 2 :


sudo update-grub

Note : Migrer vers GRUB 2 sur Ubuntu 9.04 ou 9.10 (aprs mise jour depuis 9.04, sinon install par dfaut) :
$ sudo apt-get # puis $ sudo apt-get -- GRUB Legacy -- ajouter une install grub2 install grub-pc dj install : presser OK entre pour un dmarrage chan de GRUB 2 depuis GRUB Legacy : presser Oui

# Aprs re-dmarrage vrifier que # - GRUB 2 est accessible depuis GRUB 1 (les deux co-existent en paralllle) # - toutes les entres GRUB 2 fonctionnent # Si cest le cas, dmarrer 9.10 puis depuis un terminal taper : $ sudo upgrade-from-grub-legacy # Le systme demande alors depuis quelle partition le systme et disque vous souhaiter # redmarrer la machine. # Choisir la bonne partition en appuyant sur la barre despace ("Space") # Si ce nest pas le cas, le systme va dmarrer avec une erreur Error 15: Start device not found # Dans ce cas, dmarrer depuis une version live dUbuntu puis : $ sudo mount /dev/sda1 /mnt # monter la partition root (sans chargeur de dmarrage) # adapt le chemin en fonction de votre systme

459

Chapitre 15. SR010 Les enjeux de la scurit


$ sudo mound --bind /dev /mnt/dev $ sudo chroot /mnt # Reconfigurer GRUB2 $ dpkg-reconfigure grub-pc # Et appuyer sur "Espace" cette fois :) # Pour terminer CTRL+D $ sudo umount /mnt $ sudo reboot # monter le repertoire de priphriques # change root du priphrique mont

# Quitter lenvironement chroot # Dmonter le systme de fichier # Re-dmarrer

Note : Comment rparer GRUB 2 ? Pour rparer GRUB 2, il est ncessaire de dmarrer depuis un Ubuntu Live CD" (http://www.<8203>ubuntu.com/<8203>getubuntu/<8203>download), puis choisir "Essayer Ubuntu sans linstaller", une fois charg, ouvrir un terminal puis taper :
$ sudo fdisk -l # Afficher les informations sur les disques et partitions

# Identifier la partition root (/), par example "... /dev/sda3 Linux" $ sudo mount /dev/sda3 /mnt # monter la partition root # adapt le chemin en fonction de votre systme $ sudo mound --bind /dev /mnt/dev # monter le repertoire de priphriques $ sudo mound --bind /proc /mnt/proc # monter le repertoire de processus $ sudo chroot /mnt $ nano -w /etc/default/grub $ grub-install /dev/sda $ grub-install --recheck /dev/sda # Pour terminer CTRL+D $ sudo umount /mnt $ sudo reboot # change root du priphrique mont # # # # editer le fichier de configuration gnrale pour sassurer quil est correct Rparer GRUB 2 Vrifier

# Quitter lenvironement chroot # Dmonter le systme de fichier # Re-dmarrer

Laisser libre le systme dexploitation par dfaut, et seulement lui. Tous les autres (anciennes versions, modes privilgis, autres systmes exotiques) sont protger par un mot de passe. Commandes qui permettent dinstaller un mot de passe sur votre chargeur de dmarrage sur le ou les systmes et modes dsirs...

460

Chapitre 15. SR010 Les enjeux de la scurit GRUB Legacy :


##Lancer le shell GRUB (su to root) : $ grub grub> md5crypt Password: ****** Encrypted: $1$M9MJT/$bre1E8e4UHEFMyTts4QJ23

## Copiez le mot de passe chiffr dans ## /boot/grub/menu.lst (fichier de configuration) password --md5 $1$M9MJT/$bre1E8e4UHEFMyTts4QJ23 ... ## Largument password peut tre utilis pour restreindre ## certaines entres; dans ce cas il est insr juste ## sous la ligne "title" dmarrer. title Linux Ubuntu 9.10 password --md5 $1$M9MJT/$bre1E8e4UHEFMyTts4QJ23 ...

GRUB 2 : Au chargement de GRUB 2, le chier grub.cfg est lu (chier de menu de GRUB 2). Celui-ci contient toutes les informations pour que GRUB 2 agisse tel que lutilisateur le souhaite et construise un menu de chargement. GRUB 2 utilise un nouveau langage de script, semblable Bash, an de gnrer ce chier de menu. diter manuellement ce chier est inutile et non recommand : il est entirement reconstruit laide de plusieurs scripts chaque excution de update-grub2 ou de grub-mkcong. Pour modier grub.cfg, modiez les scripts de gnration situs dans le dossier /etc/grub.d ou les options de GRUB 2 dans /etc/default/grub. Utilisez les commandes update-grub2 ou grub-mkcong pour regnrez le menu de GRUB 2 aprs chaque modication des chiers de conguration.
## Example grub.cfg pour lauthentification: set superusers="user1" password user1 password1 # # # # # # Le superutilisateur doit tre dfinit (set) pour activer le support dauthentification Chaque superutilisateur peut aller la ligne de commande, diter les entre du menue et executer toutes les entres du menu

461

Chapitre 15. SR010 Les enjeux de la scurit


password user2 password2 menuentry "GNU/Linux" { set root=(hd0,1) linux /vmlinuz } # Utilisateur normal # Executable par tous les utilisateurs

menuentry "Windows" --users user2 { set root=(hd0,2) chainloader +1 }

# Executable uniquement par # user2 et user1(superutilisateur)

Avertissement
Pour le moment la commande :

-password ne supporte pas les mots de passe non chiffr (plain text).

-grub-mkcong ne permet pas encore de congurer lauthentication donc il faut crer/modier manuellement les scripts /etc/grub.d/ partir desquels le menu est gnr.

LILO :
## /etc/lilo.conf ... label=linux password=mon_mot_de_passe # en clair root=/dev/hda2 image=/boot/vmlinuz-2.6.30 ...

Avertissement
Comme le mot de passe est en clair dans le chier de conguration de LILO il faut que /etc/lilo.conf ne soit lisible que par ladministrateur ce qui nest pas le cas par dfaut (taper: $ chown root:root /etc/lilo.conf; chmod 600 /etc/lilo.conf)

462

Chapitre 15. SR010 Les enjeux de la scurit

15.4.5. Comptes utilisateurs


En tant quadministrateur systme, il faut soit procder la suppression des comptes inutiles, soit : - diter vous-mme le chier /etc/shadow et placer un ! ou une * dans le champ correspondant au mot de passe, ce qui aura pour effet dannuler la possibilit de se logguer par mot de passe. - changer dans le chier /etc/passwd le dernier champ correspondant au shell de connexion, en gnral /bin/sh par /bin/nosh (/bin/false ou autre...), si ce dernier est correctement dclar dans le chier /etc/shells.
Note : Le shell peut tre /bin/nosh, /bin/false... ou encore /bin/toto ! Du moment quil est dclar dans /etc/shells comme pointant vers /dev/null... lutilisation de lun ou lautre nest donc plus quune question de tradition !

## Utilisateur non systme autre que moi :) $ awk -F: { if ($3>1001 && $3<65325) print $1 } /etc/passwd bbbbb ccccc ddddd eeeee toto ## Groupes non systme autre que moi :) $ awk -F: { if ($3>1001 && $3<65325) print $1 } /etc/group bbbbb ccccc ddddd eeeee group1 group2 group3 commun toto ## Comptes ayant un mot de passe $ awk -F: { if ($2 !="*" && $2 !="!") print $1 } /etc/shadow root filostene aaaaa bbbbb ccccc ddddd eeeee toto ## Delete users deluser aaaaa --remove-all-files

463

Chapitre 15. SR010 Les enjeux de la scurit


Puis rpter pour bbbbb, ccccc, ddddd, eeeee, toto ## Delete groups $ delgroup --remove-all-files group1 Puis rpter pour group2, group3 et commun

Note : Dans le cas o Samba serait installs, vrier que les comptes utilisateurs ne soit pas lis Samba. Les supprimers via Samba si le service est congurer pour grer les comptes Unix directement. De mme si un annuaire LDAP est en place, vrier les comptes Unix dnit dans lannuaire... Par ailleurs, si le sudo est install et actif, penser vrier et dactiver les sudoers si ncessaire :
$ chmod 740 /etc/sudoers # Changement de permission pour # le rendre accessible en # criture pour root.

$ vi /etc/sudoers (...) # Members of the admin group may gain root privileges #%admin ALL=(ALL) ALL #ligne commente # chmod 440 /etc/sudoers # Rtablir les droits en lecture # seule aprs modification

Avertissement
Attention, si la dcomission de sudoers nest pas dconseill, bien au contraire, sudo reste une commande importante quil est bien demploye la place de su (voir section prcdente sur la question).

Maintenant que les comptes utilisateur normaux superux sont supprims assurons nous que les comptes systmes correspondent des services utiles et effectivement utilis ou non. Si ce nest pas le cas, supprimons le service. Comment savoir quel service correspond un compte systme ? Pour certains cest deductible a partir du moment ou le nom correspond au process ou service mais comment de lutilisateur www-data... je peux remonter vers Apache ? En cherchant les chiers gr par lutlisateur et donc leur location, qui peuvent donner un indice, il y a moyen simple de remonter du compte vers le service ?

464

Chapitre 15. SR010 Les enjeux de la scurit Les services sont lists dans /etc/service ... Il y a aussi la description des comptes dans le cheir /etc/passwd ainsi que le home directory...
Ok pour les fichiers appartenant un utilisateur jai : $ find / -user mysql -print

## Pour les services en cours dexecution je peux faire : $ ps aux # Indique sous quel utilisateur le service sexecute...

Ceci malheureusement ne fonctionne par pour tous les utilisateurs (backup, games, etc...) dont le service nest pas actif... Pour lutilisateur "games" je vois que le home path est /usr/games :
Naturellement je cherche les paquets lis ce repertoire $ dpkg-query --search /usr/games gnome-games, base-files, bsdmainutils, gnuchess: /usr/games

Tout ceci me donne des rponses mais ny a t il pas un moyen universel plus simple ? Par example de www-data jessaye de remonter vers le service Apache... ou lutilisateur "sync" vers (???) ? Ok je peux chercher sur Internet... mais linteret cest de pouvoir trouver simplement via le systme lui mme ;-) A revoir plus tard ...

15.4.6. Systme de gestion des chiers - SGF (ou FHS en anglais)


Source(s):

Web: Version 2.3, non traduit (http://www.pathname.com/fhs) version 2.0, fr (http://www.linux-france.org/article/sys/fhs/fhs-toc.html)

"...Le SGF ou dans sa version anglaise le FHS est lensemble de rpertoires et de chiers qui constituent larborescence de votre systme..." / : la racine, point de dpart du SGF.

465

Chapitre 15. SR010 Les enjeux de la scurit /bin : commandes binaires essentielles (Utilises par admin, utilistateurs et scripts). Requise en mode utilisateur simple. /boot : lment utilis au processus de dmarrage (chiers statiques du chargeur de dmarrage, noyaux, etc...). /dev : chiers spciaux ou priphriques. /etc : conguration systme spcique lhte et scripts de commande (start, restart, stop). Aucun binaire dans ce rpertoire. /home : rpertoires personnels des utilisateurs. Sur les grands systmes (rpertoires partags avec de nombreux htes via NFS) il est trs utile de sous-diviser les rpertoires personnels (/home/staff, /home/guests, /home/students, etc.) /lib : bibliothques partages essentielles et modules du noyau. Les bibliothques prsentes ici sont ncessaires au dmarrage du systme et aux commandes essentielles prsentes dans /bin et /sbin). /mnt : point de montage pour les systmes de chier monts temporairement. /opt : paquets de composants supplmentaires pour les logiciels applicatifs (installation dadd-on). /proc : information du noyau et des processus sur SGF virtuels. /root : rpertoire personnel de lutilisateur root. /sbin : binaires systme essentiels ncessaires au dmarrage, la restauration, la rcupration et/ou la rparation du systme... /tmp : chiers temporaires. Contenu peut tre effac chaque dmarrage systme. /usr : hirarchie secondaire. /usr est partageable, les donnes sy trouvent en lecture seule. /usr/sbin : programmes excuts aprs le montage de /usr (ce qui signie quil ny a plus de problme) /usr/local/sbin : programmes installs par ladministrateur /usr/src : code source (noyau linux entre autre)

466

Chapitre 15. SR010 Les enjeux de la scurit /var : donnes variables (impression, mail, logs, connexion occasionnelles ou temporaires...)

15.4.7. Droits daccs UNIX


Pour un chier donn, on distingue :
## Des catgories dusager. - owner : lutilisateur possdant le fichier (u), - group : autres utilisateurs du mme groupe que le fichier (g) ou des utilisateurs nappartenant pas au groupe du fichier (o) - other : tous les autres utilisateurs (a) () Options chmod

## Pour chaque catgorie dusager ## diffrent type de droit daccs - la lecture (r), de reprsentation octale 4, - lcriture (w), de reprsentation octale 2, - lexcution (x), de reprsentation octale 1. ## Voir aussi - lexcution (X) - suid/sgid (s) - sticky bit (t/T)

# Alternativement nomm Restricted deletion flag

## Droits sur un fichier $ ls -l /etc/X11/ ... #(o)(g)(a) (owner)(group) drwxr-xr-x 2 root root 4096 nov 13 02:13 -rw-r--r-- 1 root root 13 nov 13 02:13 lrwxrwxrwx 1 root root 13 nov 13 02:16 ... d: fichier de type repertoire l: fichier de type lien symbolique

(fichier) app-defaults default-display-manager X -> /usr/bin/Xorg

drwxr-xr-x 2 ... app-defaults Le propritaire tous les droits Le groupe peut lire et excuter Les autres peuvent lire et excuter -rw-r--r-- ... default-display-manager Le propritaire peut lire et crire

467

Chapitre 15. SR010 Les enjeux de la scurit


Le groupe peut lire Les autres peuvent lire

2^9 combinaisons de droits possibles $ p=$(seq 0 7);for u in $p; do (for g in $p; do (for o in $p ;do echo "chmod $u$g$o mon_fichier"; done); done);done chmod 000 mon_fichier # Aucun droit pour tous chmod 001 mon_fichier chmod 002 mon_fichier chmod 003 mon_fichier chmod 004 mon_fichier chmod 005 mon_fichier chmod 006 mon_fichier ... # Toutes les variantes possible :) chmod 771 mon_fichier chmod 772 mon_fichier chmod 773 mon_fichier chmod 774 mon_fichier chmod 775 mon_fichier chmod 776 mon_fichier chmod 777 mon_fichier # Tous les droits pour tous

15.4.7.1. Droits spciaux: setuid, setgid, sticky bit


Source(s):

Web: Chmod (Wikipedia) (http://en.wikipedia.org/wiki/Chmod) SETUID (Wikipedia) (http://en.wikipedia.org/wiki/Setuid) Droits Spciaux (Linux France) (http://www.linux-france.org/article/sys/chiers/chiers-3.html)

Lutilisation des options SUID, SGID peut tre dangereuse, donc soyez vigilants. Pour modier ces valeurs, il faut associer :
4000 bit SUID 2000 bit SGID 1000 sticky bit

Quand on crit les permissions en octal, setuid, setgid et sticky bit sont reprsents par une nouvelle srie de 3 bits, qui se place avant les 3 autres sries (setuid=4, setgid=2, sticky=1)
# Rendre un programme SUID et SGID qui est dj en 755

468

Chapitre 15. SR010 Les enjeux de la scurit


$ chmod 6755 mon_fichier ## Rendre un rpertoire identique /tmp ## (Sticky bit / Restricted deletion flag) $ chmod 1777 mon_repertoire # Serveur de mail /usr/sbin/sendmail a # les droits rwsr-sr-x (rwxr-xr-x, setuid, setgid); $ chmod 6775 /usr/sbin/sendmail

setuid : Cela signie quun chier executable est excut, il lest avec les droits de son propritaire, et non avec ceux de lutilisateur qui le lance. Par exemple, le programme passwd, qui permet un utilisateur de modier son mot de passe, est setuid root (cest dire quil est setuid et quil appartient lutilisateur root): il doit pouvoir crire dans le chier /etc/passwd (ou /etc/shadow), dans lequel seul root peut crire.
ls -l /etc | grep passwd -rw-r--r-- ... root root ... passwd ls -l /usr/bin/passwd -rwsr-xr-x ... root root ... /usr/bin/passwd

Note : Le bit setuid permet dexcuter un binaire avec les droits, non pas de celui qui lance le programme, mais de celui qui le possde. videmment, les bit setuid sont trs pratiques mais provoquent souvent des failles importantes dans le systme. Lexemple le plus agrant tant celui dune commande comme halt qui nest habituellement utilisable que par root mais qui est bien pratique pour lutilisateur de la machine. Mettre le bit setuid sur la commande halt permettra nimporte quel utilisateur de stopper la machine... Si un attaquant arrive sur votre machine via un compte cre la va vite, il peut provoquer larrt inconditionnel de votre machine mme si vous tes en train de travailler dessus. En alternative, utliser plutt la commande sudo (excution ou accs sur la base de lutilisateur et non des groupes) pour simplement donner utilisateur le droit de faire cela (sans avoir passer root) et non pas TOUS les utilisateurs la fois.

setgid : de la mme faon, un excutable setgid sexcuter avec les droits du groupe auquel il appartient. Quand un rpertoire est setgid, tous les chiers crs dans ce rpertoire appartiennent au mme groupe que le rpertoire. Cest utilis par exemple quand plusieurs personnes travaillent sur un projet commun: ils ont alors un groupe ddi ce projet, et un rpertoire setgid appartenant ce groupe, et ils crent leurs chiers dans ce rpertoire avec les permissions 664: tout le groupe peut alors crire nimporte quel chier, vu que tous les chiers appartiennent au groupe. sticky bit : utilis par exemple sur /tmp. Tout le monde a tous les droits sur ce rpertoire, mais chaque processus utilisateur ou systme garde ses droits sur le chier cr. Quelquun dautre ne pourra pas supprimer le chier cr. Un utilisateur ne peut effacer que les chier qui lui appartiennent.

469

Chapitre 15. SR010 Les enjeux de la scurit Testons :


root# cat > /bin/rltest <<EOF > #!/bin/bash > echo "$USER:$HOME" > /root/rltest.log > ps aux | grep rltest > EOF root# ls -l /bin ... -rw-r--r-- 1 root root 30 2010-03-08 14:05 rltest (644) ... root# chmod +x /bin/rltest root# ls -l /bin ... -rwxr-xr-x 1 root root 30 2010-03-08 14:05 rltest (755) ... root# chmod 4755 /bin/rltest root# ls -l /bin | grep rltest -rwsr-xr-x 1 root root 30 2010-03-08 14:05 rltest filostene$ rltest /bin/rltest: line 2: /root/rltest.log: Permission non accorde 1000 21508 0.0 0.0 10620 1496 pts/0 S+ 15:34 0:00 /bin/bash /bin/rltest 1000 21510 0.0 0.0 7352 880 pts/0 R+ 15:34 0:00 grep rltest ## Filostene reste lutilisateur qui execute le process :(( ## Aucune lvation des droits...

# Ecrire le nom et homdir # de lutilisateur # Afficher le nom de lutilisateur # executant le processus

Ce test a chou. En effet aprs une petite recherche, il savre que la plupart des systme dexploitation ignore les attribut setuid/setgid sur les script shell executable. Il me faut donc crer un binaire pour pouvoir tester:
root# nano rltest.c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> int main(void) { printf (

470

Chapitre 15. SR010 Les enjeux de la scurit


"Real "Effective "Real "Effective getuid (), geteuid(), getgid (), getegid() ); return EXIT_SUCCESS; } root# gcc -Wall ./rltest.c -o rltest2 root# cp ./rltest2 /bin/rltest2 root# rltest2 Real UID = 0 # Utilisateur root Effective UID = 0 # Utilisateur root Real GID = 0 Effective GID = 0 root# exit exit filostene$ rltest2 Real UID = 1000 Effective UID = 1000 Real GID = 1000 Effective GID = 1000 $ su Mot de passe : root# ls -l /bin/rl* -rwxr-xr-x 1 root root 10061 2010-03-08 15:00 /bin/rltest2 root# chmod 4755 /bin/rltest2 root# ls -l /bin/rl* -rwsr-xr-x 1 root root 10061 2010-03-08 15:00 /bin/rltest2 root# exit exit filostene$ rltest2 Real UID = 1000 # Utilisateur filostene Effective UID = 0 # Utilisateur root Real GID = 1000 # Groupe filostene Effective GID = 1000 # Groupe filostene filostene$ su Mot de passe : root# chmod g+s /bin/rltest2 root# ls -l /bin/rl* -rwsr-sr-x 1 root root 10061 2010-03-08 15:00 /bin/rltest2 root# exit exit filostene$ rltest2 UID UID GID GID = = = = %d\n" %d\n" %d\n" %d\n",

# # # #

Utilisateur filostene Utilisateur filostene Groupe filostene Groupe filostene

471

Chapitre 15. SR010 Les enjeux de la scurit


Real Effective Real Effective UID UID GID GID = = = = 1000 0 1000 0 # # # # Utilisateur filostene Utilisateur root Groupe filostene Groupe root

15.4.8. Chiffrement du systme de chiers


Source(s):

OF: Chiffrer un systme de chiers (La Linux) (http://www.lea-linux.org/documentations/index.php/Leapro-pro_sys-cryptofs) En bref: A Glance on the Techniques used for Encryption and why it is a necessity (http://en.wikipedia.org/wiki/Linux_Unied_Key_Setup) HOWTO Encryption : Disk Encryption Approaches (http://encryptionhowto.sourceforge.net/Encryption-HOWTO-4.html#disk:other) LUKS: LUKS a standard for Linux hard disk encryption (cryptsetup) (http://code.google.com/p/cryptsetup) Linux Unied Key Setup (LUKS) disk encryption specication (http://en.wikipedia.org/wiki/Linux_Unied_Key_Setup) Web: Full disk encryption (http://en.wikipedia.org/wiki/Disk_encryption) Filesystem-level encryption (http://en.wikipedia.org/wiki/Filesystem-level_encryption) Cryptographic Filesystems, Part One: Design and Implementation (http://www.securityfocus.com/infocus/1673) Comparaison of Disk Encryption software (http://en.wikipedia.org/wiki/Comparison_of_disk_encryption_software ) List of cryptographic le systems (http://en.wikipedia.org/wiki/List_of_cryptographic_le_systems)

15.4.8.1. Chiffrement de chier individuel


GnuGPG (voir ci-avant) est une solution permettant le chiffrement (et signature) de chier individuel. Mais pour le chiffrement dune arborescence importante de chier cela nest pas adquate en terme dergonomie.

15.4.8.2. Chiffrement de systme virtuel de chier (fuse, loop device) : chier/repertoire, partition, container, etc...
Source(s):

Kernel based (espace noyau) :

472

Chapitre 15. SR010 Les enjeux de la scurit Crypto API (http://en.wikipedia.org/wiki/Crypto_API_(Linux)) dm-crypt (device mapper - transparent encryption of block devices) (http://www.saout.de/misc/dm-crypt) eCryptfs (cryptographic lesystem) (https://launchpad.net/ecryptfs) eCryptfs Tutorial (http://bodhizazen.net/Tutorials/Ecryptfs) Cryptfs: A Stackable Vnode Level Encryption File System (http://www.fsl.cs.sunysb.edu/docs/cryptfs/cryptfs.html) eCryptfs : encryption in Ubuntu par Dustin Kirkland (https://slo-tech.com/clanki/10008en) LoopAES (cacert.org) (http://wiki.cacert.org/LoopAES) LoopAES (http://loop-aes.sourceforge.net)

FUSE based (espace utilisateur) : CryptoFS/ (http://reboot78.re.funpic.de/cryptofs/) EncFS (http://en.wikipedia.org/wiki/EncFS) HOWTO EncFS (http://www.movingtofreedom.org/2007/02/21/howto-encfs-encrypted-le-systemin-ubuntu-and-fedora-gnu-linux) TrueCrypt (Container) (http://www.truecrypt.org)

Web : Rsync backup with encryption (http://xpd259.blogspot.com/2007/11/rsync-backup-with-encryption.html) cryptsetup (LUKS) commande line interface for encryption via dm-crypt (http://code.google.com/p/cryptsetup) Setup and Manage Disk Encryption with dm-crypt and LUKS (http://sunoano.name/ws/public_xhtml/dm-crypt_luks.html) System Encryption with LUKS for dm-crypt (et LVM encryption) (http://wiki.archlinux.org/index.php/System_Encryption_with_LUKS_for_dmcrypt#Encrypting_a_loopback_lesystem) Securing laptops with ecryptfs, cryptsetup and tmpfs (http://www.tolaris.com/2009/11/14/securing-laptops-with-ecryptfs-cryptsetup-and-tmpfs/ ) LUKS encrypted LVM partition (http://learninginlinux.wordpress.com/2008/04/23/installing-ubuntu-804-with-full-disk-encryption) Encrypt lesystems with EncFS and Loop-AES (http://www.linux.com/archive/feed/52820) rsync over Samba : An automatically expanding encrypted lesystem image (http://users.softlab.ece.ntua.gr/~ttsiod/backup.html)

Il y a plusieurs mthode standard de chiffrement sous Linux. cryptoloop : cette vielle mthode nest plus utilis car considr comme non-scuris et pas able. Le "loop device" permet de simuler un priphrique en mode bloc partir dun chier. Cest grce ce driver que lon peut notement monter les images de CD-ROM au format ISO9660 :
$ mount -t iso9660 -o loop monimage.iso /cdrom

473

Chapitre 15. SR010 Les enjeux de la scurit

La cryptoloop (et son succsseur dm_crypt (http://en.wikipedia.org/wiki/Dm-crypt)) insre les fonctions de chiffrement dans les fonctions de lecture et dcriture du "loop device". Le "loop device" est donc utilis pour convertir un chier chiffr en priphirque de mode bloc que lon peut ensuite monter comme un disque normal. dm-crypt : mappeur de priphriques pour le chiffrement (successeur de cryptoloop), utilis par cryptsetup (LUKS), uilise la CryptoAPI du noyau. Simule un priphrique en mode bloc partir dun chier. Tout ce qui est crit sur ce systme de chier est chiffr, autant les donnes que les mta-donnes (arborescence, noms de chiers, droits daccs, ...). Laccs aux chiers est entirement transparent, part un temps daccs plus important que laccs direct. Loutil utilise lAPI de chiffrement du noyau an davoir accs aux diffrents algorithmes de chiffrement (cypher) enregistrs. Parmi les cyphers disponibles dans la scatterlist cryptoapi, on citera : AES(Rijndael), Blowsh, Twosh, Serpent et lantique DES. loop-AES (loop-aes-utils: losetup,...) bien meilleur version apparement mais na jamais obtenu la faveur des developpers du noyau semble-t-il. Il est dit que cette mthode est bien plus scuris que cryptoloop ou le chiffrement direct par mappeur de priphrique (et probalbement plus rapide aussi), mais il nest pas trs ergonomique. Il requiert aussi le support dun noyau non stantard apparement. LUKS rend essentiellement la gestion du chiffrement de partition plus facile. Sans rentrer dans les dtails, il stoque toutes linformation de conguration ncessaire sur le disque lui mme. Ensuit, tout ce dont on a besoin cest dun mot de passe qui peut tre dans differents chier si souhait. Limplmentation dans GNU/Linux utilise dm-crypt et il peut avoir jusqu 8 mots de passe diffrent qui peuvent tre chang ou revoqu facilement.
Note : Chiffrement LVM : La meilleur mthode, et la plus facile, suivre pour les portables, est de congurer LVM en surcouche dune partition chiffre au lieu de linverse. Voir ce lien pour plus dinfo : Arch Linux: LVM on top of an encrypted partition (http://www.pindarsign.de/webblog/?p=767). Pour lutilisation du chiffrement en tant que surcouche LVM, les volumes LVM doivent dabord tre congur et ensuite utiliss comme base pour le chiffrement de partitions. Cela signie que LVM doit tre mis en place en premier. Ensuite suivre ce guide : Arch Linux: Encrypting a LVM setup (http://wiki.archlinux.org/index.php/System_Encryption_with_LUKS_for_dmcrypt#Encrypting_a_LVM_setup).

474

Chapitre 15. SR010 Les enjeux de la scurit

15.4.8.3. Chiffrement de systme de chier (fonctionalit native)


Note : Certains systme de chier tel que ZFS, NTFS (avec EFS - "Encrypting File System"), Cryptographic File System (CFS), Transparent Cryptographic File System (TCFS sur Linux et BSD), BTRFS (?) permettent un chiffrement transparent la vole... ce qui est une autre manire de chiffrer le systme de chier et donc les donnes.

Une des implmentation du chiffrement de systme de chier est lutilisation dun systme de chier ddi au sain du noyau. CryptFS utilise ce model dimplmentation, le systme de chier peut tre soit mont directement dans nimporte quel repertoire soit en surcouche dun autre sytme de chier tel que UFS ou NFS. Voir aussi eCryptfs ("cryptographic lesystem in the Linux kernel using stacking technology") link1 (http://doc.ubuntu-fr.org/ecryptfs) link2 () link3 (http://blog.dustinkirkland.com/2009/09/encrypted-home-now-offerred-at.html)) pour crer un dossier priv et donc crypt dans son repertoire home. This is CryptFS tendu :).
Note : A propos de eCryptfs : Il diffre des autres options de chiffrement de systme de chier sous GNU/Linux tel que encfs ou sshfs qui sont utiliss via FUSE en espace utilisateur. eCryptfs est un systme de chier superpos, chiffrant chaque chier indivduellement plutt que de chiffrer le priphrique en mode bloc en entier avec quelque chose comme dmcrypt ou le chiffrement LVM. Il fournit une bonne solution pour le chiffrement des repertoires Home. Acune passephrase nest requise au dmarrage de la machine. Lencryption se faisant au sain du noyau, les performance sont meilleurs que les solutions en espace utilisateur. Les algorithmes de chiffrement sont les mme fonctions testes, prouves et utilises par le reste du noyau. Les sauvegardes incrmental deviennent possible avec des outils tel que rsync puisque uniquement les chiers qui changent ont besoin dtre sauvegarder sur le support de stockage distant (il nest pas vraiment possible de faire cela avec un priphrique en mode bloc). Et il ny a pas besoin de pr-allouer un space pour les donnes chiffres -- les chiers chiffrs sont simplement crit dans le systme de chier sous-jacent.

15.4.8.4. Chiffrement de disque/volume (solution logiciel/matriel)


PGPDisk, Secure File System (SFS), Linux CryptoAPI, ScramDisk... Prvient des accs non autoris au disque. Le chiffrement du disque peut inclure la partition de boot, la mmoire SWAP et le MBR ou non. Cette solution peut tre associe ou non au chiffrement de chier/rpertoire (et donc partition) en plus. Ce nest pas un solution de remplacement car en gnral ne permet de grer les accs par partition (multiple clef daccs).

475

Chapitre 15. SR010 Les enjeux de la scurit

15.4.9. Les services (Fermer linutile / Scuriser lutile)


Sur les distributions Linux, lors de linstallation du systme, par dfaut plusieurs services rseaux sont installs, activs (ports ouvert) et dmarrs automatiquement pour faciliter la vie des utilisateurs. Mais par dfaut ces services ne sont pas vraiment congurs de manire scuriss et certains de ces services peuvent donner accs des informations personelles au reste du monde tout en tant une porte dentre pour des attaques potentielles. Scuriser ces services revient donc :
- dterminer lesquels sont vraiment utiles, - supprimer les services inutiles - scuriser les services utiles (filtrer : tcpwrapper, parefeu) garder actif

15.4.9.1. Les services peuvent tre lancs de plusieurs faons


- Par des scripts dinit SysVinit (la plupart des distribution sauf la slackware) : Scripts dinit (dans /etc/init.d) + lien de dmarrage associ SXXservice (dans /etc/rcX.d) avec X allant de 0 9 :
## Exemple /etc/rc2.d S20samba -> /etc/init.d/samba dmarre samba au niveau dinit 2 /etc/rc3.d S20samba -> /etc/init.d/samba ----- 3

## Pour dsactiver le service : - supprimer ce lien et le service ne sera plus dmarrer au prochain boot.

- Par des scripts rc (distribution bas sur Slackware) : Principe identique mais chiers /etc/rc.d, et nomms rc.service. Service activ au boot par le simple fait que le chier soit executable (bit +x) :
## Pour dsactiver un service : $ chmod -x /etc/rc.d/rc.service

# Rendre le script non-excutable

- Par le "super serveur" inetd : permet de lancer nimporte quel autre programme ds quune requte rseau est effectu sur le port sur lequel le service est congur :
## Ficher de configuration /etc/inetd.conf

476

Chapitre 15. SR010 Les enjeux de la scurit

## Syntaxe : <service_name> <sock_type> <proto> <flags> <user> <server_path> <args> ## Chaques lignes non commentes (ne commenant pas par un #) active le service <service_nam

## Pour dsactiver le service (au prochain redmarrage) : - commenter la ligne correspondant au service en ajoutant un # au debut ligne.

- Par le "super serveur" xinetd (succsseur de inetd) : Mme principe mais conguration lgrement diffrente :
## chaque service son propre fichier de configuration dans /etc/xinetd.d

## Pour dsactiver le service (au prochain redmarrage) : - diter fichier de configuration du service et mettre ... disable = no ...

15.4.9.2. netstat : Information sur les connexions rseau


La commande netstat, pour network statistics , est une commande en ligne afchant des informations sur les connexions rseau, les tables de routage et un certain nombre de statistiques.
netstat Options : --tcp : --udp : Affiche le nom du programme impliqu dans la cration de chaque connexion et le PID associ -a : Affiche toutes les connexions TCP actives et les ports TCP et UDP sur lesquels lordinateur coute. -n : Affiche les connexions TCP actives, adresses et les ports sont affichs au format numrique, sans tentative de rsolution de nom -w : --raw $ netstat Connexions Internet actives (sans serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante tcp 0 0 localhost:ldap localhost:48385 tcp 0 0 localhost:48385 localhost:ldap Sockets du domaine UNIX actives(sans serveurs) Proto RefCnt Flags Type State I-Node Chemin unix 7 [ ] DGRAM 9023 /dev/log ## -t -u -p

Etat ESTABLISHED ESTABLISHED

477

Chapitre 15. SR010 Les enjeux de la scurit


unix unix unix unix unix ... 2 2 3 3 3 [ [ [ [ [ ] ] ] ] ] DGRAM DGRAM STREAM STREAM STREAM 2417 7452 11531 11530 11526 @/org/kernel/udev/udevd @/org/freedesktop/hal/udev...

CONNECTE CONNECTE CONNECTE

/tmp/orbit-filostene/linc-...

$ netstat -t Connexions Internet Proto Recv-Q Send-Q tcp 0 0 tcp 0 0

actives (sans serveurs) Adresse locale Adresse distante localhost:ldap localhost:48385 localhost:48385 localhost:ldap

Etat ESTABLISHED ESTABLISHED

$ netstat -u Connexions Internet actives (sans serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante $ netstat -ta Connexions Internet Proto Recv-Q Send-Q tcp 0 0 tcp 0 0 tcp 0 0 tcp 0 0 ... $ netstat -tap Connexions Internet Proto Recv-Q Send-Q tcp 0 0 tcp 0 0 tcp 0 0 tcp 0 0 ... $ netstat -tapn Connexions Internet Proto Recv-Q Send-Q tcp 0 0 tcp 0 0 tcp 0 0 tcp 0 0 ....

Etat

actives (serveurs et tablies) Adresse locale Adresse distante *:ldap *:* localhost:mysql *:* *:sunrpc *:* *:51892 *:*

Etat LISTEN LISTEN LISTEN LISTEN

actives (serveurs Adresse locale *:ldap localhost:mysql *:sunrpc *:51892

et tablies) Adresse distante *:* *:* *:* *:*

Etat LISTEN LISTEN LISTEN LISTEN

PID/Program name 1896/slapd 1823/mysqld 1368/portmap 1379/rpc.statd

actives (serveurs Adresse locale 0.0.0.0:389 127.0.0.1:3306 0.0.0.0:111 0.0.0.0:51892

et tablies) Adresse distante 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:*

Etat LISTEN LISTEN LISTEN LISTEN

PID/Program name 1896/slapd 1823/mysqld 1368/portmap 1379/rpc.statd

15.4.9.3. netstat -tupanw : Visualiser les services actifs (ceux lcoute sur le systme)
$ netstat -tupanw Connexions Internet actives (serveurs et tablies) Proto Adresse locale Adresse distante Etat

PID/Program name

478

Chapitre 15. SR010 Les enjeux de la scurit


tcp tcp tcp tcp 0.0.0.0:389 127.0.0.1:3306 0.0.0.0:111 0.0.0.0:51892 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* LISTEN LISTEN LISTEN LISTEN 1896/slapd 1823/mysqld 1368/portmap 1379/rpc.statd # # # # #

tcp tcp tcp tcp tcp tcp tcp tcp tcp6 tcp6 tcp6 tcp6 tcp6 tcp6 tcp6 tcp6 udp udp udp udp udp udp

10.0.2.15:53 127.0.0.1:53 127.0.0.1:631 0.0.0.0:23 127.0.0.1:25 127.0.0.1:953 127.0.0.1:389 127.0.0.1:48385 :::389 :::139 :::80 :::21 :::53 ::1:631 ::1:953 :::445 10.0.2.15:137 0.0.0.0:137 10.0.2.15:138 0.0.0.0:138 0.0.0.0:55071 0.0.0.0:40483

0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 127.0.0.1:48385 127.0.0.1:389 :::* :::* :::* :::* :::* :::* :::* :::* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:*

LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN ESTABLISHED ESTABLISHED LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN

1739/named 1739/named 1935/cupsd 2495/inetd

Annuaire BD pour le appels NSM (Network S Utilis par NF vrou de fichi # DNS serveur

udp udp udp udp udp udp udp udp6 udp6 udp6

10.0.2.15:53 127.0.0.1:53 0.0.0.0:707 0.0.0.0:68 0.0.0.0:5353 0.0.0.0:111 0.0.0.0:631 :::53 :::48229 :::5353

0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* :::* :::* :::*

2398/exim4 1739/named 1896/slapd 2511/smbd # Serveur SMB (S 1896/slapd 2511/smbd 2698/apache2 # Serveur HTTP 2639/proftpd: # Serveur FTP 1739/named 1935/cupsd 1739/named 2511/smbd 2509/nmbd # Serveur Nebios 2509/nmbd 2509/nmbd 2509/nmbd 1379/rpc.statd 1721/avahi-daemon # free Zeroconf # publier et de # htes rseau # sans configur 1739/named 1739/named 1379/rpc.statd 2632/dhclient # Client DHCP 1721/avahi-daemon: 1368/portmap 1935/cupsd 1739/named 1721/avahi-daemon: 1721/avahi-daemon:

# Serveur dimpr # Serveur de ges aux services r # Serveur SMTP

15.4.9.4. Dsactiver/Supprimer les services inutiles


## Service Utiles : named, inetd, dhclient, ## Service Inutiles dsactiver : slapd, mysqld, cupsd, samba (smbd et nmbd),

479

Chapitre 15. SR010 Les enjeux de la scurit


apache2, avahi-daeamon ## Service Inutiles enlever : proftpd, exim4(?), portmap(?), rpc.statd(?)

Note : Suivant le mode de dmarrage de la distribution, des outils associs existent pour facilement accder aux services et les activer/dactiver au dmarrage : sysv-rc-conf (http://ubunblox.servhome.org/gestion-des-services-au-demarrage-sous-debianubuntu.html), rcconf, chkcong, service-admin (Application > Services sous Gnome), etc...
$ rcconf

Figure 15-3. Rcconf : Gestion des services

480

Chapitre 15. SR010 Les enjeux de la scurit

Daprs Christelle, linconvnient de rcconf est quil ne liste pas tous les services, sysv-rc-conf et chkcong lui semble plus complets... revoir plus tard...

Note : exim4, portmap, rpc.statd ont t installs par dfaut mais ne sont pas indispensables au systme donc il peuvent tre supprims. Si tant est que lon ne souhaite pas utiliser de tel service ou des services qui en dpendent :) Si le service SMTP est requis, Postx est une alternative possible.

Avertissement
Avant de dsactiver ou supprimer un service, il est bon de vrier ses dpendances... ## Dactiver les services inutiles $ apt-get install rcconf # Outils pour activer/dsactiver # les services au dmarrage :) # Services inutiles dselectionner dans linterface graphique (Barre Espace) # puis OK

## Supprimer le service FTP $ apt-get remove proftpd --purge ... Les paquets suivants ont t installs automatiquement et ne sont plus ncessaires : libcap1 proftpd-basic proftpd-mod-pgsql proftpd-mod-mysql proftpd-mod-ldap Veuillez utiliser apt-get autoremove pour les supprimer. ... $ apt-get autoremove ... Suppression de proftpd-mod-pgsql ... Suppression de proftpd-mod-mysql ... Suppression de proftpd-mod-ldap ... Suppression de proftpd-basic ... Stopping ftp server: proftpd. Suppression de libcap1 ... ...

481

Chapitre 15. SR010 Les enjeux de la scurit

15.4.9.5. Scuriser les services utiles


Quand un service est ncessaire il faut essayez de limiter son accs aux personnes qui en ont rellement besoin :
- un service public (site web) laisser laccs du service tout le monde - un serveur samba limit certain utilisateur

La plupart du temps les services permettent de congurer une liste dadresse IP qui ils doivent rpondre. Il faut bien les congurer. Pour les services lancs par les "super serveurs" (inetd ou xinetd) les autorisations daccs se congurent comme suit :
## La rgle ## (toujours la mme) On autorise PERSONNE sauf ceux qui sont exlicitements autoriss

## Refuse $ nano /etc/hosts.deny ALL:ALL # tout le monde avec le fichier ## Autorise $ nano /etc/hosts.allow ALL:LOCAL # tout les services au rseau local (LAN) ALL:127.0.0.1 # tous les services la machine elle mme imap:88.88.88.88 # le service imap (mail) qu la machine 88.88.88.88 proftpd:ALL # le service proftpd (FTP) tout le monde

15.4.10. Pare-feu
Voir section ddie SR011

482

Chapitre 15. SR010 Les enjeux de la scurit

15.4.11. Le serveur graphique


"...veillez ce que les touches de fermeture du serveur X (ctrl+alt+backspace) ne soit disponible quaprs avoir entr un mot de passe. Dans le cas contraire, nimporte qui pourra fermer votre session X et proter de votre session shell pour sinstaller son aise..." Dclencher automatiquement lcran de veilleau bout de quelques minutes dinactivit et protger le retour par un mot de passe.
Note : Par une simple commande, activer lcran de veille ds quon sabsente

15.5. HOWTO: Securiser Dbian


Source(s):

Web: Manuel de scurisation de Debian [PDF en Ligne] (http://www.debian.org/doc/manuals/securing-debian-howto/securing-debian-howto.fr.pdf)[PDF hors ligne] (docs/sr010-ch01-securing-debian-howto.fr.pdf) Modles de contrle daccs un systme dinformation : Role-Based Access Control (RBAC) Project (http://hissa.nist.gov/project/rbac.html) RABC Group (http://csrc.nist.gov/groups/SNS/rbac/) RBAC (Wikipdia) (http://fr.wikipedia.org/wiki/Contr%C3%B4le_dacc%C3%A8s_%C3%A0_base_de_r%C3%B4les) Draft RBAC Implementation Standard [PDF En Ligne] (http://csrc.nist.gov/rbac/draft-rbac-implementation-std-v01.pdf) [PDF Hors Ligne] (docs/sr010-ch06-draft-rbac-implementation-std-v01.pdf) Comments on a Critique of the ANSI Standard on RBAC [PDF En Ligne] (http://csrc.nist.gov/groups/SNS/rbac/documents/ferraiolo-kuhn-sandhu-07.pdf) [PDF Hors Ligne] (docs/sr010-ch06-comments-ferraiolo-kuhn-sandhu-07.pdf) Mandatory Access Control (MAC) (http://www.freebsd.org/doc/handbook/mac.html) MAC (Wikipedia) (http://fr.wikipedia.org/wiki/Mandatory_Access_Control) Discretionary Access Control (DAC) (http://fr.wikipedia.org/wiki/Discretionary_access_control) Rule Set Based Access Control (RSBAC) (http://fr.wikipedia.org/wiki/Contr%C3%B4le_dacc%C3%A8s_%C3%A0_base_de_r%C3%A8gles) Access Control List (ACL) (http://fr.wikipedia.org/wiki/Access_Control_List)

483

Chapitre 15. SR010 Les enjeux de la scurit

15.6. Scuriser les processus et surveiller le systme


Source(s):

OF: SR010-ch06-act005-sr010-surveillance.pdf (docs/eof/sr010-ch06-act005-sr010-surveillance.pdf)

15.6.1. Grsecurity (GrSec) [patche pour scuriser le noyau]


Source(s):

OF: SR010-ch06-act005-sr010-surveillance.pdf (http://www.grsecurity.org) Introduction Grsecurity (http://www.zataz.net/docs/8024/introduction-grsecurity.html) Example : SECCOMP as a Sandboxing solution ? (http://justanothergeek.chdir.org/2010/03/seccomp-as-sandboxing-solution.html)

Le noyau Linux nest la base pas orient scurit, il soccupe davantage de lintgration des drivers et de la gestion du systme de chiers que de savoir sil y a des faiblesses en matire darchitecture au niveau utilisateur. De ce fait, Brad Spengler a crit une suite complte de patches (ou rustines) quil a complt de deux projets, RBAC et PaX, an de les intgrer au noyau. GrSec couvre six pans dactivits qui sont :

- la gestion des droits par rle (RBAC - Role Base Access Control), - les restrictions chroot, - la protection contre la modification de lespace dadressage (PaX), pour prvenir des exploits bas sur le dbordement de mmoire - un systme de complment de logs sur lactivit utilisateur/systme, - un gnrateur alatoire - une consolidation des droits dexcution et de consultation sur une partie du systme de fichiers.

Les fonctionalits GrSec sinstalle lors de la compilation du noyau.

484

Chapitre 15. SR010 Les enjeux de la scurit


Note : Role Base Access Control (RBAC) : le contrle daccs base de rles est un modle de contrle daccs un systme dinformation dans lequel chaque dcision daccs est base sur le rle auquel lutilisateur est attach. Ce modle est galement rfrenc sous le nom de nondiscretionary access control et constitue une nouvelle alternative, entre les systmes Mandatory Access Control (MAC) et Discretionary Access Control (DAC). Avec RBAC, la scurit est grer un niveau qui est trs proche de la structure de lorganisation. Un rle dcoule gnralement de cette structure. Chaque utilisateur est assign par un ou plusieurs rles, chaque rle est assign un ou plusieurs privilges qui sont permis aux utilisateurs dans ce rle. Les rles peuvent tre hierarchiss et les utilisateurs exerant des fonctions similaires peuvent tre regroups sous le mme rle. Par exemple, des rles pouvant exister dans un hpital : fournisseur de soins, inrmiers et docteur. Le rle Docteur peut inclure les privilges disponible au rle inrmier qui lui mme peut inclure tous les privilges disponibles au rle fournisseur de soins. Un rle, dtermin par une autorit centrale, associe un sujet des autorisations daccs sur un ensemble objets. La modication des contrles daccs nest pas ncessaire chaque fois quune personne rejoint ou quitte une organisation. Par cette caractristique, RBAC est considr comme un systme idal pour les entreprises dont la frquence de changement du personnel est leve.

GrSec apporte tout dabord la restriction ncessaire lutilisation de chroot, transformant ce dernier en vritable espace clos (prison), permettant ainsi dviter tout chappement. Ensuite, il autorise une historisation accrue sur les process utiliss selon cette liste :
surveillance dun groupe prcis, excution de tous les processus avec leurs arguments, accs aux ressources interdites, changements de rpertoires, appels aux commandes mount et umount, crations et suppressions dIPC, signaux, tentatives de fork choues, changement de temps.

Il intgre galement un large pool dentropie, permettant une meilleure gestion alatoire des Pid, des ports source TCP et des ISN. Pour nir, GrSec apporte son lot de restrictions au systme :
- restriction de la lecture de /proc aux processus de lutilisateur, - restrictions des liens symboliques pour viter les race conditions - restrictions sur le FIFO

485

Chapitre 15. SR010 Les enjeux de la scurit


restrictions sur Dmesg amliorations du chemin dexcution scuris restrictions des sockets par rapport aux groupes possibilit de logger les adresses ip distantes dun attaquant dtection du bruteforcing

15.6.2. chroot
Source(s):

Web: chroot (http://fr.wikipedia.org/wiki/Chroot) GNU core utilities (Coreutils) (http://www.grsecurity.org) Tutorial: Utiliser chroot (http://lea-linux.org/documentations/index.php/Admin-admin_env-chroot) How to break out of a chroot jail (http://www.bpfh.net/simes/computing/chroot-break.html)

15.6.2.1. Introduction
chroot (change root) est une commande des systmes dexploitation UNIX permettant de changer le rpertoire racine dun processus de la machine hte. Cest un outil GNU faisant partie de coreutils (ou shellutils). Cette commande permet disoler lexcution dun programme et dviter ainsi certaines malveillances, comme lexploitation dun dpassement de tampon, pour ensuite accder au rpertoire racine de la machine hte.
Note : Cette commande nintroduit nullement une notion de scurit, puisquelle ne fait que dplacer la racine pour un utilisateur lambda. On sen sert couramment lors dautopsie de systme ou quand un problme de boot se prsente. Cependant, coupl un outil comme grsec, cela peut devenir une vritable espace clos (prison) pour lutilisateur .

Avertissement
Lutilisation de chroot sans complment de grsec ne vous sert rien en terme de scurit. Voir http://www.bpfh.net/simes/computing/chroot-break.html.

Il permet galement de faire tourner plusieurs instances dun mme ensemble de services ou dmons sur la mme machine hte. Par exemple, il est possible avec chroot dexcuter des applications 32 bits sur un systme 64 bits : il suft pour cela davoir un sous-systme qui intgre toutes les bibliothques

486

Chapitre 15. SR010 Les enjeux de la scurit logicielles ncessaires ; chroot permet de se loguer lintrieur de ce sous-systme, et dy excuter les applications installes.

15.6.2.2. Installation
## Chroot est normalement install par dfaut ## se trouve dans le paquet coreutils $ whereis chroot chroot: /usr/sbin/chroot /usr/share/man/man8/chroot.8.gz

# # # #

appartient aux outils de ladmin systme. donc pas indispensable au dmarrage du systme.

$ /usr/sbin/chroot --version chroot (GNU coreutils) 6.10 Copyright 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later ... $ ls -l /usr/sbin/chroot -rwxr-xr-x 1 root root ...

# propritaire : root # groupe : root # lire&executer: tous

##==> la seule chose que nous pourrons obtenir est le changement de racine pour un utilisateur, de par son propre chef.

15.6.2.3. Emprisonner un utilisateur dans un espace restreint


## suid chroot temporairement $ chmod u+s /usr/sbin/chroot $ ls -l /usr/sbin/chroot -rwsr-xr-x 1 root root ... # Le systme est maintenant en mesure # dutiliser correctement le programme. ## Cration de lutilisateur $ useradd -u 1001 -g 1001 \ -d /home/chroot/titi \ -s /bin/chroot \ -c exemple titi

# # # # #

UID 1001 & GID 1001 Home directory shell = script qui autorise lemprisonnement de lutilisateur son arrive

## Cration du script de connection /bin/chroot #!/bin/bash exec -c /usr/sbin/chroot /home/chroot/$USER /bin/bash

487

Chapitre 15. SR010 Les enjeux de la scurit


## Copie des commandes ncessaire $ cd /home/chroot/titi $ mkdir bin $ cp /bin/bash bin/bash ## Trouver les dpendances dune commande $ ldd /bin/bash libncurses.so.5 => /lib/libncurses.so.5 (0x4001e000) libdl.so.2 => /lib/libdl.so.2 (0x4005a000) libc.so.6 => /lib/libc.so.6 (0x4005d000) ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) ## Copies des librairies indispensables au fonctionnement : $ mkdir lib $ cd lib $ cp /lib/libncurses.so.5 . $ cp /lib/libdl.so.2 . $ cp /lib/libc.so.6 . $ cp /lib/ld-linux.so.2 . $ su titi Mot de passe : bash-3.2$ pwd /

Note : Plus large et complexe un programme est, plus le nombreux le nombre de dpendance sera. Par example , perl requiert un grand nombre de chiers et de repertoires pour fonctionner dans un environement chroot ( peu prs 2600 chiers et 200 repertoires pour une installation raisonable...).

15.6.2.4. HIDS (Intrusion Detection Systems)


Source(s):

Web: Tripwire Logiciel (http://fr.wikipedia.org/wiki/Tripwire_(logiciel)) Tripwire Logiciel (Open Source) (http://sourceforge.net/projects/tripwire) Tripwire Logiciel, Inc (http://www.tripwire.com/) Installer et Utiliser Tripwire (http://www.linux-pour-lesnuls.com/tripwire.php) Comparaison: File Integrity (compare tripwire, aide, yac) and Anti-DDoS Utilities (http://onlamp.com/pub/a/bsd/2003/04/03/FreeBSD_Basics.html)

Plusieurs types dIntrusion Detection System : tripwire, aide, yac ... Ceux qui sappliquent aux htes, pour vrier lintgrit des binaires prsents sur le systme, en cas de compromission, votre hids doit tre en mesure dafrmer ou dinrmer si votre binaire a chang ou non.

488

Chapitre 15. SR010 Les enjeux de la scurit Ces outils ralisent, lors de leur installation, une empreinte qui sert de base de signature au logiciel pour vrier les changements qui pourraient tre oprs lavenir sur ces binaires. Par la suite, de manire rgulire, une vrication des rpertoires cibles est effectue en comparant la signature du binaire lempreinte initiale. Si une modication est survenue, elle sera alors remonte par le bulletin de surveillance. Tous les utilitaires veriant lintgrit de systme de chier suivent la mme routine :
- Initialization de la base de donnes (1er instantane du systme) - Verification de la base de donne - Mise jour pour rsoudre les changements voulu - Rpter sur une base rgulire

EXERCICE: laide dun script, ralisez votre propre HIDS sur les chiers binaires essentiels : sr010-ch06-hids-sh.txt (docs/sr010-ch06-hids-sh.txt)
Note : Il sufrait de mettre jour la base de donne aprs chaque mise jour du systme en lanant les commandes printsumdirs suivi de backupdb manuellement.

489

Chapitre 15. SR010 Les enjeux de la scurit

Avertissement
Commentaire sur le script :

* Il ny pas de licence, dauteur, de date ni de version !!! * Il ny pas daide ni dinstruction/dexplication pour lutilisateur Comment le script sutilise ? * Les paramtres se verraient bien externalis dans un fichier de configuratio * Le debuggeur sur bash nest pas idal en production (-x) il faut enlever cet * Pas de cration de rpertoire nimporte o ! On sassure de lendroit o lon se trouve et de prfrence, dans un endroit o on na pas les droits, on ne pourra jamais lancer le script : Genre... pour la configuration /var/hids/data /var/hids/bckp /var/hids/log

et aussi... pour les commandes (penser les externaliser dans des variables /usr/bin/rsync etc...

* Lorsquon corrige des choses, ne pas laisser les anciennes en commentaire une fois que je maitriserais le(s) systme de version cela ne devrait plus s * On documente en gnral la fonction au-dessus et pas lintrieur du corps. Remarque quen python, on commente dans le corps... Mais ici, a amliorera ta lisibilit. * Il ny pas de test dexistance de la commande rsync. Par dfaut, elle nest pas installe sur le systme. Je verrais bien crer plus de test et les regrouper tous les tests (existance des commandes, variables, etc...) dans une function scriptinit{} qui pourrait rediriger vers laide scripthelp{} (accessible aussi via --help)...

Autre exemple de script HIDS :


Source: http://www.linux-pour-lesnuls.com/tripwire.php#methode # en tant que root $ find /etc /usr/bin -type f -exec md5sum {} \; >/tmp/md5 # Extrait de /tmp/md5 73582ee0dd0a9b4204f9cdff46394932 /etc/profile.d/10lang.csh 277f5a3d07f226c59abe7e6728d6136c /etc/profile.d/10inputrc.sh ... # Vrifier la somme de contrle # (aprs avoir modifi quelques fichiers) $ md5sum -c /tmp/md5 2> /dev/null | grep -v "OK$" Ce qui donne :

490

Chapitre 15. SR010 Les enjeux de la scurit


/etc/fstab: CHEC

# Avec la date $ find /etc /usr/bin /bin -type f -exec md5sum {} \; >/tmp/md5_etc_date +%Y-%m-%d_%H-%M-%S

# Rsultat dans votre boite email $ md5sum -c /tmp/md5_etc_date +%Y-%m-%d_%H-%M-%S 2> /dev/null | grep -v "OK$" | mail deny@ # En automatisant ceci # toutes les heures $ crontab -e 00 * * * * /usr/bin/md5sum -c /tmp/md5_etc_date +%Y-%m-%d_%H-%M-%S 2> /dev/null | grep -v "OK$" | mail deny@monaco.net

Tripwire est un logiciel permettant de sassurer que les chiers sensibles sur un ordinateur ne sont pas modis sans que cela ne dclenche une alerte. Le logiciel tablit une base de donnes de votre systme original et ensuite compare toutes modications ultrieures avec cette base. Il est donc primordial de lancer Tripwire sur un systme sain, ce logiciel ne faisant pas ofce de rootkit ou danti-virus.
# Installation $ apt-get install tripwire

491

Chapitre 15. SR010 Les enjeux de la scurit Figure 15-4. Tripwire : Installation 1/9

492

Chapitre 15. SR010 Les enjeux de la scurit Figure 15-5. Tripwire : Installation 2/9

493

Chapitre 15. SR010 Les enjeux de la scurit Figure 15-6. Tripwire : Installation 3/9

494

Chapitre 15. SR010 Les enjeux de la scurit Figure 15-7. Tripwire : Installation 4/9

495

Chapitre 15. SR010 Les enjeux de la scurit Figure 15-8. Tripwire : Installation 5/9

496

Chapitre 15. SR010 Les enjeux de la scurit Figure 15-9. Tripwire : Installation 6/9

497

Chapitre 15. SR010 Les enjeux de la scurit Figure 15-10. Tripwire : Installation 7/9

498

Chapitre 15. SR010 Les enjeux de la scurit Figure 15-11. Tripwire : Installation 8/9

499

Chapitre 15. SR010 Les enjeux de la scurit Figure 15-12. Tripwire : Installation 9/9

# $ $ $

Documentation man twintro # Introduction man twconfig # Configuration man tripwire # Controle dintgrit

# Fichiers de configuration

500

Chapitre 15. SR010 Les enjeux de la scurit


/etc/tw.cfg (docs/sr010-ch04-tripwire-tw-cfg.txt) /etc/twcfg.txt (docs/sr010-ch04-tripwire-twcfg.txt)

# Fichier conf sign linstallatio # Copie en texte brut

# Rien changer, moins que votre programme # de mail soit plac ailleurs que dans /usr/sbin/sendmail

/etc/twpol.txt (docs/sr010-ch04-tripwire-twpol.txt) # Contient les rgles pour les diffr # fichiers et rpertoires sensibles du systme # ceux dont lintgrit doit tre vrifi # Commenter les rgles ou chemin que vous ne souhaitez # pas voir applique lors du contrle dintgrit # Appliquer les modifications apportes au fichier de rgle (ou politique) $ /usr/sbin/twadmin --create-polfile -S site.key /etc/tripwire/twpol.txt # Supprimer la base de donnes initiales avec la commande... $ rm /var/lib/tripwire/hostname.twd # ... et recrez votre base de donnes : /usr/sbin/tripwire --init ... Wrote database file: /var/lib/tripwire/debstafil4.twd The database was successfully generated. # Noubliez pas ensuite de signer le fichier twcfg.txt # afin que le changement de configuration soit pris en compte avec la commande # Syntaxe: twadmin --create-cfgfile # Pour dsigner un fichier texte # contenant la configuration appliquer # Le fichier va ainsi tre sign $ /usr/sbin/twadmin --create-cfgfile -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt

# # $ #

Parcourir le systme la recherche de fichiers ajoutes, supprims ou modifis$ /usr/sbin/tripwire --check /usr/sbin/tripwire --check | tee > /tmp/tripcheck.log tripcheck.log contient les erreurs

# Lancer tripwire priodiquement Tripwire est automatiquement configur pour se lancer quotidiennement, vrifier dans /etc/cron.daily # Recevoir le rsultat par mail (selon twcfg.txt) # Test denvoi $ /usr/sbin/tripwire --test --email deny@monaco.net # Configuration possible (twpol.txt) ... ( rulename = "File System and Disk Administraton Programs", severity = $(SIG_HI), # Noubliez pas la virgule la fin emailto = deny@monaco.net )

501

Chapitre 15. SR010 Les enjeux de la scurit


... # $ $ $ $ Regnaration du fichier twpol.txt ncessaire en cas de changement: /usr/sbin/twadmin --create-polfile -S site.key /etc/tripwire/twpol.txt rm /var/lib/tripwire/hostname.twd /usr/sbin/tripwire --init /usr/sbin/twadmin --create-cfgfile -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt

# Gnrer un rapport .twr (par /usr/sbin/tripwire --check) $ /usr/sbin/twprint -m r --twrfile /var/lib/tripwire/report/hostname.twr | less

# Mise jour de la base de donnes (en cas de changement de permission, mise jour, etc... $ /usr/sbin/tripwire --update --twrfile /var/lib/tripwire/report/report/hostname.twr

Note :
- Requiert une installation sur chaque hte tester - Requiert une mise jour aprs tout changement (mme un simple changement de permission) - Fichier de configuration par defaut assez complet mais provoque bcp dalert par dfaut puisque certains des fichiers nexistent pas sur le systme - La suite de ligne de commande est "complexe" (quatres commande pour chacun des mode dutilisation)

15.6.2.5. Simple Network Management Protocol (SNMP)


Source(s):

Web: Installation dun serveur SNMP sous GNU/Linux (http://blog.nicolargo.com/2008/02/installation-dun-serveur-snmp-sous-linux.html) Principe du protocole SNMP (http://christian.caleca.free.fr/snmp/principe.htm)

Ce protocole a t cr pour simplier la vie des administrateurs rseaux, an de pouvoir interroger leurs systmes distance, voire dy interagir. Pour ce faire, des mibs ont t associes aux matriels. Elles dnissent les options daction et de surveillance possibles. Un agent sur chaque quipement (hte, routeur, switch, etc...) : Chaque quipement que lon voudra "manager" distance devra disposer dun agent SNMP. Cet agent est un serveur, cest dire quil reste lcoute dun port particulier : le port UDP 161. Il reoit et rpond aux requtes, il peut agir (si autoris)

502

Chapitre 15. SR010 Les enjeux de la scurit sur lenvironnement local pour modie