Support de Cours S53_S54

October 3, 2017 | Author: BA Darssan AB Soufia | Category: Advanced Packaging Tool, Operating System Technology, Operating System, Computer Hardware, Digital Technology
Share Embed Donate


Short Description

Cours GNU/LINUX LP3-4...

Description

Support de cours BTS2GNU/LINUX Essaadi Driss

Support de cours Introduction Rappels : 1. Le chargement du noyau Linux 2. Shell Script Partie 1

Le chargement du noyau Linux Lorsque l'on allume son ordinateur, la carte mère effectue un test automatique qui se charge de tester le bon fonctionnement des composants de la carte mère (processeur, mémoire, etc.). Ce test s'appelle le POST (Power-On Self Test). Si tout est OK, ce test se termine par un (et un seul) bip. Ceci fait, le BIOS charge ensuite le programme stocké dans le boot secteur du disque dur. Sur architecture PC, il existe deux programmes permettant de charger le noyau Linux, ou un autre système d'exploitation.

 LILO LILO (LInux LOader) a été le premier logiciel permettant d'effectuer cette opération. Exemple de fichier de configuration de Lilo (/etc/lilo.conf) : boot=/dev/hda map=/boot/map install=/boot/boot.b default=linux prompt timeout=50 message=/boot/message # Premiere section : boot Windows other=/dev/hda1 label=windows table=/dev/hda # Deuxieme section: boot Linux image=/boot/vmlinuz label=linux root=/dev/hda4 append="acpi=off" read-only # Troisieme section: boot Linux - mode mono-utilisateur image=/boot/vmlinuz label=linux_single_user root=/dev/hda4 append="single acpi=off" read-only

Ce fichier se compose de paramètres communs (disque dur de boot, timeout ...) et de sections pour chaque système d'exploitation à booter. Chaque fois que l'on modifie ce fichier, il faut exécuter la commande lilo afin de re-écrire dans le boot secteur l'emplacement exact du noyau sur le disque dur. # lilo Added windows Added linux Added linux_single_user

Support de cours BTS2GNU/LINUX Essaadi Driss

 GRUB Aujourd'hui, on utilise le programme GRUB (GRand Unified Bootloader) car il offre des possibilités supplémentaires. Contrairement à Lilo, Grub sait lire une partition Linux (ext2/3, XFS, reiserFS ...) afin de charger son fichier de configuration (/boot/grub/menu.lst) et le(s) noyau(x) Linux. Exemple de fichier de configuration de Grub (/boot/grub/menu.lst) default 0 timeout 30 color cyan/blue white/blue # Premiere section : Linux title Debian GNU/Linux, kernel 2.6.18-5-686 root (hd1,0) kernel /vmlinuz-2.6.18-5-686 root=/dev/sdb2 ro acpi=off initrd /initrd.img-2.6.18-5-686 savedefault # Deuxieme section : Linux mode mono-utilisateur title Debian GNU/Linux, kernel 2.6.18-5-686 (single-user mode) root (hd1,0) kernel /vmlinuz-2.6.18-5-686 root=/dev/sdb2 ro acpi=off single initrd /initrd.img-2.6.18-5-686 savedefault # Troisieme section : Windows title Windows NT/2000/XP (loader) root (hd0,0) savedefault makeactive chainloader +1

A la différence de Lilo, il n'est pas nécessaire d'exécuter une commande particulière lorsque l'on modifie ce fichier.

 les messages du noyau Linux Une fois chargé en mémoire, le noyau va se charger de détecter et d'initialiser les composants de la carte mère et les périphériques présents. Ces messages sont affichés sur l'écran lors du démarrage. La commande dmesg permet de consulter ces messages ultérieurement. Exemples : # dmesg Linux version 2.6.18-5-686 (Debian 2.6.18.dfsg.1-13) ([email protected]) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #1 SMP Fri Jun 1 00: 47:00 UTC 2007 BIOS-provided physical RAM map: BIOS-e820: 0000000000000000 - 000000000008f000 (usable) ...

A noter que la commande dmesg affiche tous les messages détectés durant le boot, ainsi que les messages du noyau affichés par la suite (cad durant le fonctionnement du système). Dans certains cas, l'affichage de la commande dmesg peut être tronqué (notamment les messages affichés durant le boot). Dans ce cas, on peut consulter le fichier /var/log/dmesg qui ne contient que les messages du boot.

 Le processus init Une fois que le noyau a détecté l'ensemble des composants de l'ordinateur, il lance le processus du système : init. Le processus init a comme particularité d'avoir le PID (Process IDentifiant) n°1 (c'est le premier processus), et de fait, il est le père de tous les autres. Le processus dispose d'un fichier de configuration, c'est le fichier /etc/inittab. La syntaxe de ce fichier est la suivante : code:niveau:action:commande

Support de cours BTS2GNU/LINUX Essaadi Driss

Exemple de fichier /etc/inittab : # Indique le runlevel par défaut (ici le 2) id:2:initdefault: # Script d'initiation du boot du système si::sysinit:/etc/init.d/rcS # mode mono-utilisateur ~~:S:wait:/sbin/sulogin # runlevel 0 : arret du système l0:0:wait:/etc/init.d/rc 0 # runlevel 1 : mono-utilisateur l1:1:wait:/etc/init.d/rc 1 # runlevel 2 : runlevel par défaut sur Debian l2:2:wait:/etc/init.d/rc 2 # runlevel 3, 4 et 5 : autres runlevels disponible l3:3:wait:/etc/init.d/rc 3 l4:4:wait:/etc/init.d/rc 4 l5:5:wait:/etc/init.d/rc 5 # runlevel 6 : redémarrage du système l6:6:wait:/etc/init.d/rc 6 # mode emergency z6:6:respawn:/sbin/sulogin # lance le reboot quand on appuie sur CTRL-ALT-DEL ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now # Démarre les tty en mode console 1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6

 Les runlevels et les scripts de démarrage Une fois que le système a effectué le runlevel S (initialisation minimale, comme par exemple vérifier l'intégrité des systèmes de fichiers), il va dans le runlevel 2 (Debian). Les niveaux de Runlevel     

S : Initialisation commune à tous les runlevels 0 : Arrêt de la machine 1 : Single-User 2,3,4,5 : Fonctionnement normal 6 : Reboot de la machine

 Commandes pour manipuler les runlevel La commande runlevel permet de connaître le runlevel dans lequel on est : # runlevel N 2

Dans cet exemple, on est dans le runlevel n°2 (fonctionnement sous Debian). Le N nous indique le runlevel précédent (N (No) : pas de runlevel précédent) La commande init ou la commande telinit permet de changer de runlevel. Exemple : # init 6

 Arrêter ou redémarrer le système Pour arrêter le système :  Commun à tous les UNIX : shutdown  Spécifique Linux et systèmes récents : halt et reboot # shutdown -h now "changement de noyau" &

NB : on rajoute un & pour garder la main Il existe différentes options telles que :  

-h (h pour halt) : arrêt immédiat -r now (r pour reboot) : redémarrage immédiat

Support de cours BTS2GNU/LINUX Essaadi Driss   

-h +10 : arrêt différé dans 10 minutes -h 10:30 : arrêt à 10h30 -c : annule l'arrêt

 Sommaire du démarrage. Image complète du processus de démarrage d'un système UNIX:

1. le premier secteur est chargé en mémoire RAM et exécuté -l'invite LILO:GRUB apparaît, 2. le noyau est chargé depuis la liste de secteurs, 3. le noyau est exécuté et décompressé, 4. le noyau initialise les périphériques matériels, 5. le noyau monte le système de fichier racine, disons /dev/hda1, 6. le noyau exécute /sbin/init avec un PID=1, 7. init excécute tous les scripts du niveau d'exécution par défaut défini dans /etc/inittab, 8. init engendre les programmes getty sur chaque terminal. 9. getty affiche l'invite de connexion, 10. getty exécute /bin/login pour authentifier l'utilisateur, 11.le programme login lance un shell.

Partie 2 Rappel Shell Scipt 

Exercices d’introduction

Existance d’un fichier #!/bin/sh echo -n "Entrez un nom de fichier: " read file if [ -e "$file" ]; then echo "Le fichier existe!" else echo "Le fichier n'existe pas, du moins n'est pas dans le répertoire d'exécution du script" fi exit 0

Les opérateurs logiques Il y a en 3 : 

le et logique : -a ou &&



le ou logique : -o ou ||

Support de cours BTS2GNU/LINUX Essaadi Driss



le non logique : !

La structure : `if` Pour pouvoir voir la valeur d'une variable il faut faire précéder son nom du caractère « $ ».

#!/bin/sh echo -n "Voulez-vous voir la liste des fichiers Y/N : " read ouinon if [ "$ouinon" = "y" ] || [ "$ouinon" = "Y" ]; then echo "Liste des fichiers :" ls -la elif [ "$ouinon" = "n" ] || [ "$ouinon" = "N" ]; then echo "Ok, bye! " else echo "Il faut taper Y ou N!! Pas $ouinon" fi

La structure `while` La commande while exécute ce qu'il y a dans son bloc tant que la condition est respectée :

#!/bin/sh cmpt=1 cm=3 echo -n "Mot de passe : " read mdp while [ "$mdp" != "ubuntu" ] && [ "$cmpt" != 4 ] do echo -n "Mauvais mot de passe, plus que "$cm" chance(s): " read mdp cmpt=$(($cmpt+1)) cm=$(($cm-1)) done echo "Non mais, le brute-force est interdit en France !!" exit 0

La structure `case` simples :

case variable in

Support de cours BTS2GNU/LINUX Essaadi Driss

modèle [ | modèle] ...) instructions;; modèle [ | modèle] ...) instructions;; ... esac Pour vous donner une idée précise de ce que peuvent réaliser toutes ces instructions, voici un petit script censé refaire un prompt avec quelques commandes basiques :

#!/bin/bash clear echo echo "#################### Script ############################" echo echo "#############################" echo -n "LOGIN: " read login echo -n "Hôte: " read hote echo "#############################" echo echo "### Pour l'aide tapez help ###" echo while [ 1 ]; do

# permet une

boucle infinie echo -n ""$login"@"$hote"$ "

# qui s'arrête

avec break read reps case $reps in help | hlp ) echo "A propos de TS --> about" echo "ls --> liste les fichiers" echo "rm --> détruit un fichier (guidé)" echo "rmd --> efface un dossier (guidé)" echo "noyau --> version du noyau Linux" echo "connect --> savoir qui s'est connecté dernièrement";;

Support de cours BTS2GNU/LINUX Essaadi Driss

ls ) ls -la;; rm ) echo -n "Quel fichier voulez-vous effacer : " read eff rm -f $eff;; rmd | rmdir ) echo -n "Quel répertoire voulez-vous effacer : " read eff rm -r $eff;; noyau | "uname -r" ) uname -r;; connect ) last;; about | --v | vers ) echo "Script simple pour l'initiation aux scripts shell";; quit | "exit" ) echo Au revoir!! break;; * ) echo "Commande inconnue";; esac done exit 0

La structure for Sa syntaxe est la suivante :

for variable in valeurs; do instructions done #!/bin/sh for var in *.txt; do echo "$var" done exit 0 #!/bin/sh for var in 1 2 3 4 5 6 7 8 9; do

Support de cours BTS2GNU/LINUX Essaadi Driss

echo $var done exit 0 Examinez le script suivant. Lancez-le, puis expliquez ce qu'il fait. Annotez le script, puis ré-écrivez-le d'une façon plus compacte et plus élégante.

#!/bin/bash MAX=10000

for((nr=1; nrEntrée • Mettre à jour des paquets: Pour mettre à jour des paquets, suivez la procédure ci-dessus pour mettre à jour l'index, puis appuyez sur la touche U pour marquer tous les paquets que vous pouvez mettre à jour. Appuyez maintenant sur la touche g pour avoir un liste des actions possibles. Appuyez à nouveau sur g, et on vous demandera de devenir super-utilisateur pour continuer. Appuyez sur Entrée pour avoir une invite et tapez le mot de passe pour vous identifier en tant que super-utilisateur. Enfin, appuyez sur g une fois de plus et il vous sera demandé de télécharger le logiciel. Appuyez sur Entrée à l'invite Continuer pour que le téléchargement et la mise à jour des paquets commencent. La première colonne d'information affichée dans la liste des paquets dans le panneau du haut, lorsqu'on examine réellement des paquets, liste l'état actuel du paquet et utilise la syntaxe suivante pour décrire l'état du paquet: • i : Paquet installé. • c: Le paquet n'est plus installé, mais sa configuration est conservée sur le système • p: Purgé du système • v : Paquet virtuel • B : Paquet cassé • u: Fichiers décompressés, mais paquet pas encore configuré. • C: Mal configuré- La configuration a échouée et nécessite une correction • H: Demi-installé- La Suppression a échoué et nécessite une correction Pour quitter Aptitude, appuyez simplement sur la touche q et confirmez que vous désirez fermer le logiciel. Beaucoup d'autres fonctions sont disponibles à partir du menu d'Aptitude, en appuyant sur la touche F10.

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

4. Configuration La liste des dépôts utilisée par Advanced Packaging Tool (APT) est enregistrée dans le fichier de configuration /etc/apt/sources.list. Un exemple de ce fichier est présenté ici, de même que les informations pour ajouter ou supprimer des liens vers des dépôts dans ce fichier. Ceci [../sample/sources.list] est un exemple simple d'un fichier /etc/apt/sources.list typique. Vous pouvez éditer le fichier pour activer ou désactiver certains dépôts. Par exemple, pour désactiver la nécessité d'insérer le CD-ROM Ubuntu à chaque fois que vous faites une opération sur les paquets, mettez simplement en commentaire la ligne appropriée qui se trouve au début du fichier :

# no more prompting for CD-ROM please # deb cdrom:[Ubuntu 6.06 _Dapper Drake_ - Release i386 (20060329.1)]/ dapper main restrict

. Dépôts supplémentaires En plus des dépôts officiellement supportés par Ubuntu, il en existe des supplémentaires maintenus par la communauté qui offrent un grand nombre de paquets supplémentaires. Deux de ces dépôts les plus populaires sont Universe et Multiverse. Bien qu'ils ne soient pas officiellement supportés par Ubuntu, ce pourquoi ils ne sont pas activés par défaut, ils proposent généralement des paquets sûrs et ne présentant aucun risque pour votre ordinateur. Les paquets situés dans le dépôt Multiverse ont souvent des licences particulières qui les empêchent d'être distribués avec un système d'exploitation libre, et ils peuvent être illégaux dans votre pays. Soyez prévenus que ni le dépôt Universe ni le dépôt Multiverse ne contiennent des paquets officiellement supportés. Il peut donc ne pas y avoir de mises à jour de sécurité pour ces paquets. De nombreux autres sources de paquets sont disponibles, et offrent même souvent un seul paquet, comme par exemple dans le cas des sources venant de développeurs d'une seule application. Vous devriez cependant toujours faire très attention quand vous utilisez des sources exotiques. Recherchez des sources et des paquets fiables avant d'effectuer une installation. Certains paquets provenant de sources non fiables peuvent rendre votre système instable ou inutilisable. Pour activer les dépôts Universe et Multiverse, éditez le fichier /etc/apt/sources.list et supprimez les commentaires des lignes appropriées.

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Compilation Du noyau Linux

Le noyau est tout simplement le programme qui gère les interactions entre le matériel et les autres programmes. C'est lui qui amorce le système d'exploitation. Pourquoi compiler son noyau ?   

Faire fonctionner un matériel qui n’est pas pris en charge par votre noyau actuel Appliquer un correctif Utiliser une distribution qui oblige de compiler votre noyau

Vous voulez passer le temps

Récupère les sources du noyaux ,soit celle de votre distribution, soit les sources disponibles sur le site kernel.org   

Installation des sources : Installer le paquet linux-source linux-source est un métapaquetage qui pointe vers la dernière version du noyau

Il vous faudra aussi installer les outils de compilation : Installer les paquets debconf-utilsdpkg-devdebhelperbuild-essential kernel-package libncurses5-dev

Télécharger une version du noyau : wget https://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.23.tar.bz2 Les outils nécessaires : # apt-get install build-essential Pour bénéficier de plus doutils et d’interfaces : # apt-get install libncurses5-dev

Pour effectuer la compilation de la meilleure façon il faut travailler dans le répertoire /usr/src. Pour cela il faut créer un utilisateur et l’ajouter au groupe src.De cette manière on pourra accéder à /usr/src sans être root. usermod-aG src login## Où //login// est votre nom d'utilisateur ou

sudo adduser login src## Où //login// est votre nom d'utilisateur

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Mettre en place les sources . #cd /usr/src # tar xjf linux-3.0.23.tar.bz2 #ln-sfn linux-source-3.0.23 linux ou bien # mv linux-3.0.23 linux-source-3.0.23 # cd linux-source-3.0.23

Configuration et compilation Copier la configuration du noyau courant Toutes les modifications que nous allons faire seront dans le fichier .config

# cp /boot/config-$(uname –r) .config Creation du fichier .config type # make oldconfig make oldconfig passé en revue les nouvelles options de configuration. Ensuite on personnalise les options de compilation : make nconfig ou make menuconfig

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Compiler et créer des paquets « .deb » Pour créer des paquets « .deb » de l’image du noyau et des en-tête # make deb-pkg A la fin du processus de compilation vous disposerez dans /usr/src de paquets linux-image-$(version).deb et linux-headers-$(version).deb prêts à être installés, par exemple avec dpkg –i ou gdebi. La création d’un disque initial de démarrage et la mise à jour de grub seront automatiques lors de la compilation. Pour accélérer la compilation vous pouvez augmenter le nombre de processus alloués,par exemple sur un processeur dual-core : # make –j 4 deb-pkg

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

CH3 : Technologie RAID En informatique, le mot RAID (Redundant Array of Independent (or inexpensive) Disks) « regroupement redondant de disques indépendants »désigne les techniques permettant de répartir des données sur plusieurs disques durs afin d'améliorer soit la tolérance aux pannes, soit la sécurité, soit les performances de l'ensemble, ou une répartition de tout cela.

Schéma de principe d'une grappe de disques en RAID 5

Historique En 1978, un employé d'IBM, Norman Ken Ouchi, déposa un brevet concernant un « Système de récupération de données stockées dans une unité de stockage défectueuse », et dont la description était ce que deviendrait plus tard le RAID 5. Ce brevet fait également mention du miroitage (mirroring) de disque (qui sera appelé plus tard RAID 1), ainsi que de la protection avec une parité dédiée (qui sera appelé plus tard RAID 3 et 4). La technologie RAID a été élaborée par un groupe de chercheurs de l'Université de Berkeley (Californie) en 1987. Ces derniers étudièrent la possibilité de faire reconnaître deux disques durs ou plus comme une seule entité par le système. Ils obtinrent pour résultat un système de stockage aux performances bien meilleures que celles des systèmes à disque dur unique, mais doté d'une très mauvaise fiabilité. Les chercheurs s'orientèrent alors vers des architectures redondantes, afin d'améliorer la tolérance aux pannes du système de stockage.

Description et concepts Comparaison RAID/SLED Depuis sa création, la particularité principale de l'architecture RAID est sa capacité à combiner de nombreux périphériques de stockage bon marché et une technologie courante dans une matrice unique, de sorte que ce groupement offre une capacité, une fiabilité et/ou des performances accrues, ce pour un coût largement inférieur à un périphérique de stockage unique équivalent exploitant des technologies de pointe. L'architecture RAID s'oppose donc à l'architecture SLED (Single Large Expensive Disk), qui est fondée sur l'utilisation d'un seul et même disque dur de grande capacité, donc d'un prix élevé, car celui-ci doit non seulement pouvoir stocker beaucoup d'informations, mais il doit de plus être d'excellente qualité pour garantir au mieux la pérennité et l'accessibilité de son contenu. En effet, dans une architecture de type SLED, la bonne conservation des données est dépendante de la moindre défaillance du disque dur. Lorsqu'une panne survient, non seulement le système est

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

inexploitable le temps du remplacement du matériel défectueux, mais la seule manière de récupérer les données est de procéder à une restauration de la dernière sauvegarde, ce qui peut prendre plusieurs heures durant lesquelles le système est toujours inutilisable. Si un tel temps d'inactivité est acceptable pour l'ordinateur d'un particulier, il est en revanche rédhibitoire pour le système informatique d'une entreprise, pour qui une telle panne peut avoir des conséquences non négligeables sur sa santé financière. L'utilisation d'une architecture RAID, du moins dans la plupart de ses niveaux fonctionnels, permet justement d'apporter une réponse à ces besoins car non seulement la défaillance d'un des disques de la grappe ne gêne pas le fonctionnement des autres disques, ce qui permet au système de continuer de fonctionner, mais de surcroît, une fois le disque en panne échangé, son contenu est reconstruit à partir des autres disques pendant le fonctionnement normal du système. Ainsi, l'activité de l'entreprise continue de façon ininterrompue et transparente pendant toute la durée de l'incident. Le RAID, suivant ses niveaux fonctionnels, s'il donne des temps de réponse identiques à ceux des disques s'ils étaient utilisés individuellement, offre des débits particulièrement soutenus, même en utilisant des disques durs bons marchés et de performances moyennes, tout en garantissant une bien meilleure fiabilité (sauf pour le RAID 0 qui lui la réduit d'autant que le nombre de disques). Dans de telles situations, les architectures RAID se révèlent donc idéales, tant du point de vue de leurs performances que de leur fiabilité. Dans tous les cas, le RAID reste complètement transparent à l'utilisateur qui, quel que soit le nombre de disques physiques utilisés pour construire le RAID, ne verra jamais qu'un seul grand volume logique, auquel il accédera de façon tout à fait habituelle.

Parité et redondance Le miroitage s'avère être une solution onéreuse, puisqu'il est nécessaire d'acquérir les périphériques de stockage en plusieurs exemplaires. Aussi, partant du principe que plusieurs unités de stockage ont une faible probabilité de tomber en panne simultanément, d'autres systèmes ont été imaginés, dont ceux permettant de régénérer les données manquantes à partir des données restant accessibles et d'une ou plusieurs données supplémentaires, dites de redondance. Le système de redondance le plus simple et le plus largement utilisé est le calcul de parité. Ce système repose sur l'opération logique XOR (OU exclusif) et consiste à déterminer si sur bits de données considérés, le nombre de bits à l'état est pair ou impair. Si le nombre de est pair, alors le bit de parité vaut . Si le nombre de est impair, alors le bit de parité vaut . Lorsque l'un des bits de données ainsi formés devient indisponible, il est alors possible de régénérer le bit manquant en appliquant à nouveau la même méthode sur les éléments restants. Cette technique est utilisée dans les systèmes RAID 5. Il existe des systèmes de redondance plus complexes et capables de générer plusieurs éléments de redondance afin de supporter l'absence de plusieurs éléments. Le RAID 6 utilise par exemple une technique de calcul de parité fondée sur des polynômes.

Les différents types de systèmes RAID Le système RAID est : 

soit un système de redondance qui donne au stockage des données une certaine tolérance aux pannes matérielles (ex : RAID1).



soit un système de répartition qui améliore ses performances (ex : RAID0).

Support de cours BTS SRI2 Essaadi Driss



GNU/Linux

soit les deux à la fois mais avec une moins bonne efficacité (ex : RAID5).

Le système RAID est donc capable de gérer d'une manière ou d'une autre la répartition et la cohérence de ces données. Ce système de contrôle peut être purement logiciel ou utiliser un matériel dédié. Le RAID logiciel En RAID logiciel, le contrôle du RAID est intégralement assuré par une couche logicielle du système d'exploitation. Cette couche s'intercale entre la couche d'abstraction matérielle (pilote) et la couche du système de fichiers. Avantages 

C'est la méthode la moins onéreuse puisqu'elle ne demande aucun matériel supplémentaire.



Cette méthode possède une grande souplesse d'administration (logicielle).



Cette méthode présente l'avantage de la compatibilité entre toutes les machines équipées du même logiciel de RAID (c’est-à-dire du même système d'exploitation)

