0% ont trouvé ce document utile (0 vote)
616 vues563 pages

Certification LPIC-2 : Administration Linux

Ce module présente les principaux composants du noyau Linux, notamment sa structure, ses dossiers et types de fichiers binaires. Il décrit également comment appliquer des correctifs au noyau ainsi que la documentation disponible.

Transféré par

Brahim HAMDI
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
616 vues563 pages

Certification LPIC-2 : Administration Linux

Ce module présente les principaux composants du noyau Linux, notamment sa structure, ses dossiers et types de fichiers binaires. Il décrit également comment appliquer des correctifs au noyau ainsi que la documentation disponible.

Transféré par

Brahim HAMDI
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Certification LPIC-2

Administration système et réseau avancée sous Linux

Préparation aux examens LPIC-2


Plan de la formation

Module 1 : Performance système 
Module 8 : Serveur de Nom de

Module 2 : Noyau Linux domaine

Module 3 : Démarrage du système 
Module 9  : Services web

Module 4 : FS et périphériques 
Module 10 : Partage de fichiers

Module 5 : Administration avancée des 
Module 11 : Gestion des clients réseau
périphériques de stockage. 
Module 12 : Services de courrier

Module 6 : Configuration du réseau 
électronique

Module 7 : Maintenance système 
Module 13 : Sécurité du système
Module 1:
Performance système
Performance système

Mesure de l’utilisation des


ressources
Plan
• Introduction
• Outils et analyse de performances
• Outils de base
• Outils avancés
Performance
• Pourquoi analyser les performances ?

 Réduire les coût

 Evoluer l’architecture : Comprendre les capacités du système à


évoluer

 Résoudre les problèmes


Architecture Linux

• 3 couches
 Applications
 Noyau
 Matériel
Approches d’analyse

• 2 approches pour analyser le système:


 top-down
 bottom-up

CC by-sa - Wikipedia
Architecture détaillée
• Connaître l’architecture de Linux
Composition soft/hard
Outils de mesure et d’analyse
Outils et analyse de performance

• Outils de base

• Outils avancés
Outils de base
• uptime
• top ou htop
• iostat
• vmstat
uptime
• Durée de fonctionnement de la machine(depuis démarrage)
• Charge moyenne (load average) du système pour les 1, 5 et 15
dernières minutes
• Nombre d’utilisateurs actuellement connecté

$ uptime
[Link] up 126 days, 1:03, 1 user, load average: 5.09, 2.12, 1.82

• Charge moyenne > nombre de CPU => CPUs utilisés à 100%


• « Uptime »: ne donne pas plus de détails
=> Utiliser autres outils pour analyser
top et htop
• Informations utiles sur le système
• Activité du CPU en temps réel (rafraichissement chaque 2s)
• Liste des processus les plus gourmands en temps CPU
• Trie de processus par utilisation de CPU, mémoire et exécution
• htop : top amélioré avec une interface plus ergonomique
iostat
• Statistiques sur entrées/sorties des périphériques, partitions disque et réseau
(NFS) et CPU.
• Nécessite l’installation du paquet sysstat.
• Options principales:
 -c: Utilisation de CPU
 -d: Utilisation des périphériques de stockage
• Exemples:
• Rapport sur les périphériques, chaque 2 secondes
$ iostat –d 2

• Chaque 2 secondes, mais 6 fois uniquemente


$ iostat –d 2 6

• Statistiques détaillées sur sda et sdb, 6 fois et chaque 2 secondes


vmstat
• Statistiques de mémoire virtuelle, charge CPU, paginations, nombre de
changements de contexte, interruptions périphériques et appels-système.

• Exemple:
$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 0 0 81096 73424 1043848 0 0 236 101 390 937 10 4 83 4 0
Outils avancés
• netstat
• pstree/ps
• w / who
• lsof
• sar
• swap
• processus bloqués en entrée/sortie
netstat
• Informations sur les connexions réseau, les tables de routage et un certain
nombre de statistiques dont ceux des interfaces.
• Options principales:
 -a : Toutes les connexions.
 -p : Affiche le nom du programme impliqué dans la création de chaque
connexion et le PID associé.
 -e : Affiche les statistiques ethernet comme le nombre d'octets et de paquets
envoyés et reçus. Cette option peut être combiné avec –s. et les applications
dans le gestionnaire des tâches de Windo
 -n : Affiche les connexions TCP actives, cependant les adresses et les ports
sont affichés au format numérique.
 -r : Affiche le contenu de la table de routage
 -s : Affiche les statistiques par protocole.
Netstat - Exemples
• Afficher toutes les connections TCP, avec le les adresses IP et les numéros de
ports.
$ netstat -ntap

• Afficher la table de routage IP


$ netstat -nr
ps
• Informations sur les processus machines en cours d'exécution
• Equivalent à la commande « top », mais pas de rafraissement.
• Options principales: deux combinaisons les plus utilisées:
 -ef
 -e : Informations sur tous les processus.
 -f : Toutes les informations disponibles, généralement utilié avec –e.
 aux (pas de -):
 -a: Tous les processus
 -u: Afficher champs utilisateur
 -x: Les processus non attachés au terminal
• pstree: Afficher les processus sous forme d’arborescence.
w et who
• w : Des informations de connexion de l’utilisateur
• who: Liste des utilisateur connectés
• Exemples:
• w
$w
[Link] up 35 min, 3 users, load average: 0.27, 0.28, 0.31
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
linux :0 :0 14:32 ?xdm? 5:20 0.25s init --user
linux pts/10 :0 14:33 27:57 8.80s 0.77s bash
linux pts/0 :0 14:42 5.00s 16.99s 0.00s w
• who
$ who
linux :0 2015-04-19 14:32 (:0)
linux pts/10 2015-04-19 14:33 (:0)
linux pts/0 2015-04-19 14:42 (:0)
lsof
• Lister les fichiers actuellement ouverts.
• Exemples

$ sudo lsof
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 8,6 4096 2/
init 1 root rtd DIR 8,6 4096 2/
init 1 root txt REG 8,6 265848 792715 /sbin/init
init 1 root mem REG 8,6 47712 687769
/lib/x86_64-linux-gnu/libnss_files-[Link]
init 1 root mem REG 8,6 47760 687752
/lib/x86_64-linux-gnu/libnss_nis-[Link]

sar
• Générer des rapports de mesure et de contrôle des performances du système.
• Faut installer le paquet sysstat.
 Options principales:
 -a: Statistiques des opérations d’accès aux fichiers
 -c: Statistiques des appels système (system calls)
 -d: Activité disque
 -m: Activités de communication interprocessus
 -q: Longueur moyenne et pourcentage de temps de la file d'attente
lorsqu'elle est occupée.
 -r: Espace mémoire non utilisé
 -u: Utilisation de la CPU
 -A:Performances globales du système
Sar - exemples
• Afficher 5 fois et chaque 2 secondes l’utilisation de la CPU

$ sar -u 2 5
Linux 3.13.0-24-generic (hamdi-HP-550) 19 2015, ‫_ رربأأ‬x86_64_(2 CPU)

CET [Link] CPU %user %nice %system %iowait %steal %idle


CET [Link] all 1.01 0.00 0.75 0.00 0.00 98.24
CET [Link] all 0.75 0.00 1.00 0.00 0.00 98.25
CET [Link] all 1.00 0.00 0.50 0.25 0.00 98.25
CET [Link] all 1.25 0.25 1.00 0.00 0.00 97.49
CET [Link] all 0.75 0.00 0.75 0.50 0.00 98.00
Average: all 0.95 0.05 0.80 0.15 0.00 98.05
Module 2:
Noyau Linux
Noyau Linux
Composants du
noyau

Linux LPIC-2
Plan
• Rappel : le noyau Linux

• Récupérer les sources

• Structure

• Dossiers principaux

• Les différents "types" de monobloc

• Documentation

Linux LPIC-2
Rappel : le noyau Linux
• offre une abstraction matérielle pour les logiciels

• gestion des processus

• partie la plus critique de l'OS

• rôle central

Linux LPIC-2
Récupérer les sources
• [Link]

• [Link] ou bz2 ou xz
 Décompresser (commande tar) dans /usr/src/
 Ou dans un autre répertoire, puis établir un lien symbolique

• Par paquet
 Debian etc …
## apt-get
apt-get install
install linux-
linux-source
source
 CentOS (plus de parquet kernel-source)
$$ rpm
rpm -i
-i [Link]
[Link]
Linux LPIC-2
Versioning

• Trois (voir quatre) nombres :


 exemples :
• 2.6.24 = majeure 2 – mineure 6 –
révision 24
• 3.9 = version 3 – révision 9

Linux LPIC-2
Structure
• Un fichier principal
 "monobloc"
 Fonctionnalités critiques
 Directement chargé au démarrage

• Des modules
 Optionnellement
 Chargés et déchargés dynamiquement

Linux LPIC-2
Dossiers principaux
• ./drivers

• ./fs

• ./net

Linux LPIC-2
Les différents "types" de monobloc
• vmlinux : non compressé  - étape
intermédiaire de compilation.
• vmlinuz : compressé - bootable

• zimage : obsolète

• BzImage : Idem vmlinuz

• kernel : Nom générique du noyau


(compressé ou non)

Linux LPIC-2
Documentation
• /usr/src/linux-*/README

• /usr/src/linux-*/Documentation/

Linux LPIC-2
Noyau Linux

Application de
correctifs (patchs)
à un noyau

Linux LPIC-2
Plan
• Introduction

• Méthode simple

• Tester

• Permettre une récupération

• Restauration à partir de fichiers .orig

Linux LPIC-2
Introduction
• Permet de mettre à jour l'image d'un noyau
 à partir de sources pré-existantes

• Plus léger donc plus rapide à récupérer qu'un noyau complet.

• Permet d'ajouter ou modifier un ou plusieurs éléments


 ajout de fonctionnalités
 drivers tiers ou expérimentaux
 correction de bugs
 etc ...

Linux LPIC-2
Méthode simple
• se déplacer dans le dossier source
## cd
cd /usr/src/
/usr/src/
• décompresser et appliquer le patch
# gzip -cd [Link] | patch -p0

# bzip2 -dc patch-version.bz2 | patch -p0

# patch -p0 < patch-version

• L'option -p permet de situer le patch par rapport aux sources


 -p0 si dans /usr/src
 -p1 si dans /usr/src/linux
Linux LPIC-2
Tester

# patch -p1 -dry-run < fichier_du_patch

Linux LPIC-2
Permettre une récupération
• Plusieurs méthodes, suivant l'application du patch
 Méthode de patching simple : appliquer un patch à l'envers
# zcat [Link] | patch -p0 -R

 Effectuer une sauvegarde avant le patch


# patch -B oldfiles/ -p0 < patch-file

• récupération
# diff -ur linux-2.4.21 oldfiles/linux-2.4.21 > recover-2.4.21-patch

 Conserver les fichiers d'origine


# patch -b -P0 < fichier_patch

Linux LPIC-2
.orig

for file in $(find linux-2.4.29 | grep orig) do


FILENAME=$(echo $file | sed 's/\.orig//') mv -f $file $FILENAME
done

Linux LPIC-2
Noyau Linux

Personnalisation et
configuration du
noyau

Linux LPIC-2
Plan
• Introduction

• Étudier son matériel

• La commande make

• Nettoyage

• Configuration

• Démonstration

Linux LPIC-2
Introduction

• Une personnalisation du noyau est indispensable avant sa


compilation.
 choix des fonctionnalités à intégré
 modularité

Linux LPIC-2
La commande make

$ make [ -f makefile ] [ options ] ... [ targets ] ...

• Permet
 la configuration
 la compilation
 l'installation

• Plusieurs "cibles" (make targets)

Linux LPIC-2
Etudier son matériel
• Rappels LPIC1
 lspci
 lsmod
 etc ...

• Méthodes "génériques"
 manuel du matériel
 inspection visuelle

Linux LPIC-2
Nettoyage

• "Cibles" de make
 clean
 mrproper
 distclean

Linux LPIC-2
Configuration
• Plusieurs types d'interfaces utilisateur

• création d'un fichier /usr/src/linux/.config

• "Cibles" de make
 par CLI : config
 via ncurses : menuconfig
 via X : xconfig
 via GTK+ : gconfig
 à partir d'une ancienne configuration : oldconfig

Linux LPIC-2
Noyau Linux
Compilation du
noyau

Linux LPIC-2
Plan
• Résumé des opérations

• Vérifier les dépendances

• Méthode simple et complète

• Compiler le monobloc

• Compiler les modules dynamiques

• INITIal Ram Disk

• Création d'un initrd

• mkinitrd

• mkinitramfs
Linux LPIC-2
Résumé des opérations
# make dep && make clean && make bzImage && make modules \
> && make modules_install

• Vérifier les dépendances

• Nettoyer

• Compilation de monobloc

• Compilation des modules

• Installation des modules

Linux LPIC-2
Vérifier les dépendances
$ make dep

• S'assurer que toutes les dépendances sont en place


 exemples : fichiers include

Linux LPIC-2
Méthode simple et complète
$ make [all]

• Dans le répertoire des sources

• Construit le monobloc et les modules

• Suffisant
 si aucune erreur
 et tout les utilitaires nécessaires présent

• Astuce

$ make [all] | grep -iw "error"

Linux LPIC-2
Compiler le monobloc

$ make [zImage | bzImage]

• Permet de choisir le type de monobloc à compiler

Linux LPIC-2
Compiler les modules dynamiques

$ make modules

Linux LPIC-2
Créer un package
• Pour CentOS
$ make rpm

• Pour Debian
$ make-kpkg kernel_image

Linux LPIC-2
INITial Ram Disk
• Rappel : cf LPIC1

• Chargé au démarrage

• Système de fichier
 initramfs (cramfs, squashfs)
 chargé en mémoire vive

• Contient certains modules nécessaires


au démarrage
 permet d'utiliser un kernel minimal
 plus grande souplesse

Linux LPIC-2
Création d'un initrd

• Nombreux outils

• Varient suivant les distributions

• Deux plus courants :


 mkinitrd
 mkinitramfs

Linux LPIC-2
mkinitrd
# mkinitrd image KernelVersion

• Options  --fstab=filename
 --version  --image-version
 -v : verbose
 --nocompress
 --preload=MonModule
 --nopivot
 --with=MonModule
 --omit-lvm-
 --builtin=MonModule
modules
 --omit-raid-
 -f: permettre d'écraser une image existante
modules
• Exemple

# mkinitrd /boot/initrd-[Link].img [Link]

Linux LPIC-2
mkinitramfs
# mkinitramfs -o /boot/initramfs-[Link].img [Link]

• Options :

 -d confdir

 -k

 -o outfile

 -r root

 -v

 --supported-host-version=version

 --supported-target-version=version

Linux LPIC-2
Noyau Linux

Installation d'un
noyau et de
modules noyau

Linux LPIC-2
Plan
• Méthode simple et complète

• [Link]

• Modules

• Configuration de GRUB

Linux LPIC-2
Méthode simple et complète
# make install

• Installe tout les composants


 copie du monobloc dans /boot
 [Link] (voir plus loin)
 création et mise en place d'un initrd
 modification éventuelle de GRUB

Linux LPIC-2
[Link]
• pointeurs vers certaines fonctions du kernel
 utiles pour débugger certains problèmes
 pas indispensable

## cp
cp [Link]
[Link] /boot/[Link]-[Link]
/boot/[Link]-[Link] # rm /boot/[Link]
## rm
ln /boot/[Link]
-s /boot/[Link]-[Link] /boot/[Link]
# ln -s /boot/[Link]-[Link]
/boot/[Link]

Linux LPIC-2
Modules

• Dans /lib/modules/kernel-version/

# make modules_install

Linux LPIC-2
Configuration de GRUB
• Legacy (rappel LPIC1)

title GNU/Linux,
title GNU/Linux, kernel
kernel 2.6.8 root (hd0,0)
kernel /boot/vmlinuz-2.6.8 root=/dev/hda1 ro
2.6.8
initrd
root /boot/[Link]-2.6.8
(hd0,0)
savedefault
kernel boot
/boot/vmlinuz-2.6.8
root=/dev/hda1 ro
initrd /boot/[Link]-
2.6.8
savedefault boot
• GRUB2 : cf LPIC1

Linux LPIC-2
Noyau Linux
Gestion et interrogation
du noyau et des
modules en exécution

Linux LPIC-2
Plan
• Introduction

• Afficher les modules actuellement chargés

• Charger un module

• Décharger un module

• Informations

• Configuration

• Dépendances

Linux LPIC-2
Introduction
• Rappels : cf LPIC1 – Chapitre 5.8 (matériel)
 gestion dynamique des modules
 afficher, charger et décharger

• Pour aller plus loin :


 informations
 configuration
 dépendances

Linux LPIC-2
Afficher les modules actuellement chargés
$ lsmod

Module Size
Module isofs Used
Sizeby Used by 0
zlib_inflate
isofs 35820 0 35820 1 isofs 0
floppy
zlib_inflate 21888 1 isofs 1
21888
nls_iso8859_1
floppy 65200 0 65200 1
nls_cp437
nls_iso8859_1 5568 1
5568 1
vfat
nls_cp437 7296 7296
1 1 vfat 0
fat sr_mod
vfat 15680 1 15680 0
ide_cd
fat 49536cdrom 49536
1 vfat 2 sr_mod,ide_cd
sr_mod 19236 0 19236
ide_cd 42848 0 42848
cdrom 39080 2 39080
sr_mod,ide_cd

nom taille nombre et noms des modules l'utilisant


Linux LPIC-2
Charger un module
# insmode chemin_vers_le_module

• charge un seul et unique module

• nécessite d'avoir chargé les modules dont il dépend

• Exemple :

# insmod /lib/modules/2.6.26/kernel/drivers/block/[Link]

Linux LPIC-2
Charger un module (2)
# modprobe nom_du_module

• Options :
 -v : verbose
 -C fichier : changer de fichier de configuration
• /etc/[Link] par défaut
 -n : test
 -r : décharger un module
 -- show-depends
 -l : lister les modules disponibles
Linux LPIC-2
Décharger un module
# rmmod nom_du_module

• Permet de libérer de la mémoire

• Options :
 -v : verbose
 -f : force
 -w : wait

Linux LPIC-2
Informations

$ modinfo [-0] [-F field] [modulename|filename ...]

$ uname [-snrvmapio]

