View
2.058
Download
3
Category
Preview:
DESCRIPTION
Citation preview
Administration UNIX
Johan Moreau
Johan.Moreau@ircad.fr
Formation d’Ingénieurs en Partenariat
Spécialité « informatique industrielle »
École Nationale Supérieure de Physique de Strasbourg
Centre de Formation d’Apprentis de l’Industrie du Haut-Rhin
2009–2010
1
Johan Moreau
Johan.Moreau@ircad.fr
RSSI et Ingénieur R&D, IRCAD
Membre du bureau Clusir-Est
Enseignement en Master ULP, FIP
2
Administration UNIX
1. Introduction : Unix, une grande famille
2. Les bases : architecture des systèmes UNIX
3. Nos amis : utilisateurs, groupes, et sécurité
4. Les commandes : basiques et avancées
5. Les services : bases et démarrage
6. Matériels et logiciels : installation et choix
7. Réseau : configuration et filtrage
8. Le monde des serveurs : HTTP,NFS,SMBFS, ...
3
Bibliographie
– La programation sous UNIX. Ediscience, J.-M. Rifflet, Ediscience, ISBN
2-84074-013-3
– Systèmes d’exploitation, sysytèmes centralisés, systèmes distribués,
A. Tanenbaum, Inter-Editions, ISBN 978-2-7440-7299-4
– Les cahiers de l’admin : BSD, E. Dreyfus, Eyrolles, ISBN 978-2-212-11463-8
– Advanced Programming in the UNIX Environnement W.R. Stevens,
Addison-Wesley, ISBN 0-201-56317-7
4
1. Introduction
1. Pourquoi ce cours ?
2. Pourquoi UNIX ?
3. Introduction à l’administration
4. Quels besoins pour l’entreprise ?
5. Introduction à la sécurité
6. Unix, un monde à part
5
Pourquoi ce cours ?
L’administration de service informatique est un vecteur d’emploi important.
Les systèmes basés sur UNIX sont de plus en plus nombreux.
L’administration UNIX et Windows est basée sur des concepts différents.
But de ce cours : donner un aperçu général du fonctionnement des systèmes UNIX
afin d’en maîtriser l’administration de base. Le système qui sera utilisé pour
présenter UNIX est GNU/Linux.
6
Pourquoi UNIX ?
Objectif d’un système d’exploitation :
– Interface entre le matériel et l’utilisateur (disque, CPU, ...)
– Séparation des ressources d’un utilisateur des autres (données, processus, ...)
Pourquoi le choix d’UNIX ?
– Le prix (surtout pour Linux, FreeBSD, OpenBSD, ...).
– La disponibilité des sources.
– Apprentissage : concepts fondamentaux dans un système, simple et ouvert.
– Réellement multi-utilisateurs et multi-tâches depuis l’origine.
7
Qu’est que GNU Linux ?
GNU/Linux est le terme que promeut le projet GNU et ses supporters, en particulier
Richard M. Stallman, son fondateur et principal activiste, pour se référer au système
d’exploitation libre GNU basé sur un noyau Linux, les composantes GNU pouvant
fonctionner sur d’autres noyaux : Les principaux arguments de cette position sont
les suivants :
– argument d’antériorité : GNU existait avant Linux ;
– argument de la confusion : le public risque d’attribuer à Linux ce qui vient du
projet GNU ;
– argument philosophique : le public risque de ne pas connaître ou d’oublier les
principes GNU qui s’appliquent pour Linux et qui sont à l’origine des logiciels
libres ;
Pour toute l’histoire :
http://fr.wikipedia.org/wiki/Linux_ou_GNU/Linux
8
Introduction à l’administration
– Les "Systèmes d’Informations" ont une forte croissance ces dernières années.
– La complexité des SI impose des personnes qualifiées pour en assurer leur bon
fonctionnement.
– Une grande partie du temps est accordée aux serveurs.
– Etude IDC de 2004 :
Plus de 60% des serveurs fonctionnaient sous UNIX (propriétaires ou
ouverts).
9
Les besoins de l’entreprise
– L’entreprise a toujours de nouveaux besoins.
– Une entreprise sans mouvement est destinée à disparaître.
– Beaucoup de nouveaux besoins s’orientent vers le SI.
– Mobilité (accès aux SI à tout moment)
– Téléphonie IP (réduction des coûts, nouveaux concepts)
– Internet et publication Web (marketing direct)
– Services à valeurs ajoutées (mashup, ...)
– Disponbilité du SI extrêmement importante.
10
Introduction à la sécurité
– la sécurité coûte cher :
Étude du Computer Security Institute (rapport 2005) :
En 2004, les dépenses de sécurité ont représenté entre 100 et 300 $ par
employé (dans les entreprises de CA supérieur à 10 M$)
– l’absence de sécurité coûte cher :
Étude du Computer Security Institute (rapport 2005) :
En 2004, les incidents de sécurité ont coûté en moyenne 355 552 $ par
entreprise (sur 639 réponses)
11
Introduction à la sécurité
Objectifs de la sécurité :
– Confidentialité : les données ne doivent pas
être connues par des tiers non autorisés
– Intégrité : les données ne doivent pas être
altérées
– Disponibilité : le système informatique doit
rester opérationnel
Intégrité
Dispon
ibilité
Confidentialité
Confidentiality + Integrity + Availability = CIA
12
Unix, un monde à part
– 1969 UNICS : Ken Thompson, Dennis Ritchie
– 1971 + Brian Kernighan
– 1973 C
– 1978 Création de 1BSD
– 1984 100000 cpu sous UNIX
– 1984 Début de projet GNU
– 1985 Création de FSF
– 1991 Linux v0.02 annoncée sur comp.os.minix
– 1993 UNIX est le système de référence pour les serveurs
– 1996 Lancement de KDE
– 1997 Lancement de GNOME
– 2008 Linux v2.6.27
PDF sur l’histoire d’UNIX : http ://www.levenez.com/unix/
13
2. Les bases
1. Démarrage du système
2. Structure de fichiers
3. Processus
4. Noyau
14
Démarrage du système
Lancement d’un système Linux : boot et chargement du noyau
– Au boot le BIOS (ou EFI) exécute le MBR (Master Boot Record) situé sur le
premier secteur (512 octets) du support bootable choisi (disque, CD, clef USB, ...)
Le MBR :
– scanne le disque pour trouver LA partition bootable (flag)
– lance le boot loader (chargeur de démarrage) du secteur de boot (premier
secteur) de la partition bootable
Le bootloader
– charge le noyau en mémoire et l’exécute
– charge le ramdisk initrd.img en mémoire
Bootloader traditionnel : Lilo (Linux Loader) Grub (Grand Unified Bootlader)
15
/etc/lilo.conf
boot = /dev/sda2
delay = 50
image = /vmlinuz
root = /dev/sda2
label = debian
read-only
image = /vmlinuz-2.6.27
root = /dev/sda3
label = unbuntu
read-only
other = /dev/sda1
label = dos
table = /dev/sda
16
Démarrage du système
– initialisation de la machine (CPU, mémoire, registres)
– initialisation de la structure des données
– reconnaissance du matériel
– accès au système de fichier racine
– Une fois le noyau chargé en mémoire, il lance le premier processus : /bin/init
– init est le père de tous les autres processus qui seront créés par l’appel système
fork()
– init lit le fichier /etc/inittab pour savoir :
– quel est le fichier à exécuter pour continuer le chargement du système ?
– quel est le runlevel (niveau d’exécution) par défaut ?
– comment lancer les services pour un runlevel donné ?
– ...
– Les noyaux Linux 2.6.32 ont des possibilités de démarage différentes
17
inittab
– id :runlevel :action :process
– action possible
– sysinit
– once
– wait
– respawn
– ctrlaltdel
– initdefault
18
Périphérique UNIX
accès par des fichiers spéciaux : /dev/... :
– disques durs : hda, hdb, sda, sdb
– disquettes : fda, fdb
– terminaux : tty0, tty1, tty2
– ...
19
Système de fichiers UNIX
– ext2, ext3, ext4, reiserfs4, zfs, ...
– NTFS, FAT, vfat
– iso9660
– nfs, smbfs
– ...
20
Structure de fichiers
Sous Unix un fichier :
– est désigné par un nom
– possède un unique inode
– peut être dans les états : ouvert, fermé, lu, écrit
– peut être :
– un fichier ordinaire/normal
– un répertoire
– un lien symbolique
– un pseudo-fichier représentant :
– un accès caractère par caractère
– un accès par bloc
– un dispositif de communication
21
Structure de fichiers
Un inode stocke les informations suivantes :
– le type de fichier (-,d,l,c,p,b)
– le mode (permissions d’accès) du fichier (rwxr-x—)
– le nombre de liens
– l’identification du propriétaire (UID)
– l’identification du groupe (GID)
– la taille du fichier en nombre d’octets
– la date de création (atime), de dernière modification (mtime) et de dernier
accès(ctime)
– adresse du fichier (13 adresses)
22
Structure de fichiers
Représentation graphique
23
Structure de fichiers
Représentation logique du système de fichiers. C’est une arborescence, plus
généralement un graphe orienté sans cycle.
24
Structure de fichiers
– / Répertoire racine
– /bin Executables nécessaires pour le démarrage et le fontionnement en mode
“single user”
– /boot Contains static files for the boot loader.
– /dev Périphériques et fichiers spéciaux
– /etc Fichiers de configuration de la machine. contient des sous-répertoires pour
les “gros” logiciels (X11, mail, ...)
– /etc/skel Fichiers initiaux pour la création d’un compte
– /home Emplacement habituel des répertoires des utilisateurs.
– /lib Bibliothèques nécessaires au démarrage du système et aux commandes de
base
– /mnt répertoire pour les montages temporaires
– /proc Point de montage pour proc qui fournit des infos sur les processus qui
tournent et le noyau
25
– /sbin comme bin, mais pour les commandes d’administration.
– /tmp Fichiers temporaires. Peuvent être effacés sans préavis.
– /usr Habituellement sur une partition séparée, partagable, en lecture seulement.
– /usr/X11R6 The X-Window system, version 11 release 6.
– /usr/doc Documentation.
– /usr/etc Fichiers de configuration.
– /usr/include Pour le compilateur C
– /usr/lib Bibliothèques, fichiers de configuration
– /usr/local Fichiers locaux du site. Contient bin lib doc etc info man sbin src sbin
– /usr/sbin Commandes d’administration pas indispensables pour le
fonctionnement de base.
– /usr/share Répertoires partagés
– /usr/src Fichiers sources.
– /usr/src/linux Sources du noyau
– /var fichiers qui peuvent changer de taille
– /var/cache/man/cat[1-9] Pages de manuel préformattées
26
– /var/lock Fichiers verrous
– /var/log Journaux divers
– /var/run Fichiers contenant les numéros des processus des services démarrés.
– /var/spool Fichiers en file d’attente
– /var/spool/at commandes différées
– /var/spool/cron commandes programmées
– /var/spool/lpd Files d’attente des imprimantes
– /var/spool/mail Boites aux lettres
27
Noyau
Un noyau est un fichier exécutable qui se trouve sur le disque de boot Le nom de ce
fichier n’est pas standard et peut être UNIX, unix, vmunix, ... Le noyau assure la
gestion des ressources physiques et logiques du système :
– gestion des périphériques par les pilotes intégrés au noyau
– gestion des fichiers associée à la gestion des périphériques
– gestion des processus à l’aide de l’ordonnanceur (« process scheduler »)
Les processus accèdent aux services du noyau via un ensemble de fonctions
systèmes (principalement en langage C). Les primitives d’UNIX sont basées sur le
standard POSIX, définie par l’IEEE et normalisée par l’ISO.
28
Noyau
Il y a 2 types de noyaux,
Micro-Noyau :
– petit noyau avec une fonctionnalité minimale : Initialisation, communication,
contrôle de l’accès au matériel
– les autres fonctions sont mises dans des processus externes qui sont lancés
dans l’espace utilisateur
Noyau monolithique :
– un seul noyau avec la fonctionnalité complète, souvent avec des parties
sous-utilisées
29
Noyau
Avantages du micro-noyau :
– Séparation des pilotes du noyau (sécurité,stabilité,gestion)
– Taille du noyau (lancement des parties utilisés)
– Flexibilité (échange ou test des pilotes)
Avantages du noyau monolithique :
– Contrôle du noyau (sécurité)
– Vitesse (communication interne au noyau)
– Flexibilité (utilisation du matériel)
30
Noyau
Combinaison des avantages du micro-noyau avec les avantages du noyau
monolithique :
– Noyau monolithique qui peut être étendu par des modules
– Communication interne au noyau
– Flexibilité du système micro-noyau avec le chargement et déchargement des
modules
Principe d’un Linux actuel.
31
Noyau
Les commandes en charge des modules :
– lister des modules chargés (lsmod)
– charger un module (insmod)
– décharger un module (rmmod)
– charger un module avec des dépendances (modprobe)
– /etc/modules.conf ou via udevd
32
3. Nos amis
1. Compte Unix
2. Commande passwd
3. Droits sur les fichiers
4. Commande chown, chmod
5. Environnement d’éxecution
33
Compte UNIX
– un nom d’utilisateur (login) défini par un identifiant (uid)
– un mot de passe
– un groupe principal auquel appartient cet utilisateur (gid)
– un répertoire de travail (homedir)
– un langage de commandes (shell)
34
Le shell
– Plusieurs familles : sh (sh, ksh, bash, zsh) vs csh (csh, tcsh)
– Fichier de configuration par utilisateur : .profile dans $HOME (ou .bash_profile
dans certain cas pour bash sous Linux par exemple)
La plupart des exemples donnés dans le cours sont pour la famille sh.
35
Login
Le login :
– Identification de l’utilisateur par le nom de login
– Base de l’autorisation
– Unique par le système d’exploitation
– Numéro d’identification (User ID = UID)
36
passwd
Le mot de passe :
– Vérification de l’utilisateur
– N’est pas stocké en clair sur le disque
– Vérifié par un algorithme "Trap Door" :
– Correspondance entre le mot crypté et le mot stocké
– Risque d’attaque par "force brute"
37
passwd
La commande passwd va mettre à jours les fichiers :
– /etc/passwd
– /etc/shadow
– /etc/groups
– /etc/gshadow
Le fichier /etc/passwd contient :
– le nom de login
– Le mot de passe (normalement vide si shadow présent)
– UID, GID
– Le nom réel
– Le répertoire de l’utilisateur
– Le shell par défaut de l’utilisateur
38
Les mots de passe
C’est pourtant facile d’avoir un bon mot de passe :
– élargir l’alphabet : minuscules, majuscules, chiffres et caractères de ponctuation
=> augmente le nombre de combinaisons possibles
– agrandir la taille : plus de 8 caractères
=> augmente le nombre de combinaisons possibles
– facile à retenir (première lettre des mots d’une phrase)
=> pas besoin de l’écrire
Exemple : FIP,c1fg@S! (« FIP, c’est une filière géniale à Strasbourg ! ») :-)
39
Droits d’accès
Types des droits :
– Lecture (r)
– Écriture (w)
– Exécution (x)
Notation :
– rw-r—–
– 640
Exemple :
– $ ls -l file
– -rw-rw-rw- 1 jmoreau None 38 Feb 25 2008 file
40
Principe du confinement, ou du moindre privilège
Problème : comment changer son mot de passe (nécessite le privilège d’écrire dans
/etc/passwd , ou équivalent)
Attribut Set-User-Id-on-exec « bit setuid » sur les programmes : le processus est
exécuté sous l’identité effective du propriétaire du fichier exécutable (et non de
l’utilisateur réel)
Exemple :
$ ls -l /usr/bin/passwd
-r- sr-xr-x 2 root wheel 5828 Oct 9 20:24 /usr/bin/passwd
Attribut Set-Group-Id-on-exec « bit setgid » : idem setuid, mais avec le groupe.
41
Droits d’accès - Les cas particuliers
SUID, SGID (set user/group ID) :
– Droit s (avec x) ou S (sans x), 4000 (user) ou 2000 (group)
– Changement de propriétaire du programme en exécution (/bin/passwd)
Sticky Bit :
– Droit t (ou T), 1000
– Mis sur un répertoire
– Permet la suppression d’un fichier seulement au propriétaire
42
Principe du confinement, ou du moindre privilège
Utilisations de cette élévation de privilège :
– changement de mot de passe, de shell, etc.
– ajout d’un fichier dans la file d’attente du gestionnaire d’imprimante
– consultation d’informations système (netstat )
– écriture d’un message sur la console d’un ou plusieurs autres utilisateurs
– etc.
Problème potentiel : élévation de privilège => l’impact des bogues est plus grave
=> programmation plus difficile (environnement hostile)
=> effort de réduction du nombre de programmes avec le bit setuid dans les Unix
sécurisés
43
Droits d’accès
Modifications des droits :
– chmod u+rw file
– chmod 640 file
Modification du propriétaire :
– chown jmoreau.users file
– chown 512 file
Droit par défaut géré par le umask (complément à 777). Exemple : droit 644 =>
umask 133
44
Environnement
– Trouver une commande : which commande
– Cherche dans la variable PATH
– Pour connaitre les chemins : echo $PATH
45
4. Les commandes
1. La documentation sous Unix
2. Les variables shell
3. Les commandes de base
4. Les commandes "avancées"
46
Documentation
Le système le plus important : man
– man ls
– man man
– man passwd
– man 5 passwd
Les niveaux de man :
1. Programmes exécutables ou commandes de l’interpréteur de commandes
(shell)
2. Appels système (Fonctions fournies par le noyau)
3. Appels de bibliothèque (fonctions fournies par les bibliothèques des
programmes)
4. Fichiers spéciaux (situés généralement dans /dev)
47
5. Formats des fichiers et conventions.
6. Jeux
7. Divers
8. Commandes de gestion du système (généralement réservées à root)
9. Noyau
48
Documentation
Un système récent : info
– info est plus puissant que man mais moins standard
– plus difficile à manipuler que man
– format officiel du projet GNU
– pages plus à jours que le man
Une source supplémentaire : /usr/share/doc
– emplacement des HOWTO : documentation lourde pour un projet
– nombreux exemples
D’autres sources :
– whereis
– locate
– apropos
– ...
Ne jamais sous-estimer la documentation fournie avec votre système !
49
Variable
Le shell peut utiliser des variables :
– les variables sont non typées
– une simple déclaration A=monFichier
– attention, il ne faut pas mettre d’espace autour de "="
– pour utiliser la variable :
– $A ou ${A}
– variables spéciales :
– Paramètres : $1 $2 $3...$9
– Nom du script : $0
– Valeur de retour : $ ?
– Process ID du shell : $$
50
Variable
Chaîne de caractères, 3 possibilités :
– Pas de modifications avec ” (simples quotes) :
– echo ’Ceci est un $A’
– » Ceci est un $A
– Évaluation des variables et des commandes avec "" (guillemets) :
– A=1
– echo "Ceci est un $A"
– » Ceci est un 1
– Exécution du contenu avec “ (quotes inversées) :
– le fichier file contient le texte : bonjour
– echo ‘cat file‘
– » bonjour
51
Variable
Variable tradionnellement définie :
– HOME
– LOGIN
– PATH
– PWD
– USER
– ...
On peut obtenir l’ensemble des variables via la commande : env
52
Commande de base
ls - LiSt - liste le contenu d’un répertoire
– ls
– ls rep
– ls -l /tmp
– ls ../etc
– ls -altr
53
Commande de base
cd - Change Dir - modifie le répertoire courant
– cd
– cd /tmp
– cd ..
– cd /usr/local
– cd -
54
Commande de base
cp - CoPy - copie un fichier (au sens général)
– cp file1 file2
– cp -r dir1 /tmp
– cp * /tmp
55
Commande de base
mv - MoVe - déplace (ou renomme) un fichier (au sens général)
– mv file1 file2
– mv file1 /tmp/
– mv -f file1 file2
– mv -v file1 file2
56
Commande de base
ln - LiNk - crée un lien
– ln -s file1 file2
– ln file1 file2
57
Commande de base
mkdir - MaKe DIRectory - crée un répertoire
– mkdir /home/user/jmoreau
– mkdir -p /tmp/titi/toto
58
Commande de base
rm - ReMove - supprime le fichier ou le répertoire
– rm file1
– rm -f file1
– rm -rf /tmp/toto/
– rm -i file1
59
Commande de base
pwd - Path on Working Directory - retourne le répertoire de travail
– pwd
60
Commande de base
id/whoami - IDentity - retourne l’identité de l’utilisateur
– id
– whoami
61
Commande de base
cat - conCATenate - affiche des fichiers
– cat file1
– cat file1 file2
– cat -n file1
62
Commande de base
more/less - affiche des fichiers page par page
– more file1
– less file1
63
Commande avancée
find - Recherche un fichier (au sens large)
– find .
– find . -name "file1"
– find . -name "file1 -exec {} \ ;
–
64
Commande avancée
gzip/gunzip - applique l’algorithme Lempel-Ziv sur le fichier
– gzip file
– gunzip file.gz
65
Commande avancée
tar - Tape ARchiver - crée une archive
– tar cf file.tar dir1
– tar xf file.tar
– tar zxvf file.tar.gz dir1
66
Commande avancée
du - Disk Usage - Affiche des statistiques sur les systèmes de fichiers montés
– du
– du -k
– du -h
– du -hs
67
Commande avancée
df - Display Free - Affiche l’espace disponible
– df
68
Commande avancée
grep - affiche des lignes qui contiennent ou pas l’expression
– grep XYZ file1
– grep -v XYZ file1
– grep -n XYZ file1
– grep -i XYZ file1
69
Commande avancée
head/tail - affiche les premières/dernières lignes
– head -5 file1
– head -c 20 file1
– tail -5 file1
– tail -f file1
70
Commande avancée
sort - Tri les données
– sort
– sort -n
– sort -r
71
Commande avancée
uniq - Applique un filtre sur les ligne répétées
– uniq
– uniq -c
72
Commande avancée
tr - TRanslate - convertit les caractères de la première liste dans les caractères de
la deuxième liste à la même position
– tr [A-Z][a-z] file1
– tr -d ’\15’ < winfile.txt > unixfile.txt
73
Commande avancée
bg/fg - BackGround - Envoi le processus en arrière/avant plan
– bg monDemon
– fg
74
Commande avancée
ps - Process Status - Donne des informations sur les processus en cours
– ps -e
– ps -a
– ps -ea
75
5. Les services
1. Le démarrage des services (ou "démons")
2. Les exemples de base
3. Les exemples "avancées"
76
initd
– cf Chapitre 1, le noyau donne la main à init à la fin du chargement
– init a le PID n °1– init est le " père " de tous les processus du système
– en fonction du runlevel il démarre tel ou tel ensemble de services
77
runlevel
Pour rappel (cf Chapitre 1). 0. Arrêt du système effectué par la commande init 0
(shutdown -h sous Linux)
1. Mode single-user (mode mono-utilisateur) pour des opérations particulières
(maintenance : un seul utilisateur, pas de mode réseau, ...)
2. Mode multi-utilisateurs, réseau activé avec services réseaux de base (sans
services réseau sous Linux)
3. Mode multi-utilisateurs, réseau activé avec services réseaux avancés (avec
services réseau sous Linux)
4. Mode multi-utilisateur spécifique
5. Sur certains Unix et suivant l’architecture matérielle, maintenance matérielle
depuis un firmware de la machine(Sous Linux mode multi-utilisateurs avec
interface graphique)
6. Reboot de la machine (shutdown -r)
78
scripts de démarrage
2 cas : BSD ou SYSTEM V
– BSD : utilisation d’un ou deux scripts qui gèrent l’ensemble des tâches à
accomplir (rc1.d, rc.local, ...)
– SYSTEM V avec un script qui lance divers démons et tâches réparties au sein
d’une arborescence spécifique dépendant du runlevel.
79
scripts de démarrage
– inittab exécute en fonction du runlevel (exemple level 3) : /etc/rc.d/rc3
– /etc/rc.d/init.d : scripts d’arrêt et de relance des services
– /etc/rc<niveau>.d/ : un répertoire par niveau(rc3.d, rc5.d, ...), liens vers les scripts
contenus dans /etc/rc.d/init.d.
– Les liens contenus dans /etc/rc<niveau>.d/
– Snn<NomService> : S pour start, nn est une valeur numérique sur deux
caractères(01 05 10 15 ou autre) déterminant l’ordre de lancement des
services
– Knn<NomService> : K pour Kill, nn la valeur déterminant l’ordre d’arrêt des
services.
– exemples
– S00network — S01nfs
– K00network — K01nfs
80
Script de démarrage des services
Exemple /etc/rc2.d/S* :
/etc/rc2.d/S10sysklogd /etc/rc2.d/S20lpd
/etc/rc2.d/S11pcmcia /etc/rc2.d/S20makedev
/etc/rc2.d/S12kerneld /etc/rc2.d/S20nfs-kernel-serve r
/etc/rc2.d/S14ppp /etc/rc2.d/S20openldapd
/etc/rc2.d/S19bind /etc/rc2.d/S20postgresql
/etc/rc2.d/S19nfs-common /etc/rc2.d/S20sendmail
/etc/rc2.d/S19nis /etc/rc2.d/S20ssh
/etc/rc2.d/S19nscd /etc/rc2.d/S25nfs-server
/etc/rc2.d/S20apmd /etc/rc2.d/S89atd
/etc/rc2.d/S20autofs /etc/rc2.d/S89cron
/etc/rc2.d/S20exim /etc/rc2.d/S91apache
/etc/rc2.d/S20gpm /etc/rc2.d/S99gdm
/etc/rc2.d/S20inetd /etc/rc2.d/S99rmnologin
/etc/rc2.d/S20irmanager /etc/rc2.d/S99wdm
/etc/rc2.d/S20logoutd /etc/rc2.d/S99xdm
81
Script de démarrage des services
Les services ont généralement une syntaxe simple permettant de les lancer ou de
les stopper.
– start : démarre le service
– stop : arrêt du service
– status : état (lancé, arrêté, PID, ...) du service
– restart : effectue un arrêt/relance du service
– reload : dans certains cas seulement, le service est invité à relire sa configuration
82
Script de démarrage des services
#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/sbin/lpd
PIDFILE=/var/spool/lpd/lpd.lock
test -x $DAEMON -a -f /usr/sbin/pac || exit 0
case "$1" in
start)
echo -n "Starting printer spooler: lpd"
if start-stop-daemon --quiet --stop --signal 0 \
--pidfile $PIDFILE --name lpd
then
echo " already running."
exit
fi
/sbin/start-stop-daemon --start --quiet --exec $DAEMON
echo "."
;;
stop)
echo -n "Stopping printer spooler: lpd"
83
if start-stop-daemon --quiet --stop --signal 0 \
--pidfile $PIDFILE --name lpd
then
PID=‘cat $PIDFILE‘
start-stop-daemon --quiet --stop --exec \
$DAEMON --pidfile $PIDFILE --name lpd
# Now we wait for it to die
while kill -0 $PID 2>/dev/null; do sleep 1; done
echo "."
else
echo " not running.";
fi
;;
force-reload|restart)
$0 stop
$0 start
;;
* )
echo "Usage: /etc/init.d/lpd {start|stop|restart|force -reload}"
exit 1
esac
exit 0
84
Script de démarrage des services
Sous Linux, le répertoire /var/lock/subsys contient la liste des services lancés, un
fichier par service. Le répertoire /var/run contient dans certains cas la liste des PID
et des fichiers de verrouillage de certains services.
La commande service permet d’effectuer des actions sur les services sans se
déplacer dans /etc/rc.d/init.d.
– service [-f -R -s -d] <nomService> action
– -f : full-restart, redémarrage complet du service
– -R : full-restart-all : redémarrage de tous les services actuellement lancés
– -s : status-all : statut de tous les services lancés
– -d : debug, informations complémentaires
85
ouverture de session
– init lance le processus getty(gestionnaire de terminal).
– getty lance un prompt attendant la saisie du nom de l’utilisateur.
– Avant ce prompt le contenu du fichier /etc/issue est affiché.
– Le nom validé, le terminal exécute la commande login qui va demander la saisie
du mot de passe.
– Si le mot de passe est correct (vérification dans /etc/passwd et /etc/shadow ou
autre système), alors login affiche le contenue de /etc/motd et exécute un
shell(toujours défini dans /etc/passwd).
– Une fois la session terminée (fin du shell), init relance un terminal pour une
nouvelle connexion. (respwan dans inittab)
– Le paramétrage du terminal se fait par le fichier /etc/gettydefs. C’est getty qui va
permettre un bon fonctionnement du terminal de l’utilisateur, en s’adaptant :
VT100, VT220, XTERM, CONSOLE, ...
86
Arrêt du système
Arrêt :
– shutdown -h now
– halt
Redémarrage :
– shutdown -r now
– reboot
87
Exemples de services de base
– /etc/init.d/network : script de gestion du réseau
– /etc/init.d/sshd : script de gestion du serveur de shell à distance
– /etc/init.d/cupsd : script de gestion du serveur d’impression
– /etc/init.d/syslogd : script de gestion du serveur de log
– ...
88
Exemples de services "avancés"
– /etc/init.d/apache : script de gestion du serveur web Apache
– /etc/init.d/nfsd : script de gestion du serveur de système de fichiers réseau NFS
– ...
89
syslog
Le démon syslog(processus appelé syslogd) permet de recevoir, traiter et stocker
des messages d’erreurs(ou d’informations) émis par le noyau ou certains démons.
/etc/syslog.conf permet de définir l’origine, l’importance et la destination de chaque
message, sous forme de deux champs :
– L’origine
– Le niveau
90
syslog
L’origine définit un ensemble de systèmes et de sous-systèmes(noyau, services). La
liste, extensible, est composée à l’origine des éléments suivants :
– auth : service de sécurité et d’authentification
– cron : service cron
– daemon : les démons du système
– kern : le noyau
– lpr : le service d’impression
– mail : la messagerie
– news : le réseau
– syslog : syslog lui-même
– user : messages des processus utilisateurs
– uucp : Unix to Unix CoPy
91
syslog
Le niveau définit la "criticité" :
– emerg : Le système est inutilisable
– alert : Une intervention immédiate est indispensable
– crit : Erreur critique pour le sous-système
– err : Erreur de fonctionnement
– warning : Avertissement
– notice : Évènement normal méritant d’être signalé
– info : Pour information seulement
– debug : Pour la mise au point
– none : Jamais
92
syslog
On peut envoyer les messages de syslog vers différentes destinations
– fichiers (arborescence /var/log)
– mail à un utilisateur
– console
– serveur syslog distant (port udp/tcp 514)
– ...
93
6. Matériels et logiciels
1. RAID
2. Partionnement
3. Logiciels
4. Planification de tâches
94
RAID
De part l’impact d’une indisponibilité d’un service tournant sur une machine
« serveur », les choix matériels pour ces machines ne sont pas ceux qui sont faits
pour les postes utilisateurs traditionnels.
Le cas le plus fréquent est le choix de la technologie disques. En effet les disques
sont accédés beaucoup plus souvent et de manière beaucoup plus aléatoire.
95
RAID
On distingue deux types de supports RAID :
– un support matériel : Le contrôleur de disque gère lui-même le RAID et la
tolérance aux pannes.
– un support logiciel : le système Unix gère lui-même le RAID à l’aide de pilotes et
d’outils particuliers propres au système. Il devient ainsi possible de faire du RAID
même avec un contrôleur non prévu à cet effet.
96
RAID
Disques en miroir :
Les écritures de données sont dupliquées sur plusieurs disques, généralement
deux, pour se prémunir des défaillances d’un disque. Dans ce cas il reste toujours
un disque disponible.
Bandes de données ("data striping","striped disk") :
Il s’agit de découper les données à écrire sur disque et segments séquentiels et
contigus pouvant résider sur plusieurs disques physiques distincts. L’ensemble des
segments d’une bande constitue un disque logique. Une solution plus élaborée est
l’utilisation d’une bande de parité calculée à partir des données d’une autre bande.
Il est alors possible de reconstruire les données.
97
RAID
– RAID 0 : Un disque sans redondance avec bandes : agrégat de plusieurs
partitions en une seule.
– RAID 1 : Des disques en miroir, mirroring
– RAID 2 : Miroir avec écriture en parallèle et correction d’erreur (« EEC »)
– RAID 3 : Écriture en parallèle avec contrôle de parité.
– RAID 4 : Bandes avec parité, la bande de parité est sur un seul disque
– RAID 5 : Bandes avec parité, la bande est répartie sur plusieurs disques.
Tolérance de panne d’un seul disque.
– RAID 6 : Bandes avec deux fonctions de parité, réparties sur deux disques.
Tolérance de panne de deux disques simultanés.
– RAID 1+0 (10) : Bandes en mirroir
Une solution RAID est une solution de tolérance aux pannes et ne remplace jamais
une sauvegarde.
98
Partionnement
Une fois la technologie « disque » choisie, il est important de décider comment
répartir les données sur le(s) disque(s). Une installation de base ne nécessite que
deux partitions, la partition racine / et une partition de swap (mémoire virtuelle). Le
kernel Linux 2.4 est notamment plus performant lorsqu’un swap est disponible : il
peut ainsi y déplacer des données non fréquemment utilisées.
99
Partionnement
On peut également subdiviser le système en plusieurs partitions. Les raisons d’un
tel partitionnement plus fin sont :
– performance : plusieurs périphériques swap distribués sur plusieurs partitions de
disques-durs différents ; séparation des logs et des queues (/var/log et /var/spool)
sur un serveur de mail très chargé (noter que cela augmente le risque de panne !)
– indépendance à la réinstallation ou au changement de distribution : mettre /home
sur un répertoire séparé
– limiter le risque de casse en cas de problème, ou assurer une limite sans quotas
par utilisateurs/groupes
– spécifier des options de montages spéciales pour la performance (noatime,
async) ou pour la sécurité (noexec, nosuid, etc)
100
Partionnement
La performance est souvent un problème négligé, mais il est essentiel. Un bon
partitionnement peut contribuer à améliorer la performance globale du système. Il
faut commencer par défnir les tâches ou les applications que le système doit
exécuter. Exemple de partionnement pour un serveur de messagerie :
101
Partionnement
Exemple de partionnement pour un serveur de développement :
102
Partionnement
Exemple de partionnement pour un serveur de bases de données :
103
Partionnement
Exemple de partionnement pour un serveur web :
104
Les logiciels sous UNIX
– à partir des sources
– sous Debian
– sous RedHat
105
Les logiciels sous UNIX
A partir des sources :
– télécharger, vérifier, extraire, configurer, compiler, installer
– utilisation de gzip, gunzip, bzip2, tar
– puis de configure, make, make install
106
Les logiciels sous UNIX
Sous Debian :
– /etc/dpkg/dpkg.cfg, /etc/apt/apt.conf, /etc/apt/sources.list
– /var/lib/dpkg/*
– dpkg, dpkg-reconfigure
– apt-get
– dselect
Très bon système de dépendances.
107
Les logiciels sous UNIX
Sous RedHat :
– rpm
– /etc/rpmrc, /usr/lib/rpm/*
– urpmi/yum
Système précédement moins performant, mais maintenant pratiquement équivalent
à apt.
108
Planification de tâches
Le démon cron exécute des commandes pour un utilisateur, selon des critères
temporels : date et heure : La périodicité (tou(te)s les) quand elles sont soumises
par la commande crontab. L’échéance (à telle heure) quand elles sont soumises par
la commande at. A leur tour et dès que possible quand elles sont soumises par la
commande batch.
109
Planification de tâches
Il peut y avoir des contraintes d’utilisation.
– L’utilisateur doit avoir l’autorisation de soumettre une requête. La liste des
utilisateurs autorisés est située dans le fichier cron.allow, et la liste des
utilisateurs interdits dans cron.deny, dans/usr/lib/cron. Pour les commandes at et
batch les fichiers sont at.allow et at.deny. Si ces fichiers n’existent pas seul root
est autorisé à utiliser ces commandes. Pour autoriser tout le monde, il suffit de
créer un fichier deny vide (aucun utilisateur interdit).
– Le démon cron exécute une commande dans un environnement réduit (seules les
variables HOME, LOGNAME et SHELL sont initialisées avec des valeurs
simples). Les autres variables doivent êtres initialisées ou récupérées par ou
depuis un script.
– Le démon cron mémorise l’historique des actions dans /usr/lib/cron/log. Il faut
penser à purger régulièrement ces fichiers (ou faire des rotations).
110
Planification de tâches
Le démon cron fonctionne à l’aide d’une table, appelée une « crontable ». C’est un
fichier texte simple. Pour modifier sa crontable personnelle on utilise la commande
crontab -e. Le format est le suivant : Minutes Heures Jour du mois Mois Jour de la
semaine Commande
111
Planification de tâches
On utilise le format suivant pour les valeurs périodiques :
– Une valeur pour indiquer quand il faut exécuter la commande. Ex : la valeur 15
dans le champ minute signifie la quinzième minute
– Une liste de valeurs séparées par des virgules. Ex : 1,4,7,10 dans le champ Mois
pour Janvier, Avril, Juillet, Octobre
– Un intervalle de valeurs. Ex : 1-5 dans le champ Jour de la Semaine indique du
lundi (1) au vendredi (5). Le 0 est le dimanche et le 6 le samedi.
– Le caractère * pour toutes les valeurs possibles. Ex : * dans le champ Jour du
mois indique tous les jours du ou des mois.
112
Planification de tâches
Exemples : Exécution de df tous les jours, toute l’année, tous les quarts d’heure :
0,15,30,45 * * * * df > /tmp/libre
Exécution d’une commande tous les jours ouvrables à 17 heures :
0 17 * * 1-5 finTravail.sh
Pour lister les crontabs actives : crontab -l Pour supprimer la crontab active : crontab
-r Pour éditer la crontab d’un utilisateur particulier : crontab -u user
113
Planification de tâches
La commande « at » exécute une commande à une date et une heure données. La
commande est lue depuisl’entréestandard. Si celle-ci est stockée dans un fichier, il
faudra rediriger celui-ci vers la commande.
\$ at heure [date] < ficCommandes
Exemples : Exécution de ficcommandes à 15 heures
\$ at 1500 < ficCommandes
Exemple : Exécution à minuit
\$ at midnight < ficCommandes :
Exemple : Exécution dans trois heures
\$ at now + 3 hours < ficCommandes
114
7. Réseau
1. Rappel sur IP
2. La configuration réseau
3. Le client DHCP et le client DNS
4. Le filtrage IP par iptables
115
Rappel sur IP
– Créé par la DARPA : Defense Advanced Research Project Agency dans les
années 70 pour le projet ARPANET
– Dans les faits, travail de l’université de Berkeley pour ajouter TCP/IP à UNIX
BSD4
– Généricité et standardisation assurées par divers organismes :
– Internet Activities Board : protocoles TCP/IP
– Internet Reseach Task Force : protocoles au-dessus d’IP
– Internet Engineering Task Force : fonctionement du NET
– différents Network Information Center : adresses
– IP : le coeur du système : version actuelle v4, IPv6 disponible depuis de
nombreuses années, mais évolution difficile
116
IP sous UNIX
– Présence d’une carte réseau ! ou en tout cas d’une carte fournissant de la
modulation/démodulation de fréquence ...
– Installation d’un drivers pouvant gérer cette carte :
– soit via l’intégration du drivers dans le noyau
– soit via la présence du drivers sous forme de module
– Vérification de la présence d’une carte réseau et du drivers associé :
– /var/log/messages
– dmesg
– lspci, lsdev
117
Interface réseau
– Présence d’une « pseudo-interface » pour faire la correspondace entre les
couches réseau et les couches de transport TCP/IP
– eth0, eth1, em0, wifi0, ppp0 ...
– La configuration de la pseudo-interface se fait via ifconfig
eth0:UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST mtu 1500
inet 192.168.0.10 netmask 0xffffff00 broadcast 192.168.0 .255
ether 00:19:e3:d3:e9:8f
media: autoselect status: active
supported media: autoselect
118
Interface réseau
– eth0 : pseudo-interface ethernet 0
– adresse IP : 192.168.0.10
– masque sous-réseau : 0xffffff00, 255.255.255.0, /24
– adresse de diffusion : 192.168.0.255
ifconfig eth0 down
ifconfig eth0 192.168.0.10 netmask 255.255.255.0 broadca st 192.168.0.255 ip
119
Interface réseau
– Possibilité de créer des alias (IP-Aliasing) : eth0 :0
– Possibilité de créer des pseudo-interfaces à partir d’autres pseudo-interfaces :
vlan0.0 :0 (utile pour les VLANs ou l’ agreggation de liens)
– Configuration fine du module en charge de la carte réseau :
– en paramêtre du module lors du chargement : modprobe ipw2100 mode=2
channel=4
– via mii-tool : mii-tool –force=100baseTx-FD eth0
– via ethtool : ethtool -s eth0 speed 10 duplex full autoneg off
120
Le routage IP
– A chaque émission de paquet IP, un aiguillage est opéré : « le routage »
– Par où dois-je envoyer ce message pour qu’il arrive à destination ?
– l’adresse du paquet va être comparée à chaque route
– dès correspondance, le paquet est envoyé
– si aucune route ne correspond, passage par la route par défaut
121
Le routage IP
– Pour configurer les route, utilisation de la commande : route
[jmo@jmoreau]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.99.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
[jmo@jmoreau]# route add default gw 192.168.99.254
[jmo@jmoreau]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.99.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.99.254 0.0.0.0 UG 0 0 0 eth0
122
Le routage IP
– route add default gw ...
– route add -net 192.168.1.0 netmask 255.255.255.0 eth0
– route add -host 192.168.2.1 eth0
– ...
123
fichier de configuration du réseau
– RedHat/Fedora : /etc/sysconfig/network-scripts
– Debian/Ubuntu : /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.9
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.2
dns-nameservers 192.168.1.7
dns-search localdomain
Prise en compte des paramêtres après un /etc/init.d/network restart
124
Le client DHCP
– Allocation dynamique de paramêtres réseaux
– Dynamic Host Configuration Protocol (DHCP)
– Le but : s’adresser à un serveur qui sait pour nous quels sont nos paramêtres
réseaux
– Associé à BOOTP/TFTP, possibilité d’aller chercher un fichier (une image disque
par exemple)
– DHCP fonctionne au-dessus d’UDP.
125
Le client DHCP
apt-get install dhcp3-client
Dans le fichier /etc/network/interfaces
# The loopback interface
auto lo
iface lo inet loopback
# The first network card - this entry was created during the De bian installation
# (network, broadcast and gateway are optional)
auto eth0
iface eth0 inet dhcp
Prise en compte des paramêtres après un /etc/init.d/network restart
126
Le client DNS
– La configuration peut être fournie de différentes manières :
– via le fichier /etc/network/interfaces ( dns-nameservers, dns-search)
– via le client DHCP
– via le fichier /etc/resolv.conf
nameserver 212.27.40.240
nameserver 212.27.40.241
2 des serveurs DNS de la société FREE.
127
Le filtrage IP
– Un filtre à paquets est un programme qui examine l’en-tête des paquets qui
passent, et décide du sort du paquet entier. Il peut choisir de le détruire, le laisser
passer, répondre qu’il n’est pas intéressé, etc...
– Sous Linux, le filtrage de paquets s’effectue au niveau du noyau.
– Il offre les même fonctionnalités qu’un firewall dédié.
– Netfilter : architecture de filtrage IP du noyau
– IPTables : application de contrôle de cette architecture
128
Le filtrage IP
Applications
..............
.^. |
_ | | _ OUTPUT
INPUT |_|----+ +--->|_|
.^. \
| \
| \
décision de _ \
routage -------->|_|FORWARD--+
.^. |
_ | V
PREROUTING |_|-+ _
.^. |_|POSTROUTING
| |
| V
Interface d’entrée Interface de sortie
129
Le filtrage IP
La commande iptables sert à administrer ces fonctionnalités de filtrage. Cettecommande accepte de nombreuses options. Pour ajouter des règles de filtrage quis’applique aux paquets routés, la première forme de la commande utilisée est :
iptables -A FORWARD règle
130
Le filtrage IP
La règle suivante autorise les paquets en provenance de l’adresse ip IpSrc, portPortSrc et à destination de l’adresse IP IpDst, port PortDst, de protocole Proto (quipeut être tcp ou udp).
iptables -A FORWARD -p Proto -s IpSrc/Nbm --sport PortSrc \
-d IpDst/Nbm --dport PortDst -j ACCEPT
131
Le filtrage IP
La règle suivante bloque les paquets en provenance de IpSrc et à destination deIpDst, de protocole Proto (qui peut être tcp, udp ou icmp ; en l’absence de protocolela règle bloquera tous les paquets IP correspondants).
iptables -A FORWARD -p Proto -s IpSrc/Nbm -d IpDst/Nbm -j DRO P
On utilisera également les commandes suivantes :
iptables -L FORWARD -n
iptables -F FORWARD
iptables -P FORWARD ACCEPT
iptables -P FORWARD DROP
132
Le filtrage IP
– Lorsqu’une règle est ajoutée avec la commande iptables, elle est immédiatement
active.
– Les ports et le protocole sont optionnels. Ainsi on peut simplement construire un
filtre sur des adresses IP (comme les access-list simples sur cisco).– Le champ Nbm (nombre de bits pour le masque) après IpSrc ou IpDst indique le
nombre de bits à 1 consécutifs composant le masque. Cette notation s’appelleégalement notation CIDR. Exemple :195.10.19.0/24 : 195.10.19.0 255.255.255.0 (24 bits à 1 = ma sque de classe C)
10.1.1.3/32 : 10.1.1.3 255.255.255.255 (tous les bits à 1 = m asque "host")
– Il existe une option très utile pour orienter le filtrage. Il s’agit de l’option -ipermettant de préciser pour quelle interface réseau d’entrée le filtre s’applique :
iptables -A FORWARD -p ... -s ... -d ... -i eth0 -j DROP
133
Le filtrage IP
# Insérer les modules de suivi de connexion (non nécessaire s i
# compilé dans le noyau).
insmod ip_conntrack
insmod ip_conntrack_ftp
# Créer une chaîne qui bloque les nouvelles connexions, sauf celles
# qui viennent de l’intérieur.
iptables -N block
iptables -A block -m state --state ESTABLISHED,RELATED -j A CCEPT
iptables -A block -m state --state NEW -i ! ppp0 -j ACCEPT
iptables -A block -j DROP
# Sauter sur cette chaîne à partir des chaînes INPUT et FORWAR D.
iptables -A INPUT -j block
iptables -A FORWARD -j block
134
Le filtrage IP
# ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms
--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.2/0.2/0.2 ms
# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
# ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
--- 127.0.0.1 ping statistics ---
1 packets transmitted, 0 packets received, 100% packet loss
#
135
8. Le monde des serveurs
1. HTTP
2. SSH
3. NFS/SMBFS
4. NIS/LDAP/Kerberos
136
HTTP, HTML, Apache
– HTML : Hypertext Markup Language, HTML permet en particulier d’insérer des
hyperliens dans du texte
– HTTP : Hypertext Transfer Protocol, protocole de communication client-serveur
développé pour le World Wide Web. Il est utilisé pour transférer les documents
(document HTML, image, feuille de style, etc.) entre le serveur HTTP et le
navigateur Web (inventé par Tim Berners-Lee)
– Apache : Logiciel libre et gratuit utilisable en tant que serveur HTTP et extrêment
répandu. (Janvier 2008 : 50,93 selon Netcraft)
137
Principe d’un serveur Web
138
Principe d’un serveur Web
139
Principe d’un serveur Web
140
HTTP
telnet www.google.fr 80
GET / HTTP/1.0
Host: example.com
Referer: http://example.com/
<html>
<head>
<meta http-equiv="content-type" content="text/html; ch arset=ISO-8859-1">
<title>Google</title>
....
</center>
</body>
</html>
Connection closed by foreign host.
141
Les serveurs Web
– Mode statique, le serveur dispose de pages HTML totalement écrites et ne
nécessitant aucune autre information pour être affichée
– Mode dynamique, via un langage complémentataire à HTML, la page va
interroger une base de données qui va lui fournir le complément d’informations
nécessaire à son affichage.
– Dans ce dernier cas, il existe un ensemble extrêment connu et utilisé : LAMP
(Linux, Apache, Mysql, PHP)
142
Apache
– successeur de NCSA HTTPd 1.3
– support de multiples platformes
– support multithread
– support d’IPv6
– modules d’interprétation pour Perl, PHP, Python, Ruby, ...
– modules proxy, ré-écriture d’URL, .htaccess, ...
143
Apache : .htaccess
– les .htaccess sont des fichiers de configuration d’Apache
– ils peuvent être placés dans n’importe quel répertoire du site
– ils permettent de modifier les droits d’accès, créer des redirection
AuthType Basic
AuthName "Password Required"
AuthUserFile /www/passwords/password.file
AuthGroupFile /www/passwords/group.file
Require Group admins
144
Apache : virtualhost
# cd /etc/apache2/sites-enabled
# vi www.mondomaine.fr
# Ne mettre cette ligne que dans UN seul fichier
NameVirtualHost 192.168.30.220
<VirtualHost 192.168.30.220>
ServerName www.mondomaine.fr
ServerAlias mondomaine.fr
ServerAdmin webmaster@mondomaine.fr
DocumentRoot /var/www/www.mondomaine.fr
CustomLog /var/log/apache2/www.mondomaine.fr_access. log combined
ErrorLog /var/log/apache2/www.mondomaine.fr_error.lo g
</VirtualHost>
# cd /var/www
# mkdir www.mondomaine.fr
# echo "<html><body>www.mondomaine.fr</body></html>" >
/var/www/www.mondomaine.fr/index.html
Pris en compte après /etc/init.d/apache2 restart
145
Apache sur Debian
– apt-get install apache2
– apt-get remove apache
– /var/log/apache2/access.log : contient les logs de connexion au serveur Web
– /var/log/apache2/error.log : contient les erreurs survenues
146
SSH : définition
– SSH (Secure SHELL) permet de se connecter à un ordinateur distant et de
disposer d’un shell sécurisé.
– Par défaut, le serveur SSH attend les connexions distantes sur le port 22 /
protocole TCP.
Pour installer un serveur SSH, on utilise la commande suivante :
– apt-get install ssh
147
SSH : principes
– ssh <login>@<nom ou adresse IP du serveur>
– ssh jmo@mamachine ou ssh mamachine -l jmo
– ssh mamachine -p 2222
– ssh -X mamachine
148
SSH : fonctionnalités
– scp, sftp, ...
– existe sous windows via Putty, Winscp ou cygwin
– clé automatique via la création d’un jeu de clé publique/privé avec dépôt de la clé
publique dans le homedir côté serveur ( /.ssh/authorized_keys).
149
SSH : tunnel
ssh -L 2012 :serveur.exemple.org :80 toto@serveur.exemple.org
150
Système de fichiers réseau
– afin de fournir un espace de stockage commun
– pour fournir un espace de sauvegarde
– pour centraliser l’information sur du matériel performant
– ...
151
NFS
– Le protocole NFS (Network File System) permet de partager des fichiers dans les
réseaux Unix.
– Le principe de montage est le même que pour un disque local
– Développé par la société SUN dabs les années 1980
– Version 2 et 3 principalement utilisé, v4 disponible depuis quelques temps
– Le noyau doit être compilé avec le support NFS
152
NFS : configuration
– apt-get install nfs-kernel-server
– man exports : /etc/exports
$ cat /etc/exports
# fichier exemple /etc/exports
/ master(rw) trusty(rw,no_root_squash)
/projects proj * .local.domain(rw)
/usr * .local.domain(ro) @trusted(rw)
/home/joe pc001(rw,all_squash,anonuid=150,anongid=10 0)
/pub (ro,insecure,all_squash)
Prise en compte uniquement après /etc/init.d/nfs-kernel-server restart ou via exportfs -ra
153
NFS et les RPC
– De manière sous-jacente NFS utilise les RPC
– RPC : Remote Procedure Call
– RPC : Ensemble d’apels de procédures à distance permettant la transparence
d’utilisation locale ou distante. Fonctionne au niveau de la couche session du
modèle OSI.
– Portmap : tableau de correspondance entre port IP et numéro de programme
RPC
$ rpcinfo -p localhost
100000 2 tcp 111 portmapper
...
100005 2 udp 32768 mountd
154
NFS côté client
– Les services (portmap et nfs) doivent être lancés
– Puis le montage doit être réalisé
mount -t nfs <nom ou adresse IP du serveur NFS>:<répertoire p artagé> <point de montage>
$ mount -t nfs pc230:/home/partage /mnt
$ cat /etc/fstab
...
pc230:/home/partage /mnt nfs defaults 0 0
...
155
smbfs/CIFS
– Samba est l’implémentation du protocole SMB (Server Message Block) sous Unix
/ Linux. Il sert à partager des fichiers et des imprimantes avec les réseaux
Microsoft.
– Samba lance deux services : smbd et nmbd.
– Le protocole SMB est tout sauf performant : il pollue le reseau par l’utilisation
intensive du broadcast. Ceci lui offre l’avantage de pouvoir découvrir qui l’entoure
et donc de limiter sa configuration
– Samba utilise les ports 137 (netbios name service, nbname, en UDP), 138
(netbios datagram service nbdatagram, en UDP), 139 (netbios session service,
nbsession, en TCP), et 445 ("direct-hosted" tcp, en tcp et udp).
– La méthode de connexion traditionnelle smb utilise les ports 137, 138 et 139
tandis que la nouvelle méthode (CIFS, sur windows XP) n’utilise que le port 445.
156
smbfs/CIFS
– apt-get install samba smbclient smbfs winbind
– /etc/samba/smb.conf
– testparm analyse le fichier smb.conf et signale les erreurs
– /etc/init.d/samba restart
Le fichier /etc/samba/smb.conf se divise en différentes sections :
– La section global : configuration globale de samba
– La section homes : cette section particulière permet de remonter une ressource
qui correspond au répertoire de travail (home directory) de l’utilisateur qui s’est
authentifié.
157
smbfs/CIFS : Samba
– Projet libre et gratuit : Samba
– 4 modes configurations
– Partage par ressource
– Partage par utilisateur
– Inscription dans un domaine
– Controleur de domaine
158
SAMBA
# Section GLOBAL
# Configuration globale de Samba
[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ésea u)
server string = %h Serveur (Samba %v)
# Utilisateurs interdits
invalid users = root
# Enregistre un fichier de log par machine cliente du réseau M S
log file = /var/log/samba/log.%m
# Taille maximale des logs : 1 Mo
max log size = 1000
...
159
SAMBA : partage par ressource sur un réseau Workgroup
Dans le cas du mode share, pour pouvoir positionner un mot de p asse
sur une ressource, il faut créer un compte UNIX ’invite’ :
# adduser --shell /bin/false --disabled-login invite
On Crée ensuite une entrée dans le fichier /etc/samba/smbpa sswd :
# smbpasswd -a invite
Le mot de passe saisi correspondra à celui du répertoire part agé.
Il faut ensuite créer le répertoire partagé et donner l’arbo rescence
partagée à l’utilisateur invite du groupe invite :
# mkdir /home/partage
# chown invite.invite /home/partage
160
SAMBA : partage utilisateur sur un réseau Workgroup
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 paul
# adduser --shell /bin/false --disabled-login pierre
On crée ensuite une entrée dans le fichier /etc/samba/smbpasswd :
# smbpasswd -a paul
# smbpasswd -a pierre
161
SAMBA : partage utilisateur sur un réseau Workgroup
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 paul prive
# adduser pierre prive
# mkdir /home/prive
# chgrp prive /home/prive
# chmod 770 /home/prive
162
SAMBA : partage sur un domaine Microsoft
Remarque : Pour que le serveur Linux puisse rejoindre le domaine existant, il faut se
connecter au moins une fois avec le compte Administrateur définit sur le contrôleur
de domaine, afin que ce dernier crée un compte machine :
# net join -U Administrateur
Administrateur’s password:
[2008/02/12 11:58:41, 0] utils/net_ads.c:ads_startup(2 89)
ads_connect: Chaîne multi-octets ou étendue de caractères invalide ou incomplète
ADS join did not work, falling back to RPC...
Joined domain DOMAINE.
163
SAMBA : partage sur un domaine Microsoft
Dans le cas du mode server, les utilisateurs (login et mot de passe) sont définit sur
un serveur existant.
Coté Linux, les utilisateurs doivent avoir le droit d’écriture sur le répertoire partagé.
Cependant, les utilisateurs ne sont pas définit sur le serveur Linux mais sur le
contrôleur de domaine. La solution consiste à permettre à tout le monde d’écrire
dans ce répertoire, Samba se chargeant de n’autoriser que les utilisateurs autorisés
sur le contrôleur de domaine.
# mkdir /home/prive
# chmod 777 /home/prive
164
NIS
– Network Information System
– Système client-serveur
– Développement de SUN
– Base de donnée avec des informations comparable à /etc/passwd
– Historiquement : YellowPages, problème avec British-Telecom
– Mais le préfixe yp est resté dans certaines commandes
– Le noyau doit être compilé avec le support
165
NIS
– Serveur Maitre/Esclave afin d’augmenter la robustesse
– Serveurs secondaires mis a jour régulièrement, mais pas instantanément
– Client cherche son serveur par diffusion
– Principe des domaines (/bin/domainname)
– Premier serveur est pris
– Informations sont accessibles par commande (ypcat)
– Les données des bases sont transmises en clair
166
NIS : côté serveur
– apt-get install nis
– /etc/defaultdomain
– /etc/ypserv.securenets avec 255.255.255.0 192.168.30.0
– /etc/default/nis avec MASTER si serveur
– /etc/init.d/nis restart
– /usr/lib/yp/ypinit -m
167
NIS : côté client
– /etc/defaultdomain
– /etc/yp.conf avec l’adresse du serveur ypserver 192.168.30.230
– /etc/init.d/nis start
– /etc/nsswitch.conf avec netgroup : nis
– /etc/passwd avec + : : : : : : à la fin
– /etc/shadow avec + : : : : : : : : à la fin
– /etc/group avec + : : : à la fin
– ypcat passwd.byname
– ajout d’un utilisateur sur le seveur avec adduser jack
– mise à jours des bases : /usr/lib/yp/ypinit -m
168
LDAP
– Lightweight Directory Access Protocol
– à l’origine une surcouche à X500 (système lourd et non adpaté à TCP/IP)
– Système client-serveur
– Serveur Maitre/Esclave
– Standard ouvert
– Mis à jour instantanément
169
LDAP : les caractéristiques
– Base de donne multi-utilisation avec un schéma standardisé et extensif
– Conception optimisé pour la consultation
– Indépendance des objets entre eux et ignorance des structures de stockage
– Possibilité d’objets distribués sur plusieurs annuaires, mais impossibilité d’objets
répartis sur plusieurs annuaires
170
LDAP : les modèles
– modèle d’information, qui donne les données de l’annuaire
– modèle de désignation, qui organise l’arborescence et la nomenclature des objets
– modèle fonctionnel, qui permet l’accès et la consultation, modification et
destruction des données
– modèle de sécurité, qui gère l’authentification et le chiffrement
171
LDAP : LDIF
– Représentation des données LDAP sous forme de texte
dn: cn=host1,ou=hosts,dc=testing,dc=ldap
changetype: add
cn: host1
iphostnumber: 10.0.0.2
objectclass: top
objectclass: device
objectclass: ipHost
172
LDAP : OpenLDAP : côté serveur
server # domainname testing.ldap
server # domainname > /etc/defaultdomain
server # vi /etc/hosts
10.0.0.1 peter peter.testing.ldap loghost
server # directoryserver setup
server # /usr/lib/ldap/idsconfig
173
LDAP : OpenLDAP : côté client
server # ldapmodify -c \
> -D "cn=directory manager" \
> -w nssecret \
> -f /tmp/host1.ldif
client # domainname testing.ldap client # domainname > /etc /defaultdomain
client # ldapclient \
> -v init \
> -a proxypassword=proxy \
> -a proxydn=cn=proxyagent,ou=profile,dc=testing,dc=l dap \
> -a domainname=testing.ldap \
> 10.0.0.1
174
LDAP
– getent passwd
– ldapadd
– ldapsearch
– ldapdelete
– ...
175
Kerberos
– Problème du LDAP, le mot de passe en clair lors des communication
– Kerberos est un protocole d’authentification réseau créé au Massachusetts
Institute of Technology (MIT)
– Kerberos utilise un système de tickets au lieu de mots de passe en texte clair.
– L’ensemble repose sur des clés secrètes (chiffrement symétrique)
– Disponible sous UNIX et à la base des Windows récents
176
Kerberos
177
Kerberos
178
Kerberos
179
Kerberos
180
Recommended