Inconvénients 

L'inconvénient majeur réside dans le fait que cette méthode repose sur la couche d'abstraction matérielle des périphériques qui composent le volume RAID. Pour diverses raisons, cette couche peut être imparfaite et manquer de certaines fonctions importantes comme, par exemple, la détection et le diagnostic des défauts matériels et/ou la prise en charge du remplacement à chaud (Plug And Play) des unités de stockage.



La gestion du RAID monopolise des ressources systèmes (légèrement le processeur et surtout le bus système) qui pourraient être employées à d'autres fins. La baisse de performances due à la gestion logicielle du raid est particulièrement sensible dans des configurations où le système doit transférer plusieurs fois les mêmes données comme, par exemple, en RAID1, et, assez faible, dans des configurations sans redondance : exemple, le RAID 0.



L'utilisation du RAID sur le disque système n'est pas toujours possible.

Le RAID pseudo-matériel L'extrême majorité des contrôleurs RAID bon marché intégrés à de nombreuses cartes mères récentes en 2004/2005 gèrent souvent le RAID 0 et 1 sur des disques IDE ou SATA. Malgré le discours marketing qui tend systématiquement à induire en erreur sur ce point, il ne s'agit pas de RAID matériel à proprement parler mais plutôt d'un contrôleur de disque doté de quelques fonctions avancées. D'un point de vue strictement matériel, cette solution hybride n'est pas différente d'un RAID logiciel. Elle diffère cependant sur l'emplacement des routines logicielles de gestion du RAID. Avantages 

L'intérêt principal de ce type de RAID est d'apporter une solution au troisième problème du RAID logiciel, à savoir qu'il ne peut pas toujours servir à héberger les fichiers du système d'exploitation puisque c'est justement ce dernier qui permet d'y accéder.

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux



Dans ce type de RAID, la présence d'un BIOS intégrant les routines logicielles basiques de gestion du RAID permet de charger en mémoire les fichiers essentiels du système d'exploitation (le noyau et les pilotes essentiels).



Puis, le pilote du contrôleur intègre les mêmes routines logicielles de gestion du RAID et fournit alors aux couches supérieures de l'OS non pas un accès aux périphériques mais un accès au volume RAID qu'il émule.

Inconvénients En dehors de cet avantage important, ce type de RAID cumule les défauts des deux autres approches : 

Les limitations de performances sont les mêmes que pour le raid logiciel car il s'agit effectivement d'un RAID logiciel camouflé.



Un problème important posé par ces contrôleurs hybrides est leur piètre gestion des défauts matériels et leurs fonctionnalités BIOS généralement limitées.



L'interopérabilité est très mauvaise surtout si l'on considère qu'il s'agit généralement de matériel intégré aux cartes mères des ordinateurs. Pire, le changement de carte-mère (voire simplement de version de bios), si la nouvelle utilise des jeux de puces différents, peut imposer de reconstruire le RAID entièrement. De manière générale, une reconstruction est possible si l'on reste dans des contrôleurs RAID de même marque mais de modèles différents, mais il n'existe pas de règle définie de compatibilité.



La fiabilité annoncée de ces dispositifs est assez controversée.

Le RAID matériel Dans le cas du RAID matériel, une carte ou un composant est dédié à la gestion des opérations. Le contrôleur RAID peut être interne à l'unité centrale (carte d'extension) ou déporté dans une baie de stockage. Un contrôleur raid est en général doté d'un processeur spécifique, de mémoire, éventuellement d'une batterie de secours, et est capable de gérer tous les aspects du système de stockage RAID grâce au microcode embarqué (firmware). Du point de vue du système d'exploitation, le contrôleur RAID matériel offre une virtualisation complète du système de stockage. Le système d'exploitation considère chaque volume RAID comme un disque et n'a pas connaissance de ses constituants physiques. Avantages 

Les contrôleurs RAID matériels permettent la détection des défauts, le remplacement à chaud des unités défectueuses et offrent la possibilité de reconstruire de manière transparente les disques défaillants. Mais les systèmes d'exploitation évolués permettent également cela si le matériel le permet.



La charge système (principalement l'occupation du bus) est allégée. (surtout dans des configurations avec beaucoup de disques et une forte redondance)

Support de cours BTS SRI2 Essaadi Driss



GNU/Linux

Les vérifications de cohérence, les diagnostics et les maintenances sont effectués en arrière plan par le contrôleur sans solliciter de ressources système.

Inconvénients 

Les contrôleurs RAID matériels utilisent chacun leur propre système pour gérer les unités de stockage. En conséquence, au contraire d'un RAID logiciel, des disques transférés d'un système à un autre ne pourront pas être récupérés si le contrôleur RAID n'est pas exactement le même (firmware compris). Il est donc conseillé de posséder une deuxième carte en cas de panne de la première.



Les cartes d'entrée de gamme possèdent des processeurs de puissance bien inférieure à celle des ordinateurs actuels. On peut donc avoir de bien moins bonnes performances pour le même prix qu'un RAID logiciel.



Le coût : l'entrée de gamme se situe aux alentours de 200 € mais les cartes plus performantes peuvent souvent dépasser les 1000 €.



Le contrôleur RAID est lui-même un composant matériel, qui peut tomber en panne. Son logiciel (firmware) peut contenir des erreurs, ce qui constitue un autre risque de panne (un nouveau "single-point-of-failure"). Il est peu probable qu'un RAID actuel contienne des erreurs de programmation (bugs) car il est garanti en moyenne une dizaine d'années.



Les différents fabricants de contrôleurs RAID fournissent des outils de gestion logicielle très différents les uns des autres (et de qualité parfois inégale). À l'opposé, les outils de gestion du RAID logiciel fournis avec un système d'exploitation sont généralement bien intégrés dans ce système.



La durée du support d'un contrôleur RAID par son constructeur (correction de bugs dans le firmware, par exemple), parfois liée à l'arrivée de nouveaux produits rendant les anciens obsolètes, peut être moins longue ou plus volatile que le support du RAID logiciel par le fournisseur du système d'exploitation. Le constructeur peut même disparaitre (ce qui est assez rare parmi les fabricants de systèmes d'exploitation).



Une moindre souplesse par rapport au RAID logiciel, qui dispose d'une couche d'abstraction permettant de gérer du RAID au-dessus de tout types de périphériques blocs supportés par le système d'exploitation, locaux ou distants (ATA, SCSI, ATA over Ethernet, iSCSI... et toutes les combinaisons possibles entre eux). Les contrôleurs RAID sont spécialisés pour un seul type de périphérique bloc.

Les différents niveaux de RAID Les niveaux standard Les différents types d'architecture RAID sont numérotés à partir de 0 et peuvent se combiner entre eux (on parlera alors de RAID 0+1, 1+0, etc.). RAID 0 : volume agrégé par bandes

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

RAID 0 Le RAID 0, également connu sous le nom d'« entrelacement de disques » ou de « volume agrégé par bandes » (striping en anglais) est une configuration RAID permettant d'augmenter significativement les performances de la grappe en faisant travailler disques durs en parallèle (avec ). 

Capacité : La capacité totale est égale à celle du plus petit élément de la grappe multiplié par le nombre d'éléments présent dans la grappe, car le système d'agrégation par bandes se retrouvera bloqué une fois que le plus petit disque sera rempli (voir schéma). L'espace excédentaire des autres éléments de la grappe restera inutilisé. Il est donc conseillé d'utiliser des disques de même capacité.



Fiabilité : Le défaut de cette solution est que la perte d'un seul disque entraîne la perte de toutes ses données.



Coût : Dans un RAID 0, qui n'apporte aucune redondance, tout l'espace disque disponible est utilisé (tant que tous les disques ont la même capacité).

Dans cette configuration, les données sont réparties par bandes (stripes en anglais) d'une taille fixe. Cette taille est appelée granularité . Exemple : avec un RAID 0 ayant une bande de 64 Ko et composé de deux disques (disque Disk 0 et disque Disk 1), si l'on veut écrire un fichier A de 500 Ko, le fichier sera découpé en 8 bandes (car ), appelons-les 1, 2, 3, 4, 5, 6, 7 et 8, qui seront réparties sur l'ensemble des disques de la façon suivante : Disk 0 : 1, 3, 5, 7 Disk 1 : 2, 4, 6, 8 Ainsi l'écriture du fichier pourra être effectuée simultanément sur chacun des disques en un temps équivalent à l'écriture de 256 kio.

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Ainsi, sur un RAID 0 de disques (avec ), chaque disque ne doit lire et écrire que des données, ce qui a pour effet de diminuer les temps d'accès (lecture et écriture) aux données; les disques se partageant le travail, les traitements se trouvent accélérés. Ce type de RAID est parfait pour des applications requérant un traitement rapide d'une grande quantité de données. Mais cette architecture n'assure en rien la sécurité des données ; en effet, si l'un des disques tombe en panne, la totalité des données du RAID est perdue. RAID 1 : Disques en miroir

RAID 1 Le RAID 1 consiste en l'utilisation de disques redondants (avec ), chaque disque de la grappe contenant à tout moment exactement les mêmes données, d'où l'utilisation du mot « miroir » (mirroring en anglais). 

Capacité : La capacité totale est égale à celle du plus petit élément de la grappe. L'espace excédentaire des autres éléments de la grappe restera inutilisé. Il est donc conseillé d'utiliser des éléments identiques.



Fiabilité : Cette solution offre un excellent niveau de protection des données. Elle accepte une défaillance de éléments.



Coût : Les coûts de stockage sont élevés et directement proportionnels au nombre de miroirs utilisés alors que la capacité totale reste inchangée. Plus le nombre de miroirs est élevé, et plus la sécurité augmente, mais plus son coût devient prohibitif.

Les accès en lecture du système d'exploitation se font sur le disque le plus facilement accessible à ce moment-là. Les écritures sur la grappe se font de manière simultanée sur tous les disques, de façon à ce que n'importe quel disque soit interchangeable à tout moment. Lors de la défaillance de l'un des disques, le contrôleur RAID désactive, de manière transparente pour l'accès aux données, le disque incriminé. Une fois le disque défectueux remplacé, le contrôleur RAID

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

reconstitue, soit automatiquement, soit sur intervention manuelle, le miroir. Une fois la synchronisation effectuée, le RAID retrouve son niveau initial de redondance. RAID 5 : volume agrégé par bandes à parité répartie

RAID 5 Le RAID 5 combine la méthode du volume agrégé par bandes (striping) à une parité répartie. Il s'agit là d'un ensemble à redondance . La parité, qui est incluse avec chaque écriture se retrouve répartie circulairement sur les différents disques. Chaque bande est donc constituée de blocs de données et d'un bloc de parité. Ainsi, en cas de défaillance de l'un des disques de la grappe, pour chaque bande il manquera soit un bloc de données soit le bloc de parité. Si c'est le bloc de parité, ce n'est pas grave, car aucune donnée ne manque. Si c'est un bloc de données, on peut calculer son contenu à partir des autres blocs de données et du bloc de parité. L'intégrité des données de chaque bande est préservée. Donc non seulement la grappe est toujours en état de fonctionner, mais il est de plus possible de reconstruire le disque une fois échangé à partir des données et des informations de parité contenues sur les autres disques. On voit donc que le RAID 5 ne supporte la perte que d'un seul disque à la fois. Ce qui devient un problème depuis que les disques qui composent une grappe sont de plus en plus gros (1 To et plus). Le temps de reconstruction de la parité en cas de disque défaillant est allongé. Il est généralement de 2 h pour des disques de 300 Go contre une dizaine d'heures pour 1 To. Pour limiter le risque il est courant de dédier un disque dit de spare. En régime normal il est inutilisé. En cas de panne d'un disque il prendra automatiquement la place du disque défaillant. Cela nécessite une phase communément appelée "recalcul de parité". Elle consiste pour chaque bande à recréer sur le nouveau disque le bloc manquant (données ou parité). Bien sûr pendant tout le temps du recalcule de la parité le disque est disponible normalement pour l'ordinateur qui se trouve juste un peu ralenti. Exemple pratique : Considérons quatre disques durs A, B, C et D, de tailles identiques. Le système va enregistrer les premiers blocs en les répartissant sur les disques A, B et C comme en mode RAID 0 (striping) et, sur le disque D, le résultat de l'opération OU exclusif entre les autres disques (ici A xor B xor C). Ensuite le système va enregistrer les blocs suivants en les répartissant sur les disques D, A et B, puis la parité (soit D xor A xor B) sur le disque C, et ainsi de suite en faisant permuter circulairement les disques, à chaque bloc. La parité se trouve alors répartie sur tous les disques. En cas de défaillance d'un disque, les données qui s'y trouvaient pourront être reconstituées par l'opération xor. En effet, l'opération XOR ( ) a la propriété suivante : si on considère blocs de taille identique et si alors , et de façon générale, .

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