Linux LPIC-2
Configuration
• /etc/[Link] ou /etc/[Link] ou /etc/modprobe.d/*

• Directives :
 alias aliasname result
 depfile=full_path
 path=path
 keep
 options modulename module-specific-options
• cf modprobe
 pre-install module command
• etc ...

Linux LPIC-2
Dépendances

• /lib/modules/kernel-version/[Link] : liste des


dépendances
 générée par la commande depmod -a
• à partir des chemins indiqués dans /etc/[Link]
 utilisé par modprobe
• pour déterminer l'ordre de (dé)chargement des modules
- déchargement : de gauche à droite

- chargement : de droit à gauche

Linux LPIC-2
Module 3:
Démarrage du système
Démarrage du système

Personnalisation
du démarrage
système

Linux LPIC-2
Plan
• Rappels LPIC1
•inittab : actions
 procédure de démarrage  au démarrage
 runlevels  à l'entrée dans un runlevel
 chkconfig  relatives à l'alimentation
 update-rc.d  diverses
 afficher et changer de runlevel
 inittab

Linux LPIC-2
Rappel LPIC1 : procédure de démarrage

Linux LPIC-2
Rappel LPIC1 : Runlevels
Run Level Debian Suse RedHat
N amorçage
0 ARRET
S mono-utilisateur au démarrage
1 mono-utilisateur commuté mono-
utilisateur
2 multi- Multi- …
utilisateur utilisateur
déconnecté
mode multi-
3 … connecté utilisateur en
(réseau) mode console
4 … … …
5 … mode-graphique (X11)
6 redémarrage
8 …
9 …
Linux LPIC-2
chkconfig
• Lister les associations services / runlevel

]# chkconfig --list [service]

• modifier le comportement d'un service pour un ou plusieurs


runlevels
# chkconfig --level [0123456] service [on/off/reset]

• ajouter un service
# chkconfig --add service

Linux LPIC-2
update-rc.d
• désactiver un service

# update-rc.d NomService remove

• modifier le comportement d'un service pour un ou plusieurs


runlevels
# update-rc.d NomService start XX 2 3 4 5 . stop XX 0 1 6 .

• ajouter un service
# update-rc.d NomService defaults

Linux LPIC-2
Afficher et changer de runlevel
• afficher le runlevel actuel

$ runlevel

• changer de runlevel
# init [0123456Qq]

# telinit [0123456Qq]

• Eteindre ou redémarrer
# shutdown [-rhc] time ["Warning Message"]

# halt / # reboot / # poweroff

Linux LPIC-2
Rappel : inittab

• /etc/inittab

• configuration de init

• id:runlevels:action:process

Linux LPIC-2
inittab : actions au démarrage

• sysinit

• boot

• bootwait

• initdefault

Linux LPIC-2
inittab : actions à l'entrée dans un runlevel

• once

• ondemand

Linux LPIC-2
inittab : actions relatives à l'alimentation

• powerwait

• powerfail

• powerokwait

• powerfailnow

Linux LPIC-2
inittab : actions diverses

• off

• ctrlaltdel

• kdbrequest

Linux LPIC-2
Démarrage du système
Linux Standard
Base

Linux LPIC-2
Plan
• Introduction

• Une famille de spécifications

• Librairies et commandes

• Système

• Fonctions disponibles pour les bootscripts

• Packaging

Linux LPIC-2
Introduction
• crée en juillet 2001
 dernière version : 4.1 (fev 2011)
• cf Linux Foundation
 ISO depuis la version 2.0.1 (nov 2001)

• Standardisation des distributions GNU/Linux


 étend POSIX, FHS, Single Unix Specification, etc …
 pour l'interopérabilité
 librairies, utilitaires, scripts, etc ...

Linux LPIC-2
Une famille de spécifications

• spécification d'une architecture processeur

• deux parties : LSB-generic et LSB-arch

Linux LPIC-2
Librairies et commandes
• génériques
 ex : libdl, libcrypt, libpthread

• spécifiques à une architecture


 ex : libc, libm

• spécification d'un chemin, d'un nom et d'un format

• Plus de 130 commandes


 ex : cp, tar, kill, gzip

Linux LPIC-2
Système
• cron

• runlevels

• utilisateurs et groupes (uid/gid)

• bootscripts
 actions : start, stop, restart, force-reload & status
• reload & try-restart (optionnels)
• fonctions, chemin

Linux LPIC-2
Fonctions disponibles pour les bootscripts
• /lib/lsb/init-functions

• lancer un programme en tant que démon

start_daemon [-f] [-n nicelevel] [-p pidfile] pathname [args...]

• stopper un programme

killproc [-p pidfile] pathname [signal]

• renvoyer le ou les pid d'un programme

pidofproc [-p pidfile] pathname

Linux LPIC-2
Packaging

• non indispensable

• RPM
 compatibilité sous Debian grâce à alien

Linux LPIC-2
Démarrage du système
Récupération du
système

Linux LPIC-2
Plan
• GRUB : personnalisation du démarrage

• GRUB legacy Shell


 Commandes de démarrage
 Commandes diverses
 Sauvetage
• GRUB2 Shell
 Sauvetage
• fsck

Linux LPIC-2
GRUB : personnalisation du démarrage
• Choix du système ou du kernel
 flèches haut et bas sur le menu

• Single user mode


 éditer une entrée du menu (touche e)
 ajouter l'option "single" en fin de ligne "kernel"
 Enter pour valider
 Touche b pour démarrer

• Changer les paramètres du kernel


 même démarche que pour le single user mode
• remplacer "single" par le ou les paramètre(s)

Linux LPIC-2
GRUB legacy Shell
• permet d'interagir directement avec GRUB
 via CLI

• disponible au démarrage (touche "c")

• ou sous GNU/Linux (et autres systèmes Unix)


 par émulation

# grub

Linux LPIC-2
Commandes de démarrage
• afficher l'aide
grub > help

• sélectionner un périphérique racine


grub > root [DEVICE [HDBIAS]]

• chargement d'un kernel à partir du périphérique racine


grub > kernel [--no-mem-option] [--type=TYPE]
• chargement de modules
grub > module FILE [ARG ...]

grub > modulenounzip FILE [ARG ...]

• démarrage
grub > boot
Linux LPIC-2
Commandes diverses
• trouver sur quel bloc un fichier est stocké

grub > blocklist FILE

• afficher la "géométrie" d'un disque


grub > geometry DRIVE [CYLINDER HEAD SECTOR]

• création d'une nouvelle partition


grub > partnew PART TYPE START LEN

• chargement d'un initrd


grub > initrd FILE [ARG ...]

Linux LPIC-2
Sauvetage
• Démarre directement sur le shell
 erreur la plus courante : GRUB ne trouve pas les fichiers
nécessaires

• retrouver les fichiers (commande find)

Linux LPIC-2
GRUB2 Shell
• Basé sur le scripting
 nombreuses commandes internes
 disponibles aussi bien via la CLI interne que pour les scripts

Linux LPIC-2
Sauvetage
1) afficher l'aide
grub rescue> help
2) afficher les variables
grub rescue> set

3) lister les partitions reconnues


grub rescue> ls
4) redéfinir la valeur des variables
grub rescue> set prefix=(hd0,msdos3)/boot/grub

grub rescue> set root=hd0,msdos3

5) passer en mode normal si besoin


Linux LPIC-2
fsck
• Sortie
 0 – Aucune erreur
 1 – Erreurs du fs corrigées
 2 – Le système doit être redémarré
 4 – Erreurs du fs non corrigées
 8 – Erreurs opérationnelles
 16 – Erreur de syntaxe ou d'usage
 128 – Erreur de librairie partagée

• Message : "fsck failed. Please repair manually"


 Ctrl-D pour ignorer
 sinon, entrer le mot de passe root pour lancer sulogin
• accès à fsck et résolution des problèmes éventuels manuellement

Linux LPIC-
Module 4:
Système de fichiers et
périphériques
Système de fichiers et périphériques

Intervention sur le
système de fichier
GNU/Linux

Linux LPIC-2
Plan
• Introduction : Rappels LPIC1 • Aller plus loin

 Créer un système de fichier  État actuel des montages

•FAT  UUID

•SWAP mount • Connaître l'UUID d'une partition

 • Générer un UUID

• paramètres  Vider le buffer

 umount

 Fstab : exemple

• Périphérique

• Point de montage

• fstype et options

• dump et fsck

Linux LPIC-2
Introduction : Rappels LPIC1
• créer un système de fichier
 création (formatage)
 montage
• manuel
• automatique

Linux LPIC-2
Créer un système de fichier
# [Link] partition

# mkfs –t fstype partition

• Options :
 -c : recherche de secteurs défectueux
 -m pourcentage : pourcentage d'espace réservé
• 5 par défaut

Linux LPIC-2
FAT
# [Link] partition

# [Link] partition

• Options :
 -F fat-size : type / taille de FAT

Linux LPIC-2
SWAP
• Extension de la mémoire
 type code 0x82

• "formatage"

# mkswap partition

• utilisation
# swapon partition

 ou cf /etc/fstab

Linux LPIC-2
mount
$ mount [options] [device] [mountpoint]

• Options :  Options :
 -a : all (/etc/fstab)  -L label
 -r : ro  -U uuid
 -v : verbose  -o
paramètres
 -w : rw (défaut pour la plupart)
 -t fstype

Linux LPIC-2
Paramètres
• default

• loop

• auto / noauto

• user / nouser

• users

• ro

• rw

• etc …

Linux LPIC-2
mount
$ mount [options] [device] [mountpoint]

• Options :  Options :
 -a : all (/etc/fstab)  -L label
 -r : ro  -U uuid
 -v : verbose  -o
paramètres
 -w : rw (défaut pour la plupart)
 -t fstype

Linux LPIC-2
Paramètres
• default

• loop

• auto / noauto

• user / nouser

• users

• ro

• rw

• etc …

Linux LPIC-2
umount
$ umount [options] [device] [mountpoint]

• Options :
 -a : all
 -f : force
 -r : si échec, remonter en ro
 -t fstype

Linux LPIC-2
Fstab : exemple
• /etc/fstab
#device
#device mount point mountfilesystem
point optionsfilesystem
dump fsck options dump fsck
/dev/hda1
/dev/hda1 / /
ext3 defaults 1 ext3 defaults
1 UUID=3631a288-673e-40f5-9e96-6539fec468e9 \ 1 1
UUID=3631a288-673e-40f5-9e96-6539fec468e9
/usr reiserfs \
defaults 0 0
/usr
LABEL=/home reiserfs defaults
/home reiserfs 0defaults
0 0 0
LABEL=/home /home
/dev/hdb5 /windows vfat uid=500,umask=0 0 defaults
0 0 0
/dev/hdb5 /windows
/dev/hdc vfat
/media/cdrom reiserfs
iso9660 uid=500,umask=0
users,noauto 0 0 0 0
/dev/hdc /media/cdrom
/dev/sda1 iso9660
/media/pen auto users,noauto 0 users,noauto
0 0 0
/dev/sda1 /media/pen
server:/home auto
/other/home users,noauto
nfs users,exec 0 0 0 0
server:/home /other/home
//winsrv/shr /other/win cifs users,credentials=/etc/creds 0 0 0
nfs users,exec 0
//winsrv/shr /other/win swap swap defaults
/dev/hda4 cifs 0 0 users,credentials=/etc/creds 0 0
/dev/hda4 swap swap defaults 0 0

Linux LPIC-2
Périphérique
#device mount point filesystem options dump fsck
/dev/hda1 / ext3 defaults 1 1
#device mount point filesystem options dump fsck
UUID=3631a288-673e-40f5-9e96-6539fec468e9 \
/dev/hda1 / ext3 defaults 1 1
UUID=3631a288- /usr reiserfs defaults 0 0
40f5-9e96-6539fec468e9 \
673e- LABEL=/home /home reiserfs defaults 0 0
defaults 0 0
/usr reiserfs
/dev/hdb5 /windows
/home reiserfs vfat uid=500,umask=0 0 0
defaults 0 0
LABEL=/home /dev/hdc
/windows/media/cdrom
vfat iso9660 users,noauto 0 0
uid=500,umask=0 0 0
/dev/hdb5 /dev/sda1 /media/pen auto users,noauto 0 0
/media/cdrom iso9660 users,noauto 0 0
/dev/hdc server:/home /other/home nfs users,exec 0 0
/media/pen auto users,noauto 0 0
/dev/sda1 //winsrv/shr
/other/home /other/win
nfs cifs users,credentials=/etc/creds
users,exec 0 0 0 0
server:/home /dev/hda4 swap swap defaults 0 0
/other/win cifs users,credentials=/etc/ 0
//winsrv/shr
swap swap creds defaults 0 0
/dev/hda4

• udev 0

• adresse

• UUID=uuid

• LABEL=label

Linux LPIC-2
Point de montage
#device mount point filesystem options dump fsck
/dev/hda1 / ext3 defaults 1 1 UUID=3631a288-673e-40f5-9e96-6539fec468e9 \
#device mount point filesystem options dump fsck
/usr reiserfs defaults 0 0
/
/dev/hda1 LABEL=/home ext3
/home reiserfs defaults 0 defaults
0 1 1
-40f5-9e96-
UUID=3631a288- /dev/hdb5 /windows 9 vfat
\ uid=500,umask=0 0 0
6539fec468e
673e /dev/hdc /media/cdrom iso9660 users,noauto 0 0
/usr
/dev/sda1
/home /media/pen auto users,noauto 0 0
server:/home reiserfs
/other/home nfs users,execdefaults
0 0 0 0
/windows
LABEL=/home //winsrv/shr
/media/cdrom /other/winreiserfs
cifs users,credentials=/etc/creds
defaults 0 0 0 0
/dev/hda4
/media/penswap swap defaults 0 0
/dev/hdb5 vfat uid=500,umask=0 0 0
/other/home
/dev/hdc /other/win swap iso9660 users,noauto 0 0
/dev/sda1 auto users,noauto 0 0
• dossier vide dans un autre fs
server:/home nfs users,exec 0 0
//winsrv/shr cifs users,credentials=/etc/ 0 0
/ creds
/dev/hda4 swap defaults 0 0
 /home
 swap
Linux LPIC-2
fstype et options
#device mount point filesystem options dump fsck
/dev/hda1 / ext3 defaults 1 1 UUID=3631a288-673e-40f5-9e96-6539fec468e9 \
#device mount point
/usr reiserfs defaultsfilesystem
0 0 options dump fsck
/dev/hda1 / LABEL=/home /home reiserfs
ext3 defaults 0 0
defaults 1 1
/dev/hdb5 /windows vfat uid=500,umask=0 0 0
UUID=3631a288-673e-40f5-9e96-
/dev/hdc \
/media/cdrom iso9660 users,noauto 0 0
6539fec468e9 /dev/sda1 /media/pen auto users,noauto 0 0
server:/home
/usr /other/home
reiserfs nfs users,exec 0
defaults0 0 0
//winsrv/shr /other/win cifs users,credentials=/etc/creds 0 0
LABEL=/home /home/dev/hda4 swap swap defaults
reiserfs 0 0 defaults 0 0
/dev/hdb5 /windows vfat uid=500,umask=0 0 0
/dev/hdc /media/cdrom iso9660 users,noauto 0 0
/dev/sda1 /media/pen auto users,noauto 0 0
• cf mount/other/home
server:/home nfs users,exec 0 0
//winsrv/shr /other/win cifs users,credentia /etc/ 0 0
ls= creds
/dev/hda4 swap swap defaults 0 0

Linux LPIC-2
dump et fsck
#device
#device mount point mountfilesystem
point optionsfilesystem
dump fsck options dump fsck
/dev/hda1
/dev/hda1 / /
ext3 defaults 1 ext3 defaults
1 UUID=3631a288-673e-40f5-9e96-6539fec468e9 \ 1 1
UUID=3631a288-673e-40f5-9e96-6539fec468e9
/usr reiserfs \
defaults 0 0
/usr
LABEL=/home reiserfs defaults
/home reiserfs 0defaults
0 0 0
LABEL=/home /home
/dev/hdb5 /windows vfat uid=500,umask=0 0 defaults
0 0 0
/dev/hdb5 /windows
/dev/hdc /media/cdromreiserfs
iso9660 uid=500,umask=0
users,noauto 0 0 0 0
/dev/hdc /media/cdrom
/dev/sda1 vfatusers,noauto
/media/pen auto 0 users,noauto
0 0 0
/dev/sda1 /media/pen
server:/home iso9660
/other/home users,noauto
nfs users,exec 0 0 0 0
server:/home /other/home
//winsrv/shr /other/win cifs users,credentials=/etc/creds 0 0 0
auto users,exec 0
//winsrv/shr /other/win nfs
/dev/hda4 swap swap defaults 0 0 users,credentials=/etc/creds 0 0
/dev/hda4 swap cifs defaults 0 0
swap

• dump : sauvegarde de la partition


 1 = oui
 0 = non (quasi toujours à notre époque)
 usage de dump déconseillé aujourd'hui

• fsck : vérification de l'intégrité du fs au


démarrage
 0 = non (reiserfs)
 1 = premier (racine)
 2 ou plus = les autres, dans l'ordre
Linux LPIC-2
État actuel des montages
• via la commande mount
$ mount

 à partir du fichier /etc/mtab


• configuration maintenue en espace utilisateur par mount

• fichier /proc/mounts
 maintenu par le kernel
 toujours à jour (contrairement à /etc/mtab)

Linux LPIC-2
UUID
• Universal Unique Disk Identifier

• nombre hexadécimal de 32 chiffres


 128bits

• permet d'identifier à peu prêt n'importe quoi

• ne change pas tant que le fs n'est pas modifié


 évite toute reconfiguration en cas de changement d'identifiant de la partition
• modification du branchement
• OS multiples
• etc ...

Linux LPIC-2
Connaître l'UUID d'une partition

# blkid /chemin/vers/la/partition

• Exemple

# blkid /dev/sda1

• sous Debian : paquet e2fsprogs

Linux LPIC-2
Générer un UUID
• Manuellement :
 grâce au packet Debian : uuid-runtime

## uuidgen
uuidgen [-t|-
[-t|-r]
r]
• deux méthodes des génération
 -r : random (pseudo-aléatoire)
• grâce à /dev/random
• par défaut
 -t : time-based
• horloge système + adresse ethernet du système (si présent)

• Pour la génération automatique : uuidd (uuid deamon)

Linux LPIC-2
Vider le buffer
• stocké dans la RAM

• pour y supprimer les données stockées :

## sync
sync

• appelé automatiquement
 au reboot
 à l'extinction

Linux LPIC-2
Système de fichiers et périphériques

Maintenance d'un
système de fichiers
Linux

Linux LPIC-2
Plan
• introduction • ajuster les paramètres des systèmes de
fichiers
• Vérifier et réparer un système de fichiers
 tune2fs
 fsck
 reiserfstune
• rappel démarrage
 xfs_admin
• commande
• Débogueurs pour systèmes de fichiers
 e2fsck

 xfs_check et xfs_repair  debugfs et debugreiserfs

 badblocks • commandes de debugfs

• Afficher des informations sur le système de • Sauvegarde d'un système de fichiers XFS
fichiers
 xfsdump
 dumpe2fs
 xfsrestore
 xfs_info et xfs_metadump
Linux LPIC-2
Introduction

• des outils différents suivant les fs


 ext (2,3,4)
 ReiserFS
 XFS

• cf LPIC1
 Chapitre 5 – 13) Introduction aux fs

Linux LPIC-2
Vérifier et réparer un système de fichiers
• fsck
 rappel démarrage
 commande

• e2fsck

• badblocks

• xfs_check et xfs_repair

• badblocks

Linux LPIC-2
fsck

• une commande centrale

• vérifier l'intégrité d'un système de fichiers


 et le réparer

• uniquement sur les fs non montés ou en ro

Linux LPIC-2
Rappel démarrage
• Sortie
 0 – Aucune erreur
 1 – Erreurs du fs corrigées
 2 – Le système doit être redémarré
 4 – Erreurs du fs non corrigées
 8 – Erreurs opérationnelles
 16 – Erreur de syntaxe ou d'usage
 128 – Erreur de librairie partagée

• Message : "fsck failed. Please repair manually"


 Ctrl-D pour ignorer
 sinon, entrer le mot de passe root pour lancer sulogin
• accès à fsck et résolution des problèmes éventuels manuellement

Linux LPIC-
Commande
# fsck [-sACVRTNP] [-t fstype] [--] [fsck-options] filesystems

• Options :
 -A : vérifier tout les fs marqués "à vérifier" dans /etc/fstab
 -C : indiquer une barre de progression (pour e2fsck)
 -V : verbose
 -N : test
 -t fstype : indiquer (forcer) le type de fs

Linux LPIC-2
e2fsck (fsck.e2fs)
$ e2fsck [ -pacnyrdfvstFSV ] device

• Options
 -s : sérialise les opérations de fsck
• à favoriser dans le cas d'une vérification de plusieurs systèmes de fichiers en mode interactif
 -R : ignorer le système de fichier racine
• dans le cas d'une analyse de tout les fs grâce à -A
 -a : réparer automatiquement le système de fichiers
• sans poser de question
 -f : force la vérification même si le système de fichiers semble propre.
 -n : utilisation non intéractive (par "non")
• Ouvre en lecture-seule le système de fichiers
• répond «non» à toutes les questions
 -y : Répond «yes» à toutes les questions
• permet ainsi l'utilisation non interactive d'e2fsck.
 -P : Répare automatiquement (sans poser la moindre question)
• en anglais «preen» signifie lisser

Linux LPIC-2
xfs_check et xfs_repair
• vérifier la cohérence d'un système de fichier XFS

$ xfs_check [options] device


• le plus souvent appelé via [Link]

• réparer un système de fichier XFS corrompu ou endommagé


 accède directement au périphérique grâce au raw device associé
 permet de contourner le kernel (caches, buffers)

$ xfs_repair [options] device


• Le fs DOIT être démonté auparavant !

Linux LPIC-2
badblocks
• rechercher des blocs défectueux sur un périphérique
$ badblocks [options] [-o fichier_sortie] périphérique [dernier-bloc] [bloc-départ]

• recommandation : ne pas lancer directement


 appeler via l'option -c de e2fsck ou mke2fs

• Option :
 -o fichier_sortie
• écrire la liste des blocs défectueux dans le fichier

Linux LPIC-2
Afficher des informations sur le système de fichiers

• dumpe2fs

• xfs_info et xfs_metadump

Linux LPIC-2
dumpe2fs
# dumpe2fs [options] device

• Options :
 -b : affiche les blocs qui sont marqués défectueux.
 -h : n'afficher que les informations de super-bloc

Linux LPIC-2
xfs_info et xfs_metadump

• informations techniques
# xfs_info device

• copier les métadonnées du fs


$ xfs_metadump

Linux LPIC-2
Ajuster les paramètres des systèmes de fichiers

• tune2fs

• reiserfstune

• xfs_admin

Linux LPIC-2
tune2fs
# tune2fs [options] device

• Options :
 -c max-mount-counts
 -C mount-count
 -i intervalle
 -j : journalisation
 -m pourcentage
 -r blocs

Linux LPIC-2
reiserfstune
• similaire à tune2fs
 mais pour reiserfs

# reiserfstune [ -f ] [ -j | --journal-device FILE ]


[ --no-journal-available ] [ --journal-new-device FILE ]
[ --make-journal-standard ] [ -s | --journal-new-size
N ] [ -o | --journal-new-offset N ] [ -t | --max-
transaction- size N ] [ -b | --add-badblocks file ] [ -B
| --badblocks file ] [ -u | --uuid UUID ] [ -l | --label
LABEL ] device

Linux LPIC-2
xfs_admin
# xfs_admin [options] device

• Options :
 -j
 -l
 -u
 -L label
 -U uuid
• -U generate

Linux LPIC-2
Débogueurs pour systèmes de fichiers

• debugfs

• debugreiserfs

• commandes debugfs

Linux LPIC-2
Debugfs et debugreiserfs

$ debugfs device

$ debugreiserfs device

• dumpe2fs + tune2fs + autres outils

• débogage

Linux LPIC-2
Commandes debugfs
• show_super_stats / stats

• stat nom_fichier

• undelete inode nom / undel inode nom

• lsdel / list_deleted_inodes

• write fichier-interne fichier-externe

• cd, ln, rm, etc ...

• list_requests / lr / help / ?

• quit

Linux LPIC-2
Sauvegarde d'un système de fichier XFS

• xfsdump

• xfsrestore

Linux LPIC-2
xfsdump
• créer un "dump" (image de sauvegarde incrémentielle)

# xfsdump [ options ] -f dest [ -f dest ... ] filesystem

• Exemples
 vers un périphérique de sauvegarde (bande magnétique)
# xfsdump -l 0 -p 30 -f /dev/st0 /home
 vers un fichier
# xfsdump -l 0 -p 30 -f /backups/home-backup /home

Linux LPIC-2
xfsrestore
• restaurer un fs à partir d'une sauvegarde

# xfsrestore [ options ] -f source [ -f source ... ] dest

• Exemple
 mode itératif

# xfsrestore -i -f /backups/home-backup /newhome

Linux LPIC-2
Système de fichiers et périphériques
montage
automatique

Linux LPIC-2
Plan
• Introduction

• Autofs

• Configuration

• Fichier principal de configuration

• Fichiers de configuration additionnels

Linux LPIC-2
Introduction
• (re)montage automatique
 grâce à un démon
 à chaque fois d'un utilisateur tente d'accéder à un fs non
monté

• Particulièrement utile pour :


 les systèmes de fichiers accessibles via le réseau
 les périphériques amovibles (CD-ROMS, clés usb, etc ...)

Linux LPIC-2
Autofs
• implémentation Linux du montage automatique

• composant noyau + démon automount

• montage automatique (NFS, CD-ROMs, etc …)

• démontage après un certain temps sans utilisation

Linux LPIC-2
Configuration
• Un fichier principal
 /etc/[Link]

• Des fichiers "additionnels"


 généralement un par périphérique (ou type de
périphérique)
 exemple : /etc/[Link]

• Relus à chaque rechargement du démon


# /etc/init.d/autofs reload

Linux LPIC-2
Système de fichiers et périphériques
Systèmes de fichiers
pour périphériques
optiques

Linux LPIC-2
Plan
• Introduction

• HFS

• Comparatif

• Extensions à l'ISO9660

• Image

• Créer un système de fichier ISO

• Monter une image ISO

• Gravure d'une image ISO

• Faire une copie d'un disque optique

Linux LPIC-2
Introduction
• ISO 9660
 système de fichier des CD-ROMs et DVD-ROMs
 3 niveaux :
• 1 – compatibilité MS-DOS
• 2 – noms de fichiers pouvant aller jusqu'à 32 caractères
• 3 – fragmentation possible des fichiers

• remplacé progressivement par l'UDF


 Universal Disk Format
 ISO 13346
 quasi indispensable pour les blu-rays
 rétro-compatible
• on peu "fermer" un UDF en ISO, mais ceci est irréversible

Linux LPIC-2
HFS
• Hierarchical File System (HFS)
 inventé par Apple
 à l'origine pour les disquettes et disques durs
 pour Mac OS et z/OS

Linux LPIC-2
Comparatif

Système de ISO 9660 UDF HFS


fichiers
Taille max de 2/4Go 16Eo 2Go
fichier (8To en level 3) soit octet
16x10^18 s
Taille max d'image théoriquement quasi illimité 2To
illimité
Nombre max de 65535 répertoires quasi illimité 655 fichiers
fichiers / 35
répertoires
Noms de fichiers 8.3 en level 1 255 octets 31 caractères
32 en level 2
ISO 9660 est également limité à une profondeur maximale de 8
dossiers incluant la racine

Linux LPIC-2
Extensions à l'ISO9660
• Joliet
 définie et soutenue par Microsoft
 limite des noms de fichiers passant à 64 caractères
unicodes
 largement répendu et intégré aujourd'hui

• Rock Ridge
 ajout de la sémantique des systèmes de fichiers POSIX
• limite des noms de fichiers passant à 255 octets
• UID, GID, timestamps, liens symboliques, devfiles
• profondeur plus grande (que les 8 dossiers de l'ISO9660)
 par défaut sous les systèmes Unix
Linux LPIC-2
Extensions à l'ISO9660

• El Torito
 lancé par IMB et Phoenix Technologies (BIOS) en 1995
 permet de booter à partir d'un support optique (LiveCDs)

Linux LPIC-2
Image
• Un cd n'est pas aussi simple à gérer que les autres types de
périphériques de stockage
 réécriture directe impossible
 même pour les RW (suppression de toute l'image)

• Solution : créer une image avant gravure


 sur disque dur ou autre
 directement modifiable

Linux LPIC-2
Créer un système de fichier ISO
$ mkisofs [ options ] [ -o filename ] pathspec [pathspec ...]

• Exemple :
$ mkisofs -r -o cd_image private_collection/

• Depuis Debian Squeeze, est remplacé par genisoimage


 fork avec options identiques

• Options
 -r : tout fichier publiquement lisible et activation des extensions
Rock Ridge
 -J : MS Joliet extension
Linux LPIC-2
Monter une image ISO

$ mount -t iso9660 -o ro,loop=/dev/loop0 cd_image /cdrom

Linux LPIC-2
Gravure d'une image ISO
• Récupération des informations
$ cdrecord -scanbus

• Mise en place des variables (optionnel)


$$ SCSI_BUS=0
$ SCSI_ID=6
SCSI_BUS=0
$$ SCSI_ID=6
SCSI_LUN=0

• Ecriture
$ cdrecord -v speed=2 dev=$SCSI_BUS,$SCSI_ID,$SCSI_LUN -data cd_image

 ou
$ cdrecord -v speed=2 dev=0,6,0 -data cd_image
Linux LPIC-2
Faire une copie d'un disque optique
• Vers un autre disque optique (par gravure directe)

$ cdrecord -v dev=0,6,0 speed=2 -isosize /dev/scd0

• Vers un fichier

$ dd if=/dev/scd0 of=cdimage

Linux LPIC-2
Système de fichiers et périphériques
Introduction au
chiffrement des
systèmes de fichiers

Linux LPIC-2
Plan
• Introduction

• Pré-requis

• Test

Linux LPIC-2
Introduction
• devicemapper
 permet de mapper un périphérique bloc à un autre
 utilisé par RAID et LVM (nous y reviendrons)

Linux LPIC-2
Pré-requis
• Pour les modules
## echo
echo aes
aes >>
>> /etc/modules
/etc/modules
## echo
echo dm_mod
dm_mod >> /etc/modules
>> /etc/modules ## echo dm_crypt >> /etc/modules
# modprobe
echo -a
dm_crypt aes/etc/modules
>> dm_mod dm_crypt
# modprobe -a aes dm_mod
dm_crypt

• Mapper le périphérique avec devicemapper

# cryptsetup -y create crypt /dev/sda2

 créera un périphérique virtuel /dev/mapper/crypt

Linux LPIC-2
Pré-requis
• Ajout d'une entrée dans /etc/cryptab
# echo "crypt /dev/hda3 none none" >> /etc/crypttab

• Ajout d'une entrée dans /etc/fstab


# echo "/dev/mapper/crypt /crypt ext2 defaults 0 1" >> /etc/fstab

• Formatage
# mke2fs /dev/mapper/crypt

Linux LPIC-2
Test
• Montage manuel

# mkdir /crypt

# mount /crypt

• Le mot de passe entré lors du mappage vous sera demandé


 il vous sera ensuite demandé à chaque montage
 donc également à chaque démarrage

Linux LPIC-2
Système de fichiers et périphériques
Gestion de
périphérique udev

Linux LPIC-2
Plan
• Introduction

• uevent

• Configuration

• Règles udev

• Opérateurs

• Quelques clés communes

• udevmonitor

Linux LPIC-2
Introduction

Linux LPIC-2
uevent
• envoyé par le kernel
 à chaque (dé)branchement d'un périphérique

• contient les informations sur le périphérique


 subsystem (net, usb, …)
 action (add, remove)
 attributes (MAC address, vendor, …)

• est analysé par udev grâce à des règles associées à ces informations

Linux LPIC-2
Configuration
• Dans /etc/udev/
 [Link] : fichier de configuration principal
• modifier la priorité de logging (udev_log)
 rules.d/ : règles personnalisées
• sinon, lues à partir de /lib/udev/rules.d/

Linux LPIC-2
Règles udev
• dans /etc/udev/rules.d/
 celles par défaut dans /lib/udev/rules.d/

• rassemblées par fichier (catégorie)

• une ligne par règle


 constituée d'éléments clé/opérateur/valeur séparés par des virgules

• exemple :

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",


ATTR{address}=="[Link]", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

ne jamais créer de règles pouvant entrer en


conflit
Linux LPIC-2
Opérateurs
Catégorie Op Description
Comparaisons == égalité
!= inégalité
Affectation = fixe la valeur à
remplace l'intégralité des éléments d'une liste
+= ajouter (à la fin d'une liste)
:= affection définitive
empêche toute modification ultérieure par
une autre règle

Linux LPIC-2
Quelques clés communes
Clé Description
KERNEL nom de périphérique
SUBSYSTEM sous-système contenant le périphérique
DRIVER pilote du périphérique
NAME nom du nœud associé au périphérique
SYMLINK liste des liens symboliques
noms alternatifs pour le périphérique
ATTR{xxx} attribut sysfs (model, size, product, etc ...)
PROGRAM appel d'un programme lors de "l'execution" de cette
règle
ENV{xxx} valeur d'une variable d'environnement

Linux LPIC-2
udevmonitor
• affiche en temps réel
 les uvents envoyés par le kernel
 évènements envoyés par udev

$ udevmonitor

• lien symbolique vers


$ udevadm monitor

Linux LPIC-2
Module 5:
Administration avancée
des périphériques de
stockage
Administration avancée des périphériques de stockage

Configuration RAID

Linux LPIC-2
Plan
• Introduction • Pas à pas

• NRAID – RAID Linéaire • Multiple Devices Admin


• RAID 0 • Modes : création et
• RAID 1
activation
• Modes : modification et
• RAID 4
surveillance
• RAID 5
• Création d'un ensemble RAID
• RAID combiné
• /etc/[Link]
• Exemple : RAID 01
• Résolution de panne
• Disque de rechange
• /proc/mdstat
Linux LPIC-2
Introduction
• Redundant Array of Independent (or inexpensive) Disks
 regroupement redondant de disques indépendants
 groupement de périphériques blocs en un ensemble (ou matrice) RAID

• répartir les données sur plusieurs disques durs


 tolérance aux pannes (récupération simplifiée)
 performance
• transactions par secondes
• vitesse de transfert
 sécurité

• logiciel ou matériel

Linux LPIC-2
NRAID – RAID Linéaire
• JBOD – Just a Bunch of Disks

• concaténation

 écriture séquentielle
 les données sont écrites sur le second disque
quand le premier est plein

• aucune redondance

• aucune tolérance aux panne supplémentaire

Capacit somme de tout les


é disques
Fiabilité aucune

Cout minimal

Linux LPIC-2
RAID 0
• volume agrégé par bandes
 "striping"

• répartition des blocs des fichiers

• parallélisation
 augmentation des performances

Capacit plus petit élément


é x nombre d'éléments
Fiabilité aucune

Cout minimal

Linux LPIC-2
RAID 1
• redondance
 "mirroring"

• permet de conserver les


données en cas de panne

Capacit plus petit élément


é
Fiabilité optimale (tant qu'il reste
un disque)
Cout élevé (directement lié
au nombre de miroirs)
Linux LPIC-2
RAID 4
• volume agrégé par bandes à parité Capacité de n-1 disques
 stripping + un disque de parités Fiabilité perte d'un disque à la fois
• recalcule des données à partir du bloc maximum
de parité en cas de perte
Cout optimal
• 3 disques minimum
Performances très bonnes en lecture
• peu courant faible en écriture

Linux LPIC-2
RAID 5
• volume agrégé par bandes à parité répartie de n-1 disques
Capacité
 RAID 4 réparti
 répartition
Fiabilité perte d'un disque à la fois
circulaire des blocs de parité
maximum

• le plus courant
Cout optimal
 meilleur rapport qualité prix Performances très bonnes en lecture
faible en écriture

Linux LPIC-2
RAID combiné
• Combinaison de différents niveaux de RAID
 le premier chiffre indiquant le niveau de RAID d'une grappe
 le second indiquant le niveau de RAID supérieur

• Cas courants
 RAID 01
 RAID 10
 RAID 05
 RAID 50
 RAID 51

Linux LPIC-2
Exemple : RAID 01

• Minimum
 2 grappes
 2 disques / grappe

Linux LPIC-2
Disque de rechange
• "spare" ou "hotspare"

• disque complémentaire
 non utilisé
 prend automatiquement le relais en cas de défaillance d'un des disques
du RAID
• la reconstruction de celui-ci pouvant prendre beaucoup de temps

• après coup, remplacer le disque défaillant


 qui deviendra un nouveau disque de rechange

Linux LPIC-2
Pas à pas
1)préparer les partitions pour l'auto- 4) création du fichier
détection /etc/[Link]
 partition type : fd (Linux RAID auto)
5) création du point de montage
 via fdisk (commande t)
6) édition de /etc/fstab
2)création d'un ensemble RAID
 périphérique /dev/md[n] 7) mountage
 via mdadm --create (cf plus loin)
3)création du système de fichier
 via mkfs -t xxx /dev/md[n]

Linux LPIC-2
Multiple Devices Admin
# mdadm [mode] <raiddevice> [options] <component-devices>

• 9 modes : Assemble, Build, Create, Follow (ou Monitor), Grow,


Incremental, Manage, Auto-detect & Divers
• pour lancer une commande dans un mode :
 --nomdumode
 ou -X (première lettre du mode, à l’exception d'Auto-detect)
 Exemple : --create ou -C

Linux LPIC-2
Modes : création et activation
• create : créer et activer un ensemble RAID à partir de zéro

• build : construire un ensemble RAID sans superblock pour chaque


périphérique
 ne détruit pas les données pré-existantes
 utile lors de la récupération de données corrompues
 ne peut être utilisé avec [Link]

• assemble : reconstruire un ensemble RAID pré-existante


 migrer un ensemble vers un autre hôte
 activer un ensemble au démarrage

• auto-detect : activer tout ensemble RAID auto-détecté, via le kernel

Linux LPIC-2
Modes : modification et surveillance
• incremental : ajouter / supprimer un périphérique d'un ensemble RAID

• manage : agir sur les composants spécifiques d'un ensemble RAID


 suppression de disques défectueux
 ajout de périphériques de rechange

• follow / monitor : surveiller un ou plusieurs périphérique md, et agir sur


tout changement d'état
• grow : modifier un ensemble RAID existant
 ajout / suppression de périphérique

• misc : "tout le reste" (pas d'option spécifique)


 opérations sur les ensembles RAID actifs
 effacer de vieux super-blocks
 récupération d'informations

Linux LPIC-2
Création d'un ensemble RAID
• création d'un ensemble /dev/md0 en RAID1

# mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 \


/dev/sdb1 /dev/sdc1

• identique à
# mdadm -Cv /dev/md0 -l1 -n2 /dev/sdb1 /dev/sdc1

 avec périphérique de rechange


# mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 \
/dev/sdb1 /dev/sdc1 --spare-devices=1 /dev/sdd1
• pour surveiller l'état d'avancement de la construction
# watch -n 1 cat /proc/mdstat

Linux LPIC-2
/etc/[Link]
• optionnel

• simplifie des tâches courantes

• génération (mode "Divers")

# mdadm --detail --scan --verbose > /etc/[Link]

• réassemblage à partir du fichier


# mdadm --assemble --scan

 opération réalisée au démarrage


 via /etc/rc.d/[Link] ou /etc/init.d/rcS

Linux LPIC-2
Résolution de panne
• retirer un disque défectueux d'un ensemble RAID
# mdadm --manage /dev/md0 --remove /dev/sdb1

• ajout d'un nouveau disque (après remplacement)


# mdadm --manage /dev/md0 --add /dev/sdb1

 l'ensemble RAID est alors reconstruit

ne pas oublier de reconstruire le fichier [Link]

Linux LPIC-2
/proc/mdstat
• contient les statistiques sur les ensembles RAID

• suivre la (re)construction d'un ensemble RAID

# watch -n 1 cat /proc/mdstat

Linux LPIC-2
Administration avancée des périphériques de stockage

Ajustement des accès


aux périphériques de
stockage

Linux LPIC-2
Plan
• Configurer l'interaction du kernel avec un fs ext

• Paramètres de disques durs PATA

• Paramètres de disques durs SCSI

• Modifier les paramètres du Kernel

• Sysctl

Linux LPIC-2
Configurer l'interaction du kernel avec un fs ext

# tune2fs [options] device

• Options :

 -e [continue | remount-ro | panic ]


• définie comment le kernel doit réagir dans le cas d'une erreur
sur le système de fichier
• ignorer l'erreur et la reporter à l'application, remonter le fs en
lecture uniquement ou kernel panic (arrêt du système)
 -m reserved_block_percentage
• 5 % par défaut

Linux LPIC-2
Configurer l'interaction du kernel avec un fs ext

# tune2fs [options] device

• Options :

 -O [^]mount_option

• options de montage (mount et fstab étant prioritaires)

• ^ pour supprimer l'option

 -s [0|1]

• active (1) ou désactive (0) la fonctionnalité "sparse superblock"

- réduire le nombre de copies de sauvegarde du superblock


- dans groupes de blocks spécifiques au lieux de dans chaque groupe de blocks

• l'activer permet d'économiser de l'espace sur les fs de très grand taille

• relancer e2fsck après modification de cette option


Linux LPIC-2
Paramètres de disques durs PATA
# hdparm [options] [device]

• tester les performances des disques ATA

• ajuster leurs paramètres

• la plupart de ses options n'auront aucun effet sur les disques SCSI

 y compris la plupart des SATA, USB et même PATA pilotés par le


sous-système SCSI

Linux LPIC-2
Paramètres de disques durs PATA
# hdparm [options] [device]

• Options

 -a : obtenir/modifier le nombre de secteurs pour la "lecture en avance" (read-ahead)

• tampon, améliore les performances lors de la lecture séquentielle de longs fichiers

• 8 (4ko) par défaut (convient dans la plupart des cas)

• pour une lecture très aléatoire, ou un disque à read-ahead intégré, baisser cette valeur /
supprimer cette fonction peu améliorer les performances

 -d [0|1] : (dés)activer la fonction "using_dma"

• Direct Memory Access (cf LPIC1 - Hardware - Introduction )

- access direct à une zone mémoire


améliore quasi systématiquement les performances

Linux LPIC-2
Paramètres de disques durs PATA
# hdparm [options] [device]

• Options

 -g : Affiche la géométrie du disque

• cylindres, têtes, secteurs

• capacité (en secteurs)

•adresse (en secteurs) du début du périphérique par rapport au début du


disque
 -i : Affiche les informations d'identification

• fournies par le disque au démarrage

 -r [0|1] : Obtient/modifie le drapeau de lecture seule pour le


périphérique

Linux LPIC-2
Paramètres de disques durs PATA
# hdparm [options] [device]

• Options

 -t : minutage de lecture (sans mise en cache préalable) du périphérique


pour benchmarking.

• à réaliser 2 ou 3 fois sur un périphrique inactif

• avec au moins quelques Mo de libre


 -T : minutage de lecture du cache du périphérique pour benchmarking

• vitesse de lecture directement depuis le tampon de Linux sans accès


disque
• indication du débit du processeur, cache et mémoire du système
testé
 -v : afficher tout les réglages, sauf -i

Linux LPIC-2
Paramètres de disques durs SCSI
# sdparm [options] [device]

• N'est pas exactement un équivalent SCSI à hdparm

 Obtenir des information sur les périphériques SCSI


• SCSI mode page, VPD (Vital Product Data)
 Modifier leurs paramètres
 Envoyer des commandes SCSI au périphérique

• Utile pour tout les disques pilotés via le sous-sytème SCSI

 cependant, modifier les paramètres d'un SATA reconnu comme


SCSI ne sera pas toujours valable

Linux LPIC-2
Paramètres de disques durs SCSI
# sdparm [options] [device]

• Options
 -a / --all : afficher tout les champs reconnus pour le type de
périphérique
 -e / --enumerate : afficher des informations sur les pages et champs
modifiables via sdparm
 -g field / --get field : afficher un champs particulier
 -i / --inquiry : afficher les pages d'information VPD
 -l / --long : afficher des informations supplémentaires

Linux LPIC-2
Paramètres de disques durs SCSI
# sdparm [options] [device]

• Options
 -s STR=n / --set=STR=n : affecter la valeur au champs donné à utiliser

avec grande précaution


 -C CMD / --command=CMD : envoyer une commande SCSI au
périphérique
• Exemple : désactiver un périphérique
# sdparm --command=stop /dev/sdb

Linux LPIC-2
Modifier les paramètres du Kernel
• via procfs
 cf LPIC1 - Hardware - Procfs

• Deux solutions
 édition directe des pseudo-fichiers
# echo 1 > /proc/sys/net/ipv4/ip_forward

• ne persiste pas après redémarrage


• nécessite que ces commandes soit appelées via un init script
 sysctl

Linux LPIC-2
Sysctl
# sysctl [-n] [-e] [-a | -A | -p filename | -w variable=value ]

• Options

 -a / -A : afficher toutes les valeurs actuellement disponibles


 -e : ignorer les erreurs liées aux clés inconnues
 -n : désactiver l'affichage du nom de clé

• n'affiche que sa valeur


 -p filename : charger les paramètres à partir du fichier
spécifié

• /etc/[Link] si aucun spécifié

• "-" pour lire à partir de l'entrée standard


 -w variable=value : modifier un paramètres
Linux LPIC-2
Administration avancée des périphériques de stockage

Logical Volume
Manager

Linux LPIC-2
Plan
• Introduction

• Pas à pas

• Initialiser les volumes physiques

• Créer un groupe de volumes

• Création de volumes logiques

• Étendre un volume logique

• Clichés (Snapshots)

• Effectuer une sauvegarde à partir d'un cliché

Linux LPIC-2
Introduction
• création et gestion de volumes
logiques sous GNU/Linux

• Permet une gestion plus "souple" des périphériques de stockage

 redimensionnement
 fonctionnalités supplémentaires

• fiabilité dépendant de l'ensemble des périphériques utilisés


 ie : un périphérique tombe en panne et tout les volumes logiques sont
perdus
 donc, à utiliser avec du RAID

Linux LPIC-2
Pas à pas
1) optionnel : création des partitions sur les périphériques
 via fdisk
 il est recommandé de bien définir leur type code (8E)

2) initialiser les volumes physiques (PV)


 via pvcreate (ou automatiquement à l'étape suivante)

3) créer un groupe de volumes (VG)


 via vgcreate

4) créer les volumes logiques (LV)


 via lvcreate

5) mettre en place les systèmes de fichiers sur les LV


 via mkfs
Linux LPIC-2
Initialiser les volumes physiques
# pvcreate [options] VolumePhysique [VolumePhysique ...]

• Initialise les volumes physiques pour une utilisation ultérieure


via LVM
 partition de disque
 disque entier
• doit être remis à zéro via la commande suivante
# dd if=/dev/zero of=PhysicalVolume bs=512 count=1

 meta périphérique (md) - recommandé


 périphérique de loopback

Linux LPIC-2
Créer un groupe de volumes
# vgcreate [options] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

• si les périphériques n'ont pas été initialisés via pvcreate, ils le


seront automatiquement

• Exemple

# vgcreate vg0 /dev/sda1 /dev/sdb1

• Par défaut, les PE (Physical Extents) sont de 4Mo


 modifiable via l'option
• -s, --physicalextentsize PhysicalExtentSize[bBsSkKmMgGtTpPeE]

Linux LPIC-2
Création de volumes logiques
# lvcreate [options] VolumeGroup{Name|Path}

• Options
 -L, --size LogicalVolumeSize[bBsSkKmMgGtTpPeE]
• définie la taille du volume logique

• Exemple

# lvcreate -L 100M volume01

 créé un volume logique de 100Mo


 nommé par défaut /dev/volume01/lvol0

• Les opérations suivantes sont usuelles (mkfs, mount,


etc ...)
Linux LPIC-2
Étendre un volume logique
• Si besoin, ajouter un PV au VG

# vgextend volume01 /dev/hda6

• Étendre le LV

# lvextend -L +50M /dev/volume01/lvol0

• Puis étendre le système de fichier (démonté)

# xfs_growfs /dev/volume01/lvol0

• ou, pour l'ext


# resize2fs /dev/volume01/lvol0

Linux LPIC-2
Clichés (Snapshots)
• Copie virtuelle d'un LV
 facile la sauvegarde
 accessible en écriture depuis LVM2
• ouvre de nombreuses possibilités (testing, XEN, etc …)

• Exemple : créer une snapshot /dev/volume01/snapshot0

## lvcreate
lvcreate -L
-L 10g
10g -s
-s -n
-n snapshot0
snapshot0 /dev/volume01/lvol0
/dev/volume01/lvol0
n'est PAS une sauvegarde
 n'enregistre que les MODIFICATIONS apportées au LV, pas les
données
 disparaît en cas de redémarrage

• taille évolutive (10Go est donc ici la taille maximum)


Linux LPIC-2
Effectuer une sauvegarde à partir d'un cliché
• Monter la snapshot

## mount
mount /dev/volume01/snapshot0
/dev/volume01/snapshot0 /mnt/snap
/mnt/snap
• Copier les données

## tar
tar -cvzf
-cvzf /backups/[Link]
/backups/[Link] /mnt/snap
/mnt/snap
• Démonter et détruire la snapshot
## umount
umount /dev/volume01/snapshot0
/dev/volume01/snapshot0 # lvremove
#/dev/volume01/snapshot0
lvremove
/dev/volume01/snapshot0

Linux LPIC-2
Module 6:
Configuration du réseau
Configuration Réseau
OpenVPN

Linux LPIC-2
Plan
• Introduction

• OpenVPN

• Exemple simple : point à point

• Configuration serveur

• Configuration client

Linux LPIC-2
Introduction
• Virtual Private Network
 réseau privé virtuel

• Connecter plusieurs réseaux distants


 de manière sécurisée (tunnel chiffré)
 via une connection non-sécurisée (ex :
internet)

Linux LPIC-2
OpenVPN
• Logiciel Libre (GNU GPL)

• Disponible sur de nombreux


OS (GNU/Linux, Windows,
BSD, Mac OS X, etc …)

•Authentification via la
• Créé en 2002 bibliothèque OpenSSL
 par James Yonan
 version actuelle : 2.3.2 •Sécurisé via chiffrement
• Juin 2013 SSL/TLS
Linux LPIC-2
Exemple simple : point à point
• VPN point à point
 entre un serveur [Link] / [Link] et un client [Link]
 port par défaut (1194)

• Création de la clé statique

$$ openvpn
openvpn --genkey
--genkey --secret
--secret [Link]
[Link]

• Copier cette clé sur le serveur et le client

Linux LPIC-2
Configuration serveur
• [Link]
## type
type d'interface
d'interface dev tun
# adresse
dev tun IP serveur / client ifconfig [Link] [Link]
## adresse
test de IP
connection
serveur /toutes
clientlesifconfig
10 secondes, considéré
[Link] comme indisponible au bout de 60
[Link]
#secondes
test de sans réponsetoutes les 10 secondes, considéré comme indisponible au bout de
connection
keepalive 10 60
60 secondes sans réponse
# relancer10la60connection si elle semble coupée ping-timer-rem
keepalive
## relancer
empêcher la
OpenVPN de fermer
connection et ré-ouvrir
si elle le tun/tap
semble coupée à la reception d'un signal SUGSR1
ping-timer-rem
#persist-tun
empêcher OpenVPN de fermer et ré-ouvrir le tun/tap à la reception d'un signal SUGSR1
#persist-tun
idem mais pour les fichiers clés persist-key
# clé secrète
# idem mais pourpartagée pour leclés
les fichiers chiffrement
secret [Link]
persist-key
# clé secrète partagée pour le chiffrement secret [Link]

• tun/tap : interface de communication réseaux entre le kernel et les


programmes de l'espace utilisateur
Linux LPIC-2
Configuration client
• [Link]

## serveur
serveur distant
distant remote [Link] dev tun
ifconfig
remote [Link] [Link]
[Link]
keepalive
dev tun 10 60 ping-timer-rem persist-tun persist-key secret
[Link]
ifconfig [Link]
[Link]
keepalive 10 60 ping-
timer-rem persist-tun
persist-key secret
[Link]

Linux LPIC-2
Configuration Réseau

Surveillance et
analyse de traffic
TCP/IP

Linux LPIC-2
Plan
• netcat

• netcat : options générales

• Scanner de ports avec netcat

• Netcat client / serveur

• Netstat

• Analyse de paquets avec Tcpdump

• Analyse de paquets avec Wireshark

• nmap : scanner de ports et plus

Linux LPIC-2
netcat
$$ nc
nc [[ options
options ]] [[ hostname
hostname ]] [ ports ]
[ ports ]
• Le couteau suisse du TCP/IP

 gestion des sockets (peu établir n'importe quelle


connexion)

s'utilise aussi bien en tant que client que serveur scriptable

multiplateforme (disponible sous Windows et Mac OS X)

nombreux usages

• capture de bannière

• scan de ports

• etc ...

Linux LPIC-2
netcat : options générales
$$ nc
nc [[ options
options ]] [[ hostname
hostname ]] [ ports ]
[ ports ]

• Options :
 -u : passer en mode UDP
 -i int : effectuer l'opération suivant un intervalle de int secondes
 -v : verbose
• -vv pour plus d'informations
 -x adresse[:port] : connexion via un proxy

Linux LPIC-2
Scanner de ports avec netcat
• Scanner des ports 100 à 1, puis 443

$$ nc
nc -vv
-vv [Link]
[Link] 1-100
1-100 443
443
 -r pour scanner aléatoirement (plus discret)
 par défaut, se stoppe dés qu'il trouve un port ouvert, et attend une E/
S
• -z pour passer en mode zero I/O

• Exemple
$$ nc
nc -vv
-vv -i
-i 33 -r
-r -z
-z [Link]
[Link] 21
21 23
23 80-160
80-160 1337
1337

Linux LPIC-2
Netcat client / serveur
• ouvrir netcat en mode listening (serveur) sur le port 1337

$$ nc
nc -l
-l -p
-p 1337
1337
 -k pour continuer à écouter après réception d'une connection

• se connecter au serveur (coté client)

$$ nc
nc monserveur
monserveur 1337
1337
• Exemple : transfert de fichiers
 serveur
$$ cat
cat [Link]
[Link] || nc
nc -l
-l 1337
1337
 client

$$ nc
nc monserveur
monserveur 1337
1337 >> [Link]
[Link]
Linux LPIC-2
Netstat
$$ netstat
netstat [options]
[options]
• Afficher un grand nombre d'informations
 connections
 tables de routage
 statistiques sur les interfaces
 connexions masquées
 messages netlink
 multicasts

• Considéré comme obsolète


 remplacé par ss et ip
Linux LPIC-2
Netstat
$$ netstat
netstat [options]
[options]
• Options
 aucune : lister les sockets ouverts
 -a : Affiche toutes les connexions TCP actives et les ports TCP et UDP sur lesquels l'ordinateur écoute
 -i iface / --interface=iface : afficher les informations sur une interface
• similaire à ifconfig ou ip -s link
 -r / --route : afficher les tables de routage noyau
• similaire à ip route
 --masquerade / -M : afficher les informations relatives aux connections masquées
• fonctionnalité NAT de Linux
• réseaux "cachés" derrière une unique adresse IP
 -p / --programs : afficher le nom et le PID des processus propriétaires de chaque socket

Linux LPIC-2
Analyse de paquets avec Tcpdump
## tcpdump
tcpdump [options]
[options] [-i[-i interface]
interface] [pcap-filter
[pcap-filter expression]
expression]
• obtenir les détails sur le trafic visible depuis une interface
 une ligne par paquet

• date protocole source:port > destination:port : informations

• Exemple
## tcpdump
tcpdump -i
-i eth1
eth1 host
host [Link]
[Link]
tcpdump: verbose
tcpdump: verbose output
output suppressed,
suppressed, use
use -v
-v or
or -vv
-vv for
for full
full protocol
protocol decode
decode listening on
listening on eth1,
eth1, link-
type EN10MB (Ethernet), capture size 65535 bytes
link-type EN10MB (Ethernet), capture size 65535 bytes
[Link].922382 IP
[Link].922382 IP [Link]
[Link] >> [Link]:
[Link]: ICMP
ICMP echo
echo request, id
request, id 2933,
2933, seq
seq 1,
1,length 64 64
length
[Link].053722
[Link].053722 IPIP [Link]
[Link] >> [Link]:
[Link]: ICMP
ICMP echo
echo reply, id
reply, id 2933,
2933, seq
seq 1,
1,
length 64
length 64
[Link].922897 IP
[Link].922897 IP [Link]
[Link] >> [Link]:
[Link]: ICMP
ICMP echo
echo request, id
request, id 2933,
2933, seq
seq 2,
2,length 64 64
length
[Link].989884 IP
[Link].989884 IP [Link]
[Link] >> [Link]:
[Link]: ICMP
ICMP echo
echo reply, id
reply, id 2933,
2933, seq
seq 2,
2,
length 64
length 64

Linux LPIC-2
Analyse de paquets avec Wireshark
• Anciennement dénommé Ethereal (avant mai 2006)

• Disponible sur les systèmes Unix et Windows

• Né en 1998, grâce à Gerald Combs

• Deux solutions :
 GUI
 ligne de commande : TShark

## tshark
tshark [-i
[-i interface]
interface] [pcap-filter
[pcap-filter expression]
expression]

Linux LPIC-2
nmap : scanner de ports et plus
• TCP connect scan
## nmap
nmap -sT
-sT hostname
hostname
• UDP scan
## nmap
nmap -sU
-sU hostname
hostname

• identification des machines d'un réseau


## nmap
nmap -sP
-sP <cible>
<cible>

• identifier l'OS d'une machine

## nmap
nmap -O
-O --osscan-guess
--osscan-guess [Link]
[Link]
Linux LPIC-2
Configuration Réseau
Dépannage réseau

Linux LPIC-2
Plan
• Exemple de méthodologie

• Couches physique et liaison

• Couche réseau

• Couche transport

• Couche application

• Problèmes de résolution de nom

• Problèmes de résolution de nom : dig

• Autres éléments à vérifier

Linux LPIC-2
Exemple de méthodologie
1) lister les composants impliqués

interface réseau, routeur, hôte distant, etc ... 2)établir leur interaction
chemin emprunté par un paquet
cf Prime

3) Déterminer le contexte du problème

Qui, quoi, où, quand, comment, combien (de postes affectés), pourquoi ? 4) Déterminer la cause

exacte de la panne à partir du modèle TCP/IP


a. Couche physique
b. Couche liaison de données
c. Couche réseau
d. Couche transport
e. Couche application

Linux• LPIC-2
Rappel : Modèle TCP/IP
Couche Description Exemples
physique caractéristiques physiques de la câble, fibre
communication optique, radio
liaison mode de transport des paquets sur la Ethernet, Token
couche physique Ring, SLIP,
ATM
réseau acheminement de paquets à travers IP
un seul réseau
transport fiabilité des échanges et détermination TCP, UDP
de l'application à laquelle chaque
paquet de données doit être délivré
applicati programmes réseaux HTTP, SMTP,
o n FTP, SSH, DNS
Linux LPIC-2
Couches physique et liaison
• vérifier que les cables sont branchés et les hôtes sous-tension
 contrôle visuel ou logiciels de monitoring

• vérifier que les cartes réseau sont actives


 ifconfig, ip, ifup

Linux LPIC-2
Couche réseau
• Puis-je joindre l'hôte distant ? Le(s) routeur(s) ? Le firewall ?

• Puis-je joindre d'hôtes hôtes du réseau ? D'internet ?

• D'autres hôtes peuvent ils joindre l'hôte distant ?


 ping, traceroute

• vérifier la configuration ip
 ifconfig, ip, dhclient

• vérifier la configuration de vos routes


 ip, route

• Pour aller plus loin : sniffing


 permet d'analyser en détail les paquets émis ou reçus
 tcpdump, wireshark, etc ...

Linux LPIC-2
Couche transport
• Puis-je joindre l'hôte sur le port désiré ?

$$ telnet
telnet <hote>
<hote> <port>
<port>

• Ici encore, sniffing

• Le problème peu alors par exemple être lié à un routeur ou


firewall

Linux LPIC-2
Couche application
• Configuration de l'application cliente
 tester avec un autre client
 vérifier les paramètres

• Configuration de l'application serveur

Linux LPIC-2
Problèmes de résolution de nom
• Tester via ping, host ou dig

• /etc/[Link] : ip des dns

• /etc/hosts : résolution de noms statique

• /etc/hostname ou /etc/sysconfig/network : nom d'hôte d'une machine

• retrouver l'ip / le CNAME d'un hôte (et les MX d'un domaine)

$$ host
host <hote
<hote ou
ou domaine>
domaine>
• afficher toutes les informations relatives à un domaine / hôte
$$ host
host -a
-a <hote
<hote ou
ou domaine>
domaine>
Linux LPIC-2
Problèmes de résolution de nom : dig
• Vérifier les enregistrements de type A d'un domaine

$$ dig
dig <domaine>
<domaine>
• Connaitre l'adresse ip du serveur dns faisant autorité sur un
domaine
$$ dig
dig <domaine>
<domaine> +short
+short
• Trouver un nom d'hôte à partir d'une ip
$$ dig
dig -x
-x [Link]
[Link] +short
•+short

• Vérifier les enregistrements MX d'un domaine


$$ dig
dig mx
mx [Link]
[Link] +short
+short
Linux LPIC-2
Autres éléments à vérifier
• Démarrage
 /var/log/messages
 dmesg
 init scripts

• Système
 /var/log/syslog

• sécurité
 /etc/[Link] et /etc/[Link]

• configuration réseau
 /etc/sysconfig/network-scripts ou /etc/network

Linux LPIC-2
Module 7:
Maintenance système
Maintenance système
Construction et installation
de programmes à partir du
code source

Linux LPIC-2
Plan
• Introduction

• Désarchivage et décompression

• Configuration

• Compilation

Linux LPIC-2
Introduction
• optimisation

• personnalisation

• être à jour

• Pourquoi pas dans la LPIC1 ?

Linux LPIC-2
Désarchivage et décompression
• tar

$$ tar
tar xvzf
xvzf [Link]
[Link]
$$ tar
tar xvjf
xvjf [Link].bz2
[Link].bz2
• gunzip

$$ gunzip
gunzip [Link]
[Link]
• bzip2

$$ bunzip2
bunzip2 archive.bz2
archive.bz2

Linux LPIC-2
Configuration
$
•$ ./configure
./configure
• script GNU autoconf
 configurer automatiquement le code source d'un logiciel pour l'adapter au système
• architecture, bibliothèques, dépendances
• désactivation des fonctionnalités liées à des dépendances optionnelles non satisfaites
• génération du makefile

• modifier le répertoire d'installation


 par défaut : /usr/local/

$
•$ ./configure --prefix=/opt
./configure
•--prefix=/opt
afficher les paramètres disponibles
$
•$ ./configure --
./configure --help

help
Rmq : vous pouvez patcher ces sources comme pour le kernel
Linux LPIC-2
Compilation
•$$ make
make
• à partir des éléments du makefile
 modifiables directement via options
$$ make
make DESTDIR=chemin
DESTDIR=chemin install
install
• rappel kernel : targets
 all (défaut)
 clean
 install

Linux LPIC-2
Maintenance système
Opérations de
sauvegarde

Linux LPIC-2
Plan
• Introduction

• Réflexion préalable

• Supports

• Supports : comparatif

• Manipulation des bandes


magnétique

• Rsync

• Autres outils

• Sauvegarde réseau

• Intégrité

• Restauration
Linux LPIC-2
Introduction
• Pourquoi ?

• Quoi ?

• Quand ?

• Où ?

• Comment ?

Linux LPIC-2
Réflexion préalable
• Pourquoi ?
 importance des données
• coût de création, information relative à un temps/contexte donné, etc …
 fiabilité
• défaillance matérielle, erreur de manipulation, etc ...

• Quoi ?
 relativement à leur importance et leur stabilité
• données personnelles, configuration
• /home, /etc
• éventuellement : /var
• inutiles : /etc/mtab, /proc, /sys, /dev

• Quand ?
 fonction du rythme de changement des données
 quotidiennement sur la plupart des systèmes

Linux LPIC-2
Supports
• Bande magnétique
 /dev/st*
 /dev/nst* (non rewinding tape)
• ne se rembobine pas automatiquement après chaque opération

• Disque dur

• Médias optiques

• Réseaux

Linux LPIC-2
Supports : comparatif
Type Avantages Inconvénients Contextes
bande ● coût ● temps d'accès ● sauvegarde à long
magnétique ● stockage terme
passif
disque dur ● temps d'accès ● peu adapté à une ● intermédiaire pour
● rapport / sauvegarde hors- une sauvegarde
capacité prix site hors-site
● restaurations
rapides et
fréquentes
média optique ● fiabilité ● capacité de ● sauvegardes
● transport stockage système
● write-once
réseaux ● adaptabilité ● coût
(NAS, SAN) ● indépendance ● consommation
énergétique

Linux LPIC-2
Manipulation des bandes magnétique
$$ mt
mt [-h]
[-h] [-f
[-f device]
device] operation
operation [count]
[count] [arguments...]
[arguments...]

•Opérations
 fsf : avancer de count fichiers
 bsf : reculer de count fichiers
 eod / seod : avance jusqu'à la fin des données
 rewind : rembobiner (intégralement)

Linux LPIC-2
Rsync
• Rsync (Remote SYNChronisation)
 synchronisation distante (ou locale) unidirectionnelle

$$• rsync
rsync -avz
-avz -e
-e "ssh"
"ssh" source
source user@destination:dest
user@destination:dest
 -a : mode archivage
• récursif, conserve les liens symboliques, dates, permissions et
périphériques
 -z : compresser les données lors du transfert
 -e : shell distant (ssh par défaut)

Linux LPIC-2
Autres outils
• dd : copie bloc à bloc

$$• dd
dd if=/dev/sda2
if=/dev/sda2 of=/tmp/[Link]
of=/tmp/[Link] bs=1024
bs=1024 count=1048576
count=1048576
• cpio : archivage
 "ancêtre" de tar (moins connu)
 3 modes : -i (input / extraire), -o (output / compression) et -p (pass-through)
• liste de fichiers à partir de stdin

$$ find
find /test
/test || cpio
cpio -o
-o >> [Link]
[Link]
• tar

## tar
tar -czf
-czf /dev/st0
/dev/st0 /www
/www /home
/home
## tar
tar -xvf
-xvf /dev/st0
/dev/st0
Linux LPIC-2
Sauvegarde réseau
• AMANDA
 Advanced Maryland Automatic Network Disk Archiver
 développé par l'université du Maryland
 basé sur les standards de logiciels de sauvegarde.
• Unix dump et restore, Gnu tar, autres logiciels ...
 Le plus populaire
 sauvegarde séquentielle (lecteur de bande ou disque)
 modulaire
 permet une répartition des tâches sur les machines périphériques
 documentation en français : [Link]

• Bacula
 serveur disponible uniquement sous Unix (GNU/Linux, Solaris et FreeBSD)
 repose sur une base de donnée relationnelle
 enregistre les signatures (SHA-1 ou MD5) de chaque fichier sauvegardé
 extrêmement complet (chiffrement, gestion des robots changeurs de bandes, scripting, etc …)
 administrable via de nombreux GUI

Linux LPIC-2
Sauvegarde réseau

• BackupPC
 via SMB, tar over SSH/rsh/nfs ou rsync
 administrable via interface web

• Tous sont :
 disponibles pour Unix (GNU/Linux, BSD, Mac OS X, Solaris) et Windows
 Libres
 des références incontournables (mais seulement à "connaître" pour la LPIC2)

Linux LPIC-2
Intégrité
• il est important de vérifier l'intégrité des données sauvegardées
 et de répéter l'opération régulièrement (ex : tout les ans)

• exemple

(backup)$ find
(backup)$ find ./
./ -type
-type ff -exec
-exec sha1sum
sha1sum {}
{} \;
\; >> ~/backup_sums.txt
~/backup_sums.txt
(origin)$ scp
(origin)$ scp backup:backup_sums.txt
backup:backup_sums.txt .. (origin)$ sha1sum -c
backup_sums.txt
(origin)$ sha1sum -c backup_sums.txt
...
...
./.kde/Autostart/.directory: OK
./.kde/Autostart/.directory: OK
./.ssh/authorized_keys: OK
./.ssh/authorized_keys: OK
./.ssh/id_dsa: OK
./.ssh/id_dsa: OK
...
...
./[Link]: FAILED
./[Link]: FAILED
./[Link]~: OK
./[Link]~: OK
sha1sum: WARNING:
sha1sum: WARNING: 11 of
of 667
667 computed
computed checksums
checksums did
did NOT
NOT match
match
Linux LPIC-2
Restauration
• Toujours vérifier la restauration après sauvegarde

• Établir une procédure de restauration


 spécifie comment restaurer les données
• option x de tar, script, rsync ou dd inverse, etc ...

Linux LPIC-2
Maintenance système

Notification aux
utilisateurs des
problèmes système

Linux LPIC-2
Plan
• Messages à l'authentification

• Broadcaster un message à tout les utilisateurs

• Commande shutdown

Linux LPIC-2
Messages à l'authentification
• /etc/issue
 message affiché avant authentification
 ex : "Bienvenue sur le serveur [Link] - Debian GNU/Linux"
 mieux : "Attention : utilisateurs autorisés uniquement"

• /etc/[Link]
 idem, mais pour les connections distante

• /etc/motd
 message affiché une fois l'authentification établie
 particulièrement utile pour informer les utilisateurs d'un événement particulier (ex : extinction
planifiée du système)
 inutile pour les larges environnement
• particulièrement en cas d'authentification unique
 attention à sa mise à jour

Linux LPIC-2
Broadcaster un message à tout les utilisateurs
• Envoyer un message (22 lignes maximum)

$$ wall
wall [file]
[file]
 à partir d'un fichier ou de l'entrée standard (Ctrl-D pour clore)

• Contrôler l'accès en écriture à son terminal par les autres utilisateurs

$$ mesg
mesg [y|
[y|n]
n]
• Afficher le statut d'accès en écriture des utilisateurs

## finger
finger
 colonne TTY : précédé de * si accès en écriture désactivé

Linux LPIC-2
Commande shutdown
• Exemple
## Shutdown
Shutdown -H
-H +10
+10 Server
Server halting
halting in
in 10
10 minutes
minutes for
for change
change change
number. Expected up at [Link].
change
number. Expected up at [Link].

• Options
 -k : simuler un arrêt du système
• créé tout de même le fichier /etc/nologin durant son execution

- interdit la connexion à tout autre utilisateur que root

 -c : annuler (cancel) un arrêt du système

Linux LPIC-2
Module 8:
Serveur de nom de domaine
Domain Name Server

Configuration
élémentaire d'un
DNS

Linux LPIC-2
Plan
• Introduction • Logging

• Hiérarchie • Zones

• Fonctionnement • Configuration de rndc

• Vocabulaire • Commandes rndc

• Bind • Exemple : serveur de cache

• Composants

• Syntaxe du fichier
[Link]
• Options
Linux LPIC-2
Introduction
• correspondance nom (FQDN) / adresse ip

• autrefois grâce à un fichier [Link] partagé par copie

• Remplace les fichiers hosts depuis 1987


 "dynamique"
 centralisé
 hiérarchisé
 standard

Linux LPIC-2
Hiérarchie

Linux LPIC-2
Fonctionnement

Linux LPIC-2
Vocabulaire
Terme Définition
Zone Ensemble des directives associées à un domaine. A chaque
zone / domaine correspond un fichier.
DNS récursif Serveur capable d'interroger de manière récursive les
autres serveurs DNS lorsqu'il ne parvient pas à déterminer
un serveur faisant autorité sur le nom de domaine recherché.
Serveur primaire / Maître Serveur obtenant la configuration de sa zone à partir d'un
(d'une zone) fichier directement administré. Serveur principal d'un
domaine.
Serveur secondaire Serveur obtenant toutes les informations d'une zone à partir
d'un serveur primaire.
Faire autorité sur un Répondre directement aux requêtes concernant un domaine
domaine sans passer par un autre serveur ou un cache. C'est le cas des
serveurs primaires et secondaires.

ne pas confondre "authoritive" (primaire / master) avec "faire


autorité"
Linux LPIC-2
Bind
• Berkeley Internet Name Daemon

• standard de fait
 aujourd'hui maintenu par l'Internet Systems Consortium

• Libre : Licence ISC / OpenBSD

• Version 9
 la plus courante
 stable, sécurisé et confirmé (plus de 10 ans)
 objectif LPIC

• Version 10
 récente (février 2013)
 totalement différente (réécrit à partir de zéro en 5 ans)
 intègre également le DHCP

Linux LPIC-2
Composants
• /usr/sbin/named

• /usr/sbin/rndc : utilitaire de contrôle

• /etc/bind/[Link] ou /etc/[Link] : fichier de configuration


 [Link]
 [Link]

• /etc/init.d/bind : init script

• /var/named/ : répertoire de travail

Linux LPIC-2
Syntaxe du fichier [Link]
• instruction (statements)

keyword {{
keyword
...
...
;
}} ;;
 options, forwarders, logging, zone "xxx", etc …
 imbricables
• ex : forwarders dans options

• instruction "simples"
 ex : inclusion

include "/etc/bind/[Link]";
include
"/etc/bind/[Link]";

• doivent toutes se terminer par un ;

Linux LPIC-2
Options
• Options de configuration du serveur DNS

• Une seule instruction options par [Link]


 souvent écrit dans un fichier [Link]

Option Description Exemple


directory répertoire de travail directory "/var/named";
forwarders serveurs de référence (aucun par forwarders { [Link] ;
défaut) }

forward comportement avec les forwarder forward only ;


first (défaut) : en priorité
only : uniquement
version version du serveur à afficher version none ;

Linux LPIC-2
Logging
logging {{
logging
category cat
category cat { channel; };
{...
channel; };
}; ...
};
• catégorie : type d'information à logger
 security, lame-server, cname, etc ...

• chaîne : spécifie la sortie


 null : détruit toutes les informations
 default_syslog : comportement par défaut du système

• Une seule instruction logging par [Link]

• Configuration par défaut correcte

Linux LPIC-2
Zones
• Définit les paramètres généraux d'une zone
 type (master / slave)
 nom (dans l'en-tête)
 fichier (paramètres détaillés de la zone)
 plus éventuellement d'autres options

zone
zone "[Link]" {{ type master;
"[Link]"
file "/etc/bind/[Link]";
type master;
}; file
"/etc/bind/[Link]";
};
• détails dans le chapitre suivant

Linux LPIC-2
Configuration de rndc
key "rndc-key"
key "rndc-key" {{
algorithm hmac-md5;
algorithm hmac-md5;
secret
secret "tyZqsLtPHCNna5SFBLT0Eg==";
}; "tyZqsLtPHCNna5SFBLT0Eg==";
[Link] };
options {
y default-key
options { "rndc-key"; default-server [Link];
default-port"rndc-key";
default-key 953; default-
}; server [Link];
default-port 953;
};
key "rndc-key"
key "rndc-key" {{
algorithm hmac-md5;
algorithm hmac-md5;
secret "tyZqsLtPHCNna5SFBLT0Eg==";
secret "tyZqsLtPHCNna5SFBLT0Eg==";
}; };
[Link]
f controls controls
{ {
inet [Link] port 953
inet [Link] port 953
allow {{ [Link];
allow [Link]; }} keys
keys {{ "rndc-
"rndc-key"; };
}; key"; };
};
Linux LPIC-2
Commandes rndc
• générer une clé si aucune n'est disponible sur le système

##• rndc-
rndc-confgen
confgen
• syntaxe de rndc
$$ rndc
rndc [-b
[-b source-address] [-c
source-address] [-c config-file]
config-file] [-k
[-k key-file]
key-file] [-s
[-s server]
server] [-
[-p

pport] [-V] [-y key_id] {commande}
port] [-V] [-y key_id] {commande}
• commandes :
 reload : recharger la configuration
 stop : arrêter le serveur
 flush : vider le cache
 status : afficher l'état du serveur
 aucune ou help : liste des commandes possibles
Linux LPIC-2
Domain Name Server

Création et
maintenance de
zones DNS

Linux LPIC-2
Plan
• Introduction  Mail Exchange (MX)

• Configuration : maitre / eslave  NameServer (NS)

• Fichiers de zone
 Start Of Authority (SOA)
• Paramètres SOA
• Fichier de zone : exemple
• Zone inverse
• Instructions
• Zone racine
• Enregistrements
• Délégation de zone
 Adresse (A)
 Alias (CNAME) • Tests et vérification
avec nslookup

Linux LPIC-2
Introduction
• Après avoir appris à configurer un serveur en cache only
 apprendre à gérer directement des zones

• Deux types de zones : zones et zones inverses


 à chaque zone doit correspondre une zone inverse
• définition pour chaque dans [Link]
• permet la résolution adresse ip → nom
• exemple : [Link]

Linux LPIC-2
Configuration : maitre / eslave
• fichier [Link]
 serveur maître
zone
zone "[Link]" {{ type master;
"[Link]"
file "/etc/bind/[Link]";
type master; allow-transfer { [Link] ; } ;
}; file "/etc/bind/[Link]";
allow-transfer
{ [Link] ; } ;
};
 serveur esclave
zone "[Link]"
zone "[Link]" {{ type slave;
masters { [Link];
type slave; };
file "[Link]";
masters
}; { [Link]; };
file "[Link]";
};
Linux LPIC-2
Fichiers de zone
• contiennent les informations sur une zone particulière
 enregistrements
 directives

• indiqués par l'option file d'une directive zone dans [Link]


 chemin complet (/etc/bind/[Link])
 ou chemin relatif
• par rapport à la directive directory

Linux LPIC-2
Fichier de zone : exemple
$ORIGIN [Link].
$ORIGIN [Link].
$TTL 86400
$TTL 86400
@@ IN SOA [Link].
IN SOA [Link]. (
[Link].
2001062501 ; serial
[Link]. ( 2001062501 ; serial
21600 ;21600 ; refresh
refresh after after 6 hours
6 hours
3600 ;3600
retry after; retry
1 hourafter 1 hour
604800 ;604800 ; expire
expire after 1 weekafter 1 week
86400 ) ; minimum
86400
TTL of )1 day; minimum TTL of 1 day

IN IN
NS NS [Link].
[Link]. IN NS [Link].

IN IN
MX 10NS [Link].
[Link] MX 20
[Link].
IN MX 10 [Link].
20 [Link].
IN IN AMX [Link]
IN A [Link]
server1 IN A [Link] server2 IN A [Link] dns1 IN
A [Link]
server1 IN A [Link]
dns2 IN A [Link]
[Link]
server2 IN A [Link]
ftp IN CNAME server1
dns1 [Link]
mail IN CNAME server1
dns2 IN A
mail2 IN CNAME server2
ftp
www IN
IN CNAMEserver2
CNAME server1
mail IN A
mail2 IN CNAME server1
www
IN CNAME server2
Linux LPIC-2
Instructions
Instructions Description Exemple
$TTL Valeur par défaut du temps de $TTL 86400
vie (Time to live : durée, en secondes, durant laquelle un
enregistrement est valide).

$ORIGIN Modifier l'origine (current origin : $ORIGIN [Link]


nom de domaine, spécifié dans l'en-tête de la directive zone du
[Link])

$INCLUDE Permet d'inclure un autre fichier $INCLUDE


de zone à l'endroit de cette /etc/bind/[Link]
directive.
Permet de stocker des configuration de zone à l'écart du fichier
de zone principal.

Linux LPIC-2
Enregistrements
•Syntaxe

www 7200 IN CNAME monserveur


www
monserveur IN720 I CNAME
A [Link] monserveur
monserveu 0 N A [Link]
r Nom TTL Typ Valeu
•La seconde colonne indique la classe I e r
 ie : le protocole utilisé N
 aujourd'hui, toujours IN (pour internet)

•Nom : absolu (FQN) ou "relatif" (à l'origine)


 si ne finie pas par un point, l'origine lui sera ajoutée (à droite)
 @ permet de référencer uniquement l'origine

Linux LPIC-2
Adresse (A)

• Nom → IP

• Exemple

monserveur IN A [Link]

Linux LPIC-2
Alias (CNAME)

• Nom → Nom (A)

• Exemple

www IN
www INCNAME monserveur
CNAME monserveur
monserveur
monserveur IN
INA [Link]
A [Link]

Linux LPIC-2
Mail Exchange (MX)
• Serveurs mail pour le domaine
• Par priorité (du + petit au + grand)

• Vers une adresse (A)


 Pas d'Alias (CNAME)

• Exemple

[Link] MX
[Link]. IN10MX 10 [Link].
[Link].
[Link].
[Link] MX
IN50MX
[Link].
50 [Link].
Linux LPIC-2
NameServer (NS)
• Spécifier les serveurs faisant autorité sur le domaine

• Vers une adresse (A) (glue record)


 Pas d'Alias (CNAME)
 éviter de pointer vers l'enregistrement A d'un autre serveur DNS
 Omettre les furtifs

• Exemple

NS [Link].
IN NS [Link].
ns ININ A A192.168.1.30
ns [Link]

Linux LPIC-2
Start Of Authority (SOA)
• Informations générales sur la
zone
 Serveur maître
 Adresse mail de l'admin
 paramètres

• Exemple

@@ IN
IN [Link].
SOA [Link].
SOA [Link].
[Link]. ( (
2011102402 ; Serial
2011102402 ; Serial
604800 ; Refresh
604800 ; Refresh
86400
86400 ; Retry
; Retry
2419200 ; Expire; Expire
2419200
604800 ))
604800 ; Negative
; Negative Cache
Cache TTL TTL
; ;

Linux LPIC-2
Paramètres SOA
Paramètre Description
Serial Numéro de série.
Permet au serveur secondaire de savoir si il doit se mettre à
jour.
Incrémenté à chaque modification du fichier.
Par convention : yyyymmdd + numéro de la modification.
Refresh Fréquence de consultation du serveur primaire par les serveurs
secondaires.
Retry Temps d'attente avant nouvel essai en cas d'echec de refresh.
Expire Durée d'indisponibilité du serveur primaire après laquelle celui-
ci sera considéré comme retiré du service.
Minimum TTL minimum du cache
TTL

•Toutes les durées sont exprimées en secondes !


Linux LPIC-2
Zone inverse
• permet la résolution ip → nom

• enregistrements PTR

1 IN PTR [Link].
ne pas oublier le point finale (racine)

• déclaration dans [Link]

zone {
"[Link]" { type master ;
file "/etc/bind/db.1.168.192"
type master ; ;
} ; file
"/etc/bind/db.1.168.192" ;
} ;
Linux LPIC-2
Zone racine
• [Link]
zone "."
zone "." {{
type hint;
type hint;
file "/etc/bind/[Link]";
file
}; "/etc/bind/[Link]";
};
• fichier de zone à mettre à jour
 soit par la distribution
 soit via [Link]
 via dig
dig @[Link]
dig @[Link] .. ns
ns >> roothints
roothints

Linux LPIC-2
Délégation de zone
• Permet de déléguer un sous-domaine à un autre serveur DNS

• Exemple :
 un serveur [Link] maître sur [Link]
• ip = [Link]
 un serveur [Link] maître sur [Link]
• ip = [Link]

Linux LPIC-2
Délégation de zone
• fichier de zone de [Link] sur ns1
$ORIGIN
$ORIG [Link].
[Link]
@ IN IN SOA
. [Link].
SO [Link].
[Link]. ( (
@ IN A ...
[Link].
)
... IN NS [Link].
ns1 IN) A [Link]
... ...
IN NS [Link].
ns1
$ORIGIN IN
[Link].
$ORIGIN A [Link]
[Link].
@ IN NS [Link].
@ IN NS [Link].
; il est recommandé,
; il estmais non indispensable,
recommandé, d'établir également
mais non indispensable, le serveur
d'établir
; ns1 en de ns3
également cette zone, et de lui donner autorité sur
le serveur
; slave ; ns1 en slavecede ns3 pour cette zone, et de lui donner
pour
sous- (en plussur ce
autorité la configuration dans [Link])
domaine ; de
sous-domaine (en plus de la configuration dans
ns3 IN A
[Link]) [Link] ; 'glue' record, obligatoire !
; IN NS [Link].
; IN NS [Link].
Linux LPIC-2
Délégation de zone
• fichier de zone de [Link] sur ns3

$ORIGIN [Link].
$ORIGIN [Link].
@@ IN IN SOA [Link].
SOA [Link]. [Link].
[Link]. ( (
...
...
))
IN NS NS
IN [Link].
[Link].
; pour ns1 en slave, voirns1
; pour précédemment
en slave, voir précédemment
; IN ; IN NS
NS [Link].
[Link].
; [Link] A [Link] ; 'glue'
; [Link] A record192.168.0.1 ;
ns3 IN A [Link]
'glue' record ns3IN A [Link]

; exemple d'enregistrement
; exemple pour [Link]
d'enregistrement pour [Link]
ftp IN A [Link]
ftp IN A [Link]

... ...

Linux LPIC-2
Tests et vérification avec nslookup
• afficher les enregistrements d'un domaine ou d'un hôte
 dans le dns configuré
$$ nslookup
nslookup [Link]
[Link]
 dans un autre
serveur
$ nslookup [Link] [Link]
$ nslookup [Link]
[Link]
• mode interactif (sans arguments)
 clause set pour modifier le mode
setd'interrogation
set type=mx
type=mx
• n'est plus maintenu
 privilégier dig et host
• cf chapitres précédents

Linux LPIC-2
Domain Name Server
Sécurisation d'un
serveur DNS

Linux LPIC-2
Plan
• DNSSEC
• Introduction

 Introduction
• Remarque sur le hacking
 Signature des enregistrements
• Types de requêtes
 DNSKEY et RRSIG
• Masquer le numéro de version
 Preuves de non-existance
• ACL
 Chaine de confiance
• Limiter les requêtes
• Mise en pratique
• Limiter les transfers de zone
 Génération de clés avec
dnssec-keygen
• Limiter les privilèges de BIND
 Limitation des transfers avec
• Chroot DNSSEC

• Chroot : logging  Signature de zone

 Configuration du client

 Enregistrements DS

Linux LPIC-2
Introduction
• mettre à jour régulièrement
 garder un œil sur les nouvelles versions et les annonces de failles
de sécurité
 exemple : [Link]

• Limiter les informations disponibles

• Limiter l'accès et les transferts de zone

• Isoler/Limiter BIND

• Sécuriser les données (avec DNSSEC)

Linux LPIC-2
Remarque sur le hacking
• Ne pas confondre hacking et malveillance
 black / grey / white hats

• Le hacking n'est d'ailleurs pas uniquement lié aux questions de


sécurité, ni même d'informatique

• "aptitude technique et [...] plaisir pris à résoudre des problèmes et à


dépasser des limites arbitraires" - Eric Raymond,
Comment devenir un hacker ?
 voir aussi The Jargon File, du même auteur, et sa définition très complète
du terme hacker

Linux LPIC-2
Types de requêtes
• requêtes "classiques"
 demande d'une information spécifique
 contrôlée par l'instruction allow-query

• Transferts de zone
 envoi de toutes les informations d'une zone à un autre serveur
 conçues pour les serveurs "esclaves"
 contrôlées par l'instruction allow-transfer
autorisé par défaut pour tout les hôtes

Linux LPIC-2
Masquer le numéro de version
• hack

$$ dig
dig @target
@target chaos
chaos [Link]
[Link] txt
txt
 peu permettre de cibler les attaques en fonction de failles connues

• solution : [Link]

options {{
options
......
version "hidden";
version
}; "hidden";
};

Linux LPIC-2
ACL
• Mettre en place un ACL

acl "trusted"
acl "trusted" {{
localhost; [Link]/24;
localhost;
}; [Link]/24
;
};

• utilisable par diverses instructions de contrôle d'accès


 allow-query, allow-transfer

Linux LPIC-2
Limiter les requêtes
• grâce aux instructions allow-query et allow-transfer
 utilisables dans les instructions zone et options
• celles des instructions zone surchargeant celles, globales,
de l'instruction options

• Exemple
acl "my_network"
acl "my_network" {{
[Link]/24;
[Link]/24;
}; };

zone "[Link]" IN {
zone "[Link]" IN {
type master;
type master;
allow-queries { my_network; };
allow-queries
}; { my_network; };
};

Linux LPIC-2
Limiter les transfers de zone
• hacks

$ $dig
digaxfr
axfr@serveurdns
@serveurdns domaine
domaine
$ host -l domaine
serveurdns
$ host -l domaine serveurdns
• DOIT être limité aux serveurs "esclaves" sur les serveurs maitre
 totalement interdit (none) sur les serveurs esclaves

• Exemple : [Link] d'un serveur maitre


acl "my_slave_servers"
acl "my_slave_servers" {{
[Link]; //
[Link]; // [Link]
[Link]
}; };

zone "[Link]" IN {
zone "[Link]" IN {
type master;
type master;
allow-transfer { my_slave_servers; };
allow-transfer
}; { my_slave_servers; };
};

ne pas oublier de faire de même pour les zones


Linux LPIC-2inverse
Limiter les privilèges de BIND
• se lance par défaut en tant que root sur certaines distributions

• éviter l'utilisateur/groupe nobody/nogroup


 trop grand nombre d'applications lancées via cet utilisateur
 risque de communication entre ces application → faille

• privilégier un utilisateur/groupe spécifique


 ex : named / named

## named
named -u
-u named
named -g
-g named
named
 Exemple de init script sous
Debian
start-stop-daemon ...
start-stop-daemon ... --exec
--exec /usr/sbin/named
/usr/sbin/named --
-- -u
-u named
named -g
-g named
named
vérifier que cet utilisateur ai l'accès au dossier de travail (instruction
directory)
Linux LPIC-2
Chroot
• permet d'isoler l'execution d'un programme
 en changeant sa racine (ex : /var/cache/bind)
 option -t de named

start-stop-daemon ...
start-stop-daemon ... --exec
--exec /usr/sbin/named
/usr/sbin/named --
-- -t
-t /var/cache/bind
/var/cache/bind

• fichiers requis par BIND


 dossiers etc, dev, lib, sbin (ou usr/sbin) et
var/run
 périphérique /dev/null
$$ mknod
mknod -m -m 666
666 /var/cache/bind/dev/null
/var/cache/bind/dev/null cc 11 3
3  les fichiers /etc/{passwd,group,shadow,[Link],localtime} contenant l'utilisateur/groupe
named/named
 fichiers de configuration (dans /var/cache/bind/etc/bind/)
• atention à l'instruction directory, qui sera relative à la nouvelle racine
 toutes les librairies utilisées par BIND
$$ ldd
ldd /usr/sbin/named

/usr/sbin/named
 les programmes named, named-xfer et
rndc
Linux L
Chroot : logging
• la solution traditionnelle de logging présentée aux chapitres
précédents requière des fichiers externes au chroot
 nous devons donc faire appel à une autre solution
 voici un exemple
logging {{
logging
channel some_log
channel some_log {{
file "[Link]"
file "[Link]" versions
versions 3; severity info;
}; 3; severity info;
};
category default { some_log; };
category default
{//some_log;
... };
};
// ...
};
 le nouveau fichier de log sera donc
/var/cache/bind/var/cache/bind/[Link]
Linux LPIC-2
DNSSEC
• Introduction

 Signature des enregistrements

 DNSKEY et RRSIG

 Preuves de non-existance

 Chaine de confiance

• Mise en pratique

 Génération de clés avec dnssec-keygen

 Limitation des transfers avec DNSSEC

 Signature de zone

 Configuration du client

 Enregistrements DS
Linux LPIC-2
Introduction
• Permet de sécuriser les réponses d'un serveur DNS
 par rapport à des informations existante
• Authentification des données contenues dans les réponses.
• Intégrité de ces données.
 ou par rapport à des informations non existantes
• Preuve de non existence.

• En signant les enregistrements DNS au sain d'une zone

• Permet d’établir une chaîne de confiance basée sur des clés publiques
 délégation de signatures
 un DNS de niveau supérieur pouvant annoncer que tel sous-domaine est signé

• Empêche le DNS poisoning

 intercepter des paquets dns et les modifier

Linux LPIC-2
Signature des enregistrements

Danger :
le DNS
poisoning

Solution : la signature des


enregistrements

Linux LPIC-2
DNSKEY et RRSIG
• DNSKEY : transmettre une clé publique entre le résolveur
(client) et le serveur de nom
 afin de vérifier la signature du serveur d'autorité
 vérifier l'intégrité et l'authenticité du message

• RRSIG : signature de l'enregistrement envoyé par le serveur


d'autorité
 pour chaque enregistrement
 signature du hash de l'enregistrement avec la clé privée du serveur
d'autorité

Linux LPIC-2
Preuves de non-existance
• pour des noms inexistants
 par défaut, le serveur répondra par une réponse
vide
• il n'y a donc rien à signer

• NSEC (Next SECure) : preuve de non existance


 indique les noms n'existant pas !
 permet ainsi la création d'un RRSIG correspondant
 Exemple : il n'y a aucun nom entre beta et delta
[Link]. NSEC
[Link]. NSEC [Link].
[Link]. AA RRSIG
RRSIG NSEC
NSEC
 problème : à chaque nom existant est associé un NSEC
• permet donc du "zone walking" (énumération de zone)
• ie : récupérer l'ensemble des enregistrements existant sur la
zone
Linux LPIC-2
Preuves de non-existance
• NSEC3 : évite les attaques de type énumération de zone
 utilise les hashs des noms au lieu des noms eux même
 Exemple : il n'y a pas de hash valide entre 810c et c73a
[Link]. NSEC
[Link]. NSEC 11 00 55 5A17
5A17 c73a
c73a AA RRSIG
RRSIG
• algo (1), salt (5A17), iterations (5)

• NSEC3PARAM : paramètres NSEC3


 ne sert qu'aux serveur d'autorité
 afin de calculer le hash des noms qu'il conserve

Linux LPIC-2
Chaine de confiance
• être certain que la clé publique (DNSKEY) du résolveur
correspond bien à la bonne clé de la zone
• cf délégation de zone
 un serveur de confiance indique que l'un de ses serveurs enfants est
digne de confiance

• DS : identifier rapidement la clé publique de la zone fille

• directement lié à l'enregistrement DNSKEY d'une des zones filles

- envoyé par le serveur fils pour l'enregistrer dans le serveur père

• hash du nom du détenteur de la clé publique (zone fille)

Linux LPIC-2
Mise en pratique
• 2 types de clés :
 KSK (Key Signing Keys)
• utilisée uniquement pour signer les clés d'une zone
(DNSKEY)
 ZSK (Zone Signing Keys)
• utilisée pour signer tout les RRsets d'une zone (RRSIG)

Linux LPIC-2
Génération de clés avec dnssec-keygen
$$ dnssec-keygen
dnssec-keygen -a
-a algo
algo -b
-b size
size -n
-n nametype
nametype [-f
[-f flag]
flag] nom
nom

• algo : algorithme cryptographique


 non sensible à la casse
 pour DNSSEC : RSAMD5, RSASHA1, DSA …
 pour TSIG/TKEY : DH (Diffie Hellman), HMAC-MD5, HMAC-SHA1 …

• size : longueur de la clé (en bits)


 RSA : entre 512 et 2048
 DH : entre 128 et 4096
 DSA : entre 512 et 1024
 HMAC : entre 1 et 512

• nametype : type d'utilisation de la clé


 non sensible à la casse
 ZONE, USER ou OTHER

• flag : utilisé pour indiquer qu'une clé est une clé KSK
 ZSK sinon

• créé les fichiers Kname+algorithm+[Link] and Kname+algorithm+[Link]

Linux LPIC-2
Limitation des transfers avec DNSSEC
• dans [Link]
key [Link].
key [Link]. {{ algorithm "hmac-md5"; secret "5VBiSy...";
}; algorithm "hmac-
md5"; secret
"5VBiSy...";
};
 limiter les droits d'accès en lecture au seul utilisateur/groupe liés
au serveur BIND

• définir les serveurs pouvant se connecter grâce à cette clé

server ip_du_serveur_distant
server ip_du_serveur_distant { keys [Link].;
};
{
keys [Link].;
};
 à inscrire sur tout les
serveurs
Limitation des transfers avec DNSSEC
• grâce à la clé déclarée précédemment
zone "[Link]"
zone "[Link]" {{ type master;
filetype
"[Link]";
master;
allow-transfer { key [Link].; };
file "[Link]";
}; allow-transfer { key
[Link].; };
};

Linux LPIC-2
Signature de zone
1) Création des clés (dans /etc/bind/)
$$ dnssec-keygen
dnssec-keygen -f
-f KSK
KSK -a
-a RSASHA1
RSASHA1 -b
-b 1024
1024 -n
-n ZONE
ZONE projet
$ dnssec-keygen -a RSASHA1 -b 1024 -n ZONE projet
projet
$ dnssec-keygen -a RSASHA1 -b 1024 -n ZONE projet

2) Inclusion des clés dans le fichier de zone

$include nom_du_fichier_KSK.key
$include
$include nom_du_fichier_ZSK.key
nom_du_fichier_KSK.key
$include
nom_du_fichier_ZSK.key
3) Signature de la zone
 créé le fichier de zone signée
[Link]
$$ dnssec-signzone
dnssec-signzone -t
-t -k
-k clé_KSK.key
clé_KSK.key [Link]
[Link] -o
-o projet
projet clé_ZSK.key
clé_ZSK.key
Linux LPIC-2
Signature de zone
4) modification de [Link]
zone “projet”
zone “projet” {{
type “master”;
type “master”;
file “/etc/bind/[Link]”;
file
}; “/etc/bind/[Link]”;
};

5) modification de [Link]
dnssec-enable yes;
dnssec-enable
yes;
6) relancer bind

$$ /etc/init.d/bind9
/etc/init.d/bind9 restart
restart
Linux LPIC-2
Configuration du client
• récupérer la clé KSK
 de manière sécurisée (scp, sftp ...)

• l'ajouter au fichier /etc/[Link]

tail -n
tail -n 11 [Link]
[Link] >>
>> /etc/trusted-
/etc/[Link]
[Link]
• tester la configuration

$$ dig
dig +dnssec
+dnssec +sigchase
+sigchase [Link]
[Link]

Linux LPIC-2
Signature de zone
1) Création des clés (dans /etc/bind/)
$$ dnssec-keygen
dnssec-keygen -f
-f KSK
KSK -a
-a RSASHA1
RSASHA1 -b
-b 1024
1024 -n
-n ZONE
ZONE projet
$ dnssec-keygen -a RSASHA1 -b 1024 -n ZONE projet
projet
$ dnssec-keygen -a RSASHA1 -b 1024 -n ZONE projet

2) Inclusion des clés dans le fichier de zone

$include nom_du_fichier_KSK.key
$include
$include nom_du_fichier_ZSK.key
nom_du_fichier_KSK.key
$include
nom_du_fichier_ZSK.key
3) Signature de la zone
 créé le fichier de zone signée
[Link])
$$ dnssec-signzone
dnssec-signzone -t
-t -k
-k clé_KSK.key
clé_KSK.key [Link]
[Link] -o
-o projet
projet clé_ZSK.key
clé_ZSK.key
Linux LPIC-2
Enregistrements DS
• Exemple : un serveur A1 fait autorité sur [Link]
 un serveur A2, grâce à une délégation de zone, fait autorité sur
[Link]

• Nous devons donc transmettre les enregistrements DS


générés dans A2 à A1 afin d'établire une chaine de confiance
• Ces enregistrements ont été créés dans un fichier séparé,
[Link]
 envoyer ce fichier de manière sécurisée à A1
 l'inclure dans le fichier de zone non signé

Linux LPIC-2
Module 9:
Services Web
Services web
Mise en place d'un
serveur web

Linux LPIC-2
Plan
• Introduction • Modularité

 Apache  Chargement d'un module Apache


 mod_perl
 MPM : prefork ou worker ?
• Installer mod_perl
 Virtual Hosts
 PHP
• Configuration  Authentification et autorisation
 [Link] : exemple • Mise en place

• Gestion des comptes


 Options du serveur Apache
utilisateur
 Contrôle des répertoires • Protection d'un dossier par
DAC
 Logging
• Protection d'un dossier par
MAC

• apache2ctl

• Bonus : les outils Debian

Linux LPIC-2
Introduction
• Un des services primordiaux d'Internet
 certainement le plus connu du grand public
 beaucoup confondant World Wide Web et Internet

• HTTP
 HyperText Transfer Protocol
 Permettre aux utilisateurs d’accéder à des données (pages web)
sur un serveur
• via un client web (ex : Firefox)

Linux LPIC-2
Apache
• Né en avril 1995

 ensemble de correctifs à NCSA HTTPd (du domaine publique)

• leader de l'époque (plus de 55 % de parts de marché)

• "mort" (0%) en juillet 1999

• Totalement réécrit en 2000 pour la version 2

 plus aucune trace de NCSA HTTPd

• LE serveur web de référence depuis avril 1996


• Libre (Licence Apache)  54% de parts de marché sur les sites actifs en avril 2013
selon [Link]
 v2.0 (compatible GPL v3) depuis Janvier 2004
• contre 13 % pour Nginx, plus léger et performant, qui
connaît une progression certaine depuis 2007
• 12 % pour Microsoft-IIS et 8 % pour Google Servers
• Multi-plateforme

 GNU/Linux, Mac OS X, BSD, Solaris, Windows  LAMP : Linux, Apache, MySQL, PHP

Linux LPIC-2
MPM : prefork ou worker ?
• Multi-Processing Module
 Moteur de serveur : interprète les requêtes
• "duplique" apache
 afin de répondre à plusieurs requêtes simultanément
• 2 principaux paquets : apache2-mpm-prefork ou worker

• Prefork • Worker
 Multi-threading : un thread par connexion
 Mode historique (apache
1.3)  Meilleures performances
 multi-processing : un processus par
• pas ou peu de commutation de contexte
connexion
 nécessite des modules compatibles
 Meilleure isolation / Faibles performances
• exclue mod_php

Linux LPIC-2
Virtual Hosts

• Héberger plusieurs sites sur un même serveur

• Deux types :
 IP based
• Nécessite plusieurs interfaces (ou routage)
 Named based
• Répond en fonction de l'url appelée

• Configurés dans [Link]


 ou/etc/apache2/sites-available/ sur Debian et
dérivés
 cf cours suivant

Linux LPIC-2
Configuration
• Dans (suivant la distribution) : • fichiers .htaccess
 /etc/apache/config/  permettent une configuration spécifique pour chaque
 ou /etc/apache2/ dossier

 ou /etc/httpd/config/
 à utiliser avec prudence
• uniquement si vous devez séparer la configuration
de certains contextes du fichier principal
• [Link] (ou [Link])
- ie
: interdire le droit d'accès à [Link] à certains
 fichier de configuration principal administrateurs
• soit séparé en plusieurs parties (cf
"Include")  « En général, vous ne devriez jamais utiliser les
• soit d'un bloc fichiers .htaccess à moins que vous n'ayez pas accès
au fichier principal de configuration du serveur. Il y a,
• s'applique à tout le serveur par exemple, une conception erronée qui prévaut
selon laquelle les droits des utilisateurs doivent
 3 parties : toujours être gérés dans le fichier .htaccess. Cela n'est
• global environment simplement pas le cas. Vous pouvez placer les
configurations des droits dans la configuration
- configuration générale du serveur
principale du serveur, et cela est, en fait, la manière
• paramètres du serveur par défaut favorisée de le faire. » - Documentation Apache

- requêtes non gérées par un virtual host

• configuration des virtuals hosts

Linux LPIC-2
Options du serveur Apache
• Première section du fichier [Link]
 nombreuses options de type clé valeur

• Nombre maximum de requêtes simultanées autorisées

MaxKeepAliveRequests 100
MaxKeepAliveRequests
100
• Nombre de serveurs à lancer au démarrage

StartServers 5
StartServers
5• Nombre minimal et maximal de serveurs "en attente"
MinSpareServers 55
MinSpareServers
MaxSpareServers 10
MaxSpareServers
10 trop bas → perte de performance / trop haut → consommation excessive de
ressources

• nombre maximal de connections (de clients) simultanées


 ie : nombre maximal de serveurs

MaxKeepAliveRequests
100
Linux LPIC-2
Contrôle des répertoires
<Directory chemin
<Directory chemin répertoire>
répertoire> ...
... </Directory>
</Directory>
• Regrouper des directives pour qu'elles ne s'appliquent qu'au
répertoire concerné

• Exemple

<Directory "/usr/local/httpd/htdocs">
<Directory Options Indexes
FollowSymLinks
"/usr/local/httpd/htdocs">
</Directory>
Options Indexes FollowSymLinks
</Directory>

 voir : [Link]

Linux LPIC-2
Logging
• généralement dans /var/log/apache2 ou httpd

• Configuration ([Link])
 Messages d'erreurs

ErrorLog ${APACHE_LOG_DIR}/[Link]
ErrorLog
${APACHE_LOG_DIR}/[Link]
 Niveau de logging des messages d'erreurs

Loglevel warn
Loglevel
warn• Dans l'odre : debug, info, notice, warn, error, crit, alert et emerg

• Accès au serveur

LogFormat "%h
LogFormat "%h %l
%l %u
%u %t
%t \"%r\"
\"%r\" %>s
%>s %b"
%b" common CustomLog $
{APACHE_LOG_DIR}/[Link]
common
CustomLog ${APACHE_LOG_DIR}/[Link]
• Pour aller plus loin : Documentation Apache des Logs

Linux LPIC-2
Modularité
• Apache repose sur une architecture modulaire
 similaire à celle du kernel Linux
 permet à l'administrateur de choisir les fonctionnalités à inclure

• DSOs (Dynamic Shared Objects)


 Objets Dynamiques Partagés
 séparés du fichier binaire principal httpd
 soit compilés en même temps que le serveur
• peuvent être intégrés statiquement dans le binaire httpd

$$ ./configure
./configure --prefix=/chemin/vers/installation
--prefix=/chemin/vers/installation --enable-
--enable-foo
$ make install
foo
$ make install
 soit ajoutés ultérieurement
• grâce à apxs (Apache Extension Tool)

$ cd •/chemin/vers/module_tiers
$ apxs -cia mod_foo.c

Linux LPIC-2
Chargement d'un module Apache
• Dans le fichier [Link]

LoadModule module
LoadModule module filename
filename
• Remarque (pour ceux ayant travaillé sous Apache1) :
 la directive AddModule n'est plus nécessaire

• Exemple

LoadModule
LoadModule
• alias_module /usr/lib/apache2/modules/mod_alias.so
alias_module
/usr/lib/apache2/modules/mod_alias.so
• Comportement conditionnel pour un module

<IfModule [!]fichier
<IfModule [!]fichier module|identificateur
module|identificateur module>

module>
…</IfModule>
</IfModule>
Linux LPIC-2
mod_perl
• Interpréteur Perl pour Apache
 permet, grâce à des scripts Perl, de :
• produire du contenu dynamique
• gérer Apache
• et bien d'autres choses encore
 sans faire appel à un interpréteur externe
• gain de performance significatif
• accès complet à l'API Apache

• "mod_perl is more than CGI scripting on steroids. It is a whole new way to create dynamic
content by utilizing the full power of the Apache web server to create stateful sessions,
customized user authentication systems, smart proxies and much more. Yet, magically, your
old CGI scripts will continue to work and work very fast indeed. With mod_perl you give up
nothing and gain so much!" - Lincoln Stein, un des principaux contributeurs de mod_perl

Linux LPIC-2
Installer mod_perl
• Sous Debian :

## apt-get
apt-get install
install libapache2-mod-
libapache2-mod-perl2
perl2
• Sous CentOS :

## yum
yum install
install mod_perl
mod_perl

• Pour aller plus loin :


 installation : [Link]
 configuration :
[Link]

Linux LPIC-2
PHP
• Langage de script, coté serveur, orienté Web et multi-plateforme
 une référence (cf LAMP)

## apt-get
apt-get install
install libapache2-mod-
libapache2-mod-php5
php5

## yum
yum install
install php
php
• Pour tester l'installation, créer une PHP info page
## echo
echo -e
-e "<?php\n\tphpinfo();\n?>"
"<?php\n\tphpinfo();\n?>" >> /var/www/html/[Link]
/var/www/html/[Link]

• Pour aller plus loin : documentation complète de l'installation

Linux LPIC-2
Authentification et autorisation
• Deux méthodes :
 discretionary access control (DAC) - Contrôle d'accès discrétionnaire
• où "un sujet avec une certaine autorisation d'accès est capable de transmettre cette permission (peut-être indirectement) à n'importe quel
autre sujet" - Trusted Computer System Evaluation Criteria
• ici : login + mot de passe
 mandatory access controls (MAC) - Contrôle d'accès obligatoire
• décisions de protections imposées (non prises par les objets concernés)
• ici : Adresse IP, nom d'hôte, etc …

• Géré par des modules


 mod_auth_basic : le plus courant - stock les informations dans des fichiers texte
• mod_auth_dbd : stockage dans une base SQL
• mod_auth_dbm : stockage dans des fichiers sous un format DBM
• mod_auth_digest : authentification basée sur les condensés MD5
 mod_auth_anon : comportement similaire à un FTP anonymisé
 mod_authz_host : restriction de l'accès en fonction du nom d'hôte ou de l'ip (depuis 2.3)
• pour les versions précédentes, voir mod_access

• Pour aller plus loin : [Link]

Linux LPIC-2
Mise en place
• Soit dans [Link] (recommandé)
 directives <Directory> ou <Limit>

• Soit dans des fichiers .htaccess


 dans le répertoire à contrôler
 non recommandé

• Pour autoriser la surcharge de ces directives

AllowOverride AuthConfig
AllowOverride
AuthConfig
 peu concerner les .htaccess, les sous-répertoires avec <Directory>, et
autres
Linux LPIC-2
Gestion des comptes utilisateur
• Création d'un utilisateur

## htpasswd
htpasswd [-c] [-c] /usr/local/apache/passwd/passwords
/usr/local/apache/passwd/passwords monutilisateur
monutilisateur
 -c pour créer automatiquement le fichier si n'existe pas

le fichier ne DOIT pas être accessible aux autres


utilisateurs
• et encore moins au web !

• Supprimer un utilisateur
## htpasswd
htpasswd -D
-D /usr/local/apache/passwd/passwords
/usr/local/apache/passwd/passwords monutilisateur
monutilisateur

• Créer un ou plusieurs groupes d'utilisateurs


 Créer un fichier de groupe selon la syntaxe
suivante
Nom-de-groupe: user1
Nom-de-groupe: user1 user2
user2 user3
user3
Linux LPIC-2
Protection d'un dossier par DAC
• Dans une directive <Directory mondossier> ou un fichier .htaccess
dans le dossier

AuthType
AuthType Basic
Basic
## message
message àà afficher
afficher AuthName
AuthName "Restricted
"Restricted Files" AuthBasicProvider
Files"
file AuthBasicProvider file
AuthUserFile
AuthUserFile /usr/local/apache/passwd/passwords AuthGroupFile /usr/
/usr/local/apache/passwd/passwords
local/apache/passwd/groups Require user monutilisateur
AuthGroupFile
Require group /usr/local/apache/passwd/groups
mongroupe
Require user monutilisateur
Require group mongroupe
• Autoriser l'accès à tout les utilisateurs enregistrés

Require valid-
Require valid-user
user

Linux LPIC-2
Protection d'un dossier par MAC
• Grâce au module mod_authz_host

• Dans une directive <Directory mondossier> ou un fichier .htaccess dans le dossier

• adresse IP • Hôte

Require ip
Require ip [Link]
[Link] Require host
Require host [Link]
[Link] Require
Require ip
Require ip [Link]
[Link] [Link] host .net
Require [Link]
host .net
[Link] [Link]
 sous-réseau

• ip partielle  Local
Require ip
Require ip 10.1
10.1 Require local
Require
Require ip
Require ip 10
10 172.20
172.20 192.168.2
local
192.168.2
• réseau / masque

Require ip
Require ip [Link]/[Link]
Require ip [Link]/16
[Link]/[Link]
Require ip [Link]/16
Linux LPIC-
apache2ctl
• Interface de contrôle du démon
Apache
## apache2ctl
apache2ctl [commande] ...
•[commande]
Commandes ...
 start
 stop
 restart
 fullstatus : statut complet à partir de mod_status
• nécessite un navigateur web texte (comme Lynx)
• url d'accès modifiable (variable STATUSURL)
 status : idem, sans la liste des requêtes actuellement traitées
 graceful : redémarrage par l'envoi d'un SIGUSR1
• ne clos pas les connections actuellement ouvertes
 configtest : teste de syntaxe des fichiers de configuration
 help

Linux LPIC-2
Bonus : les outils Debian
• activer / désactiver un site

$$ a2ensite
a2ensite [site]
[site]
$$ a2dissite
a2dissite [site]
[site]
 créé / supprimer un lien symbolique de sites-availables/site dans sites-enables

• activer / désactiver un module


$$ a2enmod
a2enmod [module]
[module]
$$ a2dismod
a2dismod [module]
[module]
 créé / supprimer un lien symbolique de sites-availables/site dans sites-enables

Linux LPIC-2
Services web

Mise en place de
serveurs virtuels
Apache 2

Linux LPIC-2
Plan
• Introduction

• Deux solutions

• Directive VirtualHost

• Serveurs virtuels par IP

• Serveurs virtuels par nom d'hôte

• Mécanisme de sélection de serveur virtuel

Linux LPIC-2
Introduction
• Héberger plusieurs sites sur un même serveur

• Deux types :
 IP based
• Nécessite plusieurs interfaces (ou routage)
 Named based
• Répond en fonction de l'url appelée

• Configurés dans [Link]


 ou /etc/apache2/sites-available/ sur Debian et dérivés

• Documentation officielle :
[Link]

Linux LPIC-2
Deux solutions
• Faire tourner un processus httpd pour chaque domaine
 plusieurs installations séparées
 répartition de sécurité
• directives User, Group et ServerRoot différentes
User httpd1
User httpd1 Group httpd1
Group httpd1"/etc/httpd/server1"
ServerRoot
ServerRoot
"/etc/httpd/server1"
 répartition des interfaces (adresses
ip)
• via des directives Listen
Listen
Listen [Link]:80
différentes
[Link]:80

• Utiliser un unique processus résident


 partage de configuration des serveurs
virtuels
 meilleures performances
Linux LPIC-2
Directive VirtualHost
<VirtualHost adresse
<VirtualHost adresse IP[:port]
IP[:port] [adresse
[adresse IP[:port]]
IP[:port]] ...>
...> ...
... </VirtualHost>
</VirtualHost>
 Contexte : Configuration du serveur
 rassemble des directives qui ne s'appliqueront qu'à un serveur virtuel particulier
• La plupart des directives (toutes celles acceptant le contexte "Serveur
Virtuel" - cf doc) sont compatibles

• Exemple

<VirtualHost *:80>
<VirtualHost *:80>
ServerAdmin contact@[Link]
ServerAdmin contact@[Link] DocumentRoot /www/docs/[Link]
ServerName [Link]
DocumentRoot /www/docs/
ErrorLog logs/[Link]-error_log
[Link] ServerName TransferLog logs/[Link]-
access_log
[Link]
</VirtualHost>
ErrorLog logs/[Link]-error_log
TransferLog logs/[Link]-
access_log
Linux LPIC-2
Serveurs virtuels par IP
• Directive VirtualHost
 définition des directives ServerAdmin, ServerName,
DocumentRoot, ErrorLog ainsi que TransferLog ou CustomLog

 Exemple

<VirtualHost [Link]:80>
<VirtualHost [Link]:80>
ServerAdmin webmaster@[Link]
ServerAdmin webmaster@[Link] DocumentRoot /www/vhosts/www1
ServerName [Link]
DocumentRoot /www/vhosts/www1 ServerName
ErrorLog /www/logs/www1/error_log
[Link]
CustomLog/www/logs/www1/error_log
ErrorLog /www/logs/www1/access_log combined
</VirtualHost>
CustomLog /www/logs/www1/access_log
combined
</VirtualHost>

Linux LPIC-2
Serveurs virtuels par nom d'hôte
• Directive VirtualHost
 grâce à la directive ServerName, permettant de définir le nom auquel répondra le serveur
virtuel
• peu répondre à plusieurs noms grâce à la directive ServerAlias

 Exemple

<VirtualHost *:80>
<VirtualHost *:80>
# Le premier serveur virtuel
# Le premier serveur virtuel de
de la
la liste
liste est
est aussi
aussi le # serveur par défaut pour *:80
ServerName
le [Link]
# serveur par défaut pour *:80
[Link]
ServerName [Link] DocumentRoot
ServerAlias/www/domain
[Link]
</VirtualHost>
DocumentRoot /www/domain
</VirtualHost>
<VirtualHost *:80>
ServerName [Link]
<VirtualHost *:80> DocumentRoot /www/otherdomain
</VirtualHost>
ServerName [Link] DocumentRoot
/www/otherdomain
</VirtualHost>

Linux LPIC-2
Mécanisme de sélection de serveur virtuel
1) Par couple adresse IP / port
 Les chaînes sans caractères génériques l'emportent sur celles qui en contiennent
 Le port est également pris en compte
• ie : il peu exister deux hôtes virtuels [Link]:80 et [Link]:8080
 la configuration du serveur principale sera utilisée si aucune correspondance n'est trouvée

2) Par nom d'hôte


 Si (et seulement si) plusieurs hôtes virtuels correspondent au couple adresse IP / Port
 Comparaison des directives ServerName et ServerAlias avec le nom de serveur dans la requête
• Le premier correspondant est utilisé

-Y compris si un caractère générique (*) est présent (aucune priorité particulière)

• Si aucune correspondance n'est trouvée, le premier hôte virtuel correspondant au couple IP / Port
sera employé

Remarque : il est bien entendu nécessaire d'avoir configuré votre DNS en conséquent

Linux LPIC-2
Services web

Sécurisation d'un
serveur web
avec SSL

Linux LPIC-2
Plan
• Secure Socket Layer

• mod_ssl

• Chiffrement par clés asymétriques

• Signature

• Certificat

• Installation

• /etc/ssl/*

• Création du certificat auto-signé

• Création d'un certificat signé par un


CA

• Configuration d'un virtual host SSL


Linux LPIC-2
Secure Socket Layer
• protocole se situant entre un protocole réseau orienté connexion
(TCP/IP) et un protocole de la couche applicative (HTTP)

• sécurisation des communications entre un serveur et un client


 authentification mutuelle
 intégrité par signature digitale
 chiffrement par clés asymétriques

• Port 443

Listen 443
Listen
443
Linux LPIC-2
mod_ssl
• Utilisation de SSL pour Apache via OpenSSL
 d'autres solutions dérivées existent
• Secure Web Server de Red Hat
• Raven SSL Module de Raven
• Stronghold de C2Net
 mais leur conception est assez similaire dans l'ensemble, et leur
usage spécifique (non couverts par la LPIC2 et donc par ce cours)

Linux LPIC-2
Chiffrement par clés asymétriques

Linux LPIC-2
Signature

Linux LPIC-2
Certificat

Linux LPIC-2
Installation
• Debian : installé par défaut

## a2enmod
a2enmod ssl
ssl
• CentOS
## yum
yum install
install mod_ssl
mod_ssl
 configuration complète dans conf.d/[Link]
• Directives LoadModule et Listen
• Contexte global de ssl
• virtual host par défaut

Linux LPIC-2
/etc/ssl/*
• Configuration de OpenSSL
 certs/ : certificats SSL
 [Link] : Configuration de OpenSSL
• date d'expiration des clés
• nom de l'organisation
• adresse, etc ...
 private/ : clés privées

Linux LPIC-2
Création du certificat auto-signé
## openssl
opensslreq
req-x509
-x509-nodes
-nodes-days
-days365
365-newkey
-newkey \
rsa:1024
rsa:1024 \
>> -out /etc/ssl/certs/[Link] \
-out /etc/ssl/certs/[Link] \
> -keyout /etc/ssl/private/[Link]
#>
# chmod -keyout
chmod 400
400 /etc/ssl/private/[Link]
/etc/ssl/private/[Link]
/etc/ssl/private/[Link]
• Options
 -x509 -nodes : type de certificat
 -days 365 : durée de validité du certificat (en jours)
 -newkey rsa:1024 : clé RSA de 1024 bits
• il est déconseillé de créer une clé plus grosse pour des histoires de
compatibilité
 -out /etc/apache2/[Link] : certificat
 -keyout /etc/apache2/[Link] : clé privée

• Interactif : suite de questions (Pays, Ville, Organisation, CN et Adresse mail) pour

Common Name : indiquer le nom de domaine à protéger

Linux LPIC-2
Création d'un certificat signé par un CA
• génération de la clé privée
## openssl
openssl genrsa
genrsa 1024
1024 >> [Link]
[Link]
• création du CSR
 Certificate Signing Request ou fichier de demande de signature de certificat
## openssl
openssl req
req -new
-new -key
-key [Link]
[Link] >> [Link]
[Link]
• Envoyer le CSR au CA (Autorité de certification)
 par exemple [Link], tustico ou StartSSL (gratuit)
 permet d'obtenir un certificat signé par la clé privée de l'organisme

• Déposer les certificats fournis aux bons emplacements


 votre certificat ainsi que celui de votre CA dans /etc/ssl/certs/
 votre clé dans le dossier /etc/ssl/private/ avec les droits 400

Linux LPIC-2
Configuration d'un virtual host SSL
<VirtualHost *:443>
<VirtualHost *:443>
ServerName [Link]
ServerName [Link] DocumentRoot
DocumentRoot /var/www/[Link]
/var/www/[Link]
SSLEngine on
SSLCertificateFile
SSLEngine on /etc/ssl/certs/[Link] SSLCertificateKeyFile /etc/
ssl/private/[Link] SSLCACertificateFile
SSLCertificateFile /etc/ssl/certs/[Link]
/etc/ssl/certs/[Link] SSLVerifyClient none
SSLCertificateKeyFile
/etc/ssl/private/[Link]
Require ssl
SSLCACertificateFile /etc/ssl/certs/[Link]
</VirtualHost>
SSLVerifyClient none

Require ssl
</VirtualHost>
• Directives
 SSLEngine on/off : active / désactive le SSL pour ce serveur virtuel
 SSLCertificateFile file : chemin vers le certificat
 SSLCertificateFile file : chemin vers la clé privée
 SSLVerifyClient none/optional/require/optional_no_ca : niveau de vérification du certificat pour l'authentification du
client
 Require ssl : les clients ne peuvent se connecter à ce serveur virtuel que via ssl

Linux LPIC-2
Services web

Mise en place d'un


serveur
mandataire
(proxy)
Linux LPIC-2
Plan
• Introduction

 Squid
• Configuration

 Paramètres généraux
• ACLs

 ACLs : Exemples
• Restriction d'accès

• Authentification utilisateur

 Authentification utilisateur pour Squid 2.4-

Linux LPIC-2
Introduction
• Serveur mandataire (proxy)
 intermédiaire entre deux réseaux (ex : local / internet)

• Avantages et fonctionnalités
 performances
• mémoire cache, compression
 sécurité
• anonymisation
• surveillance (journalisation)
 filtrage
• des publicités et contenus lourds (performance)
• des contenus indésirables

Linux LPIC-2
Squid
• Proxy libre de référence
 Licence GNU GPL
 créé en Juillet 1996
 Notamment utilisé par Wikimedia Fondation et Flickr
 version actuelle (au 13 Juillet 2013) : 3.3.8

• Support des protocoles HTTP, HTTPS, FTP et Gopher

• Nombreuses fonctionnalités
 mémoire cache
 contrôle étendu des accès
 cache DNS
 mandataire inverse

Linux LPIC-2
Configuration
• [Link]
 /etc/squid (CentOS et Debian Squid 2) ou /etc/squid3 (Debian Squid 3)
 Ensemble de directive complexes
• ligne par ligne
 Fonctionnel à l'installation

• Exemple (Extrait) :

visible_hostname ubuntu
visible_hostname ubuntu http_port 3128
...
http_port 3128
acl allowedips src [Link]/[Link]
...
... allowedips src
acl
forwarded_for off
[Link]/[Link]
...
...
forwarded_for off
...
Linux LPIC-2
Paramètres généraux
• Définition du port d'écoute HTTP (3128 par défaut)
http_port 3177
http_port
3177
3177
• Interface d'écoute HTTP (toutes par défaut)
 limiter aux réseaux locaux pour des raisons de sécurité
http_port [Link]:3177
http_port
[Link]:3177
• Nom de la machine (obtenu via gethostname() par défaut)
visible_hostname nom_machine
visible_hostname
nom_machine

Linux LPIC-2
ACLs
• Syntaxe

acl aclname
acl aclname acltype
acltype string[string2]
string[string2]
 acltype :

• src : adresse IP de la source (ie. le client) (adresse/masque) ou d'une place


d'adresses (adresse_IP_debut-adresse_IP_fin)
• dst : adresse IP de la destination (ie. ordinateur cible)
• srcdomain : domaine du client
• dstdomain : domaine de destination.
• url_regex : chaîne contenu dans l'URL
- possibilité d'utiliser les jokers ou un fichier

- sensible à la casse

• urlpath_regex : chaîne comparée avec le chemin de l'URL


- possibilité d'utiliser les jokers

• proto : protocole.

Linux LPIC-2
ACLs : Exemples

acl mon_domaine_dst
acl mon_domaine_dst dstdomain
dstdomain [Link]
[Link]

acl clients
acl clients src
src [Link]/[Link]
[Link]/[Link]

acl url_interdit
acl url_interdit url_regex
url_regex forbidden
forbidden

acl url_interdites
acl url_interdites url_regex
url_regex "/etc/squid/denied_url"
"/etc/squid/denied_url"

Linux LPIC-2
Restriction d'accès
• A partir d'une acl pré-définie
 doit être placé après la définition de cette acl

• Syntaxe

http_access allow|deny
http_access allow|deny [!]aclname
[!]aclname
• Exemples

 interdire l'accès au domaine [Link]


http_access
http_access deny mon_domaine_dst
deny mon_domaine_dst
http_access allow all
http_access allow all
 interdire l'accès aux pages contenant le mot forbidden
http_access
http_access deny url_interdit
deny url_interdit
http_access allow all
http_access allow all

http_access
 Restreindre l'accès
http_access allowallow
au proxylocalhost localhost
aux seul réseau [Link]
http_access
http_access allow allow clients clients
http_access deny all
http_access deny all
Linux LPIC-2
Authentification utilisateur
• 4 types d'authentification HTTP possible
 Basic, NTLM (SMB LM, v1 and v2), Digest, et Negotiate.

• Nombreuses solutions disponibles


 APM, LDAP, NCSA auth, SMB …

• Avec NCSA auth


 à partir des mêmes outils (htpasswd) que pour Apache2 mod_auth_basic
 Exemple

auth_parambasic
auth_param basicprogram
program/usr/local/squid/bin/ncsa_auth
/usr/local/squid/bin/ncsa_auth
/usr/local/squid/etc/passwd
/usr/local/squid/etc/passwd
acl
acl auth_users proxy_auth REQUIRED http_access
auth_users allow
proxy_auth REQUIRED auth_users
http_access deny all
http_access allow auth_users
http_access deny all
• Documentation : [Link]

Linux• LPIC-2
Authentification utilisateur pour Squid 2.4-
• Avec NCSA auth

authenticate_program /usr/lib/ncsa_auth
authenticate_program /usr/lib/ncsa_auth /etc/squid/passwd
/etc/squid/passwd acl auth_users
proxy_auth
acl REQUIRED
auth_users proxy_auth REQUIRED
acl all
acl all src
src 0/0
0/0
http_access
http_access allow
allow auth_users
auth_users
http_access deny
http_access deny all
all

• Avec LDAP

acl identification
acl identification
proxy_auth proxy_auth
REQUIRED REQUIRED
http_access
http_access allow
allow identification
identification
authentificate_program /usr/lib/squid/squid_ldap_auth
authentificate_program /usr/lib/squid/squid_ldap_auth -b -b $LDAP_USER
$LDAP_USER -u
-u uid
uid SERVEUR_LDAP
SERVEUR_LDAP
• LDAP_USER : ou (organizational unit) contenant les clients

 exemple ou=people, ou= ac-limoges, ou=education, ou=gouv, c=fr

Linux LPIC-2
Test : configuration du client Debian
• Pour tester votre serveur, vous pouvez utilisez n'importe quel
client http (firefox, epiphany, etc …)

• La configuration peu se faire au niveau de l'OS client ou du


logiciel client web
 pour configurer firefox : Documentation officielle
 pour configurer le proxy sur votre client Debian


$$ gnome-network-
gnome-network-preferences
preferences

Linux LPIC-2
Module 10:
Partage de fichiers
Partage de fichiers
Configuration du
serveur SAMBA

Linux LPIC-2
Plan
• Server Message Block • Gestion des utilisateurs

• SAMBA  Identificateurs Windows

 Installation • Gestion des groupes

 Structure • smbclient

 Configuration • Monter un partage SMB

• Paramètres généraux • Partage d'imprimante

• Partage de fichiers • Utilitaires


- Politique d'accès à un
partage
- Droits des fichiers créés
Linux LPIC-2
Server Message Block
• Protocole de partage réseau de ressources
 développé en 1985 par IBM pour OS/2
• nommé alors LAN Manager
 puis popularisé par Microsoft qui l'intègre à Windows après de nombreuses
améliorations, créant ainsi SMB
• temporairement dénommé CIFS (Common Internet File System) entre 1998 et
2006
- notamment dans Windows NT 4

• puis renommé SMB2, une nouvelle version plus rapide


- Depuis Windows Vista

• nouvelle version 3.0 introduite avec Windows 8

• Propriétaire
 spécifications fermées à l'origine
 puis distribuées via le MSDN Open Specifications Developer Center

• Permet le partage de fichiers et d'imprimante sur tout réseau local Windows

Linux LPIC-2
SAMBA
• Développé par rétro-ingénierie grâce à un renifleur de paquets
 par Andrew Tridgell depuis 1992
 aujourd'hui en "partenariat" avec Microsoft, contraint à signé un
accord d'information technique après avoir perdu leur procès en appel contre l'Union
Européenne en 2007
 2,5 fois plus performant que Microsoft Windows Server 2003

• version actuelle (au 2 Juillet 2013) : 4.0.7


 réécriture complète
 offre un contrôleur de domaine Active Directory

• Dans le cadre de la LPIC2, nous étudierons cependant la version 3, encore


parfaitement d'actualité

• Libre (Licence GNU GPL v3)

• Supporte les principaux produits réseau propriétaires Microsoft


 SMB/CIFS pour le partage de fichiers et imprimantes
 NetBIOS sur TCP/IP (NBT) pour le nommage WINS (rendu obsolète par DNS) et l'établissement de sessions

 MSRPC pour les appels de procédure à distance

Linux LPIC-2
Installation
• Serveur
 Debian
## apt-get
apt-get install
install samba
samba
 CentOS

## yum
yum install
install samba
samba
• Client
 Debian
## apt-get
apt-get install
install smbclient
smbclient
 CentOS

# yum install samba-


client
Linux LPIC-2
Structure
• via Inetd ou des démons
 inetd pour plus de sécurité via tcpwrappers et moins d'utilisation de la mémoire
 démons pour plus de performance

• Deux démons :
 smbd : Server Message Block Daemon
• gestion du partage réseau SMB
 nmbd : NetBIOS Name Service Daemon
• gestion du serveur WINS

• Ports logiciels

• TCP et UDP 137 : NetBIOS Name Service


• UDP 138 : NetBIOS Datagram Service
• TCP 139 : NetBIOS Session Service

• TCP et UDP 445 : Services de dossiers partagés Windows

Linux LPIC-2
Configuration
• /etc/samba/[Link]
 découpé en sections
• [global] : paramètres généraux (indiqués par un G dans le man) et paramètres par défaut
• [printers] et [print$] : partage d'imprimantes
• [homes] : partage du répertoire personnel des utilisateurs
• [partage] : nom d'un partage (tout les paramètres indiqués par un S dans le man, également compatibles avec la section
global)
 vérifié par smbd toutes les 3 minutes pour prendre en compte les modifications

• Exemple :
[global]
workgroup = "Mon_Workgroup" server string = (Samba %v) # commentaire
...

[homes]
comment = Home Directories
preexec = /bin/sh -c 'echo "Repertoire_source_samba"/bin/smbclient -M %m -I %I'& browseable = yes
...

["Nom_De_Partage"] comment = "Commentaire"


...

Linux LPIC-2
Paramètres généraux
• section [global] de [Link]
 groupe de travail (Domaine NetBIOS)
workgroup == MON_WG
workgroup
MON_WG
 Nom NetBIOS
netbios name
netbios name == SERVEUR1
SERVEUR1
 Description
server string
server string == serveur
serveur %h
%h (Samba
(Samba %v,
%v, GNU/Linux)
GNU/Linux)
• % permet la substitution de variables (cf man)
• %h pour le nom d'hôte et %v pour le numéro de version du serveur
 limiter le partage à certaines interfaces
bind interfaces
bind interfaces only
only == Yes
Yes
interfaces == [Link]
interfaces [Link] eth0:0
eth0:0 [Link]/24
Linux192.168.1.20/24
LPIC-2
Partage de fichiers
• une section par partage
 chemin vers le répertoire à partager
path == /data/Documents
path
/data/Documents
 description
comment
workgroup
comment == mon
workgroup =mon
= commentaire
MON_WG
MON_WG
commentaire

Linux LPIC-2
Politique d'accès à un partage
• Lecture / écriture pour tous

read only
read only == No
No
• Lecture seule pour tous

read only
read only == Yes
Yes
• restriction de l'écriture à une liste d'utilisateurs

read only
read only == Yes
Yes
write list
write list == user1,
user1, user2,
user2, @grp1,
@grp1, @grp2
@grp2
• restriction de l'accès à une liste d'utilisateurs
valid users
valid users == utilisateur1,
utilisateur1, utilisateur2,
utilisateur2, @groupe12000
@groupe12000

Linux LPIC-2
Droits des fichiers créés
• Droit des fichiers à la création
create mask
create mask == 0775
0775
• Droit des dossiers à la création
directory mask
directory mask == 700
700

• Forcer tout les utilisateurs à être reconnus comme un seul et


même utilisateur sur le système
force user
force user == nobody
nobody force group = nogroup
force group =
nogroup

Linux LPIC-2
Authentification
• Mode

security == mode
security
mode
 share : contrôle d'accès au niveau ressources

• un mot de passe par partage


 contrôle d'accès au niveau utilisateur
• user : utilisateur / mot de passe
- par défaut depuis Samba 2.2.X

• domain : centralisés sur un domaine


- délègue toute requête d'authentification au contrôleur de
domaine
workgroup == WG
workgroup
WG • server : déprécié (mis en place lorsque par le passé Samba n'était pas capable d'agir en tant que
serveur membre d'un domaine
• ADS : via Active Directory

realm == [Link]
realm [Link]
password server
password server == [Link]
[Link]
Linux LPIC-2
Base des utilisateurs Samba
• stocker la base des utilisateurs dans
 un fichier (par défaut, mais déconseillé)
passdb backend
passdb backend == smbpasswd
smbpasswd
smb passwd
smb passwd file
file == /etc/samba/smbpasswd
/etc/samba/smbpasswd
 une base de donnée TDB (Trivial DataBase)
passdb backend
passdb backend == tdbsam
tdbsam
 une base ldap

passdb backend
passdb backend == ldapsam:url
ldapsam:url
• pour une description détaillé de la configuration de ldap et
Samba, voir la documentation officielle

Linux LPIC-2
Gestion des utilisateurs
• Gestion de la synchronisation des utilisateurs grâce à smbpasswd
 utilitaire client/serveur (pouvant modifier à distance les comptes Windows NT)
 Ajouter ou modifier un utilisateur Samba

## smbpasswd
smbpasswd -a
-a utilisateur
utilisateur
• cet utilisateur doit être un utilisateur existant sur le système
- ie. dans le fichier /etc/passwd

• le mot de passe pourra cependant être différent


 Désactiver un utilisateur Samba
## smbpasswd
smbpasswd -d
-d utilisateur
utilisateur
 Lister les utilisateurs

## pdbedit
pdbedit --L
L
Linux LPIC-2
Identificateurs Windows
• SID (Security Identifier)
 censé être unique dans le monde
 permet d'identifier les serveurs, utilisateurs ou objets (groupes)
 Format : S-1-5-12–7623811015-3361044348-030300820-1013
• S - indique que ceci est un SID
• 1 - niveau de révision
• 5 - valeur d'autorité de l'identificateur
• 12–7623811015-3361044348-030300820 - Identificateur de domaine ou
d'ordinateur
• 1013 – Un identificateur relatif (RID : Relative ID)
- unique au sain d'un domaine
Linux LPIC-2
Gestion des groupes
• Grâce à l'utilitaire net (permet d'administrer Samba et les serveurs CIFS distants, très complet)
 commande groupmap
• Arguments
- unixgroup : nom du groupe Unix
- ntgroup : nom du groupe Windows NT (doit être associé à un
SID)

-- rid, sid

- type - type de groupe ('domain', 'local', ou 'builtin') comment :


description du groupe
• Ajouter une nouvelle entrée de mapping de groupe

## net
net groupmap
groupmap addadd {rid=int|sid=string}
{rid=int|sid=string} unixgroup=string
unixgroup=string \\ [type={domain|
local}] [ntgroup=string]
[type={domain|local}] [comment=string]
[ntgroup=string]
[comment=string]
• Supprimer une entrée

## net
net groupmap
groupmap delete
delete {ntgroup=string|
{ntgroup=string|sid=SID}
•sid=SID}
Lister les entrées

## net
net groupmap
groupmap list
list [verbose]
[verbose] [ntgroup=string]
[ntgroup=string] [sid=SID]
[sid=SID]
Linux LPIC-2
smbclient
• Connexion

$$ smbclient
smbclient [-L
[-L nom_netbios
nom_netbios || nom_du_service]
nom_du_service] [-W
[-W workgroup]
workgroup] [-U
[-U username[%password]]
username[%password]]
 Options

• -L : lister les partages disponibles pour un utilisateur (avec -U)


• -W : nom de domaine SMB (workgroup) de l'utilisateur
- utilise par défaut celui défini dans [Link]

• -U : nom de l'utilsateur
 Commandes internes "ftp like"
• put, get, ls, cd, mkdir, help, etc ...

 Exemples
• lister les partages disponibles
## smbclient
smbclient -L
-L \\serveur1
\\serveur1 -W
-W monwg
monwg -U
-U noel
noel
• se connecter à un partage
## smbclient
smbclient \\\\serveur1\\Documents
\\\\serveur1\\Documents -W
-W monwg
monwg -U
-U noel
noel
Linux LPIC-2
Monter un partage SMB
• Deux solutions
 smbfs
• déprécié depuis Linux 2.6.20
• outils externes : smbclient, smbmount, [Link]

## smbmount
smbmount {service}
{service} {mount-point}
{mount-point} [-o
[-o options]
options]

 CIFS VFS
• parfaitement intégré au kernel
- configuration via /proc/fs/cifs/ et les options de module (via insmode et modprobe)

- ne nécessite aucun outils externe (smbmount remplacé par un simple helper [Link])

## mount
mount -t
-t cifs
cifs //[Link]/monpartage
//[Link]/monpartage /mnt/smb
/mnt/smb -o
-o user=noel,pass=monmdp
user=noel,pass=monmdp

• Montage automatique
 dans le fichier /etc/fstab

//[Link]/monpartage
//[Link]/monpartage /mnt/smb cifs
/mnt/smb cifs user,user=noel,pass=monmdp
user,user=noel,pass=monmdp 00 00

Linux LPIC-2
Partage d'imprimante
• Partager toutes les imprimantes
[printers]
[printers]
comment == Printer
comment Printer %p
%p on
on Server1 path = /var/spool/samba printable = yes
Server1 path =
/var/spool/samba printable =
yes

• Partager une imprimante spécifique


[HP LaserJet]
[HP LaserJet] printer name = lp
comment
printer= name
HP LaserJet
= lp 5 on Server1 path = /var/spool/lpd/samba printable = yes
writeable
comment == HP
no LaserJet 5 on
Server1 path =
/var/spool/lpd/samba printable =
yes
writeable = no

Linux LPIC-2
Utilitaires
• Tester la syntaxe de [Link]
## testparm
testparm
• Lister les connections au serveur
## smbstatus
smbstatus

Linux LPIC-2
Partage de fichiers
Configuration du
serveur NFS

Linux LPIC-2
Plan
• Introduction • exportfs

• Options du noyau • showmount

• RPC et Portmap • Montage

• rpcinfo • Options de montage NFS


• Démons • nfsstat
• Sécurité

• Configuration des exports

• Options de partage NFS

Linux LPIC-2
Introduction
• Network File System • Versions

 un des plus ancien protocole de partage de fichiers  v1 : uniquement pour un usage expérimental en interne
de Sun
• développé par Sun en 1985 pour Unix
 v2 (RFC 1094, Mars 1989)
- pour plus d'infos voir ce document
• non sécurisé, sur UDP
• aujourd'hui également adapté pour Windows
 v3 (RFC 1813, Juin 1995)
 standard ouvert
• prise en charge du TCP, des écritures asynchrones
 basé sur
• encore très utilisé, nous l'étudierons ici
• ONC/RPC (Open Network Computing Remote
Procedure Call) ou Sun RPC (RFC 5531)  v4 (RFC 3010, Décembre 2000 - révisé par la RFC 3530,
Avril 2003)
- protocole d'appel de procédures distant
• réécriture complète avec l'IETF
- couche 5 (session) du modèle OSI (synchronisation
des communications et gestion des transactions) • sécurisé (notamment avec Kerberos), support
- pour plus d'infos sur le système d'authentification statefull, meilleures performances
ONC/RPC, voir ce document  v4.1 (RFC 5661, Janvier 2010)
• XDR (eXternal Data Representation) • parallélisation des accès, introduction du concept de
- couche 6 (présentation) du modèle OSI (codage) session

 site officiel • pour en savoir plus sur NFSv4, lire ce document

Linux LPIC-2
Options du noyau
• NFS file system support (CONFIG_NFS_FS)
 support client (ou serveur en espace utilisateur) NFSv2
 NFSv3 client support (CONFIG_NFS_V3)
• support client NFSv3
• dépend de CONFIG_NFS_FS

• NFS server support (CONFIG_NFSD)


 support serveur NFSv2 en espace noyau
 NFSv3 server support (CONFIG_NFSD_V3)
• support serveur NFSv3 en espace noyau

Linux LPIC-2
RPC et Portmap
• Procédures (fonctions) RPC
 identifiées par un numéro
 regroupées en programmes
• eux même identifiés par un numéro ainsi qu'un numéro de version
 Les appels à un fonctions peuvent donc ce faire via l'association de ces 3 numéros
 Tous référencés dans /etc/rpc (à ne pas modifier)

• Portmap : démon permettant la conversion de numéros de programmes RPCs en numéros de


port logiciel DARPA
 destiné (sans grand succès) à limiter le nombre de ports logiciels utilisés
 aujourd'hui uniquement utilisé par :
• NFS
• FAM (moniteur de modification de fichier)
• NIS (logiciel d'annuaire devenu obsolète)

Linux LPIC-2
rpcinfo
• utilitaire permettant d'effectuer des appels à un serveur RPC
 rapporter les informations obtenues
 man : [Link]

• Afficher la liste de tout les programmes RPC enregistrés

## rpcinfo
rpcinfo -p -p [host]
[host]
• Tester un programme RPC par l'appel à sa procédure 0
 déprécié : via udp

## rpcinfo
rpcinfo [-n [-n portnum]
portnum] -u
-u host
host prognum
prognum [versnum]
[versnum]
 déprécié : via tcp

## rpcinfo
rpcinfo [-n[-n portnum]
portnum] -t
-t host
host prognum
prognum [versnum]
[versnum]
 recommandé

## rpcinfo
rpcinfo -T
-T transport
transport host
host prognum
prognum [versnum]
[versnum]

Linux LPIC-2
Démons
• [Link]
 si installé en espace utilisateur (v2 seulement) : serveur complet
 si installé en espace noyau : simple programme de contrôle
• relié au "processus" [nfsd]

• [Link]
 gestion des requêtes de montage NFS entrantes
 configuré via /etc/exports

• [Link]
 démon de verrouillage
 non nécessaire pour les kernel 2.4.X et plus
• intégré en interne ([lockd])

• [Link]
 service de notification de redémarrage

Linux LPIC-2
Sécurité
• NFS n'a pas été conçu à une époque où les questions de sécurité étaient au premier plan
 sa conception n'est donc pas adapté à ce type de contexte

• Toute authentification utilisateur repose sur les UID et GID


 tout hôte ayant les droits root sur sa machine a donc, en théorie, les mêmes droits sur les partages auxquels il peu accéder
 il est donc nécessaire d'utiliser le mapping des utilisateurs
• ie. associer l'utilisateur root ou tout utilisateur se connectant au partage à un compte (UID/GID) donné

• La restriction des accès se fait donc uniquement sur l'authentification des machines clientes
 nom d'hôte (dangereux en cas d'attaque sur les DNS), ip ou groupe réseau NIS

• NFSv4 cependant a été totalement repensé


 rend obligatoire l'implémentation du module noyau RPCSEC_GSS (RFC 2203) (voir man)
• GSS-API (RFC 2743), lié à Kerberos
• documentation complète sur ce document
 orienté vers l'authentification individuelle des utilisateurs
 d'autres problèmes de sécurité ont également été résolus, comme par suppression du démons [Link]

Linux LPIC-2
Configuration des exports
• Fichier /etc/exports

<dossier partagé>
<dossier partagé> <hôte>(<options>)
<hôte>(<options>) <hôte2>(<options>)...
<hôte2>(<options>)...
• <dossier partagé> : chemin du dossier partagé

• <hôte> : hôte pouvant accéder au partage


 une IP
 un nom d'hôte ou un domaine grâce à un joker (*)
• exemple : *.[Link]
 un nom de groupe réseau NIS (NIS netgroup - sous la forme @<netgroup>)
 un intervalle d'IP avec masque de sous-réseau
• exemple : [Link]/24 ou 192.168.0.*

Linux LPIC-2
Options de partage NFS
• rw : lecture et l'écriture sur un partage pour l'hôte défini
 ro par défaut

• Synchronicité
 async : mode asynchrone
• répondre aux requêtes avant que les changements effectués par celle-ci n'aient été appliqués sur l'unité de stockage
• améliore les performances
• danger pour l'intégrité des données en cas de redémarrage brutal (crash)
 sync : mode synchrone

• mapping des utilisateurs


 root_squash : (par défaut) mapping de l'utisateur root vers l'utilisateur anonyme
 no_root_squash : pas de mapping pour l'utilisateur root
 all_squash : mapping de tous les utilisateurs vers l'utilisateur anonyme.
 anonuid : UID de l'utilisateur anonyme (considéré comme tel dans les précédentes options de mapping).
 anongid : GID de l'utilisateur anonyme (considéré comme tel dans les précédentes options de mapping).

Linux LPIC-2
exportfs
• Il est indispensable d'exporter les exports après les avoir
configurés
 seul /var/lib/nfs/xtab et lu par mountd

• Pour relancer le partage de tout les répertoires


 ie. synchroniser /var/lib/nfs/xtab avec /etc/exports
## exportfs
exportfs --r
r
• Interrompre tout partage

## exportfs
exportfs --ua
ua

Linux LPIC-2
showmount
• Afficher des informations de montage sur un serveur NFS
## showmount
showmount [[ -adehv
-adehv ]] [[ --all
--all ]] [[ --directories
--directories ]] [[ --exports
--exports ]] [ host ]
[ host ]
 Options
• -a ou --all : nom du client et répertoire monté (machine:répertoire)
• -d ou --directories : uniquement les répertoires montés par un client.
• -e ou --exports : liste des répertoires exportés par le serveur NFS.
• -h ou --help : aide
• --no-headers : supprimer les en-têtes de description de l'affichage.

Linux LPIC-2
Montage
• Montage manuel

## mount
mount -t
-t nfs
nfs server:/share
server:/share /mountpoint
/mountpoint -o
-o options
options

• Montage automatique
 dans /etc/fstab
server:/share /mountpointnfs
server:/share /mountpointnfs options
options 00 00

Linux LPIC-2
Options de montage NFS
• rsize=xxx et wsize=xxx • nfsvers=n

 taille des blocs de donnés échangés  version de NFS à utiliser

• pour la lecture et l'écriture


• timeo=n
 permet d'optimiser les vitesses de transfert

 délai avant de déclencher la première
voir ce document retransmission d'une RPC
 en 10èmes de secondes (7 par défaut)
• udp et tcp
 spécifier le protocole de transport à utiliser • hard (par défaut) ou soft
• seulement UDP pour NFSv2, les deux pour  Si une opération sur un fichier NFS arrive à une
NFSv3, seulement TCP pour NFSv4 expiration majeure de délai
• hard : réessayer indéfiniment
• retry=n • soft : renvoyer une erreur au programme
appelant
 Nombre d'essais effectués pour un montage NFS
en arrière-plan avant d'abandonner
 en minutes (1000 par défaut) • Voir man pour la liste complète des options

Linux LPIC-2
nfsstat
• Afficher des statistiques NFS

## nfsstat
nfsstat [OPTION]...
[OPTION]...
 Options
• -s : uniquement les statistiques du serveur
• -c : uniquement les statistiques du client
• -n : uniquement les statistiques NFS
• -r : uniquement les statistiques RPC
• -m : lister les partages NFS montés

Linux LPIC-2
Module 11:
Gestion des clients réseau
Gestion des clients réseau
Configuration DHCP

Linux LPIC-2
Plan
• Bootstrap Protocol • Groupes

• Dynamic Host Configuration • Hôtes


Protocol
• Client BOOTP
• ISC DHCP
• Maintenance
• Installation
• Agent relais DHCP
• Configuration

• Paramètres et options

• Réseaux partagés

• Sous-réseaux
Linux LPIC-2
Bootstrap Protocol
• BOOTP
 protocole d'amorçage (boot)
• pour la configuration de stations de travail sans disque disposant de capacités de
démarrage limitées
- adresse IP

- adresse serveur

- fichier (image) de démarrage

 défini en Septembre 1985 (RFC 951)


• en remplacement de RARP (Reverse Address Resolution Protocol - RFC 903 - Juin 1984)
 très limité

• Ports UDP :
 server : 67
 client : 68

Linux LPIC-2
Dynamic Host Configuration Protocol
• Octobre 1993 : première définition (RFC 1531)
 comme extension de BOOTP (Bootstrap Protocol)
• couvre l'ensemble des configurations IP
- adresse IP, masque, passerelle par défaut

- adresses des serveurs de noms (DNS et NBNS (WINS))

• mécanisme de récupération des adresses IP inutilisées

• modifié et complété par la RFC 2131 (Mars 1997)


 référence ipv4 actuelle

• adapté à l'ipv6 depuis Juillet 2003 (RFC 3315)

Linux LPIC-2
ISC DHCP
• Développé par Ted Lemon et Vixie Enterprises
 pour l'Internet Systems Consortium
• alpha release en Mars 1999
• première version stable en Janvier 2003

• Maintenu depuis 2004 par une équipe dédiée de l'ISC


 aujourd'hui en version 4.2.5 (Janvier 2013)

• Libre : Licence ISC également dénommée Licence OpenBSD)

Linux LPIC-2
Installation
• Debian
 version 3 (obsolète)
## apt-get
apt-get install
install dhcp3-
dhcp3-server
server
 version 4
## apt-get
apt-get install
install isc-dhcp-
isc-dhcp-server
server
• CentOS
 client et serveur
## yum
yum install
install dhcp
dhcp

Linux LPIC-2
Configuration
• /etc/[Link]
 voir man [Link]

• 6 types de directives
 paramètres : valeurs internes du serveur, son comportement et informations fournies aux clients
 options : options de configuration réseau et des divers services réseaux depuis le serveur DHCP
 déclarations : topologie réseau, clients et adresses ou groupement de paramètres pour un
contexte particulier
• réseaux partagés
• sous-réseaux
• groupes
• hôtes

Linux LPIC-2
Paramètres et options
• durée du bail (en secondes)
default-lease-time time;
default-lease-time
time;
max-lease-time time;
max-lease-time
time;
• Option (voir man dhcpd-options)
 masque de sous-réseau

option subnet-mask
option subnet-mask ip-
ip-address;
address;
 serveur DNS
option domain-name-servers
option domain-name-servers ip-address
ip-address [,
[, ip-
ip-address... ];
address... ];

Linux LPIC-2
Réseaux partagés
• informer le serveur DHCP que certains sous-réseau IP partagent en réalité le même réseau physique

• Syntaxe

shared-network name
shared-network name { [ paramètres ]
{[ déclarations ]
} [ paramètres ]
[ déclarations ]
}
• Exemple
shared-network ISC-BIGGIE
shared-network ISC-BIGGIE {{
paramètres spécifiques
paramètres spécifiques au
au réseau
réseau partagé...
partagé... subnet [Link] netmask
[Link] {
subnet [Link] netmask [Link] {
paramètres spécifiques
paramètres spécifiques au
au sous-réseau...
sous-réseau... range [Link] [Link];
} range [Link] [Link];
}subnet [Link] netmask [Link] { paramètres spécifiques au sous-
réseau...
subnet range [Link]
[Link] [Link];
netmask [Link]
} { paramètres spécifiques au sous-réseau...
} range [Link] [Link];
}
}
Linux LPIC-2
Sous-réseaux
• fournir des paramètres spécifiques au sous-réseau

• spécifier quelles adresses peuvent être dynamiquement


allouées aux clients de ce sous-réseau
 déclaration range

 Exemple

subnet [Link]
subnet [Link] netmask
netmask [Link]
[Link] { paramètres
{ spécifiques au sous-réseau... range [Link]
[Link];
paramètres spécifiques au sous-réseau...
} range [Link] [Link];
}

Linux LPIC-2
Groupes
• appliquer un ou plusieurs paramètres à un groupe de déclaration
 hôtes, réseaux partagés, sous-réseaux, ou même d'autres groupes

• Exemple

group {{
group
paramètres spécifiques
paramètres spécifiques au
au groupe...
groupe... host [Link] {
host [Link] { l'hôte...
paramètres spécifiques à
} paramètres spécifiques à
host [Link] { paramètres spécifiques à l'hôte...
l'hôte...
} }
host [Link]
host [Link] { paramètres spécifiques à l'hôte...
} { paramètres spécifiques à
} l'hôte...
}
host [Link]
{ paramètres spécifiques à
l'hôte...
Linux LPIC-2
}
Hôtes
• Permet de spécifier des paramètres spécifiques pour un hôte
 comme une adresse IP fixe

• au moins une déclaration d'hôte pour chaque client BOOTP

• Exemple

host client1
host client1 {
{
hardware ethernet
hardware ethernet DD:GH:DF:E5:F7:D7; fixed-
address [Link];
DD:GH:DF:E5:F7:D7; fixed-address
} [Link];
}
Linux LPIC-2
Client BOOTP
• Exemple de configuration

host clientname {
filename "/[Link]"; server-name
"servername"; next-server servertftp;
hardware ethernet [Link]; fixed-
address [Link];
}

• nécessite l'installation d'un serveur TFTP sur servertftp

• pour une documentation complète de cette configuration sous Debian, voir ce document

Linux LPIC-2
Maintenance

• /var/lib/dhcpd/[Link] (voir man [Link])


 base de données persistante des baux attribués

Linux LPIC-2
Agent relais DHCP
• les trames ARP et BOOTP ne traversent pas les routeurs
 nécessite donc des serveurs DHCP ou des serveurs relais sur chaque segment
 transforme les requêtes multicast en de l'unicast

• défini par la RFC 1542

• agent dhcprelay
 développé par l'ISC
 paquet Debian isc-dhcp-relay ou dhcp3-relay
 inclus dans le paquet dhcp de CentOS

Linux LPIC-2
Configuration du relais DHCP
• fichier /etc/default/isc-dhcp-relay

## Adresse
Adresse du
du serveur
serveur DHCP SERVERS="[Link]"
SERVERS="[Link]"
# Interface utilisée par le relais DHCP
#INTERFACES="eth1"
Interface utilisée par le relais DHCP
INTERFACES="eth1"
# Options additionnelles pour le démon dhcp-
#relay OPTIONS="-q"
Options additionnelles pour le démon dhcp-
relay OPTIONS="-q"

Linux LPIC-2
Gestion des clients réseau
Authentification PAM

Linux LPIC-2
Plan
• Introduction • Modules

• Configuration des services  pam_unix

• Modules et services
 pam_cracklib
• pam_cracklib : exemples
• Types de fonctionnalités
 pam_limits
• Contrôle
• pam_limits : configuration
 pam_listfile

Linux LPIC-2
Introduction
• Pluggable Authentication Modules
 librairies + API pour l'authentification
 standard sous GNU/Linux
 permet de définir la politique d'authentification d'une application indépendamment de celle-ci
• et de manière centralisée
 utilisé par un grand nombre de programmes
• ex : login et su

• Un peu d'histoire
 /etc/passwd → /etc/shadow
 /etc/passwd → autres bases de données (ex : ldap)
• nécessité de réécrire login et chaque logiciel utilisant l'authentification
 externalisation du processus d'authentification

Linux LPIC-2
Configuration des services
• /etc/pam.d/
 un fichier par service
 ou [Link] le cas échéant
• ajout d'une première colonne "service"

• Syntaxe

type control
type control module-pathmodule-path module-
module-arguments
arguments
 évaluées dans leur ordre d'apparition

• Exemple

#%PAM-1.0 :: login
#%PAM-1.0 login service
service auth required pam_nologin.so auth
required
auth pam_access.so
required pam_nologin.so auth required pam_access.so
...
...
account required
account required pam_stack.so
pam_stack.so service=system-auth
service=system-auth password
required pam_stack.so
password required pam_stack.so
...
...

Linux LPIC-2
Modules et services
• PAM est (comme son nom l'indique) divisé en modules
 chacun couvrant une fonction particulière
 capable d'être liée dynamiquement à une application fournissant un service

• La configuration consiste donc à déterminer quel sera le


comportement d'un (ou plusieurs) modules pour un service
 ex : le service login nécessite l’absence du fichier no_login (module
pam_nologin)

auth required
auth required pam_nologin.so
pam_nologin.so

Linux LPIC-2
Types de fonctionnalités
• un module offre des fonctionnalités
 réparties en groupes
 chaque module pouvant offrir des fonctionnalités dans un ou plusieurs de ces groupes

• 4 groupes indépendants
 Account: vérification des comptes
• validité du mot de passe, autorisations d'accès, etc ...
 Authentification : vérification de l'identité de l'utilisateur
• mot de passe, carte à puce, contrôle rétinien, etc ...
 Password : mise à jour des mécanismes d'authentification
• ex : entrer un nouveau mot de passe
• fortement lié au groupe Authentication
 Session : tâches à effectuer avant et après un service
• ex : montage du répertoire personnel de l'utilisateur

• défini le périmètre d'action de chaque fonctionnalité d'un module

Linux LPIC-2
Contrôle
• 4 types :
 requisite : termine immédiatement le service en cas d'echec
 required : en cas d’échec, retourne une erreur après que tout les
autres modules aient été invoqués
 sufficient : valide le processus d'authentification en cas de succès
• même si d'autres modules ont auparavant échoués
 optional : n'est pris en compte que si il s'agit de l'unique module
associé au service

Linux LPIC-2
Modules
• pam_unix
 authentification via /etc/passwd et /etc/shadow

• pam_cracklib
 vérification de la sécurité d'un mot de passe
• dictionnaire et autres paramètres

• pam_limits
 limite des ressources accessibles via une session
• à partir de /etc/security/[Link] puis limits.d/

• pam_listfile
 autorise ou interdit une action en fonction d'un listfile

Linux LPIC-2
pam_unix
Type Description
account établir le statut du compte et du mot de passe en se basant sur les
éléments shadow (expire, last_change, max_change, min_change,
warn_change)
auth vérification du mot de passe (n’autorise aucun accès en cas de mot
de passe vide)
passwor mise à jour du mot de passe
d
session journalisation des accès

• Documentation (sag) :
[Link]

Linux LPIC-2
pam_cracklib
• Module password uniquement

• Options
 difok : nombre minimum de caractères permettant de différencier un nouveau mot de passe d'un ancien
• 5 par défaut
 minlen : taille minimale du nouveau mot de passe
• 9 par défaut
 Crédits : nombre minimal d’occurrence d'un certain type de caractère
• si N>0 : permet de diminuer la taille minimale requise de maximum N caractères si le type de caractère est
utilisé
• si N< 0 : indique exactement le nombre minium de caractères du type, sans impacte sur la taille minimale total
• 1 par défaut
- dcredit : nombre minimal de chiffres

- ucredit : nombre minimal de lettres majuscules

- lcredit : nombre minimal de lettres minuscules

- ocredit : nombre minimal de caractères spéciaux (autre que majuscule, minuscule ou chiffre)

• Documentation : [Link]

Linux LPIC-2
pam_cracklib : exemples
• crédits positifs
 le mot de passe doit être composé de
• 14 caractères si il n'est composé que de caractères minuscules
• 9 caractères si, en plus des lettres minuscules, il est composé d'au moins une majuscule,
deux chiffres et deux caractères

password
password required
required pam_cracklib.so difok=3
pam_cracklib.so difok=3 minlen=15 dcredit=
minlen=15 dcredit= 22 ocredit=2
password
ocredit=2 required pam_unix.so use_authtok nullok md5
password required pam_unix.so use_authtok nullok md5
• crédits négatifs
 le mot de passe doit être composé d'au moins un caractère spécial, un chiffre et une lettre
majuscule, pour une taille minimale de 8 caractères

password
password required pam_cracklib.so
required pam_cracklib.so \\
dcredit=-1
dcredit=-1 ucredit=-1 ucredit=-1
ocredit=-1 ocredit=-1
lcredit=0 lcredit=0
minlen=8 minlen=8
password password
required pam_unix.so
required pam_unix.so use_authtok
use_authtok nullok
nullok md5
md5

Linux LPIC-2
pam_limits
• fichiers /etc/security/[Link] et /etc/security/limits.d/*.conf
 cf LPIC1 - Sujet 110.1 : Tâches d'administration de sécurité
 affecte tout les utilisateurs, y compris root

• module session uniquement

• Documentation : sag-pam_limits

Linux LPIC-2
pam_limits : configuration
<domain> <type>
<domain> <type> <item>
<item> <value>
<value>
• domain : entité pour laquelle les limites s'appliquent • item : quel type d'item est affecté (généralement en Ko)
 nom d'utilisateur  core : taille des "core files"
 nom de groupe (@groupname) • dump de l'état d'un processus en mémoire lors d'un arrêt brutal
 tout le monde (*) • pour debugging
 data : taille des données programme
 fsize : taille des fichiers créés par l'utilisateur
• type : hard ou soft limit
 nofile : nombre de fichiers ouverts
 hard : ne peu être depassée
 rss : resident set size maximal
• mise en place par l'admin
• portion de la mémoire processus stockée en mémoire
 soft : peu être dépassée temporairement
 nproc : nombre de processus concurrents
 - : hard ET soft
 maxlogins : nombre maximum de sessions simultanés
 priority : process priority
• value : valeur à appliquer
 cpu : temps cpu d'un seul processus, en minutes

• Exemple :

@limited hard
@limited hard cpu
cpu 2
2
Linux LPIC-2
pam_listfile
• Options
 item=[tty|user|rhost|ruser|group|shell]
• types d'éléments contenus par le fichier et devant être vérifiés
 file=/path/filename
• fichier liste
 sense=[allow|deny]
• action à réalisé si l'élément est présent dans le fichier
 onerr=[succeed|fail]
• que faire en cas d'erreur
• ex : ouverture du fichier impossible

• Exemples
 interdire l'accès à une liste d'utilisateurs

auth required
auth required pam_listfile.so
pam_listfile.so onerr=succeed
onerr=succeed item=user
item=user sense=deny
sense=deny file=/etc/ftpusers
file=/etc/ftpusers
 autoriser l'accès à une liste d'utilisateurs

auth required
auth required pam_listfile.so
pam_listfile.so onerr=fail
onerr=fail item=user
item=user sense=allow
sense=allow file=/etc/loginusers
file=/etc/loginusers
• Documentation : sag-pam_listfile

Linux LPIC-2
Gestion des clients réseau
Clients LDAP

Linux LPIC-2
Plan
• Introduction : les annuaires • Recherche

• Lightweight Directory Access • Modification du mot de passe


Protocol d'un utilisateur
• Entrées LDAP • Ajout et modification d'une
entrée
• Attributs
• Suppression d'une entrée
• Filtres LDAP

• Opérateurs

• Clients LDAP sous GNU/Linux


 installation
Linux LPIC-2
Introduction : les annuaires
• stockage de données hiérarchisées

• destiné au stockage de données pérennes


 plus rapide en consultation qu'en mise à jour des données qu'une base de donnée "classique"
 utilisateurs (le plus souvent), matériel, ressources, etc ...

• Les principaux serveurs d'annuaire


 OpenLDAP (Libre - The OpenLDAP Project)
 Active Driectory (Microsoft)
 eDirectory (Novell)
 Open Directory (Apple)

• Tous sont aujourd'hui basés sur (ou compatibles) LDAP

Linux LPIC-2
Lightweight Directory Access Protocol
• norme pour les systèmes d'annuaires
 données
 nommage
 modèle fonctionnel
 sécurité
 réplication

• créé par Tim Howes (Université du Michigan), Steve Kille (ISODE) et Wengyik Yeong
(Performance Systems International) en 1993
 initialement pour simplifier l'accès (interrogation et modification) aux services d'annuaires
X.500 (DAP)

• très nombreuses RFCs (cf liste)

Linux LPIC-2
Entrées LDAP
• identifiée par un nom distinct
 DN, distinguished name
 Relative Distinguished Name (RDN) suivi du DN de son parent
• organisation hierarchique
 ex : cn=Richard Stallman,ou=people, dc=noelmace,dc=com

• Chaque entrée est constituée d'un ensemble d'attributs


 nom + type + une ou plusieurs valeurs
 normaux : définissant l'objet
• nom, prénom, etc …
 opérationnels : réservés au serveur
• ex : date de modification

Linux LPIC-2
Attributs
• Quelques exemples d'attributs
courants
 uid (userid) : identifiant
 cn (common name) : nom
 givenname : prénom
 sn (surname) : surnom
 o (organization) : entreprise
 ou (organizational unit) : service
 mail : adresse mail

Linux LPIC-2
Filtres LDAP
• définis par la RFC 2254

• permettent la récupération (recherche) des entrées LDAP


 "semblables" à une clause WHERE de requête SQL

• s'écrit sous la forme : attribut OPERATEUR valeur

Linux LPIC-2
Opérateurs
Type Opérateur Description
Égalité = le champs doit avoir la valeur donnée
Présence * Joker (tout hormis NULL)
Groupement () Permet de séparer / grouper des filtres afin
d'employer d'autres opérateurs logiques
Et & Tout les filtres doivent être vrais
Ou inclusif | Au moins un filtre doit être vrais
Négation ! Exclusion de tout les objets correspondant
au filtre
Égalité ~= -
approximative
Plus grand ou égal >= -
Plus petit ou égal <= -
Linux LPIC-2
Clients LDAP sous GNU/Linux
• Recherche
 ldapsearch

• Manipulation des entrée


 ldappasswd
 ldapadd & ldapmodify
 ldapdelete

• Options communes
 obsolètes (remplacées par -H)
• -h : hôte
• -p : port
 -H : URI du serveur LDAP
 -D binddn : DN de l'utilisateur permettant la connexion au serveur
 -w passwd : mot de passe de l'utilisateur permettant la connexion au serveur

Linux LPIC-2
Installation
• Debian
## apt-get
apt-get install
install ldapscripts
ldapscripts

• CentOS

## apt-get
apt-get install
install openldap-
openldap-clients
clients

Linux LPIC-2
Recherche
$$ ldapsearch
ldapsearch [options]
[options] filtre
filtre [attrs...]
[attrs...]
• récupération des entrées d'un annuaire LDAP à l'aide de filtres

• Options
 -s {base|one|sub|children} : portée de la recherche
• respectivement : sur un objet de base, un niveau, la sous-arborescence (par défaut)
ou les enfants (LDAPv3)
 -b : point de départ de la recherche

• Exemple

$$ ldapsearch
ldapsearch -h
-h myhost
myhost -p
-p 389
389 -s
-s base
base -b
-b "ou=people,dc=example,dc=com"
"ou=people,dc=example,dc=com" "objectclass=*"
"objectclass=*"

Linux LPIC-2
Modification du mot de passe d'un utilisateur
$$ ldappasswd
ldappasswd [options]
[options] [user]
[user]
• opération définie par la RFC 3062
 sur l'attribut userPassword (RFC 2256 section 5.36)

• Options
 -x : authentification simple (au lieu de SASL)
 -s newpasswd : nouveau mot de passe
 -W : demander un nouveau mot de passe de manière interactive (au lieu de -s)
• sera sinon généré par le serveur

• Exemple

$$ ldappasswd
ldappasswd -x
-x -h
-h localhost
localhost -D
-D "cn=root,dc=example,dc=com"
"cn=root,dc=example,dc=com" \\
-s secretpassword
-s secretpassword uid=admin,ou=users,ou=horde,dc=example,dc=com
uid=admin,ou=users,ou=horde,dc=example,dc=com
Linux LPIC-2
Ajout et modification d'une entrée
• Ajout d'une entrée :

$$ ldapadd
ldapadd [options]
[options]
 lien vers ldapmodify activant l'option -a

• Modification d'une entrée :

$$ ldapmodify
ldapmodify [options]
[options]
• Options
 -f : lire les informations de modification à partir du fichier au lieu de l'entrée standard

• Exemple

$$ ldapadd
ldapadd -c
-c -x
-x -W
-W -D
-D cn=root,dc=example,dc=com
cn=root,dc=example,dc=com -H
-H ldaps://[Link]/
ldaps://[Link]/ -f
-f [Link]
[Link]
dn: cn=clients,ou=Group,dc=example,dc=com cn: clients
dn:
gidNumber: 10001 memberUid: pierre memberUid: paul memberUid: jacque
cn=clients,ou=Group,dc=example,dc=com
description:
cn: Clients de 10001
clients gidNumber: l'entreprise objectClass: posixGroup
memberUid: pierre
memberUid: paul memberUid: jacque
description: Clients de l'entreprise
objectClass: posixGroup

Linux LPIC-2
Suppression d'une entrée

$$ ldapdelete
ldapdelete [options]
[options] [DN ...]
[DN ...]

• Exemple :
$$ ldapdelete
ldapdelete -H
-H ldaps://[Link]
ldaps://[Link] -D
-D "cn=root" \
"uid=rmachin,ou=sales,ou=people,dc=example,dc=com"
"cn=root" \
"uid=rmachin,ou=sales,ou=people,dc=example,dc=com"

Linux LPIC-2
Module 12:
Services de courrier
électronique
Services de courrier électronique

Utilisation des
serveurs de
messagerie

Linux LPIC-2
Plan
• Rappel : Fonctionnement

• Simple Mail Transfer Protocol

• Postfix
 Configuration de Postfix
• Paramètres essentiels
 Journalisation
 Postfix et les domaines
• Domaines virtuels
 Commandes utiles
• Émulation des commandes sendmail

Linux LPIC-2
Rappel : Fonctionnement

Linux LPIC-2
Simple Mail Transfer Protocol
• Transfert des mails vers les serveur
 ports 25, 465 (SSL) et 587 (avec authentification)

• Développé à partir de 1980 en remplacement de FTP Mail et de Mail Protocol (nés


en 1973)
 publié en Novembre 1981 (RFC 788)
 mis à jour par les RFC 821 (Août 1982) et 5321 (Octobre 2008)
 pour plus de détails, voir wikipedia(en)

• Sendmail (distribué avec BSD 4.1c dés 1981) est alors un des premiers MTA à
implémenter ce protocole
 devient très rapidement le MTA de référence sur Internet

Linux LPIC-2
Postfix
• MTA par défaut de Mac OS X, NetBSD et de nombreuses distributions GNU/Linux (comme Ubuntu)
 un MTA de référence : 25 % de parts de marché en 2012
• seconde place derrière Exim (46 %), MTA par défaut de Debian
• devant Sendmail (11%), le MTA historique, encore par défaut pour CentOS, et Microsoft (10%) depuis
2009

• Libre : IBM Public Licence 1.0 (non compatible GPL)


 développé dés 1997 par Wietse Venema (également à l'origine de TCP
Wrapper)
• au IBM Thomas J. Watson Research Center
 première distribution en Décembre 1998
 version actuelle (Juin 2013) : 2.10.1

• Documentation officielle en français (grâce à [Link]) et en anglais

• Pour une comparaison en détail des différents MTA du marché, voir ce tableau

Linux LPIC-2
Configuration de Postfix
• par défaut dans /etc/postfix/
 [Link] : paramètres de configuration de Postfix
• Syntaxe semblable aux scripts shell (sans les apostrophes)

- notamment pour les variables ($)

 [Link] : configuration du démon master


• définit la manière dont un programme client se connecte à un service,
et quel démon s'exécute lorsqu'un service est demandé

• Doivent (répertoire et fichiers) appartenir à root sans droit d'écriture


pour les autres utilisateurs

Linux LPIC-2
Syntaxe des paramètres Postfix
• [Link] a une syntaxe semblable aux scripts shells, à quelques différences notables près
 les variables (paramètres) notamment peuvent sembler proche, mais offres quelques spécificités

• Déclaration / affectation
 classique

mavariable == valeur
mavariable
valeur
 à partir du contenu d'un fichier

mavariable == /chemin/du/fichier
mavariable
/chemin/du/fichier
 à partir du contenu d'une table de correspondance
• paramètres définis dans un fichier séparé à la syntaxe identique

mavariable == type:/chemin/du/fichier
mavariable
type:/chemin/du/fichier
• Ce fichier n'étant pas évalué de manière séquentielle, une variable peu être employée avant sa "déclaration"
 Postfix est "paresseux", et ne consulte la valeur d'un paramètre que lorsqu'il est utilisé

mavariable =
$monautrevar
Linux LPIC-2
Paramètres essentiels
• domaine des courriels sortants

myorigin == $myhostname
myorigin myorigin == $mydomain
myorigin
$myhostname $mydomain
• domaine à partir duquel les courriels sont reçus

mydestination == $mydomain,
mydestination $mydomain, localhost.$mydomain,
localhost.$mydomain, hash:/etc/postfix/moredomains
hash:/etc/postfix/moredomains
 défaut (pour les deux) : $myhostname

• domaines de destination (et leurs sous-domaines) que le système acceptera de


relayer
 (défaut : $mydestination)
relay_domains == $mydomain
relay_domains
$mydomain
• Indiquer un relais SMTP
 ne sera pris en compte qu'en l'absence de mapping correspondant dans la table optionnelle transport
 à défaut de valeur, Postfix tentera de transférer le mail au serveur MX du domaine de destination

relayhost =
[Link]
Linux LPIC-2
Journalisation
• via syslog (ou dérivés)
 cf /etc/[Link] ou /etc/[Link]
 Exemple :
[Link]
[Link] /dev/console /dev/console
[Link] /var/log/maillog
[Link] /var/log/maillog

• Rapporter les problèmes de permission/appartenance


## postfix
postfix check
check

• Lister tout les problèmes éventuels


## egrep
egrep '(reject|warning|error|fatal|panic):'
'(reject|warning|error|fatal|panic):' /var/log/maillog
/var/log/maillog
Linux LPIC-2
Postfix et les domaines
• Postfix offre plusieurs possibilités concernant un domaine
 destination finale
• domaines canoniques
- nom et adresse IP du serveur et parfois le nom du domaine parent

- classe : domaines locaux

• domaines hébergés
- ne sont pas directement associés au nom de la machine

- classe : domaines virtuels

• d'alias

• ou de boites au lettres

 serveur MX de secours d'un (ou plusieurs) domaine(s)


• conserve les courriels lorsque le serveur MX principal ne fonctionne
pas
• les transfère dès qu'il fonctionne de nouveau
• classe : domaines relayés
 relais pour la retransmission des courriels
• classe : domaines par défaut

• Documentation : voir Virtual Readme et Address Class Readme

Linux LPIC-2
Domaines virtuels
• spécification des domaines d'alias virtuels
 par une liste (séparés par des espaces ou des
virgules)
virtual_alias_domains == [Link],
virtual_alias_domains [Link], [Link]
[Link]
• Table optionnelle faisant correspondre des adresses ou des domaines avec des
adresses locales ou distantes
• via une table de correspondance "hash" (créé via postmap ou postalias)

virtual_alias_maps == hash:/etc/postfix/virtual
virtual_alias_maps
hash:/etc/postfix/virtual
 Exemple de fichier
postmaster@[Link] peter
postmaster@[Link]
info@[Link]
info@[Link] gerda
sales@[Link] petra
sales@[Link] petra gerda
@[Link]
@[Link] jim
jim
Linux LPIC-2
Commandes utiles
• Recharger la configuration de Postfix

## postfix
postfix reload
reload
• création ou mise à jour d'une table de correspondance "hash"

## postmap
postmap fichier
fichier

Linux LPIC-2
Émulation des commandes sendmail
• Interface de compatibilité de Postfix pour Sendmail

$$ sendmail
sendmail [option ...]
[option ...] [recipient ...]
[recipient ...]
• afficher la file d'attente des courriels
$$ mailq
mailq
 équivalent à sendmail -bp

• initialiser la DB des alias (paramètre alias_database)

## newaliases
newaliases
 équivalent àsendmail -I

Linux LPIC-2
Services de courrier électronique
Distribution locale
des courriels

Linux LPIC-2
Plan
• Introduction  Recettes procmail
• En tête d'une recette
- En
tête d'une recette :
• Formats de stockage verrouillage
 Mbox • Règles de correspondance
 Maildir • Actions
• Quelques exemples

• Procmail
 Fonctionnement
 Configuration
Linux LPIC-2
Introduction

Linux LPIC-2
Formats de stockage
•Définissent la manière de stocker les courriels et les mailbox
 format des fichiers
 hiérarchie des éventuels dossiers
 etc …

•Nombreux formats
 Standards : Mbox et Maildir
• tout deux reconnus par procmail
• Maildir est cependant recommandé aujourd'hui
 nmh, MIX, .pst (propriétaire Microsoft), etc ...
Linux LPIC-2
Mbox
• apparu avec Unix V6 (AT&T - Mai 1975)

• format ouvert
 RFC 4155 (Septembre 2005)

• un fichier texte (ASCII 7bits) par mailbox


 courriels simplement séparés par une ligne vide suivie du mot "From" en début de ligne

• Avantages : • Désavantages :
 universellement supporté  problèmes de verrouillage

• nombreuses conversions possibles  sujet à la corruption

- Outlook .pst via readpst


- html via Hypermail
 recherche et écriture au sain d'une
mailbox rapides
Linux LPIC-2
Maildir
• développé dans le cadre de QMail
 MTA léger, modulaire et sécurisé du domaine public
 par Daniel J. Bernstein (également à l'origine de
daemontools)
 Décembre 1995

• un dossier par mailbox


 contenant lui même trois dossiers : new, cur et
tmp

• Avantages : • Désavantages :
 rapidité de :  nombre de petits fichiers
• localisation
• récupération • inefficacité de certains FS
• et suppression des courriels  recherche de texte des une ou
plusieurs mailbox lente
 peu (voir pas) de verrouillage
fichier
• nécessite l'ouverture de tout les
Structure Maildir
Wikimedia cc-by-sa
 utilisable sur des FS réseaux fichiers
 n'est pas sujet à la corruption
Linux LPIC-2
Procmail
• MDA de référence pour les systèmes Unix
 Libre (Licence GPL)

• Largement employé
 en adéquation avec un MTA (Exim, Postfix, Sendmail)
• et souvent un serveur IMAP / POP tel que Dovecote pour la distribution distante
 excellentes capacités de filtrage

• première version distribuée en Décembre 1990


 n'est plus maintenu
• version finale 3.22 le 10 Septembre 2001

• Documentation : Procmail Documentation Project et Procmail Quick Reference Guide

Linux LPIC-2
Fonctionnement
• programme autonome
 généralement appelé directement par le MTA

• Rappel : pour Postfix


mailbox_command == /usr/bin/procmail
mailbox_command
/usr/bin/procmail
 n'est appelé via la ligne de commande que très rarement

• essentiellement pour des tests

• prétraitement et tri des courriels


 mailinglists
 anti-spam
 réponses automatiques
Linux LPIC-2
Configuration
• /etc/promailrc
composé de :
• définitions de variables
 recettes

 prioritaire si présent
 configuration générale, pour tout les En l'absence de fichier de configuration, procmail écrira tout les courriers dans /var/spool/
mail

utilsateurs

• $HOME/.procmailrc

 pour chaque utilisateur

• Exemple

SHELL=/bin/sh MAILDIR=$HOME/Mail
SHELL=/bin/sh
LOGFILE=$HOME/Mail/[Link]
MAILDIR=$HOME/Mail
LOGFILE=$HOME/Mail/
:0:
[Link]
* ^Subject: test testing
:0:
* ^Subject: test testing
 pour d'autres exemples, voir dans /usr/share/doc/procmail/exemples/ , dans la documentation ou à la fin de ce
support
Linux LPIC-2
Recettes procmail
• décomposées en 3 parties
 en tête ou "ligne double point" ("colon line")
 règle(s) de correspondance
• expression(s) rationnelle(s)

- sur les en-têtes et corps des messages

• détermine quels messages seront traités par cette recette


 action

• à défaut de règle correspondante, les courriers seront livrés


dans la mailbox par défaut
Linux LPIC-2
En tête d'une recette
• Première ligne de chaque recette

:0 [drapeaux]
:0 [drapeaux] [[ :: [verrou_local] ]
[verrou_local] ]

• le premier double point indique un début de règle


 le 0 est, lui, présent pour des raisons historiques

• Drapeaux : détermine la manière dont la recette sera exécutée


 portée
• des règles de correspondances
- H : en tête du message (par défaut)

- B : corps du message

- HB : les deux

• des actions (ce qui leur est envoyé)


- h : n'envoie que les en-têtes pour traitement

- b : n'envoie que le corps du message pour traitement

- hb :les deux (par défaut)

 contrôle des flux (exemple : c : garde une copie du message pour traitement ultérieur)
 mode d’exécution
 sensibilité à la casse (cf quickref)

Linux LPIC-2
En tête d'une recette : verrouillage

:0 [drapeaux]
:0 [drapeaux] [[ :: [verrou_local] ]
[verrou_local] ]

• second double point


 mettre en place un fichier de verrou
• afin de ne pas corrompre un fichier en y écrivant simultanément
deux courriers
• nécessaire en cas d'écriture (sauvegarde)
 [verrou local] : explicite le fichier de verrou à mettre en place

Linux LPIC-2
Règles de correspondance
• permettent de déterminer si l'action doit être effectuée sur ce
message ou non

• commencent toujours par "* " (une étoile suivie d'un espace)

• Pour associer les règles de correspondances


 une par ligne = ET logique
 sur une même ligne, séparées par des "|" (pipes) = OU logique
• une seule étoile en début de ligne, non pour chaque expression
Linux LPIC-2
Actions
• opération à réaliser en cas de correspondance avec la/les règle(s)

• redirection
 vers un fichier (mbox) ou un dossier (maildir)

/chemin/du/fichier
/chemin/du/ chemin/relatif
chemin/ /chemin/du/dossier/
/chemin/du/
fichier relatif dossier/
• action la plus courante

- permet de délivrer le courrier dans la mailbox indiquée

• nécessite un verrou si écrit dans un fichier


• si le chemin est relatif (pas de / en début de ligne), il le sera par rapport à $MAILDIR
 vers un programme

|| programme
programme
 vers une (ou plusieurs) autre(s) adresse(s) électronique

!! addr1@[Link]
addr1@[Link] addr2@[Link]
addr2@[Link] addr3 ...
addr3 ...

• il est possible de remplacer l'action par une autre ensemble de recettes et de variables en utilisant les caractère { et }

Linux LPIC-2
Quelques exemples
transférer tout courriel de l’expéditeur lui@[Link] vers l'adresse moi@[Link]

:0
:0
** ^From.*
^From.*lui@[Link]
! goodmail@[Link]
lui@[Link]
! goodmail@[Link]
transférer tout courriel de plus de 1Mo vers la boite aux lettres mbox grosfichiers

:0
:0
** >> 1048576
1048576
grosfichiers
grosfichiers

transférer tout courriel provenant du domaine [Link] et contenant le mot "Supporter" suivit du mot "Issue" (correspondant au Free Software Suporter, newsletter mensuelle de la FSF) vers la boite mail de l'utilisateur news, et le copier vers notre
• dossier [Link]

:0c
* ^From.*@fsf\.prg
* ^Subject:.*Supporter.*Issue.*
! news

:0:
[Link]
Linux LPIC-2
Services de courrier électronique

Distribution
distante des
courriels

Linux LPIC-2
Plan
• Introduction

• Courier Mail Server


 Configuration
 Pré-requis Postfix et Procmail
 Configuration avec Postfix et Procmail

• Dovecot
 Authentification
• Authentification : Configuration
 Emplacement des mailboxs

Linux LPIC-2
Introduction

Linux LPIC-2
Courier Mail Server
• serveur mail / groupware tout en un
 ESMTP, IMAP, POP3, LDAP, SSL et HTTP
 webmail (avec calendrier et planning)
 services mailing list

• constitué de composants individuels


 activables et désactivables à volonté
 cf paquets Debian (courier-base, courier-imap, courier-ldap, courier-webadmin, etc …)
 nous nous concentrerons ici sur ce dont nous avons besoin : des serveurs POP3 et IMAP pour compléter Postfix et Procmail
• courier-imap et courier-pop

• stockage natif en maildir


 possibilité de livraison sous d'autres formats pré-établis

• file d'attente des mails dans /var/spool/mqueue

Linux LPIC-2
Configuration
•Deux possibilités (à choisir à l'installation)
 par dossiers (necessaire pour webadmin)
 ou par fichier (à favoriser si administration pour la console)
• ce que nous présenterons ici dans le cadre de la LPIC2

•/etc/courier/
 imapd : configuration de courier-imap
 pop3d : configuration de courier-pop
 authdeamonrc : configuration de courier-authdeamon (démon
d'authentification de courier)
Linux LPIC-2
Pré-requis Postfix et Procmail
• Postfix : fichier [Link]

mailbox_command == procmail
mailbox_command procmail -a
-a "$EXTENSION"
"$EXTENSION"
• Procmail : ajouter un fichier $HOME/.procmailrc ou /etc/procmailrc

MAILDIR=$HOME/Maildir/
MAILDIR=$HOME/ DEFAULT=$MAILDIR/
Maildir/
DEFAULT=$MAILDIR/
• créer le(s) dossier(s) $HOME/Maildir/
$$ maildirmake
maildirmake ~/Maildir
~/Maildir
 attention aux droits posix : l'utilisateur doit avec l'accès à ce dossier en lecture et écriture

• vérifiez également les alias (/etc/aliases)

Linux LPIC-2
Configuration avec Postfix et Procmail
• courier-imap : dans le fichier /etc/courier/imapd

MAILDIRPATH=Maildir
MAILDIRPATH=Maildi
r
• courier-authdeadmon
authmodulelist="authpam"
authmodulelist="authpam
"
• redémarrer les services
## /etc/init.d/postfix
/etc/init.d/postfix restart
restart
## /etc/init.d/courier-imap
/etc/init.d/courier-imap restart
restart &&
&& /etc/init.d/courier-authdaemon
/etc/init.d/courier-authdaemon restart
restart

• vous pouvez dés à présent vous connecter via votre MUA préféré
(Evolution par exemple) en IMAP via un compte de votre système (login :
votre identifiant – mdp : idem que sur le système, grâce à PAM)
Linux LPIC-2
Dovecot
• Serveur POP3 et IMAP4r1 orienté sécurité
 libre (Double licence MIT et GPLv2)
 destiné aux systèmes Unix (Solaris, GNU/Linux, (Free|Open|Net)BSD et Mac OS X)

• Compatible mbox et Maildir

• Inclus son propre MDA (Dovecot Local Delivery Agent)

• Dernière version : 2.2.5 (5 Aout 2013)


 attention : nombreuses différences de configuration avec Dovecot1, encore par défaut sous Debian

• Documentation officielle ici

• Configuration : /etc/[Link] ou /etc/dovecot/[Link]

Linux LPIC-2
Authentification
• Dovecot peu stocker les comptes utilisateurs de nombreuses manières
 PAM, BDSAuth, LDAP, passwd
 bases de données SQL : MySQL, PostgreSQL et SQLite

• 4 parties
 le mécanisme d'authentification
• défini le protocole utilisé pour la communication des informations d'authentification
• PLAIN (en clair, à utiliser via SSL/TLS) ou non (CRAM-MD5, NTLM, etc ...)
 le mécanisme de chiffrement des mots de passe
• en clair (PLAIN) ou via une fonction de hachage (par exemple via MD5-CRYPT)
• la plupart du temps, imposé par la base des mots de passe
• PAM ne laissant même pas voir les mots de passe à Dovecot, la question ne se pose pas dans ce cas
 la base des utilisateurs
• Passwd, Passwd-file, LDAP, SQL, etc ...
 la base des mots de passe
• PAM, IMAP, Passwd, Passwd-file, SQL,

Linux LPIC-2
Authentification : Configuration
• Dovecot v1 :

auth default
auth default {{
mechanisms == plain
mechanisms plain cram-
cram-md5 passdb pam {
}
md5 passdb pam {
}userdb passwd {
}
userdb passwd {
} }
}

• Dovecot v2

auth_mechanisms == plain
auth_mechanisms plain cram-
cram-md5 passdb {
md5driver = pam
}
passdb { driver = pam
}userdb {
driver
userdb { = passwd
}
driver = passwd
}

Linux LPIC-2
Emplacement des mailboxs
• paramètre mail_location
 format Maildir
mail_location == maildir:~/Maildir
mail_location
maildir:~/Maildir
 format mbox

mail_location == mbox:~/mail:INBOX=/var/mail/%u
mail_location
mbox:~/mail:INBOX=/var/mail/%u

• identique v1 et v2

Linux LPIC-2
Module 13:
Sécurité du système
Sécurité du système
Configuration d'un
routeur

Linux LPIC-2
Plan
• Netfilter • Extensions de
correspondance
• Vocabulaire
 Options des extensions de
• Tables correspondance

• Cibles • Extensions de cibles

• Options essentielles de  traduction d'adresse réseau


iptables
• Règles simples
 Exemples de règles simples

Linux LPIC-2
Netfilter
• Framework
 Pare-feu Linux
 Projet lancé en 1998
 Intégré à Linux 2.3 en mars 2000

• en remplacement de ipchains (lui aussi développé par Rusty Russell)

• Manipulable par divers programmes en espace utilisateur


 Le plus courant étant iptables, développé par l'équipe Netfilter
• Mais il en existe d'autres, comme ufw ou gufw

Linux LPIC-2
Vocabulaire
Élément Définition
Chaîne Trafic réseaux
Table Regroupement de chaînes par catégorie
Règle Instructions appliquées à un trafic
Cible Action effectuée en cas de validation règle
d'une
Stratégie Cible par défaut d'une chaîne
(Policy)

Linux LPIC-2
Tables
table usage chaînes

INPUT

FILTER Filtrage classique OUTPUT


FORWARD

PREROUTING

POSTROUTING
NAT Translation d'ip
OUTPUT

PREROUTING
MANGLE Modification de paquets OUTPUT

PREROUTING
RAW Marquage (nécessite le module
iptable_raw) OUTPUT

Linux LPIC-2
Cibles

cible Effet

ACCEPT autorisation

DROP destruction

QUEUE transmission en espace utilisateur

cesser de parcourir la chaîne et retourner dans


RETURN la chaîne précédente (appelante) en passant à
la règle suivante

Linux LPIC-2
Options essentielles de iptables
• Création d'une règle

## iptables
iptables [-t
[-t table]
table] -A
-A chaîne
chaîne règle
règle -j
-j cible
cible [options]
[options]
• Suppression d'une règle

## iptables
iptables [-t [-t table]
table] -D -D chaîne
chaîne {règle|règlenum}
{règle|règlenum} [options]
[options]
• Définition de la règle par défaut (stratégie) d'une chaine

## iptables
iptables [-t [-t table]
table] -P -P chaîne
chaîne cible
cible [options]
•[options]
Lister toutes les règles d'une chaîne

## iptables
iptables [-t
[-t table]
table] -L
-L chaîne
chaîne [options]
[options]
• Vider une chaîne (supprime toutes les règles d'une chaîne)

## iptables
iptables [-t
[-t table]
table] -F
-F chaîne
chaîne [options]
[options]
Linux LPIC-2
Règles simples
• pour une interface
 -i interface : d'entrée
 -o interface : pour une interface de sortie

• pour une adresse ip


 -s adresse : source
 -d adresse : destination

Linux LPIC-2
Exemples de règles simples
•Refuser tout les paquets entrant via l'interface eth1
## iptables
iptables -A
-A INPUT
INPUT -i
-i eth1
eth1 -j
-j DROP
DROP

•Accepter tout les paquets sortant via l'interface eth1


## iptables
iptables -A
-A OUTPUT
OUTPUT -o
-o eth1
eth1 -j
-j ACCEPT
ACCEPT
•Refuser tout les paquets en entrée provenant de [Link]
## iptables
iptables -A
-A INPUT
INPUT -s
-s [Link]/24
[Link]/24 -j
-j DROP
DROP
•Autoriser tout les paquets en sortie à destination de [Link]
## iptables
iptables -A
-A OUTPUT
OUTPUT -d
-d [Link]/24
[Link]/24 -j
-j ACCEPT
ACCEPT

Linux LPIC-2
Extensions de correspondance
• modules additionnels de correspondance de paquets
 Peuvent être chargés de deux manières
• Implicitement

- Option -p protocole ou –protocol protocole


• udp, tcp, icmp ou all

• Explicitement

- Option -m module ou –match module

• Permettent d'utiliser des options supplémentaires, en fonction du module

• Remarque : pour visualiser l'aide relative à un module, indiquez l'option


correspondante suivie de -h

Linux LPIC-2
Options des extensions de correspondance
• tcp et udp • icmp
 --source-port [!] port[:port]  --icmp-type [!] nom_du_type_icmp
 --destination-port [!] • numérique ou par nom (cf -h)
port[:port]

• tcp • state

 --tcp-flags [!] masque comp


 --state {NEW|ESTABLISHED|
RELATED|INVALID}
 [!] --syn

Linux LPIC-2
Extensions de cibles
• modules de cible additionnels
 permettre de nouvelles actions sur les
paquets

• LOG : journalisation du paquet

• REJECT : supprimer le paquet et répondre par un paquet d'erreur


 sorte de DROP verbeux

• traduction d'adresse réseau (NAT : Network address translation)


 DNAT
 SNAT
 MASQUERADE

• Et bien d'autres (cf man iptables)

Linux LPIC-2
traduction d'adresse réseau
• Uniquement disponibles dans la table nat

• modification de l'adresse de destination


## iptables
iptables -t
-t nat
nat -A
-A {PREROUTING|OUTPUT}
{PREROUTING|OUTPUT} règle
règle \\
-j DNAT
-j DNAT --to-destination
--to-destination adresse-ip[-adresse-ip][:port-port]
adresse-ip[-adresse-ip][:port-port]
• modification de l'adresse source
 personnalisable
## iptables
iptables -t
-t nat
nat -A
-A POSTROUTING
POSTROUTING règle
règle \\
-j SNAT
-j SNAT --to-source
--to-source adresse-ip[-adresse-ip][:port-port]
adresse-ip[-adresse-ip][:port-port]
 masquerading : une seule ip (celle du routeur)
## iptables
iptables -t
-t nat
nat -A
-A POSTROUTING
POSTROUTING règle
règle -j
-j MASQUERADE
MASQUERADE

Linux LPIC-2
Sécurité du système
Sécurisation des
serveurs FTP

Linux LPIC-2
Plan
• Introduction

• Serveurs FTP

• Connexions FTP actives et passives

• Vsftpd

• Pure-ftpd

Linux LPIC-2
Introduction
• File Transfer Protocol
 protocole de transfert de fichier de référence
 relativement ancien

• RFC 114 - 16 avril 1971


 remplacée par la RFC 765 (juin 1980) puis 959 (Octobre 1985 - version finale)

• complétée par
- la RFC 2228 (Juin 1997) : extensions de sécurité
- la RFC 2428 (Septembre 1998) : ipv6 et nouveau type de mode passif (commande EPSV)

• Faiblement sécurisé
 remplacé par du FTP over SSL (FTPS) ou du SFTP (SSH)
Linux LPIC-2
Serveurs FTP
• pure-ftp
 un serveur libre (licence BSD) de référence
 fortement orienté sécurité
 né en 2001 à partir de Troll-FTPd
 disponible sur la quasi intégralité des systèmes
Unix
• même Android
 version actuelle : 1.0.36 - 21 Mars 2012

• vsftpd : Very Secure FTP Daemon


 également fortement orienté sécurité et libre (licence GPL)
 serveur FTP par défaut sur de nombreuses distributions (Ubuntu, CentOS, Slackware
…)
 version actuelle : 3.0.2 - Septembre 2012)

• proftpd
 libre (GPL), puissant, sécurisé et fortement
documenté
 configuration similaire à Apache
• fichier [Link]
 version actuelle : 1.3.4d - 14 Juin 2013

Linux LPIC-2
Connexions FTP actives et passives
• Control channel (connexion de contrôle)
 mode texte : commande / réponse

• Data channel (connexion de donnée)


 transmission de données (contenu ou liste de
fichiers)
 généralement établie pour le transfert de
données relatives à une seule commande
• Mode actif : est établie par le serveur
• Mode passif (commande PASV)
- metle serveur en attente de connexion sur
le port aléatoire qu'il aura envoyé en
réponse

Linux LPIC-2
Vsftpd
• Configuration
 fichier /etc/[Link] (cf man)
 syntaxe : clé=valeur
 Exemple
## listen=NO
listen=NO :: via
via inetd
inetd
listen=YES write_enable=YES anonymous_enabled=YES
listen=YES
write_enable=YES
anon_root=/var/ftp/pub
anonymous_enabled=YES
anon_upload_enable=YES # nécessite write_enable=YES #
anon_root=/var/ftp/pub
restreindre l'utilisateur anonyme à la lecture sur les fichers
anon_upload_enable=YES # nécessite write_enable=YES
# accessibles à tout le monde uniquement
# restreindre l'utilisateur anonyme à la lecture sur les fichers
anon_world_readable_only=NO
# accessibles à tout le monde uniquement
...
anon_world_readable_only=NO
...

Linux LPIC-2
Pure-ftpd
• N'est pas directement configuré par des fichiers
 mais par des options (de la commande pure-ftpd)

• Cependant un wrapper permet de récupérer ces options à partir


 d'un fichier /etc/pure-ftpd/[Link] sous CentOS
Paramètre valeur
Paramètre valeur
## commentaire
commentaire
 ou d'un dossier /etc/pure-ftpd/conf sous Debian

• un fichier par option


- le nom de ce fichier correspondant à l'option dans son format long
- et son contenu à la valeur à donner
$$ cat
• Exemple
cat /etc/pure-ftpd/cong/NoAnonymous yes
/etc/pure-ftpd/cong/NoAnonymous
yes
- correspond à l'option -E ou --noanonymous
Linux LPIC-2
Sécurité du système
Shell sécurisé
(SSH)

Linux LPIC-2
Plan
• Rappels

• Rappel : Configuration

• Restrictions des connexions root

• Restriction des connexions

Linux LPIC-2
Rappels
• Ce qui a déjà été vu dans la LPIC1 :
 fonctionnement et principes du SSH
 client SSH : connexion
 copie de fichier avec scp
 configuration basique du serveur
 gestion des clés coté serveur et coté client
• ssh-agent
 redirection de port (aka TCP Forwarding / tunneling)

• Nous allons donc ici nous concentrer sur les questions de sécurité,
particulièrement sur les restrictions d'accès

Linux LPIC-2
Rappel : Configuration
• fichier /etc/ssh/sshd-config

Port 22
Protocol 2,1
ListenAddress [Link] KeepAlive Yes
HostKey ssh_host_dsa.key
HostKey ssh_host_rsa.key PermitRootLogin no PasswordAuthentication yes
PubkeyAuthentication yes PermitEmptyPasswords no X11Forwarding yes

Linux LPIC-2
Restrictions des connexions root
PermitRootLogin {yes|no|without-password|forced-commands-
PermitRootLogin {yes|no|without-password|forced-commands-only}
only}
• yes : autoriser (par défaut)

• no : interdire (recommandé)

• without-password : désactiver l’authentification par mot de


passe
 donc restreindre aux authentifications par clé
• forced-commands-only : n'autoriser les connections que via le(s) couple(s) de clés pour lesquels
l'option « command » est définie
 définie dans le fichier /root/.ssh/authorized_keys du serveur
 permet de lancer cette commande automatiquement lors d'une connexion via la clé associer, et
empêcher ainsi l'usage de toute autre commande
 Exemple (voir à ce propos l'excellent article de [Link]

command="ls" ssh-dss
command="ls" ssh-dss ACABB3N2aC1ld2...XC2/D47x2= root@SERVEUR1
ACABB3N2aC1ld2...XC2/D47x2=
root@SERVEUR1
Linux LPIC-2
Restriction des connexions
• Autoriser / interdire authentification par

 clé publique
PubkeyAuthentication {yes|
PubkeyAuthentication {yes|no}
no}
 mot de passe
PaswordAuthentication {yes|
PaswordAuthentication {yes|no}
no}
• Restreindre l'accès à une liste d'utilisateurs / groupes

{Allow|Deny}Users user1,user2
{Allow|Deny}Users
user1,user2
{Allow|Deny)Groups group1,group2
{Allow|Deny)Groups
group1,group2
 il est possible d'utiliser les caractères ' ?' et '*' comme jocker pour ces paramètres

• Limiter les versions de protocole SSH disponibles


Protocol {2,1|1|
Protocol {2,1|1|2}
Linux 2}
LPIC-2
Sécurité du système
Tâches de sécurité

Linux LPIC-2
Plan
• Rappels • fail2ban

• Introduction  Configuration de fail2ban

• Se tenir au courant • Le scanner de vulnérabilité


OpenVAS
 Bugtraq
• Détection d'intrusion avec
 CERT Snort
 CIAC
 Autres ressources

Linux LPIC-2
Rappels
• Ce que nous avons déjà vu
 surveillance et analyse du trafic réseau (LPIC2 - chapitre 5.2)
• netcat, nmap
 gestion du pare-feu Linux (LPIC2 - chapitre 12.1)
• utilisable à des fins de détection d'intrusion (cible LOG)

• Nous allons donc ici approfondir ces sujets en mettant l'accent


sur l'audit et la détection de problèmes de sécurité afin de
pouvoir y répondre rapidement

Linux LPIC-2
Introduction
•La sécurité n'est pas une affaire de feignant
 de par son principe même, tout y change en permanence
• vulnérabilité → annonce → résolution, le tout dans un délais très court
 il est donc très important de se tenir en permanence à jour
• audit, suivit de l'actualité, etc …

 Dans la pratique, elle est également une affaire de chaque instant


• criticité des systèmes
• surveillance permanente

- pour un temps de réactivité minimal


Linux LPIC-2
Se tenir au courant
• un volume gigantesque de vulnérabilités sont découvertes
chaque jour
 de nombreuses solutions permettent de les surveiller
 mailing lists, sites spécialisés, magazines, etc ...

• Seule la connaissance d'une vulnérabilité permet de s'en


protéger
 faire entièrement confiance aux mises à jour et à vos protections
généralistes ne peu suffire dans un environnement critique

Linux LPIC-2
Bugtraq
• mailing list ouverte à tous
 crée le 5 Novembre 1993 (modéré depuis le 5 Juin 1995)

• fondée sur le principe de Full Disclosure

 divulgation publique totale de toute vulnérabilité


 opposé à la sécurité par l'obscurité

• traite de quasiment toutes (dans les 150/jours) les dernières vulnérabilités


 annonce, description, méthodes d'exploitation, solutions, etc …

• site officiel : [Link] - FAQ

 pour souscrire, envoyer un mail à bugtraq-subscribe@[Link]

Linux LPIC-2
CERT
• Les CERT (Computer Emergency Response Team)
 Organismes officiels
 Centres d'alerte et de réaction aux attaques informatiques
• prévention des risques et assistance aux traitements d'incidents
• généralement ouverts à tous
 Quelques exemple :
• US-CERT (United States Department of Homeland Security)
• CERT-RENATER (France - Réseau National de télécommunications pour la Technologie, l'Enseignement et la
Recherche)

• CERT Coordination Center (ou CERT/CC)


 premier CERT
 aujourd'hui le centre principal de coordination des CERT
 fondé par le DARPA en novembre 1988
• suite à la frappe du « premier » ver, Moris (ou Rogue)
 site officiel : [Link] - mailing lists et flux
d'actualité

Linux LPIC-2
CIAC (ancienne version)
• Computer Incident Advisory Capability
 fondé par le département de l'énergie des États-Unis
d’Amérique
 en Février 1989

• Nombreuses mailing lists


 CIAC-BULLETIN : Avis et informations de haute priorité
 CIAC-NOTES : collection d'articles sur la sécurité informatique
 SPI-ANNOUNCE : actualité de Security Profile Inspector (SPI)
• mises à jour, nouvelles fonctionnalités, etc ...
 SPI-NOTES : discussions sur l'utilisation de SPI et les problèmes
rencontrés

• Pour souscrire, envoyer un mail avec pour contenu un message comme suit à ciac-listproc@[Link]
 subscribe list-name LastName, FirstName, PhoneNumber

• cf modifications, ces mailing lists ne semblent plus


exister

Linux LPIC-2
CIAC
• Computer Incident Advisory Capability
 fondé par le département de l'énergie des États-Unis d’Amérique
 en Février 1989

• Membre fondateur
 du GFIRST
• Government Forum of Incident Responders and Security Teams
• communautés de plus de 50 équipes de divers agences fédérales des USA
• hébergée par le US-CERT
 et du FIRST (Forum of Incident Response and Security Teams)

• Anciennement chargé d'informer largement sur les incidents informatiques


 vulnérabilités, virus et hoarx pour l'essentiel

• Renommé DOE-CIRC / JC3 (Joint Cybersecurity Coordination Center) en Octobre 2008


 pour se tenir au courant, voir ses communiqués
 travail aujourd'hui essentiellement avec l'US-CERT

Linux LPIC-2
Autres ressources
• MISC : « le magazine consacré 100% à la sécurité informatique
»
 mensuel français de Unix Garden, des Editions DIAMOND
• également éditeur de l'excellent Gnu/Linux Magazine France

 actualité, perspectives techniques, questions juridiques, etc …

• Informations de sécurité Debian

 mailing list : debian-security-annonce

• Voir aussi les ressources Red Hat

 notifications : [Link]
Linux LPIC-2

fail2ban
•Solution de protection active
 parcours les journaux systèmes
• à la recherche d'activités indiquant une attaque de type DOS ou bruteforce
 banni automatiquement l'adresse IP source de ces attaques
• en établissant une règle iptables
• de manière temporaire

•Ne permet pas de prévenir les attaques DDOS


 Aucun véritable support de l'ipv6 à ce jour (patch expérimental)

Linux LPIC-2
Configuration de fail2ban
• fichier /etc/fail2ban/[Link]
 un bloc par service à surveiller
## bloc
bloc du
du service
service ssh
ssh [ssh]
# activer le service enabled = true
[ssh]
## activer
ports à le
surveiller port
service enabled == ssh,sftp
true
## ports
filtreà de détection port
surveiller pour les= logs filter
ssh,sftp = sshd
## filtre
fichierdededétection
log à surveiller
pour les logs filter = sshd
logpath = /var/log/[Link]
# fichier de log à surveiller logpath = /var/log/
# nombre
[Link] maximum d'essais autorisés avant bannissement maxretry = 6
## nombre
bannir maximum
durant 15 minutesautorisés
d'essais bantime avant
= 900
bannissement maxretry = 6
# bannir durant 15 minutes bantime = 900

Linux LPIC-2
Le scanner de vulnérabilité OpenVAS
• Open Vulnerability Assessment System
 fork libre (GPL) de Nessus (propriétaire)

• Analyse un équipement, un ensemble d'équipements, voir même un réseau


entier
 afin d'y détecter les vulnérabilités éventuelles

• Affiche une synthèse indiquant


 une liste des vulnérabilités détectées, par niveau de criticité
 une description de celles-ci
 ainsi qu'un méthode (ou un lien) permettant d'y remédier

• Pour plus de détails, voir notamment ce document

Linux LPIC-2
Détection d'intrusion avec Snort
• système de détection d'intrusion pour le réseau (NIDS)
 référence en la matière
 Libre (GPL)

• Maintenu par Sourcefire


 propose un programme de certifications professionnelles dédié

• Configurable via des règles • Peut être amélioré par / associé à


 à la manière de iptables  un IPS (système de prévention d'intrusion)
 nombreuses sont celles partagées librement • Snort Inline, Guardian, SnortSam, etc...
par les utilisateur sur le net (cf
Emerging Threats)  un logiciel de monitoring
 acidbase, Prelude-IDS, etc ... ajouter un texte

• voir la documentation officielle


Linux LPIC-2

Vous aimerez peut-être aussi