Certification LPIC-2 : Administration Linux
Certification LPIC-2 : Administration Linux
• 3 couches
Applications
Noyau
Matériel
Approches d’analyse
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
• 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
$ 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)
Linux LPIC-2
Plan
• Rappel : le noyau Linux
• Structure
• Dossiers principaux
• Documentation
Linux LPIC-2
Rappel : le noyau Linux
• offre une abstraction matérielle pour les logiciels
• 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
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
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
Linux LPIC-2
Introduction
• Permet de mettre à jour l'image d'un noyau
à partir de sources pré-existantes
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
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
• récupération
# diff -ur linux-2.4.21 oldfiles/linux-2.4.21 > recover-2.4.21-patch
Linux LPIC-2
.orig
Linux LPIC-2
Noyau Linux
Personnalisation et
configuration du
noyau
Linux LPIC-2
Plan
• Introduction
• La commande make
• Nettoyage
• Configuration
• Démonstration
Linux LPIC-2
Introduction
Linux LPIC-2
La commande make
• Permet
la configuration
la compilation
l'installation
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
• "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
• Compiler le monobloc
• mkinitrd
• mkinitramfs
Linux LPIC-2
Résumé des opérations
# make dep && make clean && make bzImage && make modules \
> && make modules_install
• Nettoyer
• Compilation de monobloc
Linux LPIC-2
Vérifier les dépendances
$ make dep
Linux LPIC-2
Méthode simple et complète
$ make [all]
• Suffisant
si aucune erreur
et tout les utilitaires nécessaires présent
• Astuce
Linux LPIC-2
Compiler le monobloc
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
Linux LPIC-2
Création d'un initrd
• Nombreux outils
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
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
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
• 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
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
• 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
• Options :
-v : verbose
-f : force
-w : wait
Linux LPIC-2
Informations
$ 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
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
• ajouter un service
# chkconfig --add service
Linux LPIC-2
update-rc.d
• désactiver un service
• 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"]
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
• Librairies et commandes
• Système
• 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)
Linux LPIC-2
Une famille de spécifications
Linux LPIC-2
Librairies et commandes
• génériques
ex : libdl, libcrypt, libpthread
Linux LPIC-2
Système
• cron
• runlevels
• 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
• stopper un programme
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
Linux LPIC-2
GRUB : personnalisation du démarrage
• Choix du système ou du kernel
flèches haut et bas sur le menu
Linux LPIC-2
GRUB legacy Shell
• permet d'interagir directement avec GRUB
via CLI
# grub
Linux LPIC-2
Commandes de démarrage
• afficher l'aide
grub > help
• démarrage
grub > boot
Linux LPIC-2
Commandes diverses
• trouver sur quel bloc un fichier est stocké
Linux LPIC-2
Sauvetage
• Démarre directement sur le shell
erreur la plus courante : GRUB ne trouve pas les fichiers
nécessaires
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
Linux LPIC-
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
•FAT UUID
• Générer un UUID
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
• 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
• fichier /proc/mounts
maintenu par le kernel
toujours à jour (contrairement à /etc/mtab)
Linux LPIC-2
UUID
• Universal Unique Disk Identifier
Linux LPIC-2
Connaître l'UUID d'une partition
# blkid /chemin/vers/la/partition
• Exemple
# blkid /dev/sda1
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)
Linux LPIC-2
Vider le buffer
• stocké dans la RAM
## 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
• 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
• 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
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
Linux LPIC-
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
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]
• 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
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
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
• débogage
Linux LPIC-2
Commandes debugfs
• show_super_stats / stats
• stat nom_fichier
• lsdel / list_deleted_inodes
• 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)
• 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
• Exemple
mode itératif
Linux LPIC-2
Système de fichiers et périphériques
montage
automatique
Linux LPIC-2
Plan
• Introduction
• Autofs
• Configuration
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é
Linux LPIC-2
Autofs
• implémentation Linux du montage automatique
Linux LPIC-2
Configuration
• Un fichier principal
/etc/[Link]
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
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
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
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)
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/
• Options
-r : tout fichier publiquement lisible et activation des extensions
Rock Ridge
-J : MS Joliet extension
Linux LPIC-2
Monter une image ISO
Linux LPIC-2
Gravure d'une image ISO
• Récupération des informations
$ cdrecord -scanbus
• 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)
• 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
Linux LPIC-2
Pré-requis
• Ajout d'une entrée dans /etc/cryptab
# echo "crypt /dev/hda3 none none" >> /etc/crypttab
• Formatage
# mke2fs /dev/mapper/crypt
Linux LPIC-2
Test
• Montage manuel
# mkdir /crypt
# mount /crypt
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
• udevmonitor
Linux LPIC-2
Introduction
Linux LPIC-2
uevent
• envoyé par le kernel
à chaque (dé)branchement d'un périphérique
• 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/
• exemple :
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
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
• 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
Cout minimal
Linux LPIC-2
RAID 0
• volume agrégé par bandes
"striping"
• parallélisation
augmentation des performances
Cout minimal
Linux LPIC-2
RAID 1
• redondance
"mirroring"
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
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>
Linux LPIC-2
Modes : création et activation
• create : créer et activer un ensemble RAID à partir de zéro
Linux LPIC-2
Modes : modification et surveillance
• incremental : ajouter / supprimer un périphérique d'un ensemble RAID
Linux LPIC-2
Création d'un ensemble RAID
• création d'un ensemble /dev/md0 en RAID1
• identique à
# mdadm -Cv /dev/md0 -l1 -n2 /dev/sdb1 /dev/sdc1
Linux LPIC-2
/etc/[Link]
• optionnel
Linux LPIC-2
Résolution de panne
• retirer un disque défectueux d'un ensemble RAID
# mdadm --manage /dev/md0 --remove /dev/sdb1
Linux LPIC-2
/proc/mdstat
• contient les statistiques sur les ensembles RAID
Linux LPIC-2
Administration avancée des périphériques de stockage
Linux LPIC-2
Plan
• Configurer l'interaction du kernel avec un fs ext
• Sysctl
Linux LPIC-2
Configurer l'interaction du kernel avec un fs ext
• Options :
Linux LPIC-2
Configurer l'interaction du kernel avec un fs ext
• Options :
-O [^]mount_option
-s [0|1]
• la plupart de ses options n'auront aucun effet sur les disques SCSI
Linux LPIC-2
Paramètres de disques durs PATA
# hdparm [options] [device]
• Options
• 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
•
améliore quasi systématiquement les performances
Linux LPIC-2
Paramètres de disques durs PATA
# hdparm [options] [device]
• Options
Linux LPIC-2
Paramètres de disques durs PATA
# hdparm [options] [device]
• Options
Linux LPIC-2
Paramètres de disques durs SCSI
# sdparm [options] [device]
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
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
Linux LPIC-2
Sysctl
# sysctl [-n] [-e] [-a | -A | -p filename | -w variable=value ]
• Options
Logical Volume
Manager
Linux LPIC-2
Plan
• Introduction
• Pas à pas
• Clichés (Snapshots)
Linux LPIC-2
Introduction
• création et gestion de volumes
logiques sous GNU/Linux
redimensionnement
fonctionnalités supplémentaires
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)
Linux LPIC-2
Créer un groupe de volumes
# vgcreate [options] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
• Exemple
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
• Étendre le LV
# xfs_growfs /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 …)
## 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
## 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
• Configuration serveur
• Configuration client
Linux LPIC-2
Introduction
• Virtual Private Network
réseau privé virtuel
Linux LPIC-2
OpenVPN
• Logiciel Libre (GNU GPL)
•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)
$$ openvpn
openvpn --genkey
--genkey --secret
--secret [Link]
[Link]
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]
## 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
• Netstat
Linux LPIC-2
netcat
$$ nc
nc [[ options
options ]] [[ hostname
hostname ]] [ ports ]
[ ports ]
• Le couteau suisse du TCP/IP
• 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
$$ 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
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
• 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)
• 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
## 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
• Couche réseau
• Couche transport
• Couche application
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
Qui, quoi, où, quand, comment, combien (de postes affectés), pourquoi ? 4) Déterminer la cause
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
Linux LPIC-2
Couche réseau
• Puis-je joindre l'hôte distant ? Le(s) routeur(s) ? Le firewall ?
• vérifier la configuration ip
ifconfig, ip, dhclient
Linux LPIC-2
Couche transport
• Puis-je joindre l'hôte sur le port désiré ?
$$ telnet
telnet <hote>
<hote> <port>
<port>
Linux LPIC-2
Couche application
• Configuration de l'application cliente
tester avec un autre client
vérifier les paramètres
Linux LPIC-2
Problèmes de résolution de nom
• Tester via ping, host ou dig
$$ 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
• 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
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
$
•$ ./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
• 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
Linux LPIC-2
Maintenance système
Notification aux
utilisateurs des
problèmes système
Linux LPIC-2
Plan
• Messages à l'authentification
• 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)
$$ 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
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
• Composants
• Syntaxe du fichier
[Link]
• Options
Linux LPIC-2
Introduction
• correspondance nom (FQDN) / adresse ip
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.
• standard de fait
aujourd'hui maintenu par l'Internet Systems Consortium
• 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
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]";
Linux LPIC-2
Options
• Options de configuration du serveur DNS
Linux LPIC-2
Logging
logging {{
logging
category cat
category cat { channel; };
{...
channel; };
}; ...
};
• catégorie : type d'information à logger
security, lame-server, cname, etc ...
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)
• 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
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
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).
Linux LPIC-2
Enregistrements
•Syntaxe
• Nom → IP
• Exemple
monserveur IN A [Link]
Linux LPIC-2
Alias (CNAME)
• 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)
• 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
• 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
• enregistrements PTR
1 IN PTR [Link].
ne pas oublier le point finale (racine)
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
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]
• Isoler/Limiter BIND
Linux LPIC-2
Remarque sur le hacking
• Ne pas confondre hacking et malveillance
black / grey / white hats
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
;
};
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
zone "[Link]" IN {
zone "[Link]" IN {
type master;
type master;
allow-transfer { my_slave_servers; };
allow-transfer
}; { my_slave_servers; };
};
## 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
/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
DNSKEY et RRSIG
Preuves de non-existance
Chaine de confiance
• Mise en pratique
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.
• 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é
Linux LPIC-2
Signature des enregistrements
Danger :
le DNS
poisoning
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
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
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
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
• flag : utilisé pour indiquer qu'une clé est une clé KSK
ZSK sinon
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
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
$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 ...)
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
$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]
Linux LPIC-2
Module 9:
Services Web
Services web
Mise en place d'un
serveur web
Linux LPIC-2
Plan
• Introduction • Modularité
• apache2ctl
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
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
• Deux types :
IP based
• Nécessite plusieurs interfaces (ou routage)
Named based
• Répond en fonction de l'url appelée
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
Linux LPIC-2
Options du serveur Apache
• Première section du fichier [Link]
nombreuses options de type clé valeur
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
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
$$ ./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
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]
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 …
Linux LPIC-2
Mise en place
• Soit dans [Link] (recommandé)
directives <Directory> ou <Limit>
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
• Supprimer un utilisateur
## htpasswd
htpasswd -D
-D /usr/local/apache/passwd/passwords
/usr/local/apache/passwd/passwords monutilisateur
monutilisateur
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
• 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 LPIC-
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
Linux LPIC-2
Services web
Mise en place de
serveurs virtuels
Apache 2
Linux LPIC-2
Plan
• Introduction
• Deux solutions
• Directive VirtualHost
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
• 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
• 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
• 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
• Signature
• Certificat
• Installation
• /etc/ssl/*
• 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
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
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
Squid
• Configuration
Paramètres généraux
• ACLs
ACLs : Exemples
• Restriction d'accès
• Authentification utilisateur
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
• 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 :
- sensible à la casse
• 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
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.
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
Linux LPIC-2
Test : configuration du client Debian
• Pour tester votre serveur, vous pouvez utilisez n'importe quel
client http (firefox, epiphany, etc …)
•
$$ 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
Structure • smbclient
• Propriétaire
spécifications fermées à l'origine
puis distribuées via le MSDN Open Specifications Developer Center
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
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
• 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
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
...
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
Linux LPIC-2
Authentification
• Mode
security == mode
security
mode
share : contrôle d'accès au niveau ressources
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
## 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
## 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
• -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
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
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
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
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)
Linux LPIC-2
rpcinfo
• utilitaire permettant d'effectuer des appels à un serveur RPC
rapporter les informations obtenues
man : [Link]
## 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
• 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
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é
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
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
## 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
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
• 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
• 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
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
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
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
• 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];
}
• pour une documentation complète de cette configuration sous Debian, voir ce document
Linux LPIC-2
Maintenance
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
• 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
• 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
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
•
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
- 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
• 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
• Opérateurs
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)
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
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
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
• 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
$$ 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
• 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)
• 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
• 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)
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
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
• domaines hébergés
- ne sont pas directement associés au nom de la machine
• d'alias
• ou de boites au lettres
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
## 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)
• Avantages : • Désavantages :
universellement supporté problèmes de verrouillage
• 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
Linux LPIC-2
Fonctionnement
• programme autonome
généralement appelé directement par le MTA
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
•
• 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)
:0 [drapeaux]
:0 [drapeaux] [[ :: [verrou_local] ]
[verrou_local] ]
- B : corps du message
- HB : les deux
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] ]
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)
• 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
|| 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
• 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
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
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)
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
Linux LPIC-2
Netfilter
• Framework
Pare-feu Linux
Projet lancé en 1998
Intégré à Linux 2.3 en mars 2000
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
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
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
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
Linux LPIC-2
Extensions de correspondance
• modules additionnels de correspondance de paquets
Peuvent être chargés de deux manières
• Implicitement
• Explicitement
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
Linux LPIC-2
Extensions de cibles
• modules de cible additionnels
permettre de nouvelles actions sur les
paquets
Linux LPIC-2
traduction d'adresse réseau
• Uniquement disponibles dans la table nat
Linux LPIC-2
Sécurité du système
Sécurisation des
serveurs FTP
Linux LPIC-2
Plan
• Introduction
• Serveurs FTP
• Vsftpd
• Pure-ftpd
Linux LPIC-2
Introduction
• File Transfer Protocol
protocole de transfert de fichier de référence
relativement ancien
• 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
• 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
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)
Linux LPIC-2
Plan
• Rappels
• Rappel : Configuration
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é)
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
Linux LPIC-2
Plan
• Rappels • fail2ban
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)
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 …
Linux LPIC-2
Bugtraq
• mailing list ouverte à tous
crée le 5 Novembre 1993 (modéré depuis le 5 Juin 1995)
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)
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
• Pour souscrire, envoyer un mail avec pour contenu un message comme suit à ciac-listproc@[Link]
subscribe list-name LastName, FirstName, PhoneNumber
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)
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
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
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)
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)