C'est-à-dire que n'importe quel bloc de données perdu à cause d'un disque défaillant sur un RAID 5 de disques peut-être récupéré grâce au bloc de données de contrôle. On voit donc que si on veut écrire dans un bloc, il faut lire le bloc à modifier. Lire le bloc de parité de la bande. Écrire le bloc de données et le bloc de parité. L'opération xor permet heureusement de calculer la nouvelle parité sans avoir besoin de lire les blocs de données de la bande. Augmenter le nombre de disque d'une grappe RAID 5 n'allonge donc pas le temps de lecture ou d'écriture. Cependant si plusieurs processus veulent écrire simultanément dans un ou plusieurs blocs de données d'une même bande la mise à jour du bloc de parité devient un point de blocage. Les processus concurrents sont suspendus à la libération du bloc de parité et de fait cela limite le débit d'écriture. Plus le nombre de disque d'une grappe RAID 5 augmente plus le temps de reconstruction d'un disque défaillant augmente. Puisque pour reconstituer le bloc manquant d'une bande il faut lire tous les autres blocs de la bande et donc tous les autres disques. Ce système nécessite impérativement un minimum de trois disques durs. Ceux-ci doivent généralement être de même taille, mais un grand nombre de cartes RAID modernes autorisent des disques de tailles différentes. La capacité de stockage utile réelle, pour un système de disques de capacité identiques est de . En cas d'utilisation de disques de capacités différentes, le système utilisera dans la formule précédente la capacité minimale. Ainsi par exemple, trois disques de 100 Go en RAID 5 offrent 200 Go utiles ; dix disques, 900 Go utiles. Ce système allie sécurité (grâce à la parité) et bonne disponibilité (grâce à la répartition de la parité), même en cas de défaillance d'un des périphériques de stockage.

TP RAID : en utilisant une machine virtuelle (VMWAR ou VIRTUALBOX) Voir le support tp-RAID.PDF

CH 4 - Utilisation LVM (Logical Volume Manager) sous Linux

LVM (Logical Volume Manager) permet de gérer des partitions logiques, et non pas physiques, ce qui a notamment comme avantage de pouvoir plus facilement modifier leur taille.

Partition non formatée

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Il faut disposer d'une partition non formatée. Dans notre cas, il s'agit de /dev/sda9, qui dispose d'un peu plus de 300 Go de libres. Cette partition sera utilisée principalement pour gérer des images de machines virtuelles créées avec KVM. # fdisk -l /dev/sda Disk /dev/sda: 750.2 GB, 750156374016 bytes 255 têtes, 63 secteurs/piste, 91201 cylindres, total 1465149168 secteurs Unités = secteurs de 1 * 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 4096 octets taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets Identifiant de disque : 0x73a05bd4 Périphérique Amorce

Début

/dev/sda1

Blocs

Id

2048

102402047

51200000

7

HPFS/NTFS/exFAT

/dev/sda2

102402048

204802047

51200000

7

HPFS/NTFS/exFAT

/dev/sda3

204804094

1465147391

630171649

5

Étendue

*

Fin

Système

La partition 3 ne débute pas sur une frontière de cylindre physique. /dev/sda5

204804096

284803071

39999488

83

Linux

/dev/sda6

284805120

294567935

4881408

82

partition d'échange Linux / Solaris

/dev/sda7

294569984

392224767

48827392

83

Linux

/dev/sda8

392226816

802082815

204928000

83

Linux

/dev/sda9

802084864

1465147391

331531264

83

Linux

Installation du package LVM Sur une distribution de type Debian/Ubuntu : # apt-get install lvm2

Création du volume physique La mise en place de volumes logiques est un modèle à trois couches : 

Volume physique



Volume group



Volume logique # pvcreate /dev/sda9 Writing physical volume data to disk "/dev/sda9" Physical volume "/dev/sda9" successfully created

On peut lister les volumes physiques avec la commande pvdisplay. Exemple : # pvdisplay "/dev/sda9" is a new physical volume of "316,17 GiB" --- NEW Physical volume --PV Name

/dev/sda9

VG Name PV Size

316,17 GiB

Allocatable

NO

PE Size

0

Total PE

0

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Free PE

0

Allocated PE

0

PV UUID

ReKoL9-gneB-DXfg-5MpV-pKyP-n5Rl-TRdnXh

Création du Volume Group Avant de pouvoir créer des volumes logiques, il faut avoir créé un Volume Group. Ceci s'effectue via la commande vgcreate. La syntaxe est la suivante : vgcreate NOM-du-VG NOM-Du-PV

Exemple : # vgcreate vmvg /dev/sda9 Volume group "vmvg" successfully created

On peut vérifier que cela est répercuté au niveau du volume physique. Le paramètre VG Name est maintenant renseigné : # pvdisplay --- Physical volume --PV Name

/dev/sda9

VG Name

vmvg

PV Size

316,17 GiB / not usable 0

Allocatable

yes

PE Size

4,00 MiB

Total PE

80940

Free PE

80940

Allocated PE

0

PV UUID

ReKoL9-gneB-DXfg-5MpV-pKyP-n5Rl-TRdnXh

On obtient plus d'informations via la commande vgdisplay. Par exemple : # vgdisplay vmvg --- Volume group --VG Name

vmvg

System ID Format

lvm2

Metadata Areas

1

Metadata Sequence No

1

VG Access

read/write

VG Status

resizable

MAX LV

0

Cur LV

0

Open LV

0

Max PV

0

Cur PV

1

Act PV

1

VG Size

316,17 GiB

PE Size

4,00 MiB

Total PE

80940

Alloc PE / Size

0 / 0

Free

80940 / 316,17 GiB

PE / Size

Support de cours BTS SRI2 Essaadi Driss VG UUID

GNU/Linux

kd3LKL-tMjA-eIq4-EhMs-LdWV-LFVl-2rBhk1

Création d'un volume logique A ce niveau, il est possible de créer des volumes logiques sur notre VG, via la commande lvcreate, avec la syntaxe : lvcreate -L[taille] -n[nom-du-lv] [nom-du-vg]

Dans notre exemple, ce serait : lvcreate -L8000 -n vm_debian6 vmvg Logical volume "vm_wheezy" created

Cette comande aura pour effet de créer un volume logique de 8 Go sur le volume groupe vmvg, et nommé vm_debian6. On peut avoir la liste des LV créés avec la commande lvscan : # lvscan ACTIVE

'/dev/vmvg/vm_wheezy' [7,81 GiB] inherit

La commande lvdisplay donne les détails d'un volkume logique : # lvdisplay --- Logical volume --LV Path

/dev/vmvg/vm_wheezy

LV Name

vm_wheezy

VG Name

vmvg

LV UUID

bOAd1B-Xg0e-Unj3-onj2-IZUY-k654-tqdvtd

LV Write Access

read/write

LV Creation host, time portable-vli, 2012-11-22 16:53:41 +0100 LV Status

available

# open

0

LV Size

7,81 GiB

Current LE

2000

Segments

1

Allocation

inherit

Read ahead sectors

auto

- currently set to

256

Block device

252:0

Les volumes logiques sont prêts à être utilisés par virt-manager...

Quelques commandes utiles pvscan : liste les différents volumes physiques disponibles # pvscan PV /dev/sda9

VG vmvg

lvm2 [316,17 GiB / 300,55 GiB free]

Total: 1 [316,17 GiB] / in use: 1 [316,17 GiB] / in no VG: 0 [0

vgscan : liste les différents volume groups # vgscan Reading all physical volumes.

This may take a while...

Found volume group "vmvg" using metadata type lvm2

lvscan : liste les différents volumes logiques

]

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

# lvscan ACTIVE

'/dev/vmvg/vm_wheezy' [7,81 GiB] inherit

ACTIVE

'/dev/vmvg/vm_debian6' [7,81 GiB] inherit

Supprimer un volume logique Pour supprimer un volume logique, il suffit d'utiliser la commande lvremove, une fois que le volume logique est démonté. Exemple : # lvscan ACTIVE

'/dev/vmvg/vm_wheezy' [7,81 GiB] inherit

ACTIVE

'/dev/vmvg/vm_debian6' [7,81 GiB] inherit

ACTIVE

'/dev/vmvg/vm_seven' [15,62 GiB] inherit

# lvremove /dev/vmvg/vm_wheezy Do you really want to remove active logical volume vm_wheezy? [y/n]: Logical volume "vm_wheezy" successfully removed # lvscan ACTIVE

'/dev/vmvg/vm_debian6' [7,81 GiB] inherit

ACTIVE

'/dev/vmvg/vm_seven' [15,62 GiB] inherit

Formatage du volume logique Afin de pouvoir monter le volume logique, il est nécessaire de le formater auparavant, via les commandes mkfs. Par exemple, pour formater en ext4, on utilisera la commande : mkfs -t ext4 /dev/vmvg/Vol1

On peut ensuite monter le volume comme une partition "normale" : mkdir /Essai1 mount /dev/mvg/Vol1 /Essai1 df -h

Redimensionner un volume logique L'un des avantages principaux des volumes logiques est de permettre de redimensionner la partition "à la volée" ou presque, beaucoup plus facilement et sans perte de données par rapport à une partition physique. Pour ce faire, il est possible d'utiliser la commande lvextend. Par exemple : lvextend -L12G /dev/vmvg/Vol1

va étendre la taille du volume logique à 12 GB. lvextend -L+1G /dev/vmvg/Vol1

va ajouter 1 GB au volume logique. Il faut ensuite retailler le file system qui repose sur ce volume logique : umount /dev/vmvg/Vol1 e2fsck -f /dev/vmvg/Vol1 resize2fs /dev/vmvg/Vol1 mount /dev/vmvg/Vol1

Bien sûr, il faut avoir contrôlé auparavant que le volume group a suffisamment d'espace libre, avec la commande vgdisplay

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

CH 5 : Configuration réseau LAN sous GNU/Linux (Ubuntu) Voir la partie correspondante sur le manuel PDF : Support de cours reseaux.PDF La façon la plus simple de configurer son réseau est sans contexte d’utiliser le Network Manager. Network Manager est une applet Gnome se trouvant dans la zone de notification de la barre des tâches. Il n’empêche qu’il peut être intéressant par curiosité intellectuelle ou parce que vous vous trouvez face à une machine équipée de Ubuntu Server, de savoir dans quels fichiers se trouvent les paramètres du réseau et quel outils utiliser pour le configurer à la main à partir d’un terminal. La première commande à connaître est ifconfig. Cette commande vous donne la configuration actuelle (pour autant que le réseau soit configuré) de votre réseau.(ifconfig –a affiche toutes la configuration ) $ ifconfig eth0 eth0 Lien encap:Ethernet HWaddr 00:0E:A6:6C:10:D9 inet adr:192.168.8.3 Bcast:192.168.8.255 Masque:255.255.255.0 adr inet6: fe80::20e:a6ff:fe6c:10d9/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Packets reçus:64680 erreurs:0 :0 overruns:0 frame:0 TX packets:54728 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 Octets reçus:79475594 (75.7 MB) Octets transmis:6773621 (6.4 MB) Interruption:19

La ligne intéressante est: inet adr:192.168.8.3

Bcast:192.168.8.255

Masque:255.255.255.0

qui vous dit que l’interface eth0 a comme adresse réseau 192.168.8.3 et comme masque 255.255.255.0. C’est l’adresse actuelle de mon PC. Mais d’où sort cette adresse, où est-elle stockée? Il y a deux fichiers de configuration importants contenant les informations du réseau et qu’Ubuntu lit au démarrage de la machine pour configurer le réseau. Il s’agit de /etc/network/interfaces, et de /etc/hosts et/ou /etc/resolv.conf. Le premier fichier /etc/network/interfaces contient la configuration de chaque interface de votre PC. Exemple : $ more /etc/network/interfaces auto lo iface lo inet loopback

auto eth0 iface eth0 inet static address 192.168.8.3 netmask 255.255.255.0 gateway 192.168.8.1 auto eth1 iface eth1 inet dhcp auto eth2 #iface eth2 inet dhcp auto ath0 #iface ath0 inet dhcp auto wlan0

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

#iface wlan0 inet dhcp

On voit que l’interface réseau eth0 est configurée et que son adresse IP est 192.168.8.3, son masque 255.255.255.0 et que le gateway (passerelle) est 192.168.8.1. A noter aussi que les autres interfaces non utilisées sont, par défaut, configurée pour travailler en DHCP. Le fichier /etc/resolv.conf contient l’adresse IP des serveurs DNS utilisés lorsque s’établit une connexion à Internet. Par exemple,: $ more /etc/resolv.conf nameserver 172.17.10.3 search mon_domaine.com nameserver 172.17.20.3

On retrouve les deux adresses des DNS primaire et secondaire mais également le suffixe de domaine (domaine de recherche) à ajouter pour former une adresse complète.

Configurer son réseau à la main Pour modifier la configuration de votre interface réseau depuis un terminal, il suffit d’abord de 1- désactiver l’interface réseau: $ sudo ifdown eth0

2- Ensuite, éditer les fichiers /etc/network/interfaces et /etc/resolv.conf pour y mettre les

paramètres que vous désirez: $ sudo gedit /etc/network/interfaces /etc/resolv.conf

3- Terminez en réactivant l’interface réseau: $ sudo ifup eth0

C’est tout. Néanmoins, cela demande quand même pas mal d’opérations et il faut que gedit soit installé et donc Gnome. Dans le cas d’une version serveur d’Ubuntu, ce n’est pas le cas. De plus, ifdown et ifup font appel à ifconfig et route pour reconfigurer le réseau. Pourquoi donc ne pas utiliser directement ifconfig alors? Voilà comment reconfigurer une interface au moyen de ifconfig et route: 1- D’abord désactiver l’interface: $ sudo ifconfig eth0 inet down

2- Ensuite, la configurer et la réactiver en une seule commande: $ sudo ifconfig eth0 inet up 192.168.8.1 netmask 255.255.255.0 broadcast 192.168.8.255

3- Ajouter le gateway en créant une route: $ sudo route add default gw 192.168.8.1

Editez /etc/resolv.conf en utilisant gedit ou vi par exemple et votre interface sera configurée: $ sudo gedit /etc/resolv.conf

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

CH 6 : Partage réseaux NFS TP: Réseau LAN de 3 ordinateurs et Partage NFS Etablir un réseau LAN entre 3 ordinateurs pour permettre l'échange et le partage de fichiers avec le minimum de contraintes : Chaque ordinateur dispose d'un espace accessible aux autres sans contraintes liées aux droits d'accès. Le montage des répertoires est automatique On représente trois ordinateurs appartenant à un même réseau local (celui de User1, User2 et User3).  

Chacun d'eux partage (exporte) le répertoire /home/partage, Chacun d'eux récupère (importe) les partages mis à disposition par les autres ordinateurs dans /media

Les lignes en pointillés figurent le montage des répertoires "partage" sur les systèmes de fichiers des différents clients.

A- Connaître les adresses IP locales de Serveur et de Client Dans le terminal lancer « ifconfig », l'adresse est à la ligne « inet adr: », paragraphe «eth » si vous êtes connecté en ethernet, « wlan » pour une connexion Wi-Fi.

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Pour la suite de cet exemple, on considèrera que User1 User2 et User3 ont les adresses locales suivantes  User1: 192.168.1.10  User2 : 192.168.1.11  User3 : 192.168.1.12

Ordinateur 1 Utilisateur principal User1 UID=1000 group "users" espace partagé /home/partage. Point de montage des dossiers partagés des autres ordinateurs :  /media/chez_user_2  /media/chez_user_3 Adresse IP : 192.168.1.10

Ordinateur2 Utilisateur principal User2 UID=1000 group "users" espace partagé /home/partage. Point de montage des dossiers partagés des autres ordinateurs :  /media/chez_user_1  /media/chez_user_3 Adresse IP : 192.168.1.11

Ordinateur 3 Utilisateur principal User3 UID=1000 group "users" espace partagé /home/partage. Point de montage des dossiers partagés des autres ordinateurs :  /media/chez_user_1  /media/chez_user_2 Adresse IP : 192.168.1.12

B- Installation des paquets et configuration Sur chacun des ordinateurs installer les paquets suivants : nfs-common et nfs-kernel-server.

C- Création des répertoires partagés La procédure est identique sur chacun des ordinateurs. Les commandes suivantes sont à entrées dans un Terminal. sudo mkdir /home/partage sudo chown User1:users /home/partage

Une vérification par ls -ld /home/partage

Donne comme réponse pour User1: drwxr-xr-x 2 User1 users 4096 aaaa-mm-jj /home/partage

D- Création des points de montage et commandes de montage Pour l'ordinateur de User2 sudo mkdir /media/chez_user_1 sudo mkdir /media/chez_user_3

Puis pour assurer le montage automatique, ajouter les lignes suivantes dans /etc/fstab : 192.168.1.10:/home/partage /media/chez_user_1 nfs rw 0 0 192.168.1.12:/home/partage /media/chez_user_3 nfs rw 0 0

Pour l'ordinateur de User3 sudo mkdir /media/chez_user_1 sudo mkdir /media/chez_user_2

Puis pour assurer le montage automatique, ajouter les lignes suivantes dans /etc/fstab : 192.168.1.11:/home/partage /media/chez_user_2 nfs rw 0 0 192.168.1.10:/home/partage /media/chez_user_1 nfs rw 0 0

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Pour l'ordinateur de User1 sudo mkdir /media/chez_user_2 sudo mkdir /media/chez_user_3

Puis pour assurer le montage automatique, ajouter les lignes suivantes dans /etc/fstab : 192.168.1.11:/home/partage /media/chez_user_2 nfs rw 0 0 192.168.1.12:/home/partage /media/chez_user_3 nfs rw 0 0

E- Préparation de l'exportation et commande Pour l'ordinateur de User1 Ajouter la ligne suivante dans /etc/exports /home/partage 192.168.1.11(rw,all_squash,anonuid=1000,anongid=100,sync) 192.168.1.12(rw,all_squash,anonuid=1000,anongid=100,sync)

et relancer le serveur NFS par : sudo /etc/init.d/nfs-kernel-server restart

Pour l'ordinateur de User2 Ajouter la ligne suivante dans /etc/exports /home/partage 192.168.1.10(rw,all_squash,anonuid=1000,anongid=100,sync) 192.168.1.12(rw,all_squash,anonuid=1000,anongid=100,sync)

et relancer le serveur NFS par : sudo /etc/init.d/nfs-kernel-server restart

Pour l'ordinateur de User3 Ajouter la ligne suivante dans /etc/exports /home/partage 192.168.1.11(rw,all_squash,anonuid=1000,anongid=100,sync) 192.168.1.10(rw,all_squash,anonuid=1000,anongid=100,sync)

et relancer le serveur NFS par : sudo /etc/init.d/nfs-kernel-server restart

F- Gestion des autorisations Pour tous les ordinateurs L'objectif de cette étape est de sécuriser l'installation. À ce stade, n'importe quel ordinateur du réseau local est susceptible d'accéder aux partages NFS que nous avons mis en place. Nous allons à présent en restreindre l'accès. Editer le fichier /etc/hosts.allow et y ajouter les lignes suivantes : portmap: 192.168.1.10 192.168.1.11 192.168.1.12 lockd: 192.168.1.10 192.168.1.11 192.168.1.12 mountd: 192.168.1.10 192.168.1.11 192.168.1.12 rquotad: 192.168.1.10 192.168.1.11 192.168.1.12 statd: 192.168.1.10 192.168.1.11 192.168.1.12

Editer le fichier /etc/hosts.deny et y ajouter les lignes suivantes : portmap: ALL nfsd: ALL mountd: ALL

G- Finalisation Redémarrer tous les ordinateurs. Si le montage n'a pas eu lieu, lancer la commande de montage suivante (adresse à adapter) dans un terminal. sudo mount -t nfs -o rw 192.168.1.x:/home/partage /media/chez_user_x

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

CH 7 : Présentation de Telnet Telnet est un protocole permettant d'émuler un terminal à distance, cela signifie qu'il permet d'exécuter des commandes saisies au clavier sur une machine distante. L'outil Telnet est une implémentation du protocole Telnet, cela signifie qu'il s'agit de la traduction des spécifications en langage informatique pour créer un programme permettant d'émuler un terminal. Telnet fonctionne dans un environnement client/serveur, c'est-à-dire que la machine distante est configurée en serveur et par conséquent attend qu'une machine lui demande un service. Ainsi, étant donné que la machine distante envoie les données à afficher, l'utilisateur a l'impression de travailler directement sur la machine distante. Sous UNIX, le service est fourni par ce que l'on appelle un démon, une petite tâche qui fonctionne en arrière-plan. Le démon Telnet s'appelle Telnetd.

a. Protocole et implémentation Telnet est aussi un protocole, c'est-à-dire un ensemble de règles et de procédures qui ont été définies afin de standardiser la communication sous Telnet. Ainsi, Telnet a rapidement été implémenté (adapté à partir des spécifications du protocole) sous de nombreuses plateformes.

b. Exécution de Telnet Telnet est fourni en standard sous diverses plateformes, dont UNIX, Windows95, WindowsNT, Linux... La commande pour initier une session Telnet est généralement la suivante : telnet nom_du_serveur

nom_du_serveur représente bien évidemment le nom de la machine distante à laquelle on désire se connecter. Il est aussi possible de donner son adresse IP, par exemple : telnet 125.64.124.77

Enfin il est également possible de préciser le port à utiliser en faisant suivre l'adresse IP ou le nom du serveur par le numéro de port : telnet 125.64.124.77 80

c. Commandes sous Telnet Une fois que vous vous connectez à la machine distante, un nom d'utilisateur (login) et un mot de passe (password) vous seront demandés pour des raisons de sécurité afin de restreindre l'accès aux seules personnes autorisées. En effet, Telnet est un protocole puissant puisqu'il permet l'exécution de commandes à distance. Les commandes pouvant être exécutées sous une session Telnet sont définies par l'administrateur réseau. Il s'agit généralement de commandes UNIX étant donné que la plupart des serveurs Telnet fonctionnent sous UNIX. Les commandes standard sont les suivantes : Comma nde ? close

Description Affiche l'aide Termine la session Telnet

Support de cours BTS SRI2 Essaadi Driss display environ logout mode open quit set unset

GNU/Linux

Affiche à l'écran les paramètres de la connexion (type de terminal, port) Permet de définir les variables d'environnement du système d'exploitation Permet de se déconnecter Bascule entre les modes de transfert ASCII (transfert d'un fichier en mode texte) et BINARY (transfert d'un fichier en binaire) Permet de lancer une autre connexion à partir de la connexion en cours Quitte l'application Telnet Modifie les paramètres de la connexion Charge les paramètres de connexion par défaut

CH 8 : Introduction au protocole FTP FTP (File Transfer Protocol) est un protocole, c'est-à-dire un langage standard de communication entre deux machines, permettant à des machines de types différents (ou dont le système d'exploitation est différent) de transférer des fichiers sur un réseau fonctionnant sous TCP/IP. Le rôle du protocole FTP Le protocole FTP définit la façon selon laquelle des données doivent être transférées sur un réseau TCP/IP. Le protocole FTP a pour objectifs de :   

permettre un partage de fichiers entre machines distantes permettre une indépendance aux systèmes de fichiers des machines clientes et serveur permettre de transférer des données de manière efficace

Le protocole FTP s'inscrit dans un modèle client-serveur, c'est-à-dire qu'une machine envoie des ordres (le client) et que l'autre attend des requêtes pour effectuer des actions (le serveur). Lors d'une connexion FTP, deux canaux de transmission sont ouverts :  

Un canal pour les commandes (canal de contrôle) Un canal pour les données

Ainsi, le client comme le serveur possèdent deux processus permettant de gérer ces deux types d'information : 



le DTP (Data Transfer Process) est le processus chargé d'établir la connexion et de gérer le canal de données. Le DTP côté serveur est appelé SERVER-DTP, le DTP côté client est appelé USER-DTP le PI (Protocol Interpreter) est l'interpréteur de protocole permettant de commander le DTP à l'aide des commandes reçues sur le canal de contrôle. Il est différent sur le client et sur le serveur : o Le SERVER-PI est chargé d'écouter les commandes provenant d'un USER-PI sur le canal de contrôle sur un port donné, d'établir la connexion pour le canal de contrôle, de recevoir sur celui-ci les commandes FTP de l'USER-PI, d'y répondre et de piloter le SERVER-DTP o Le USER-PI est chargé d'établir la connexion avec le serveur FTP, d'envoyer les commandes FTP, de recevoir les réponses du SERVER-PI et de contrôler le USER-DTP si besoin

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Les logiciels clients sont nombreux, certains sont en ligne de commande (par exemple la commande ftp, implémentée en standard sous de nombreux systèmes d'exploitation), mais une grande majorité permet de manipuler des fichiers sous une interface graphique (FileZella, CuteFTP par exemple), rendant les transferts de fichiers plus conviviaux. Le protocole FTP permet d'échanger un fichier à la fois, dans les deux sens entre la machine client (celle qui a initié la connexion, donc la machine appelante) et la machine serveur (celle qui fournit le service FTP, donc la machine appelée). Le protocole FTP permet aussi d'autres actions telles que la création et la suppression de répertoires (à condition qu'il soit vide), le listage des fichiers, la suppression et le renommage de fichiers, etc. Démarrage d'une session FTP La commande « ftp » est disponible en standard sous diverses plateformes, dont UNIX, Windows et Linux. La commande permettant d'initier une session FTP est généralement la suivante :

ftpnom_du_serveur nom_du_serveur représente le nom ou l'adresse IP de la machine distante à laquelle on désire se connecter. Il faut bien évidemment que la machine cible dispose d'un service FTP. Lors de l'initialisation de la connexion, un certain nombre de lignes de texte apparaît à l'écran. La première ligne signale que vous êtes connecté à un serveur FTP, les lignes suivantes constituent un message de bienvenue, pouvant indiquer le type de site FTP dont il s'agit (i.e quel genre de fichiers il héberge ou l'organisme auquel il appartient), ou bien des recommandations pour les utilisateurs. Sous FTP, chaque ligne commence par un numéro indiquant un code relatif à un échec ou une réussite. Dans le cas du message de bienvenue, la ligne est par exemple précédée du nombre 220, qui signifie que "le service est prêt pour le nouvel utilisateur". Le serveur vous demande de saisir votre nom d'utilisateur (aussi appelé login ou identifiant), afin de définir des privilèges d'accès (comme le droit d'écriture ou de lecture). Après validation, une ligne commençant par le nombre 331 vous invite à saisir votre mot de passe (password), celui-ci est masqué, c'est-à-dire qu'il n'apparaît pas à l'écran. Il se peut que le serveur soit public, auquel cas l'accès peut se faire anonymement, il faudra donc rentrer comme login: "anonymous". Commandes FTP Les commandes FTP usuelles sont les suivantes : Comman de

Description

help

Affiche l'ensemble des commandes supportées par le serveur FTP

status

Permet de connaître certains paramètres de la machine cliente

binary

Cette commande vous fait basculer du mode ASCII (envoi de documents textes) au mode binary (envoi de fichiers en mode binaire, c'est-à-dire pour les fichiers non texte, comme des images ou des programmes)

ascii

Bascule du mode binary au mode ascii. Ce mode est le mode par défaut

type

Permet d'afficher le mode courant de transfert (binary ou ascii)

user

Vous permet de rouvrir une session sur le site FTP en cours avec un nom d'utilisateur différent. Un nouveau mot de passe vous sera alors demandé

ls

Permet de lister les fichiers présents dans le répertoire courant. La commande "ls -l" donne des informations supplémentaires sur les fichiers

pwd

Affiche le nom complet du répertoire courant

cd

Cette commande signifie change directory, elle permet de changer le répertoire courant. La commande "cd .." permet d'accéder au répertoire de niveau supérieur

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

mkdir

La commande mkdir (sous UNIX, ou md sous système Microsoft) permet de créer un répertoire dans le répertoire courant. L'utilisation de cette commande est réservée aux utilisateurs ayant un accès le permettant

rmdir

La commande rmdir (sous UNIX, ou rd sous système Microsoft) permet de supprimer un répertoire dans le répertoire courant. L'utilisation de cette commande est réservée aux utilisateurs ayant un accès le permettant Cette commande permet de récupérer un fichier présent sur le serveur 

get

Si la commande est suivie d'un nom de fichier, le fichier distant est transféré sur la machine locale dans le répertoire local en cours  Si la commande est suivie de deux noms de fichiers, le fichier distant (le premier nom) est transféré sur la machine locale dans le répertoire local en cours, avec le nom de fichier précisé (le deuxième nom) Si jamais le nom de fichier contient des espaces il faut veiller à le saisir entre guillemets Cette commande permet d'envoyer un fichier local sur le serveur 

put

Si la commande est suivie d'un nom de fichier, le fichier local est transféré sur le serveur dans le répertoire distant en cours  Si la commande est suivie de deux noms de fichiers, le fichier local (le premier nom) est transféré sur le serveur dans le répertoire distant en cours, avec le nom de fichier précisé (le deuxième nom) Si jamais le nom de fichier contient des espaces il faut veiller à le saisir entre guillemet

open

Ferme la session en cours et ouvre une nouvelle session sur un autre serveur FTP

close

Ferme la session en cours, en laissant le logiciel FTP client actif

bye

Déconnecte le logiciel client du serveur FTP et le met en état inactif

quit

Déconnecte le logiciel client du serveur FTP et le met en état inactif

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Ch9 Serveur DHCP : isc-dhcp-server Le protocole DHCP (Dynamic Host Configuration Protocol (en) : « Protocole de configuration dynamique des hôtes » (fr)) est un service réseau TCP/IP. Il permet aux ordinateurs clients l'obtention automatique d'une configuration réseau. Il évite la configuration de chaque ordinateur manuellement. Les ordinateurs configurés pour utiliser DHCP n'ont pas le contrôle de leur configuration réseau qu'ils reçoivent du serveur DHCP. La configuration est totalement transparente pour l'utilisateur.

Introduction Tout ordinateur d'un réseau TCP/IP (Internet ou Intranet) nécessite une adresse IP pour pouvoir communiquer avec les autres ordinateurs du réseau. Ces adresses IP sont attribuées : 

statiquement, en configurant le réseau directement sur l'ordinateur,



dynamiquement, avec un serveur DHCP qui attribue les adresses en fonction de son fichier de configuration.

Ne pas confondre fixe et statique : le serveur DHCP peut attribuer des adresses IP fixes (toujours la même) en fonction de l'adresse MAC (Media Access Control, Adresse de contrôle d'accès au média) reçue. Configurée pour utiliser le protocole DHCP, une carte réseau à son démarrage envoie une demande sur le réseau (une requête DHCP). Le serveur DHCP, à l'écoute sur le réseau, débute la procédure d'identification et lui attribue une adresse en fonction de celle-ci.

Installation isc-dhcp-server remplace dhcp3-server apt-get install isc-dhcp-server Vous devrez certainement changer la configuration par défaut en éditant le fichier /etc/dhcp/dhcpd.conf pour la faire correspondre à vos besoins et configurations particulières. Dans ce fichier, on définit l'ensemble des options globalement ou par réseau. Vous aurez également besoin d'éditer le fichier /etc/default/isc-dhcp-server pour spécifier les interfaces que dhcpd (le démon de isc-dhcp-server) devra écouter. Par défaut, il écoute l'interface eth0. Les interfaces réseaux de votre serveur doivent être configurées obligatoirement en adresses IP statiques

Configuration basique La configuration la plus fréquente est d'assigner aléatoirement une adresse IP. Ceci peut être fait en suivant ces instructions : Editer le fichier : /etc/dhcp/dhcpd.conf

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

# Sample /etc/dhcpd.conf # (add your comments here) default-lease-time 600; max-lease-time 7200; option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; option routers 192.168.1.254; option domain-name-servers 192.168.1.1, 192.168.1.2; option domain-name "ubuntu-fr.lan"; option ntp-servers 192.168.1.254; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.10 192.168.1.100; range 192.168.1.150 192.168.1.200; } Le serveur DHCP assignera au client une adresse IP comprise entre 192.168.1.10 et 192.168.1.100 ou entre 192.168.1.150 et 192.168.1.200 pour une durée de 600 secondes. Le client peut spécifier une période de temps spécifique, dans ce cas, le temps d'allocation maximum est de 7200 secondes. Le serveur va également informer le client qu'il doit utiliser : 

un masque de sous réseau à 255.255.255.0



une adresse de multi-diffusion à 192.168.1.255



une adresse de routeur/passerelle à 192.168.1.254



des serveurs DNS à 192.168.1.1 et 192.168.1.2



un suffixe DNS ubuntu-fr.lan



un serveur de temps

Si vous devez spécifier un serveur WINS pour vos clients Windows, vous devez inclure l'optionnetbios-name-servers :

option netbios-name-servers 192.168.1.1;

Adresses IP fixes uniquement Dans ce cas, l'adresse IP que reçoit le client est toujours la même. Pour cela il suffit d'ajouter une directive host dans la définition du subnet. Pour chaque client, il faut donner son adresse fixe en fonction de son adresse MAC.

deny unknown-clients; subnet 192.168.1.0 netmask 255.255.255.0 { host client1 { hardware ethernet DD:GH:DF:E5:F7:D7; fixed-address 192.168.1.20; } host client2 { hardware ethernet 00:JJ:YU:38:AC:45; fixed-address 192.168.1.21; } } L'option deny unknown-clients interdit l'attribution d'une adresse IP à une station dont l'adresse MAC est inconnue du serveur. Pour trouver l'adresse MAC d'une interface réseau, il faut taper la commande :

ifconfig | grep HWaddr

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Ecoutes sur plusieurs interfaces Pour que le serveur écoute sur certaines interfaces, il faut les spécifier dans /etc/default/isc-dhcp-server :

INTERFACES="eth0 eth1" Dans ce cas l'écoute se fait sur eth0 et eth1

Configuration complète à plusieurs interfaces Considérons les aspects suivants : Il existe 3 réseaux. 

Le réseau internet (que nous ne configurons pas, l'interface connectée dessus obtient automatiquement son IP, par le serveur DHCP duFAI1) ; ceci dit vous pouvez adapter la configuration afin d'intégrer le serveur DHCP sur un réseau local).



Le réseau local 192.168.1.* réservé aux serveurs (web, FTP, messagerie, etc.).



Le réseau local 192.168.2.* réservé aux clients (réseau local partagé).

Il y a 4 autres machines sur les réseaux : 192.168.1.2 (nommée ftp), 192.168.1.3 (nommée web), 192.168.1.4 (nommée mail) et 192.168.2.2 (nomméeportable). 



Aucune machine inconnue ne se verra attribuer une adresse IP par DHCP (voir fichier de configuration « option deny unknown-clients »). Toutes les machines des réseaux ont la possibilité de démarrer par PXE.



La machine serveur DHCP est aussi le routeur/pare-feu/NAT (tels que décrits dans la page « comment_configurer_son_reseau_local » mais sans le dnsmasq) connecté au modem. Il fait aussi office de serveur DNS du domaine ubuntu-fr.lan (tel que décrit dans la page « bind9 »).



les interfaces sur lesquelles le serveur démarre doivent avoir une adresse quand le service dhcp démarre. On leur attribuera les adresses 192.168.1.1 et 192.168.2.1. (volontairement le réseau 192.168.0.0 n'est pas utilisé : il est souvent pris par le modem/routeur de votre FAI).

Configuration du serveur Voici une configuration détaillée du fichier : /etc/dhcp/dhcpd.conf

##### Option générale par défaut ##### ### RÉSEAU ##### ## Nom du serveur DHCP server-name "dns.ubuntu-fr.lan"; ## Mode autoritaire (autoritaire) authoritative; ## Masque de sous-réseau option subnet-mask 255.255.255.0; ### DOMAINE ### ## Nom du domaine

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

option domain-name "ubuntu-fr.lan"; ## Adresse IP du serveur DNS # a remplacer par l ip de votre serveur dns ou par celle de votre fai option domain-name-servers XXX.XXX.XXX.XXX; ## Type de mise à jour du DNS (aucune) ddns-update-style none; ### TEMPS DE RENOUVÈLEMENT DES ADRESSES ### default-lease-time 3600; max-lease-time 7200; ### Sécurité ### ## refus(deny)/autorise(allow) les clients inconnus (refuse client inconnu) deny unknown-clients; ## Use this to send dhcp log messages to a different log file (you also ## have to hack syslog.conf to complete the redirection). log-facility local7; ### PXE ### ## Permet le boot réseau pour TFTP allow bootp; allow booting; ##### RÉSEAUX ##### ## déclaration sous réseau 192.168.1.* subnet 192.168.1.0 netmask 255.255.255.0 { # Si vous voulez spécifier un domaine différent de celui par défaut : option domain-name "ubuntu-fr.lan"; ## Adresse de diffusion option broadcast-address 192.168.1.255; ## routeur par défaut option routers 192.168.1.1; ## Plage d'attribution d'adresse # Ici débute à 1.5, 1.1 à 1.4 étant déjà prises. # La plage ne contient qu'1 adresse ce qui empêche l'attribution sauf au client dont celle-ci est fixée. range 192.168.1.5 192.168.1.5; ## Option pxe nom du fichier servi. # elilo.efi pour ia64; pxelinux.0 pour x86 # À placer à la racine du serveur TFTP. # Le fichier peut être spécifié dans la section « host », il deviendra alors prioritaire sur celui-ci filename "pxelinux.0"; # définit le serveur qui servira le fichier « pxelinux.0 » next-server 192.168.2.1; # évalue si l'adresse est déjà attribuée ping-check = 1; } ## Déclaration sous réseau 192.168.2.* subnet 192.168.2.0 netmask 255.255.255.0 { option domain-name "ubuntu-fr.lan"; option broadcast-address 192.168.2.255; option routers 192.168.2.1; range 192.168.2.2 192.168.2.3; ping-check = 1; filename "pxelinux.0";

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

next-server 192.168.2.1; } #### Configuration des hôtes avec IP fixée #### # hôte « FTP » host ftp { hardware ethernet 00:0f:75:af:eb:44; fixed-address 192.168.1.2; ### PXE ### # fichier spécifique à une machine # filename "debian-installer/ia64/elilo.efi"; # definit le serveur qui servira le fichier pxelinux.0 # next-server 192.168.2.1; } # hôte « WEB » host web { hardware ethernet 00:02:0d:31:d1:cc; fixed-address 192.168.1.3; } # hôte « mail » host mail { hardware ethernet 00:02:55:d2:d1:cc; fixed-address 192.168.1.4; } # hôte « PORTABLE » host portable { hardware ethernet 00:0e:af:31:d1:cc; fixed-address 192.168.2.2; } Nous pouvons maintenant demander à notre serveur de prendre en compte nos modifications :

sudo service isc-dhcp-server restart

Vérifications Si il y a des messages d'erreurs, regardez le fichier suivant :

tail /var/log/syslog

Logs Les évènements sont enregistrés par défaut dans /var/log/syslog. Pour qu'ils soient enregistrés dans un fichier de log dédié, par exemple /var/log/dhcpd.log : 

Dans le fichier de conf /etc/dhcp/dhcpd.conf, ajoutez : (voir dans l'exemple plus haut)

log-facility local7; 

Créer le fichier /var/log/dhcpd.log avec comme propriétaire syslog (droits rw) et comme groupe adm (droits r).

sudo touch /var/log/dhcpd.log sudo chown syslog:adm /var/log/dhcpd.log sudo chmod 0640 /var/log/dhcpd.log 

Puis ajouter ceci dans le fichier /etc/rsyslog.d/50-default.conf :

local7.*

/var/log/dhcpd.log

Support de cours BTS SRI2 Essaadi Driss 

GNU/Linux

Pour ne plus logguer dans syslog, dans /etc/rsyslog.d/50-default.conf modifier :

*.*;auth,authpriv.none

-/var/log/syslog

en

*.*;auth,authpriv.none;local7.none 

-/var/log/syslog

et relancer les daemons syslog et isc-dhcp-server

sudo service rsyslog restart sudo service isc-dhcp-server restart Modifier

Baux (Leases) Par défaut, le fichier /var/lib/dhcp/dhcpd.leases donne des informations sur les baux actuellement distribués par le serveur. On y retrouve des informations essentielles comme l'adresse IP distribué à une adresse MAC, le nom de la machine qui a fait cette demande DHCP, l'heure de début et de fin du bail… /var/lib/dhcp/dhcpd.leases

lease 192.168.2.128 { starts 2 2012/07/31 20:24:28; ends 3 2012/08/01 01:24:28; ... hardware ethernet 01:11:5b:12:34:56; ... client-hostname "machine01"; }

Relais DHCP Sur les réseaux de grande envergure, le réseau peut être segmenté. Ceci a notamment pour effet la réduction des trames de multidiffusion, puisqu'elles ne sont pas routées. Le serveur DHCP n'est alors plus joignable par le client. Dans ce cas, un relais DHCP peut être placé sur chaque segment réseau. L'agent relais écoute les requêtes des clients et les transfère au serveur DHCP. Cette fois-ci, le serveur peut être contacté, puisque l'agent relais établit la connexion via une connexion TCP/IP. Modifier

Configuration Vous devrez changer la configuration par défaut en éditant le fichier /etc/default/dhcpd-relay :

# le serveur DHCP a relayer SERVERS="192.168.1.1" # Interface a écouter INTERFACES="eth0"

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

CH 10: SERVEUR DNS (bind9) Voir la présentation PPT :DNS-Domaine-Name-System.ppt

Présentation : Les machines sont identifiées par leur adresse IP. Cet élément n’est pas facile à retenir. C’est là que la partie DNS intervient. On va établir un tableau de correspondance entre un nom FQDN (Fully Qualified Domain Name) et une adresse IP. Bind (Berkeley Internet Name Domain) est le plus utilisé des serveurs de noms sur Internet

Installation de Bind9 : apt-get install bind9

Fixer l’adresse IP du serveur : ?

vi /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 auto eth0 iface eth0 inet static

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

address 192.168.1.254 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 192.168.1.1

Configuration Bind se configure via deux types de fichiers, ceux de configurations du comportement du serveur, et ceux de configurations des zones connues par ce serveur.



Configuration du serveur

Le comportement du serveur se configure via le fichier "/etc/bind/named.conf", auquel on ajoute "named.conf.options" et "named.conf.local" sous Ubuntu, simplement par souci de clarté. Ils contiennent les paramètres généraux du serveur, ainsi que les options en tous genres et les fichiers des zones à intégrer. Nous allons créer notre zone local pour cela nous allons donc éditer le fichier named.conf.local, c’est ici que l’on va définir notre domaine et le fichier contenant nos enregistrements DNS. ?

vi /etc/bind/named.conf.local //Éditer le fichier named.conf.local et ajouter la zone sri.local zone "sri.local" { type master; file "/etc/bind/sri.local.db"; }; //Zone inverse # La zone de recherche inverse zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/1.168.192.in-addr.arpa.db"; allow-update { key rndc-key; }; }; Attention à ne pas oublier le « ; » à la fin de chaque ligne même après le } !!! Les parties "zone", qui définissent les zones connues par le serveur, acceptent les paramètres suivant (non exhaustif) : 

allow-query : Les clients autorisés à faire des requêtes sur cette zone.



allow-transfer : Les serveurs esclaves autorisés à demander un transfert des informations de cette zone.



allow-update : Hôtes autorisés à mettre à jour les informations de cette zone.



file : Fichier de configuration de la zone.



masters : IPs faisant autorité sur la zone.



notify : Permet de définir si le service envoie une notification aux esclaves lors d'une mise à jour : o

yes : Actives les notifications.

o

no : Pas de notifications.

o

explicit : Notifications uniquement aux serveurs spécifiés par also-notify dans la déclaration de zone.



type : Pour définir le type de zone : o

forward : Relaie toutes les demandes vers d'autres DNS.

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

o

hint : redirige les demandes vers les serveurs racines.

o

master : Serveurs de noms faisant autorité pour cette zone.

o

slave : Serveurs de noms esclaves pour cette zone.

Le fichier /etc/bind/sri.local.db (fichier de zone) invoqué précédemment va contenir les informations et les entrées relatives à notre domaine, le serveur NS, les TTL, les enregistrements A, CNAME, MX, etc … vi /etc/bind/sri.local.db $TTL @ 070725 12H 2H 1000H 2D ) ; @ www xmarks web mail 

86400 IN SOA mon_serveur_dns_maitre. sysadmin.sri.ma. ( Serial Refresh Retry Expire Negative Cache TTL

; ; ; ; ; IN IN IN IN IN IN IN

NS MX A A A CNAME A

mon_serveur_dns_maitre. 10 mail.sri.local. 192.168.1.254 192.168.1.254 192.168.1.254 www 192.168.1.25

"$TTL 86400" permet de spécifier combien de temps les informations contenues dans le fichiers seront gardées en cache. Ici, avec la valeur 86400, le cache sera vidé et le fichier relu toutes les 24 heures



"@" permet de définir l'espace de nom de la zone.



"IN" défini le protocole utilisé. De nos jours, "IN" n'a plus d'alternative.



"SOA" indique que notre serveur est maître de la zone.



Vient ensuite le FQDN du serveur de nom. Attention à ne surtout pas oublier le point final !



Puis enfin on trouve l'adresse mail de l'administrateur. Notez le point final, et le remplacement du @ habituel par un simple point. Bind interprète le premier "." rencontré dans ce champ comme un "@". Si l'adresse de l'administrateur est de la forme "[email protected]", il est possible d'échapper le premier point ainsi "admin\.dns.domaine.org".

Arrive ensuite, systématiquement dans (), une petite série de paramètres: Serial : Numéro de série de la version de l’enregistrement courant (permet de vérifier en autre si un esclave est bine synchronisée avec son serveur maître (AAAAMMJJxx) chiffre croissant. Refresh : Temps/Interval de rafraîchissement du serveur esclave dans mon cas 12 heures (valeur recommandée 24 heures). Retry : Temps/Interval entre deux essais du serveur esclave avant de reprendre contact après un échec dans mon cas 2 heures (valeur recommandée : 2 heures). Expire : Indique le temps et le délai que le serveur esclave va attendre avec de considéré que le serveur maître est non opérationnel dans mon cas 1000 heures (valeur recommandée : 1000 heures). Negative Cache TTL : Valeur TTL qui correspond à la durée de vie du cache minimum dans mon cas 2 jours (valeur recommandée : 2 jours). Par défaut on parle en seconde en revanche pour plus de lisibilité on peut indiquer une valeur en heure/mois/semaine avec M pour minute, H pour heure, D pour jour,et W pour semaine :- 60 = 1M - 1800 = 30M - 3600 = 1H - 10800 = 3H

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

- 21600 = 6H - 43200 = 12H - 86400 = 1D - 259200 = 3D - 604800 = 1W $TTL 86400 @ IN SOA ns1.domaine.tld. root.domaine.tld. __8H__ ;; refresh __2H__ ;; retry __ 1W__ ;; expire __ 1D__ ;; minimum TTL )

On va retrouver ensuite nos différentes entrées DNS, ci dessous la liste des principaux types d’enregistrements : NS : Déclaration d’un serveur DNS pour la zone (maitre et esclave) avec un point à la fin de l’entré. ?@ IN NS ns1.sri.ma. @ IN NS ns2slave.sri.ma. MX : Déclaration des serveur mail pour la zone en indiquant un poids.. ?@ IN MX 10 mx1.sri.fr. @ IN MX 10 mx2.sri.fr. Si le poids est égal les serveurs mails voulant envoyer un mail au domaine sri.ma vont envoyer les mails de manières aléatoires sur l’un des MX. ?@ IN MX 5 mx1.sri.ma. @ IN MX 10 mx2.sri.ma. Dans ce cas de figure les serveurs mails voulant envoyer un mail au domaine sri.ma vont envoyer d’abord le mail au mx avec le poids le plus faible si le mx1 est indisponible les mails seront dans ce cas là envoyé au mx ayant un poids supérieur. A : Enregistrement faisant un lien entre un nom FQDN et une IPV4. ?

www A 80.74.55.33 AAAA : Enregistrement faisant un lien entre un nom FQDN et une IPV6. ?web AAAA 2011:4f0:ffff:fffa::147f PTR : Enregistrement faisant un lien entre une IP et un nom FQDN. Utilisé pour le fichier « reverse ». ?192.168.1.254 IN PTR www CNAME : Enregistrement faisant un lien entre un nom FQDN et un autre nom FQDN. ?web IN CNAME www TXT : Permet d’insérer une entrée texte. Utilisé par exemple pour les champs SPF. ?sri.ma. IN TXT "v=spf1 ip4:10.50.2.60 ~all" Ce fichier va contenir les enregistrements reverse DNS, ?

vi /etc/bind/1.168.192.in-addr.arpa.db $ORIGIN . $TTL 86400 1.168.192.in-addr.arpa ( 70769 604800 86400 2419200 604800 ) NS

; 1 day IN SOA ; ; ; ; ;

MON_SERVEUR_DNS_MAITRE. sysadmin.ec0.fr.

serial refresh (1 week) retry (1 day) expire (4 weeks) minimum (1 week)

MON_SERVEUR_DNS_MAITRE

$ORIGIN 1.168.192.in-addr.arpa. 254 IN PTR dns.ec0.local. 33 IN PTR mail.ec0.local.

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

$ORIGIN 1.168.192.in-addr.arpa. va définir la zone inverse qui va être renseignée, c’est un genre de suffixe. Paramétrage des Options de notre serveurs DNS : ?vi /etc/bind/named.conf.options options { directory "/var/cache/bind"; #écoute sur le port 53 query-source address * port 53; #Renvoie les requêtes non géré par notre serveur dns sur un dns externe (9box) forwarders { 192.168.1.1; }; auth-nxdomain no; # conform to RFC1035 }; Ci-dessous une liste exhaustive des options disponibles (fichier /etc/bind/named.conf.options) - listen-on : Indique l’interface et/ou le-s port-s d’écoute du serveur. - allow-query : Pour définir les hôtes autorisés à faire des requêtes sur le serveur. - allow-recursion : Pour définir les hôtes autorisés à des faires des demandes récursives, donc à lire intégralement la ou les zones. - forwarders : Pour définir les IPs des serveurs où les requêtes doivent être relayées (on peut relayer les requêtes par exemple sur le DNS google pour les zones non desservies par notre serveur DNS). - blackhole : Pour définir les hôtes non autorisés. - directory : Pour définir le répertoire de travail (/var/named par défaut). - zone statistics : Permets d’activer les stats utiles pour un meilleur suivi du serveur. - statistics-file : Pour définir l’emplacement du fichier de statistiques (par défaut /var/named/stats). - forward : Options pour la retransmission des requêtes.Les options suivantes sont acceptées :  first : Les DNS de la directive forwarders sont essayés en premier.  only : Pas de résolution locale si les DNS de la directive forwarders n’ont pas réussi la résolution.  notify : Permet de définir si le service envoie une notification aux esclaves lors d’une mise à jour :  yes : Active les notifications.  no : Pas de notifications.

CH 11 : SERVEUR HTTP (APACHE) Voir la partie correspondante sur le manuel PDF : Support de cours reseaux Apache est le plus populaire des serveurs HTTP. Il est produit par la « Apache Software Foundation ». C'est un logiciel libre fourni sous la licence spécifique Apache, licence (en).

Qu'est-ce que le Web ? Le Web est un des nombreux services disponibles sur Internet. Il s'agit de l'ensemble des documents accessibles par le protocole HTTP (par un navigateur Web). Une caractéristique essentielle du Web est la capacité de passer d'un document à un autre par des liens hypertexte. Un site Web est quant à lui un ensemble de pages Web, liées entre elles. Un site Web a une adresse(URL), comme celle du site Ubuntu-fr : http://ubuntu-fr.org. La page Web principale de ce site propose des liens hypertexte vers d'autres pages et d'autres sites, par exemple : http://ubuntu-fr.org/telechargement.

HTTP et navigation Pour accéder à un site Web, il vous faut utiliser un client Web, communément appelé navigateur, par exemple : firefox, lynx, opera, rekonq… Généralement vous passez par un moteur de recherche pour trouver l'adresse d'un site mais vous pouvez aussi l'entrer directement dans la barre d'adresse.

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Vous devez spécifier en plus du nom ou de l'adresse IP, le protocole utilisé. L'adresse de la page se découpe ainsi : protocole://service.nom du domaine.extention / 1. protocole Protocole_réseau : http, ftp… 2. service sous-domaine : www, ftp, doc, httpd… 3. nom du domaine Domaine_de_deuxième_niveau : ubuntu-fr, apache… 4. extension Domaine_de_premier_niveau : org, com, fr… Le protocole qui nous intéresse ici est HTTP (HyperText Transfert Protocol) qui est l'acronyme anglais de Protocole de Transfert HyperTexte. Un document hypertexte est un document contenant des hyperliens.Ceux-ci permettent de lier les pages les unes avec les autres. Ainsi, vous pouvez naviguer grâce à des liens sur les pages. Cet ordinateur, auquel vous vous connectez pour lire cette documentation, héberge à cette adresse un logiciel appelé serveur web qui fournit les pages demandées. Apache est le plus utilisé.

Il existe une version sécurisée du HTTP : le HTTPS. Afin de différencier les protocoles utilisése, on leur réserve un port, par défaut le 80 pour le mode non sécurisé et le 443 pour le mode sécurisé. Mode de fonctionnement Au moment de son démarrage, Apache charge les fichiers de configuration de la machine locale et se met en attente de requêtes sur les interfaces réseaux. Lorsque vous utilisez votre navigateur Web (un client HTTP), que vous cliquiez sur un lien ou que vous rentriez directement l'adresse dans la barre d'adresse, vous effectuez une requête : 

Le client détermine et se connecte au serveur ;



Le client effectue une requête HTTP sur le serveur, par la méthode GET du protocole HTTP : il lui demande une page ;



Après l'analyse de la requête, le serveur renvoie la page concernée sous forme de code dont on peut spécifier le format de données ( pour ceux qui connaissent les balises de l'entête des documents servis, le fameux "content-type" des pages html ) ;



Une fois toutes les données envoyées, le serveur ferme la connexion ;



Parallèlement le navigateur client analyse et construit l'affichage à partir du code reçu.



Pour installer un serveur HTTP, nous allons utiliser une application bien connue des administrateurs réseaux : Apache2.

 

Installation Apache est composé de plusieurs paquets.

En mode ligne de commande sudo apt-get install apache2 apache2-doc mysql-server php5 libapache2-mod-php5 php5-mysql

En mode Gnome voir TP

Configuration Premièrement, avec Ubuntu, le fichier de configuration d’un serveur Web Apache 2 n’est pas httpd.conf, mais bien apache2.conf, qui est situé dans le dossier /etc/apache2/. Tous les fichiers de configuration de Apache2 sont dans le dossier /etc/apache2. Rendez-vous dans le répertoire /etc/apache2/, et regardez les fichiers le composant : apache2.conf conf.d envvars httpd.conf mods-available modsenabled ports.conf sites-available sites-enabled La plupart de ces fichiers sont plus ou moins spécifiques à Debian/Ubuntu et nous permettent de séparer la configuration en plusieurs parties. 

est le fichier utilisé par apache1, il est conservé vide dans Apache2 pour assurer la rétrocompatibilité. Il ne nous servira pas ; httpd.conf

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

est utilisé pour définir des variables d'environnement propres à Apache ;



envvars



ports.conf



apache2.conf



conf.d



mods-available



mods-enabled



sites-available



sites-enabled



Relancer votre serveur :

contient la directive listen qui spécifie les adresses et les ports d'écoutes ;

est le fichier principal de configuration c'est à partir de lui que tous les autres fichiers sont chargés ; est un répertoire qui contient plusieurs petits fichiers qui seront analysés par apache. Le seul fichier pour le moment est charset, qui spécifie l'encodage à utiliser par défaut ; contient la liste des modules d'apache installés ;

celle des modules utilisés ; contient la liste des vhosts installés ;

celle des vhosts utilisés.

/etc/init.d/apache2 restart

Les principaux tags du fichier de configuration d’Apache Gestion des hôtes virtuelsOn se sert ici du tag avec lequel on a la possibilité de configurer plusieurs adresses IP et donc plusieurs certificats. La directive NameVirtualHost est obligatoire pour mettre en place un VirtualHost. Dans l’exemple suivant les directives incluses dans la balise VirtualHost s’appliquent seulement à cette adresse au port 80 : # Note : L'adresse IP spécifiée est l'adresse du serveur # Il est utile de la préciser seulement dans les RARES cas où le serveur a plusieurs IP Listen 80 NameVirtualHost 172.45.46.43.23 # Directives que l’on souhaite appliquer à cette adresse < /VirtualHost > DocumentRoot /www/default # On s’assure qu’Apache écoute sur le port 80 Listen 80 # Ecoute les requêtes de VirtualHost sur toutes les adresses IP NameVirtualHost *: 80 : Toutes les adresses IP au port 80

Il existe un serveur par défaut dans Apache qui prend toutes les requêtes entrantes. On le spécifie à l’aide des directives DocumentRoot / ServerName DocumentRoot : C’est ici qu’est précisé le répertoire racine du serveur. Les requêtes vont chercher par défaut index.php à la racine de ce répertoire. ServerName (facultatif) : C’est le nom du site web, la directive Virtualhost n'agira que sur ce serveur s'il est spécifié. Apache reçoit la requête, capte le host (ex: www.toto.com) puis scanne tous les Servername de tous les VirtualHost spécifiés et applique les directives du Virtualhost qui correspondend. Gestion des répertoires : Cela s'effectue à l'aide du tag . Il rassemble un groupe de directives qui s'appliquent uniquement au répertoire et sous-répertoires spécifiés. Les directives qui suivent donnent les droits pour lire ou ne pas lire les fichiers :  Allow from all : Signifie pour tout le monde  Order Allow, Deny : C'est l'ordre d'acceptation par défaut  AllowOverride All : Droit de lire le fichier .htaccess Options Indexes FollowSymLinks Order Allow, Deny Allow from all AllowOverride all

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux



Alias : Cette directive est relative à un nom de domaine. Il est préférable de la placer à l'intérieur d'un Virtualhost, sinon l’alias s'applique pour le serveur par défaut. Il faut de plus préciser le Directory sinon il prend le default (DocumentRoot) qui est configuré en Deny from all. Alias /image/ /ftp/pub/image Order allow,deny Allow from all

ServerAlias : Elle définit les noms alternatifs pour un hôte, pour une utilisation avec les virtualhost basés sur le ServerName. Ne pas les utiliser sauf pour de la redirection (question de ranking sur les moteurs de recherche) ServerName server.domain.com ServerAlias server server2.domain.com server2 ServerAlias *.thecodingmachine.com # Liste des autre directives

Gestion des répertoires virtuels : On utilise le tag qui est l'équivalent de mais sur un répertoire virtuel. Cette directive s'applique sur un nom virtuel avant la transformation en nom physique.Utilisez pour appliquer des directives à un contenu qui est présent à l'extérieur du système de fichiers. Pour les contenus qui sont au sein même du système de fichiers, utilisez et . est une exception, qui est un moyen simple d'appliquer une configuration à l'ensemble du serveur.De plus, ce tag est particulièrement utile lorsqu’il est combiné à la directive SetHandler. Par exemple, pour activer les requêtes de statuts du serveur, et permettre l’accès aux navigateurs provenant seulement de exemple.com, vous pouvez utiliser: SetHandler server-status Order Deny,Allow Deny from all Allow from .exemple.com

Configurer un ensemble de fichier : On peut utiliser le tag pour spécifier un ensemble de fichiers à configurer et pas seulement un Directory. Configurer un ensemble de fichiers spécifiques : Grâce au tag , on peut configurer un ensemble de fichiers qui se ressemblent. On peut par exemple faire correspondre des fichiers contenant une certaine chaine de caractère. Exemple : l'extension *.js. (spécifier l'ensemble de fichiers à matcher à l'aide d'une regex) ExpireActive On : Rajouter une date d'expiration aux fichiers statiques ExpiresDefault : durée de vie (ex: A3600 correspond à 1 heure) Note : la directive Expire est utilisée pour spécifier que le navigateur prend la ressource et la met en cache sur le disque dur. Si on redemande la même ressource, il ne refait pas la requête, et ce jusqu'à la date d'expiration définie. Inclure un ensemble de fichiers : Avec le tag on peut rajouter tous les fichiers qui se terminent par l'extension que l'on souhaite dans le dossier de notre choix. L'ordre des Include est traité par ordre alphabétique Spécifier des directives à un module : On se sert du tag pour appliquer des directives à un module spécifique suivant qu'il soit disponible ou non. Les directives au sein de ce bloc ne sont appliquées que si le test renvoie true.

Limiter l'accès par htaccess, htpasswd

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Il est parfois nécessaire de protéger l’accès à un répertoire sur un serveur web (ex : répertoire d’administration, contenant des données sensibles) afin d’éviter que n’importe qui puisse y accéder. Il y a différentes méthodes, ont peut avoir recourt à des langages comme le PHP, ASP, PERL …), mais la méthode la plus simple est d’utiliser le mécanisme de protection d’Apache. C'est-à-dire effectuer une protection à l’aide des fichiers .htaccess et .htpasswd. On estime ici que l’on n’a pas accès au fichier de configuration http.conf, ce qui est le cas chez un fournisseur d’accès. Le fichier .htaccess est un fichier texte contenant des commandes Apache. Voici un exemple : AuthUserFile /home/login/admin/.htpasswd AuthGroupFile /dev/null AuthName "Veuillez vous identifier" AuthType Basic require valid-user Quelques explications : AuthUserFile : c’est le nom et le chemin d’accès du fichier qui contiendra les noms des utilisateurs et les mots de passe associés. Ce chemin doit partir de la racine du site. Ici, les mots de passe seront dans /home/login/admin/.htpasswd. On peut, et il est même conseillé de choisir un autre nom que .htpasswd pour le fichier qui contiendra le couple utilisateur/mot de passe. Le point précédent le nom de fichier permettra de cacher (au sens Unix /linux du terme). Il est également recommandé de mettre le fichier des mots de passe en dehors de l’arborescence du site si l’on en a la possibilité. AuthGroupFile : permet de définir un droit d’accès à un groupe d’utilisateur. Cette solution n’est que rarement utilisée pour un site Web. Le reste du temps il pointe vers /dev/null. Il faut que cette ligne soit présente. AuthName : c’est le texte qui apparaîtra dans la fenêtre demandant le mot de passe. AuthType : L’authentification est en générale « basic ». Les mots de passe sont alors envoyés en clair sur le réseau. Pour sécuriser davantage l’accès, on peut utiliser la méthode d’authentification « digest » qui crypte les mots de passe en MD5 . Ce système n’est supporté que par certains navigateurs. Limit : C’est ici qu’on va indiquer ce qui est autorisé et interdit dans le répertoire. Les commandes GET et POST indiquent la récupération de pages web et la réponse à certains formulaires. POST est utilisé pour autoriser l’upload de fichiers sous le protocole http Require valid-user : accepte tous les utilisateurs qui ont un login : mot de passe dans .htpasswd. Require moha aicha : limite l’accès à un ou plusieurs utilisateurs précis, ici moha et aicha. A noter que les utilisateurs sont séparés par des espaces. Une fois le fichier .htaccess créé, il faut le placer dans le répertoire à protéger. Maintenant il nous faut créer le fichier .htpasswd Sous unix/linux il existe un l’utilitaire : htpasswd. Voici un exemple d’utilisation : htpasswd -c .htpasswd moha après validation Linux vous demande un mot de passe, puis une deuxième fois pour confirmation. Si l’on édite le fichier .htpasswd obtient une ligne du style : moha:x3l0HLu5v6mOF ce qui correspond au nom d’utilisateur (login) et son mot de passe crypté. Il y aura une ligne pour chaque utilisateur. Si l’on n’a pas accès à l’utilitaire htpasswd, on peut se rendre sur l’un des deux sites suivant proposant le cryptage d’un mot de passe.

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

TP : Installation et Gestion serveur web .doc TP :Installation d’un serveur mail postfix

Configuration d’un serveur FTP avec proFTP : voir le manuel Support de cours reseaux.pdf Configuration d’un serveur de mail avec postfix : voir le manuel Support de cours reseaux.pdf

TP : Installation et gestion d’un serveur web sous Debian/Ubuntu Introduction Pour installer un serveur web complet, trois composants sont primordiaux : o o o

apache2 : Le moteur web http à proprement parlé. MySQL : Le système de gestion de base de données. Php5 : Le langage de scripts libres pour interpréter les pages web.

A cela peuvent se rajouter des utilitaires pour vous faciliter la vie comme phpmyadmin, interface web pour gérer vos bases de données mysql mais aussi des modules complémentaires php5 pour ajouter des fonctionnalités comme php5-mysql, permettant d’interpréter le code php spécifique à l’accès et à la lecture d’une base de données ou encore php5-gd permettant de créer et manipuler des images. Installation des paquets nécessaires Apache2 : apt-get install apache2

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Php5 : apt-get install php5 MySQL et phpmyadmin : apt-get install mysql-server mysql-client phpmyadmin

APACHE2 Une fois l’installation de ce composant terminée, la première chose à effectuer est le test du bon fonctionnement de votre moteur http, la base de votre serveur web. il vous suffit d’ouvrir un navigateur web et de taper l’adresse IP de votre serveur en question en guise d’url en local taper 127.0.0.1 ou localhost; Si vous voyez un « It’s Works », c’est signe que votre apache fonctionne correctement.

Voici la commande pour redémarrer le moteur apache2 : /etc/init.d/apache2 reload (restart start stop) Hébergement de vos sites Créez un répertoire par site dans l’arborescence /var/www/, pour tester la partie web vous aurez alors qu’à taper l’adresse http://@ip-serveur/nom-répertoire-site.@ip-serveur=localhost Notion de virtualhosts Les virtualhosts donnent la possibilité d’héberger plusieurs sites web sur un seul et même serveur, vous aurez donc un virtualhost par site. Un virtualhost se matérialise sous forme d’un fichier que vous positionnez dans le répertoire /etc/apache2/site-available, ce fichier indique principalement le chemin d’accès de votre site web et la résolution DNS lié à celui-ci, voici un exemple basique : ServerName monsite.ma ServerAlias www.monsite.ma DocumentRoot /var/www/monsite DirectoryIndex index.php

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all Il existe bien sur pas mal d’options que vous pouvez ajouter pour personnaliser votre virtualhost, vous pouvez notamment ajouter des restrictions d’accès sur des adresses IP, spécifier un fichier htpasswd d’accès au site ou modifier le port par défaut. Pour activer le nouveau site une fois le virtualhost créé, tapez la commande suivante : a2ensite Si vous souhaitez pour une quelconque maintenance désactiver un site sans impacter les autres : a2dissite

PHP5 Php5 permet d’interpréter le code php de vos pages web. Pour visualiser la liste des variables de php, créez un fichierphpinfo.php à la racine de votre site par exemple, puis éditez-le et mettez-y le code suivant : Dans un navigateur, tapez l’url de votre site suivi de /phpinfo.php, vous devriez voir la liste des variables avec leurs valeurs sous forme de tableaux :

Pour modifier ces variables ou les activer, vous devez éditer le fichier php.ini situé dans/etc/php5/apache2/php.ini et /etc/php5/cli/php.ini.

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

MYSQL Voici quelques commandes mysql : Redémarrage du service /etc/init.d/mysql restart Accès à MySQL mysql -u root -p Visualiser les BDD mysql>SHOW DATABASES; Créer une BDD mysql>CREATE DATABASE test; Accès à une BDD et visualisation des tables de celle-ci mysql>USE test; mysql>SHOW TABLES; Il existe bien sur un outil pour faciliter l’administration de vos BDD MySQL, il s’agit de phpmyadmin. PHPMYADMIN Une fois le composant installé, vous pouvez accéder à l’interface web de phpmyadmin via l’url : http://@ip-serveur/phpmyadmin

Voici un aperçu de l’interface d’administration :

1/2 – Visualisation des bases de données.

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

3 – Exécuter des requêtes SQL sur le serveur. 4 – Etat de votre serveur SQL. 5 – Variables du serveur. 6 – Jeux de caractères et interclassement. 7 – Moteurs de stockage. 8 – Privilèges utilisateur (ajout/suppression, modification des droits d’accès aux BDD). 9 – Réplication. 10 – Processus. 11 – Exporter/importer des BDD ou des tables SQL. 12 – Synchroniser des BDD.

Configuration d’un serveur FTP avec proFTP : voir ch 6 du Support de cours reseaux.doc Configuration d’un serveur de mail avec postfix : voir ch 7 du Support de cours reseaux.pdf

Ch9 - Openssh server SSH permet de se connecter à distance à un ordinateur. Il existe deux protocoles connus pour se connecter à distance :  Telnet : Telnet est le protocole le plus basique pour se connecter à distance à un ordinateur. Il n'est presque plus utilisé, car il ne crypte (protège) pas les données, alors si un pirate « écoute » votre connexion au serveur, il pourra avoir le mot de passe du serveur, par exemple ! Telnet sert beaucoup pour tester des services (HTTP, POP, SMTP, etc.) et savoir s'ils fonctionnent.  SSH : SSH est le protocole le plus utilisé, car il crypte les données, et un pirate ne peut pas écouter votre connexion. La première version de SSH est sortie en 1995. Cette version avait un défaut, car elle ne vérifiait pas si les données reçues étais celles voulues et cela le rendait

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

vulnérable à des attaques actives. La version 2 de SSH a été développée par l'équipe de recherche de l'IETF « secsh ». Cette version est sortie en 2006.

 Le protocole SSH : la solution pour sécuriser les données Comme on ne peut pas complètement empêcher quelqu'un d'intercepter les données qui transitent sur l'internet, il faut trouver un moyen pour que le client et le serveur communiquent de manière sécurisée. Le cryptage sert précisément à ça : si le pirate récupère le mot de passe crypté, il ne peut rien en faire.

les différentes méthodes de cryptage : Le cryptage symétrique : Avec cette méthode, on utilise une clé (un mot de passe secret) pour crypter un message Pour décrypter ensuite le message, on utilise cette même clé .

Le cryptage symétrique utilise une seule clé pour crypter et décrypter. Le cryptage asymétrique, lui, utilise une clé pour crypter, et une autre pour décrypter. Il y a donc deux clés :  une clé dite « publique » qui sert à crypter ;  une clé dite « privée » qui sert à décrypter. La clé publique ne sert qu'à crypter. Avec ce type d'algorithme, on ne peut décrypter un message que si l'on connaît la clé privée.

SSH combine cryptage asymétrique et cryptage symétrique SSH utilise les deux cryptages : asymétrique et symétrique. Cela fonctionne dans cet ordre. 1.On utilise d'abord le cryptage asymétrique pour s'échanger discrètement une clé secrète de cryptage symétrique. 2.Ensuite, on utilise tout le temps la clé de cryptage symétrique pour crypter les échanges. Les étapes de la création d'un canal sécurisé avec SSH en images Le serveur envoie la clé publique en clair au client pour qu'il puisse crypter (figure suivante).

Le client génère une clé de cryptage symétrique (par exemple topsecret) qu'il crypte grâce à la clé publique qu'il a reçue (figure suivante).

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Le client envoie la clé symétrique cryptée au serveur. Le pirate peut l'intercepter, mais ne peut pas la décrypter car il faut pour cela la clé privée, connue seulement du serveur (figure suivante).

Le serveur décrypte la clé reçue grâce à sa clé privée qu'il a gardée bien au chaud chez lui (figure suivante).

Le client et le serveur connaissent maintenant tous les deux la clé symétrique topsecret, et à aucun moment ils ne l'ont échangée en clair sur le réseau !

Transformer sa machine en serveur Il faut tout simplement installer le paquet openssh-server sur le serveur et openssh-client sur le poste client :

# apt-get install openssh-server openssh-client

Lors de l'installation, vous devriez voir certaines étapes intéressantes s'effectuer automatiquement : Creating SSH2 RSA key; this may take some time ... Creating SSH2 DSA key; this may take some time ... * Restarting OpenBSD Secure Shell server sshd

[ OK ]

RSA et DSA sont deux algorithmes de cryptage asymétrique. Comme je vous l'ai dit plus tôt, SSH peut travailler avec plusieurs algorithmes de cryptage différents.

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Ce que vous voyez là est l'étape de création d'une clé publique et d'une clé privée pour chacun des deux algorithmes (RSA et DSA). Ensuite, le programme de serveur SSH (appelé sshd) est lancé.

Opérations sur la machine du client Il faut tout d'abord vous rendre sur la machine du client et taper la commande suivante pour générer une paire de clés publique / privée :

# ssh-keygen -t rsa Vous pouvez remplacer rsa par dsa si vous voulez utiliser l'autre algorithme de cryptage, mais ça n'a pas vraiment d'importance ici. Lorsque vous tapez cette commande, vous allez voir plusieurs messages s'afficher et il vous sera demandé quelques petites précisions : $ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/mateo21/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/mateo21/.ssh/id_rsa. Your public key has been saved in /home/mateo21/.ssh/id_rsa.pub. The key fingerprint is: b7:22:94:aa:8c:fb:d3:ef:53:86:df:b9:37:40:bd:4d mateo21@mateo21-laptop The key's randomart image is: +--[ RSA 2048]----+ | | | | | . | | . ..E | | o.S.. + | | o. o.... . | | .. .+...o | | o... ....o o | |oo+. oo. .o . | +-----------------+ Dans un premier temps, le client génère une paire de clés (« Generating public/private rsa key pair »). Il doit ensuite sauvegarder ces clés dans des fichiers (un pour la clé publique, un pour la clé privée). On vous propose une valeur par défaut : je vous conseille de ne rien changer et de taper simplement Entrée. Ensuite, on vous demande une passphrase. C'est une phrase de passe qui va servir à crypter la clé privée pour une meilleure sécurité. Là, vous avez deux choix :  soit vous tapez Entrée directement sans rien écrire, et la clé ne sera pas cryptée sur votre machine ;  soit vous tapez un mot de passe de votre choix, et la clé sera cryptée. Tout le monde ne met pas une phrase de passe. En fait, ça dépend du risque que quelqu'un d'autre utilise la machine du client et puisse lire le fichier contenant la très secrète clé privée. Si le PC du client est votre PC chez vous et que personne d'autre ne l'utilise, il y a assez peu de risques (à moins d'avoir un virus, un spyware…). Si c'est en revanche un PC public, je vous recommande vivement de mettre unepassphrase pour chiffrer la clé qui sera enregistrée Pour ouvrir une session distant ayant un serveur SSH, vous devez écrire quelque chose comme ceci :

#ssh @ -p Exemple :

#ssh [email protected] -p 12345 L'option -p qui précise le port utilisé par le serveur est facultative. Si rien n'est précisé, c'est le port 22 qui sera utilisé par défaut (protocole TCP). Vous pouvez aussi appeler un ordinateur par son nom :

#ssh utilisateur@nom_machine à partir du moment où celui-ci est résolu par votre machine.

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Cela peut se faire sur le réseau local par le fichier /etc/hosts (ou bien, pour passer par une interface graphique, en tapant dans un terminal network-admin puis en allant dans l'onglet "Hôtes", continuer en déverrouillant les droits administration en cliquant sur le cadenas, et enfin, en cliquant sur le bouton "ajouter"), éventuellement distribué d'un serveur vers les clients locaux au travers de NIS, ou bien par un service de DNS si vous accédez à une machine distante (serveur loué) pour lequel vous avez enregistré un nom de domaine.

Authentification par clé depuis Windows (PuTTY) TP : à faire Télécharger sous Windows PuTTY Communiquer entre Windows et un serveur ssh Linux à l’aide de PuTTY

Voir le PDF :Ubuntu-server-guide.pdf pages 31-33 TP réaliser un contrôle à distance d’un ordinateur à l’aide du serveur SSH (resveur de document)

Créer un serveur mail Introduction Ce tutoriel va vous apprendre comment installer un serveur mail complet, pourquoi un tel tutoriel ? Sur le wiki, la plupart des documentations ne sont pas encore terminées, et aucune d'elles ne met en relation tous les utilitaires afin de réaliser un vrai serveur de mail. Nous parlerons donc ici de l'acheminement du mail, depuis le MTA, vers IMAP, vers votre client mail, Thunderbird/Evolution.

Pré-requis Postfix : Afin de gérer l'envoi et la réception du mail IMAP : Afin de rapatrier les mails reçus sur votre client mail préféré Un nom de domaine : Afin de pouvoir vous identifier sur la toile Un nom de domaine avec les entrées MX configurées : Afin de pouvoir recevoir vos mails sur [email protected] • Mailutils : Ensemble de petits outils GNU pour la gestion des mails par la console • • • •

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Je n'aborderai pas la configuration de votre nom de domaine, sachez juste que dans notre exemple, le domaine est FF-IRC.net, et que le nom du serveur de mail est mail.FF-IRC.net

Installation Installez les paquets postfix courier-imap sudo apt-get install postfix courier-imap Répondez aux questions par « Site Internet », puis renseignez votre nom de domaine. Note : Si vous possédez déjà Sendmail, il sera désinstallé automatiquement et remplacé par Postfix.

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Configuration Argh ! Voici la partie délicate, mais pas forcément compliquée de la chose …

Postfix Le fichier de configuration de Postfix s'appelle main.cf, il se situe dans /etc/postfix : # See /usr/share/postfix/main.cf.dist for a commented, more complete version # # # Debian specific: Specifying a file name will cause the first # line of that file to be used as the name. The Debian default # is /etc/mailname. #myorigin = /etc/mailname # smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) biff = no # # appending .domain is the MUA's job. append_dot_mydomain = no # # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h # # TLS parameters smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache # # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client. # myhostname = mail.FF-IRC.net alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = FF-IRC.net, Final-Fantasy.FF-IRC.net, localhost.FFIRC.net, localhost relayhost = mynetworks = 127.0.0.0/8, 192.168.0.0/24 #mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all home_mailbox = Maildir/

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Commentons quelques points : myhostname : c'est le nom de votre serveur mail, configuré dans les entrées MX, par défaut mail.domaine.net • mydestination : ceci est la concordance des domaines, remplacez Final-Fantasy par votre nom de machine, et FF-IRC.net par votre domaine • mynetworks : permet de donner l'accès au serveur SMTP, en plus des 2 exemples, rajoutez votre IP extérieure si votre serveur n'est pas sur le même réseau que votre PC • home_mailbox = Maildir/ : Ceci est important ! Nous choisissons le format Maildir en accord avec le serveur IMAP ! Vous ne pourrez pas recevoir vos mails par IMAP si cette ligne n'est pas ajoutée au fichier de configuration de Postfix ! •

Éditez le fichier /etc/procmailrc. (Attention le fichier n'existe pas forcement il faut peut être le créer) MAILDIR=$HOME/Maildir DEFAULT=$MAILDIR/ :0: $DEFAULT

IMAP : courier-imap Le fichier de configuration de courier-imap se situe dans /etc/courier et se nomme imapd : Seulement un point nous intéresse dans cette configuration : le MAILPATH (ou MAILDIRPATH), configurez-le comme suit : MAILPATH=Maildir

Personnellement si je met le ~/, je me fais refouler a l'authentification, alors que tout se passe correctement sans le ~/, ca fonctionne. Retournez ensuite dans votre ~ et tapez ceci : maildirmake Maildir

Ceci créera la boite mail Maildir/ dans votre ~, autrement dit, dans votre /home/login

Support de cours BTS SRI2 Essaadi Driss

GNU/Linux

Mise en application du Serveur de Mails Mise en place de vos paramètres Tout d'abord, installez mailutils : sudo apt-get install mailutils

Ceci va vous permettre de tester votre serveur de mails. Pour appliquer les changements que vous avez fait sur Postfix et IMAP, procédez comme ceci : sudo /etc/init.d/postfix restart sudo /etc/init.d/courier-imap restart sudo /etc/init.d/courier-authdaemon restart

Ensuite, nous allons tester la réception d'un mail, depuis l'INTERIEUR, autrement dit, en localhost : mail [email protected] Cc: Subject: Wiki de Ubuntu-fr Je trouve votre article très intéressant et souhaiterais y contribuer.

Entre chaque question, appuyez sur [Entrée]. Quand vous aurez terminé de rédiger votre mail, tapez [Entrée] puis [CTRL]+[D] et votre message sera envoyé.

Configuration de votre client de messagerie Les captures suivantes, sont basées sur le client de messagerie Thunderbird. Pourquoi, me direzvous ? Tout simplement parce que Thunderbird est SEULEMENT un client mail et est donc plus léger. Evolution, le client par défaut de Ubuntu, possède d'autre petites fonctionnalités comme le calendrier des événements etc… ce qui le rend plus "lourd".

Support de cours Essaadi Driss Gnu/Linux 2eme Année (S53-S54)

Autres serveurs pour complêter : Dans le même ordre d'idée, il est très simple de mettre en place un serveur POP avec le logiciel courier-pop. Pour faire un serveur sécurisé en envoi et en réception, on remplacera : – postfix par postfix-tls. – Courier-pop par courier-pop-ssl – Courier-imap par courier-imap-ssl Les certificats sont faits à l'installation des packages. Pour refaire ces certificats, utilisez la commande suivante : mkimapdcert ou mkpopdcert N'oubliez pas de redémarrer les serveurs. Attention, si vous n'arrêtez ni ne supprimez les serveurs POP et IMAP non sécurisés, vos clients pourront toujours utiliser du mail non sécurisé !

55

Support de cours Essaadi Driss Gnu/Linux 2eme Année (S53-S54)

CH8 : SAMBA un outil de partage Voir la partie correspondante sur le manuel PDF : Support de cours reseaux 1.

Introduction :

Le logiciel Samba est un outil permettant de partager des dossiers et des imprimantes à travers un réseau local. Il permet de partager et d'accéder aux ressources d'autres ordinateurs fonctionnant avec des systèmes d'exploitation Microsoft® Windows® et Apple® Mac OS® X, ainsi que des systèmes GNU/Linux, *BSD et Solaris dans lesquels une implémentation de Samba est installée. Pour établir avec succès un réseau entre votre système Ubuntu et des clients Windows, il faut fournir et intégrer les services utilisés courament dans les environnements Windows. Ces services assistent aux transferts de données et d'information sur les ordinateurs et utilisateurs existant dans le réseau. Ils peuvent être classifiés en trois catégories principales selon leur fonctionalité. • Services de partage de fichiers et d'imprimantes. Utiliser le protocole Server Message Block (SMB) pour faciliter le partage de fichiers, de dossiers, de volumes et d'imprimantes à travers le réseau. • Services d'annuaire. Partager l'information vitale sur les ordinateurs et utilisateurs du réseau avec des technologies telles que le Lightweight Directory Access Protocol (LDAP) et le Microsoft Active Directory®. • Authentification et accès. Établir l'identité d'un ordinateur ou d'un utilisateur et déterminer l'information à laquelle l'ordinateur ou l'utilisateur a l'autorisation d'accéder en utilisant des principes et technologies telles les permissions sur les fichiers, les politiques de groupes, et le service d'authentification Kerberos. Heureusement, votre système Ubuntu peut fournir tous ces services aux clients Windows et partager les ressources réseau avec eux. Un des principaux composants de votre système Ubuntu pour la réseautique Windows est la suite SAMBA d'outils et d'applications pour serveur SMB. Pour plus de details consulter le site : [http://www.samba.org].

2.

Installer SAMBA

A l'invite système, entrez la commande suivante pour installer les applications serveur SAMBA :

sudo apt­get install samba Le fonctionnement de SAMBA repose principalement sur ses deux démons: smbd , nmbd. Il existe un troisième depuis la version 3 de SAMBA c'est winbindd. Théoriquement lors de l'installation du paquet SAMBA : apt-get install samba ET de ses dépendances, le système a configuré votre Ubuntu pour que ces démons soient lancés automatiquement au démarrage. Si ce n'était pas le cas, modifiez vos fichiers de boot /etc/rc.x et /etc/services. C'est le principal démon de Samba car c'est lui qui permet le partage des fichiers et des imprimantes. Son paramètrage se fait par l'intermediaire du fichier de configuration smb.conf. smbd verifie toutes les trois minutes ce fichier pour prendre en compte les modifications. Vous pouvez accélérer cette prise en compte en relancant le démon manuellement. nmbd est le démon de samba qui permet le nommage NetBios et l'exploration des réseaux Windows. Il est egalement utilisé pour la résolution de nom et la fonction Wins en cas où vous utilisez samba comme serveur pour votre réseau NetBios. Il prend ses paramètres dans le fichier smb.conf comme smbd. Ce dernier démon ne sert que si vous intégrez votre serveur samba dans un domaine NT ou que vous avez besoin de relation d'approbation entre domaine Windows. Authentification

56

Support de cours Essaadi Driss Gnu/Linux 2eme Année (S53-S54) Dernière chose à faire avant de pouvoir accéder au répertoire partagé de votre machine, il faut créer des mots de passe pour les comptes qui auront accès à ceux-ci. Car Samba n'utilise pas les mots de passe du système mais a son propre fichier pour stocker ceux-ci (/etc/smbpasswd). Pour créer les mots de passe samba :

sudo smbpasswd ­a user_name Remplacer user_name par le(s) nom(s) des utilisateurs ayant accès à samba, il faut que ces utilisateurs aient un compte (au sens Unix sur la machine Sans authentification Pour laisser passer tout le monde sans code, éditez le fichier /etc/samba/smb.conf section [global] et ajoutez:

map to guest = Bad User Cette fonctionnalité peut être dangereuse ! Vérifier que le firewall est configuré correctement pour n'accepter que les connexions sur le réseau local (ou une partie de ce dernier) ou ajouter la règle samba :

hosts allow = 192.168. Laisser l'accès à n'importe quel utilisateur d'Internet serait très dangereux d'autant plus qu'il s'agit d'une faille très connue et souvent exploitée. Une autre façon de partager le contenu de vos dossiers partagés à tous ceux sur le réseau sans qu'aucune authentification ne soit requise est de modifier la ligne suivante dans la section "authentication":

security = user par

security = share N'oubliez pas d'enlever le point-virgule pour que la ligne de code soit prise en compte. L'effet est automatique et se fait dans les trois minutes, pas besoin de redémarrer le service samba. L'étendue des possibilités offertes par Samba est encore plus grande, comme par exemple les PDC et les serveurs WINS. De plus l'édition directe du fichier smb.conf donne accès à plus de finesse dans les réglages. Enfin, il est possible de configurer en ligne via les interfaces SWAT ou Webmin. Tout ceci sera détaillé au paragraphe « Mode avancé ». Samba se lance dès son installation, mais voici les trois commandes utilisées pour le démarrage, l'arrêt et le redémarrage de Samba :

sudo /etc/init.d/samba start sudo /etc/init.d/samba stop sudo  /etc/init.d/samba restart Samba est composé de plusieurs éléments. Vous avez des outils/programmes sous forme de commandes (smbstatus, smbclient.....) , deux démons principaux smbd et nmbd et un fichier de configuration smb.conf. De plus il existe plusieurs outils pour le configurer en mode graphique, les plus connus/utilisés sont SWAT qui est le systéme officiel et webmin-samba module intégré à webmin.

Voici un fichier /etc/samba/smb.conf permettant de partager une ressource (répertoire ou imprimante) avec une authentification Utilisateur / Mot de passe sur un réseau Workgroup : # PARTAGE PAR UTILISATEUR (user) - Groupe de travail # Il y a 2 cas possibles : # CAS n°1 : on partage une ressource totalement anonyme # CAS n°2 : cas normal du mode user, on fait une authentification #

par login et mot de passe # Section GLOBAL

# Configuration globale de Samba

57

Support de cours Essaadi Driss Gnu/Linux 2eme Année (S53-S54) [global] # Nom du groupe de travail workgroup = WORKGROUP # Nom Netbios de la machine (identification réseau) netbios name = PC230 # Chaine de commentaire associé au serveur (voisinage réseau) server string = %h Serveur (Samba %v) # Utilisateurs interdits invalid users = root # Enregistre un fichier de log par machine cliente du réseau MS log file = /var/log/samba/log.%m # Taille maximale des logs : 1 Mo max log size = 1000 # On n'utilise pas Syslog pour enregistrer les logs syslog = 0 # On fait un partage par utilisateur security = user # On utilise les mots de passe encryptés # (attention, W95 et W98a fonctionnent avec les mdp en clair) encrypt passwords = true # Accélère les transferts réseaux socket options = TCP_NODELAY # Empeche nmbd de chercher à résoudre le nom netbios via le DNS dns proxy = no

# Nom du compte invité qui va permettre de créer une # ressource partagée par mot de passe (celui du compte invite) # POUR LE CAS n°1 guest account = invite

# Emplacement du fichier contenant les logins et mdp samba # concerne le CAS n°1 et n°2 smb passwd file = /etc/samba/smbpasswd

# Section HOMES # Cette section particulière permet de remonter une ressource

58

Support de cours Essaadi Driss Gnu/Linux 2eme Année (S53-S54) # qui correspond au répertoire de travail (home directory) # de l'utilisateur qui s'est authentifié [homes] # Correspond au home directory de l'utilisateur authentifié # %U sera remplacé par le nom d'utilisateur (login) comment = Le répertoire personnel de %U

# Si on active cette option, on dispose d'une ressource 'homes' # redondante avec la ressource 'login' browseable = no

# Il faut que l'utilisateur soit authentifié pour accéder # à la ressource (son home directory sur le serveur) public = no

# Autorise l'écriture dans le répertoire personnel writable = yes

# Droits d'accés des fichiers et répertoires crées create mask = 0644 directory mask = 0755

# Section PRINTERS # Cette section permet de partager les imprimantes définies sur le serveur [printers] # Le commentaire associé à l'imprimante comment = Les imprimantes # Affiche les imprimantes dans la liste des partages du serveur browseable = yes

59

Support de cours Essaadi Driss Gnu/Linux 2eme Année (S53-S54) # Dans le cas d'une imprimante, c'est l'emplacement # des fichiers temporaires path = /tmp

# Spécifie qu'il s'agit d'une imprimante et non un répertoire printable = yes

# Partage l'imprimante de manière anonyme public = yes

# Logique writable = no

# Empeche d'autres utilisateurs de supprimer mes impressions create mode = 0700

# Sections REPERTOIRES PARTAGES

# CAS n° 1 : une ressource anonyme sans mot de passe # Un CDROM [cdrom] # Le commentaire associé au CDROM comment = Le CDROM # Point de montage du CDROM # synonyme de directory = path = /cdrom # Empeche le bloquage d'un fichier par un utilisateur locking = no # Logique writable = no

60

Support de cours Essaadi Driss Gnu/Linux 2eme Année (S53-S54) # Partage le CDROM de manière anonyme public = yes

# CAS n°2 : un répertoire partagé qu'à certains utilisateurs [prive] # Le commentaire associé au répertoire comment = Un répertoire partagé qu'a certains utilisateurs (CAS n°2) # Emplacement du répertoire partagé path = /home/prive # Support en lecture / écriture # synonyme de read only = no writable = yes

# Partage anonyme désactivé (cas par défaut) # synonyme de guest ok = no public = no

# Voir explication ci-dessous # le @prive désigne le groupe Unix 'prive' valid users = @prive

# Masque de création des fichiers et répertoires create mask = 0644 directory mask = 0755

Dans le cas du mode user, pour ne partager, une ressource partagée, qu'a certains utilisateurs, il faut tout d'abord créer un compte UNIX pour chacun d'eux : # adduser --shell /bin/false --disabled-login ali # adduser --shell /bin/false --disabled-login mohamed

On crée ensuite une entrée dans le fichier /etc/samba/smbpasswd : # smbpasswd -a ali # smbpasswd -a mohamed

61

Support de cours Essaadi Driss Gnu/Linux 2eme Année (S53-S54) NB : dans les versions récentes de Samba, il faut utiliser la commande pdbedit à la place de smbpasswd : # pdbedit -a ali # pdbedit -a mohamed

Coté Linux, les utilisateurs doivent avoir le droit d'écriture sur le répertoire partagé. La meilleure méthode consiste à créer un groupe Unix contenant les utilisateurs autorisés, et d'attribuer le repertoire partagé au groupe en question : # addgroup prive # adduser ali prive # adduser mohamed prive # mkdir /home/prive # chgrp prive /home/prive # chmod 770 /home/prive # smbpasswd -a ali # smbpasswd -a mohamed

Avantage : pour partager cette ressource à de nouveaux utilisateurs, il suffit de leur créer le compte unix, une entrée dans smbpasswd et de les ajouter au groupe prive (il n'est plus nécessaire de modifier le fichier smb.conf). # chmod g+s /home/prive

Permet de définir le propriétaire des fichiers créés avec l'option +s. Ici les propriétaires seront les membres du groupe prive au lieu de l'utilisateur.

TP : Serveur PDC avec Samba Objectif : Configurer un serveur SAMBA sous Linux Ubuntu pour le rôle de Contrôleur de Domaine afin de mettre en œuvre une administration centralisée avec contrôle d’accès aux postes clients, etc… Le serveur Linux/SAMBA est en mesure de se conduire comme un serveur de fichiers capables d'offrir les services habituels sur un réseau : 1  partage de fichiers et de répertoires, 2  partage d'imprimantes, 3  respect des comptes utilisateurs 4  gestion des permissions d'accès 5  exécution de scripts de connexion personnalisés Le protocole de communication sous-jacent qui permet cette communication Linux-Dos/Windows s'appuie sur NetBios et s'appelle smb=Server Message Block. 1  Le serveur offre ses ressources (système de fichiers, imprimantes ...) aux clients Windows qui s'y

62

Support de cours Essaadi Driss Gnu/Linux 2eme Année (S53-S54)

2

connecteront sous un compte créé par root, après une authentification par mot de passe. Le travail est partagé par deux "daemons" : smbd pour le service serveur et nmbd pour le service de résolution des noms Netbios.  Du côté client, le protocole SMB fonctionne au-dessus de plusieurs protocoles. Il nécessite Netbios au dessus de TCP/IP (par contre NetBEUI n'est pas utile)

Etape 1 : activer le PDC et un compte machine Sur le poste Ubuntu (rôle de contrôleur de domaine) : = Sauvegarder le fichier smb.conf qui se trouve dans /etc/samba = (p.ex. : sudo cp /etc/samba/smb.conf /etc/samba/smb0.conf ) = Et éditer un nouveau fichier smb.conf $ sudo gedit /etc/samba/smb.conf Configuration de la section [global] [global] # Identification NetBIOS à modifier selon besoin workgroup = NOM_DOMAINE_WIN netbios name = serveurpdc server string = Samba %v Server %L #Compte à utiliser pour les accès invités aux partages guest account = nobody #Restreindre par sécurité les sous-réseaux autorisés à se connecter hosts allow = 10. #Utiliser un fichier de trace pour chaque machine qui se connecte log file = /var/log/samba/%m.log #Mode de sécurité de ressources utilisées sur le serveur Samba security = user

Quitter en enregistrant le fichier. Saisir sur votre terminal la commande suivante qui vérifie si le fichier smb.conf est correct : $ testparm Saisir sur votre terminal la commande qui redemarre le serveur SAMBA Etape 2 : créations des groupes et des utilisateurs Linux pour SAMBA Saisir sur votre terminal la commande qui ajoute un groupe machines (client) : exp sambamachines Création du groupe rassemblant tous les utilisateurs du PDC SAMBA : exp grpbtssri Créer un utilisateur systéme Linux et qui appartient au groupe grpbtssri (exp smbuser1). Utiliser le paramétre –m pour céer le répértoire utilisateur.Créer aussi son mot de passe Linux. Test de connexion authentifuiée Linux à l’aide de la commande : $ smbclient –L localhost –U smbuser1 Créer en suite un utilisateur equivalent SAMBA. Test de connexion authentifuiée SAMBA à l’aide de la commande : $ smbclient –L localhost –U smbuser1 Que remarquez vous ? REMARQUE : Désactiver le firewall Répertoire personnel et partages sur le serveur Samba 1 Le répertoire personnel de chaque utilisateur Accès au répertoire personnel pour chaque utilisateur lors de la connexion. Celui ci est créé dans /home, lieu de regroupement des répertoires personnels. Il faut configurer le fichier smb.conf comme suit :

63

Support de cours Essaadi Driss Gnu/Linux 2eme Année (S53-S54) [homes] # Accès au répertoire personnel de l’utilisateur # La valeur du champ comment apparaîtra dans le voisinage réseau path = /home/%u comment = Répertoire personnel browseable = no # Il est accessible en écriture writable = yes # les fichiers créés ne sont accessibles que pour le propriétaire create mode = 0700

2 Rendre un répertoire public L’objectif est de rendre un répertoire partagé totalement (lecture/écriture) à tous les utilisateurs. Il faut d’abord le créer ou vérifier que celui-ci existe. En règle générale le gestionnaire le crée dans le répertoire /home, lieu de regroupement des répertoires personnels. $ mkdir /home/tmp Ensuite il faut configurer le fichier smb.conf. comme suit:

[public] # Ce répertoire aura pour nom de partage “public” # La valeur du champ “comment” apparaîtra dans le voisinage réseau path = /home/tmp comment = Répertoire public # Il pourra être accessible pour tous les utilisateurs public = yes # Il pourra être accessible en écriture writable = yes # les fichiers créés sont en lecture seule, sauf pour le propriétaire create mode = 0755

Il faut y ajouter les permissions d’accès et d’écriture pour tous les utilisateurs au répertoire “public”. $ chmod 777 public 3 Partager un répertoire pour un groupe Pour partager un répertoire pour un groupe, il faudrait aller dans le dans le fichier smb.conf rajouter quelques lignes supplémentaires; Dans notre exemple, le répertoire à partager pour le groupe s’appellera “commun” [commun] # Ce répertoire aura pour nom de partage “commun” # La valeur du champ “comment” apparaîtra dans le voisinage réseau path = /home/commun comment = Partage pour le groupe techlan # Il ne pourra pas être accessible pour tous les utilisateurs public = no # Il pourra être accessible en écriture writable = yes # Liste des utilisateurs autorisés (avec ou sans virgule) valid users = ali omar malika # Ou mieux, indication du groupe autorisé valid users = @grpbtssri # les permissions sont celles par défaut pour tout fichier créé create mode = 0640 Si vous voulez que le super utilisateur Samba « root », qui sera l'administrateur, faire la commande suivante qui fixe root comme administrateur samba : # smbpasswd -a root et indiquer un mot de passe, qui soit différent de celui du login du serveur, par sécurité mais il peut être le même. (Par exemple : smbrootposte) Remarque : pour supprimer un utilisateur si on s'est trompé, il faut le faire à 2 niveaux, dans Samba et dans Linux , par exemple pour l'utilisteur jojo : #smbpasswd -x jojo

64

Support de cours Essaadi Driss Gnu/Linux 2eme Année (S53-S54) #userdel jojo Etape 3 : intégration du poste XP Saisir sur votre terminal la commande suivante qui ajoute un compte machine lorsqu’un client cherche à se connecter : $sudo useradd nomNetBIOSduposteWIN –g sambamachines –s /dev/false –d /dev/null

Attention ! remplacer « nomNetBIOSduposteXP » par le nom NetBIOS réel de votre machine XP ! (par exemple « station01 ») Saisir sur votre terminal la commande suivante qui ajoute le nom de la machine en tant qu’utilisateur SAMBA $

sudo

smbpasswd

–m

–anomNetBIOSduposteWIN$

Le signe $ voudrait dire au domaine Samba que le "client" est une machine Connexion du client XP : Allez dans Propriété système onglet nom de l'ordinateur et cliquer sur modifier Puis saisir le nom du domaine que vous avez mentionner dans le fichier smb.conf Si tout se passe bien une fenêtre de connexion doit apparaitre vous invitant à saisir un nom utilisateur, vous saisirez root et le mot de passe que vous avez choisi pour root. Redémarrer le poste Windows XP. Connectez-vous ensuite à partir du poste XP, avec le compte et vérifiez que vous y avez accès

65

Support de cours Essaadi Driss Gnu/Linux 2eme Année (S53-S54)

Fin de l'exercice !

ANNEXE 1 : fichier /etc/samba/smb.conf [global] # Identification NetBIOS à modifier selon besoin workgroup = BACPROSEN01 netbios name = serveurpdc # Activation du contrôleur de domaine os level = 65 domain logons = yes # Permet au serveur de fournir la liste des postes du voisinage réseau domain master = yes local master = yes # pour forcer le choix ... preferred master = yes # Permet d'activer un serveur wins sur samba pour la resolution nom netbios wins support = yes name resolve order = wins host lmhosts bcast dns proxy = no # Base de donnees des comptes dont le nom est modifiable passdb backend = tdbsam:/var/lib/samba/pdcpass.tdb security = user encrypt passwords = yes # Gestion des fichiers logs log file = /var/log/samba/%m.log max log size = 1000 log level = 2 # Activation du serveur de temps time server = yes # Paramètres utilisateur par défaut pour samba logon drive = H: logon home = \\%L\%U # logon path = \\%L\%U\profile # si section profiles alors on peut mettre tous les profiles utilisateurs dans ce partage : logon path = \\%L\profiles\%U

66

Support de cours Essaadi Driss Gnu/Linux 2eme Année (S53-S54)

# le script par défaut pourra être celui de l'utilisateur. Il est judicieux de faire # des appels à d'autres fichiers scripts par un "call" dans le .cmd : logon script = logon.cmd # logon script = %U.cmd # est aussi possible pour personnaliser le mappage des ressources # Gestion des comptes POSIX

add machine script = /usr/sbin/useradd g sambamachines c Machine d /dev/null s /bin/false '%u' add user script = /usr/sbin/useradd g sambausers c Utilisateur d /dev/null s /bin/false '%u'

add group script = /usr/sbin/groupadd '%g' add user to group script = /usr/sbin/gpasswd a '%u' '%g' delete user script = /usr/sbin/userdel r '%u' delete group script = /usr/sbin/groupdel '%g' delete user from group script = /usr/sbin/gpasswd d '%u' '%g' set primary group script = /usr/sbin/usermod g '%g' '%u' # Impression par CUPS. Paramètres à activer et puis se référer à la section printers ;printing = cups ;printcap name = cups [homes] # Partages répertoires utilisateurs path = /home/samba/usersbacpro comment = Repertoire prive valid users = %S guest ok = no writeable = yes create mode = 0700 directory mode = 2700 browseable = no # Partage netlogon en lecture seule (service avec fichier de commande .cmd ou .bat) [netlogon] path = /home/samba/netlogon guest ok = no read only = yes browseable = no valid users = @sambausers # Partage Profiles pour les profils itinérants [profiles] path = /home/samba/profiles guest ok = no browseable = no create mask = 0600 directory mask = 0700 # Partage commun a tous les utilisateurs samba (Z:) [commun] path = /home/samba/commun guest ok = no writeable = yes browseable = yes valid users = @sambausers # Partage spécifique aux courtiers (T:)

67

Support de cours Essaadi Driss Gnu/Linux 2eme Année (S53-S54)

[courtiers] path = /home/samba/courtiers guest ok = no writeable = yes browseable = yes valid users = @courtiers # Partage d'imprimantes , à décommenter si nécessaire ;[printers] ;comment = toutes les imprimantes ;browseable = no ;path = /var/spool/samba ;printable = yes ;guest ok = no ;read only = yes ;create mask = 0700

68

Support de cours Essaadi Driss Gnu/Linux 2eme Année (S53-S54)

Voir la partie correspondante sur le manuel PDF : Support de cours reseaux

Pour les chapitres : CH 10: Routage et firewall configurés avec iptabs (Netfilter) CH11: Protocole d’annuaire LDAP (Administere OpenLDAP)

Exemple de Script iptables #!/bin/bash ## Script iptables. ## Règles iptables. ## On flush iptables. iptables -F

## On supprime toutes les chaînes utilisateurs. iptables -X

## On drop tout le trafic entrant.

iptables -P INPUT DROP

## On drop tout le trafic sortant. iptables -P OUTPUT DROP

## On drop le forward. iptables -P FORWARD DROP

## On drop les scans XMAS et NULL. iptables -A INPUT -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

## Dropper silencieusement tous les paquets broadcastés. 69

Support de cours Essaadi Driss Gnu/Linux 2eme Année (S53-S54)

iptables -A INPUT -m pkttype --pkt-type broadcast -j DROP

## Permettre à une connexion ouverte de recevoir du trafic en entrée. iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

## Permettre à une connexion ouverte de recevoir du trafic en sortie. iptables -A OUTPUT -m state ! --state INVALID -j ACCEPT

## On accepte la boucle locale en entrée. iptables -I INPUT -i lo -j ACCEPT

## On log les paquets en entrée. iptables -A INPUT -j LOG

## On log les paquets forward. iptables -A FORWARD -j LOG exit 0

70

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF