Sécurité des systèmes Linux

Transcription

Sécurité des systèmes Linux
Sécurité des systèmes Linux
Hanteville Nicolas
CFBS
24/11/2009
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
1 / 116
Historique - Unix
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
2 / 116
Historique - Linux
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
3 / 116
Séquence de démarrage
1
Tests matériel (carte mère, processeur, mémoire, lecteurs. . .)
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
4 / 116
Séquence de démarrage
1
Tests matériel (carte mère, processeur, mémoire, lecteurs. . .)
2
Chargement primaire : Démarrage du BIOS
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
4 / 116
Séquence de démarrage
1
Tests matériel (carte mère, processeur, mémoire, lecteurs. . .)
2
Chargement primaire : Démarrage du BIOS
3
Chargement MBR (Master Boot Record)
(les 512 premiers octets du lecteur activé)
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
4 / 116
Séquence de démarrage
1
Tests matériel (carte mère, processeur, mémoire, lecteurs. . .)
2
Chargement primaire : Démarrage du BIOS
3
Chargement MBR (Master Boot Record)
(les 512 premiers octets du lecteur activé)
4
Chargement secondaire : LILO, GRUB, WINDOWS. . .
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
4 / 116
Séquence de démarrage
1
Tests matériel (carte mère, processeur, mémoire, lecteurs. . .)
2
Chargement primaire : Démarrage du BIOS
3
Chargement MBR (Master Boot Record)
(les 512 premiers octets du lecteur activé)
4
Chargement secondaire : LILO, GRUB, WINDOWS. . .
5
Chargement du noyau/kernel
(montage des partitions, initialisation des périphériques. . .)
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
4 / 116
Séquence de démarrage
1
Tests matériel (carte mère, processeur, mémoire, lecteurs. . .)
2
Chargement primaire : Démarrage du BIOS
3
Chargement MBR (Master Boot Record)
(les 512 premiers octets du lecteur activé)
4
Chargement secondaire : LILO, GRUB, WINDOWS. . .
5
Chargement du noyau/kernel
(montage des partitions, initialisation des périphériques. . .)
6
Lecture et exécution des services/serveurs
7
Identification/Authentification
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
4 / 116
Séquence de démarrage
1
Tests matériel (carte mère, processeur, mémoire, lecteurs. . .)
2
Chargement primaire : Démarrage du BIOS
3
Chargement MBR (Master Boot Record)
(les 512 premiers octets du lecteur activé)
4
Chargement secondaire : LILO, GRUB, WINDOWS. . .
5
Chargement du noyau/kernel
(montage des partitions, initialisation des périphériques. . .)
6
Lecture et exécution des services/serveurs
7
Identification/Authentification
8
Scripts d’ouverture de session, initialisation des variables de
l’utilisateur. . .
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
4 / 116
Chargement primaire
Il en existe plusieurs types :
- BIOS Basic Input Output System
- bootadmin (EPROM HP-UX, Solaris) Erasable Programmable
Read-Only Memory
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
5 / 116
Chargement primaire
Il en existe plusieurs types :
- BIOS Basic Input Output System
- bootadmin (EPROM HP-UX, Solaris) Erasable Programmable
Read-Only Memory
Points de sécurité importants :
Seul l’administrateur système doit pouvoir y avoir accès.
Le démarrage doit se faire exclusivement sur le disque dur.
Les périphériques non utilisés doivent être désactivés (FIREWIRE,
USB, CDROM, DISQUETTE. . .).
La partie matérielle de la machine doit être protégée afin d’éviter une
réinitialisation (Clear CMOS), l’implémentation d’hologrammes ou
rubans adhésifs cassants doit permettre de tracer une éventuelle
ouverture de la machine.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
5 / 116
Chargement secondaire : chargeur d’amorçage
Definition
Programme permettant le démarrage de plusieurs systèmes d’exploitation
sur un même système : localiser, charger et exécuter le noyau du système.
Il en existe de multiples :
Boot Camp (Apple)
Bootman (BeOS boot loader)
Chos (Choose OS)
GAG (Graphical Boot Manager)
GRUB (GRand Unified Bootloader)
LILO (LInux LOader)
NTLDR / Winload (Microsoft)
Syslinux (Suite de gestionnaire de démarrage)
...
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
6 / 116
Chargement secondaire : chargeur d’amorçage
Definition
Programme permettant le démarrage de plusieurs systèmes d’exploitation
sur un même système : localiser, charger et exécuter le noyau du système.
Il en existe de multiples :
Boot Camp (Apple)
Bootman (BeOS boot loader)
Chos (Choose OS)
GAG (Graphical Boot Manager)
GRUB (GRand Unified Bootloader)
LILO (LInux LOader)
NTLDR / Winload (Microsoft)
Syslinux (Suite de gestionnaire de démarrage)
...
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
6 / 116
Chargement secondaire : GRUB
Emplacement des fichiers :
Fichier de configuration : /boot/grub/menu.lst
Fichiers de l’application : /usr/sbin/grub/, /etc/grub.d/, usr/lib/grub/, man.
Analyser le contenu du fichier de configuration :
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
7 / 116
Chargement secondaire : GRUB
Emplacement des fichiers :
Fichier de configuration : /boot/grub/menu.lst
Fichiers de l’application : /usr/sbin/grub/, /etc/grub.d/, usr/lib/grub/, man.
Analyser le contenu du fichier de configuration :
more /boot/grub/menu.lst
gedit /boot/grub/menu.lst
kate /boot/grub/menu.lst ou kwrite /boot/grub/menu.lst
ATTENTION, avant toute modification d’un fichier de
configuration pensez à en faire une copie.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
7 / 116
Chargement secondaire : GRUB (fichier de configuration)
# Temps d’attente en seconde.
timeout 10
# Couleurs de fond/cadre/texte sélectionné/fond du texte.
color black/cyan yellow/cyan
# Choix de sélection par défaut, ici le premier.
default 0
# Titre d’un choix sélectionnable.
title linux
# Image du noyau à charger (disque, partition).
kernel (hd0,0)/vmlinuz root=/dev/hda6 devfs=mount
# Partition à charger.
initrd (hd0,0)/initrd.img
title failsafe # Mode single-user.
kernel (hd0,0)/vmlinuz root=/dev/hda6 failsafe devfs=nomount
initrd (hd0,0)/initrd.img
title Windows
root (hd0,0)
# Secteur de la partition à charger.
chainloader +1
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
8 / 116
Chargement secondaire : GRUB (fichier de configuration)
title linux
kernel (hd0,0)/vmlinuz root=/dev/hda6 devfs=mount
initrd (hd0,0)/initrd.img
Exemple de nommage pour la sélection d’un disque :
Primary Master : hda1 ou hd0,0
Primary slave : hdb1 ou hd1,0
Secondary Master : hdc1 ou hd2,0
Secondary slave : hdd1 ou hd3,0
Intérêt ?
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
9 / 116
Chargement secondaire : GRUB (fichier de configuration)
title linux
kernel (hd0,0)/vmlinuz root=/dev/hda6 devfs=mount
initrd (hd0,0)/initrd.img
Exemple de nommage pour la sélection d’un disque :
Primary Master : hda1 ou hd0,0
Primary slave : hdb1 ou hd1,0
Secondary Master : hdc1 ou hd2,0
Secondary slave : hdd1 ou hd3,0
Intérêt ?
En cas de perte d’un disque, après démarrage sur un LIVE-CD, on modifie
le fichier de configuration et on met à jour grub : sudo update-grub
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
9 / 116
Chargement secondaire : GRUB (mot de passe MD5)
Single-user
Le single-user, permet sans aucun mots de passe (par défaut) d’accéder à
des droits root en local.
Afin d’éviter une exploitation de cette entrée il convient de :
supprimer l’entrée ;
ou d’y appliquer un mot de passe MD5 ;
de vérifier les droits par défaut (644) du fichier /boot/grub/menu.lst
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
10 / 116
Chargement secondaire : GRUB (mot de passe MD5)
Pour ajouter un mot de passe (en MD5) à une entrée il faut :
1
Générer un HASH MD5 et le copier :
grub
grub >md5crypt
Password: password
Encrypted: $1$0E56A/$yf/Xq7KY9lA2eJuvZhV3cl
quit
2
Éditer le fichier de GRUB :
sudo gedit /boot/grub/menu.lst
3
Ajouter :
password --md5 HASH DU MDP après la ligne time-out
4
Ajouter la ligne :
lock après le titre (title)
5
Enregistrer les modifications et les appliquer :
sudo update-grub
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
11 / 116
Chargement secondaire : LILO
Le fichier de configuration :
/etc/lilo.conf
S’il n’existe pas pour le créer et utiliser LILO :
sudo liloconfig
ou
sudo liloconfig-color
Analyser le contenu du fichier de configuration :
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
12 / 116
Chargement secondaire : LILO
Le fichier de configuration :
/etc/lilo.conf
S’il n’existe pas pour le créer et utiliser LILO :
sudo liloconfig
ou
sudo liloconfig-color
Analyser le contenu du fichier de configuration :
more /etc/lilo.conf
gedit /etc/lilo.conf
kate /etc/lilo.conf ou kwrite /etc/lilo.conf
ATTENTION, avant toute modification d’un fichier de
configuration pensez à en faire une copie.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
12 / 116
Chargement secondaire : LILO (fichier de configuration)
boot=/dev/hda # LILO est placé dans la MBR du 1er disque.
map=/boot/map # fichier contenant les informations de démarrage des OS.
install=/boot/boot.b # deuxième partie de LILO.
default=linux # Choix de sélection, ici ”linux”.
# Temps d’attente ici : 5 secondes.
prompt
timeout=50
message=/boot/message # Message affiché avant le prompt.
# C’est un Linux, on pointe vers l’image du noyau.
image=/boot/vmlinuz
label=linux # Zone de texte du menu.
root=/dev/hda4 # Partition à charger.
append=”” # Permet de forcer la taille de mémoire utilisée pour le démarrage
(append=”mem=128m”).
other=/dev/hda1
label=windows
table=/dev/hda
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
13 / 116
Chargement secondaire : LILO (mot de passe)
Sous LILO il est aussi possible d’ajouter un mot de passe,
malheureusement il est écrit en clair dans le fichier de configuration.
Pour ajouter un mot de passe il faut :
1
Éditer le fichier de LILO :
sudo gedit /etc/lilo.conf
2
Ajouter après la ligne image, les lignes :
password=mon mot de passe
restricted
3
Enregistrer les modifications et les appliquer :
/sbin/lilo -v
4
Vérifier les droits sur le fichier (600).
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
14 / 116
Chargement secondaire
Points de sécurité importants :
1
Désactiver ou restreindre le mode ”single-user”.
2
Désactiver les entrées inutiles.
3
Utiliser de préférence GRUB qui est plus sécurisé que LILO.
4
Vérifier les droits des fichiers de configuration et des binaires.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
15 / 116
Le noyau
Definition
Le noyau/kernel est le programme qui gère
les interactions entre le matériel et les
autres programmes. C’est lui qui amorce le
système d’exploitation.
Le noyau contient :
le noyau brut (RAW KERNEL) ;
les drivers utiles ;
les services primaires : iptables,
réseau, gestion de fichier. . .
les services spécialisés : proxy, web. . .
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
16 / 116
Le noyau
Les bonnes pratique de conception d’un système spécialisé :
(Serveur proxy, firewall. . .)
recompiler le noyau avec les drivers et services utiles ;
minimiser les modules à intégrer au noyau (performance) ;
prendre en compte la sécurité dés le début (modules complémentaires,
Gresecurity ou sysctl).
La compilation d’un noyau en plusieurs étapes :
1
définition des besoins et installation minimale;
2
installation des librairies essentielles à la compilation ;
3
installation et extraction des sources du noyau ;
4
création du fichier de configuration exploité pour la compilation ;
5
compilation du paquetage ;
6
installation.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
17 / 116
1
définition des besoins et installation minimalle :
configurer un noyau pour un serveur (proxy/firewall).
2
installation des librairies essentielles à la compilation :
sudo aptitude install debconf-utils dpkg-dev debhelper build-essential
kernel-package libncurses5-dev
3
installation et extraction des sources du noyau :
sudo aptitude install linux-source
cd /usr/src
sudo tar xvjf linux-source-2.6.x.tar.bz2 linux
4
création du fichier de configuration exploité pour la compilation :
cd linux-source-2.6.x
sudo make defconfig Création d’un fichier .config minimum.
sudo make menuconfig Importation du fichier, et configuration.
5
compilation du paquetage :
sudo make && make modules install
make-kpkg --append-to-version ”-version perso” --initrd -us -uc buildpackage
Création d’un fichier .deb à copier dans /usr/src/.
6
installation : dpkg -i linux-image-2.6.x–version perso.deb
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
18 / 116
Configuration du système
Ressources matérielles au niveau du BIOS :
dmidecode
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
19 / 116
Configuration du système
Ressources matérielles au niveau du BIOS :
dmidecode
Liste des cartes additionnelles disponibles sur la machine en PCI/USB.
lspci, lsusb, lspci ∣grep -i network
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
19 / 116
Configuration du système
Ressources matérielles au niveau du BIOS :
dmidecode
Liste des cartes additionnelles disponibles sur la machine en PCI/USB.
lspci, lsusb, lspci ∣grep -i network
Liste des pilotes associés à une carte (Mandriva) :
lspcidrake
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
19 / 116
Configuration du système
Ressources matérielles au niveau du BIOS :
dmidecode
Liste des cartes additionnelles disponibles sur la machine en PCI/USB.
lspci, lsusb, lspci ∣grep -i network
Liste des pilotes associés à une carte (Mandriva) :
lspcidrake
Information du périphérique (-t la vitesse, etc.) :
hdparm -i /dev/hda, hdparm -i /dev/sda
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
19 / 116
Configuration du système
Ressources matérielles au niveau du BIOS :
dmidecode
Liste des cartes additionnelles disponibles sur la machine en PCI/USB.
lspci, lsusb, lspci ∣grep -i network
Liste des pilotes associés à une carte (Mandriva) :
lspcidrake
Information du périphérique (-t la vitesse, etc.) :
hdparm -i /dev/hda, hdparm -i /dev/sda
Liste les périphériques et leurs propriétés :
lshal
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
19 / 116
Configuration du système
Ressources matérielles au niveau du BIOS :
dmidecode
Liste des cartes additionnelles disponibles sur la machine en PCI/USB.
lspci, lsusb, lspci ∣grep -i network
Liste des pilotes associés à une carte (Mandriva) :
lspcidrake
Information du périphérique (-t la vitesse, etc.) :
hdparm -i /dev/hda, hdparm -i /dev/sda
Liste les périphériques et leurs propriétés :
lshal
Analyse de disque dur, de technologie SMART :
smartctl
Version et type du processeur :
grep -i ”model name” /proc/cpuinfo
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
19 / 116
Configuration du système
Version du noyau:
uname -arv
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
20 / 116
Configuration du système
Version du noyau:
uname -arv
État de la mémoire :
free
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
20 / 116
Configuration du système
Version du noyau:
uname -arv
État de la mémoire :
free
Liste des modules chargés en mémoire :
lsmod
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
20 / 116
Configuration du système
Version du noyau:
uname -arv
État de la mémoire :
free
Liste des modules chargés en mémoire :
lsmod
Ajout / suppression de modules du noyau :
modprobe -a [module]
modprobe -r [module]
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
20 / 116
Liste des applications et services installés
Code source à compiler : *.tar.gz, *.bz2
tar xzf *.tar.gz
.configure
make install
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
21 / 116
Liste des applications et services installés
Code source à compiler : *.tar.gz, *.bz2
tar xzf *.tar.gz
.configure
make install
Paquetage binaires /ou sources : RPM (Red Hat Package Manager)
urpmi nom du paquet
ou
yum install nom du paquet
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
21 / 116
Liste des applications et services installés
Code source à compiler : *.tar.gz, *.bz2
tar xzf *.tar.gz
.configure
make install
Paquetage binaires /ou sources : RPM (Red Hat Package Manager)
urpmi nom du paquet
ou
yum install nom du paquet
Paquetage binaires /ou sources : DEB (DEBian package)
apt-get install nom du paquet.deb
ou
dpkg -i nom du paquet.deb
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
21 / 116
Liste des applications et services installés
Code source à compiler : *.tar.gz, *.bz2
tar xzf *.tar.gz
.configure
make install
Paquetage binaires /ou sources : RPM (Red Hat Package Manager)
urpmi nom du paquet
ou
yum install nom du paquet
Paquetage binaires /ou sources : DEB (DEBian package)
apt-get install nom du paquet.deb
ou
dpkg -i nom du paquet.deb
Lister les services et leurs niveaux d’exécution :
chkconfig --list
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
21 / 116
Liste des applications et services installés
Code source à compiler : *.tar.gz, *.bz2
tar xzf *.tar.gz
.configure
make install
Paquetage binaires /ou sources : RPM (Red Hat Package Manager)
urpmi nom du paquet
ou
yum install nom du paquet
Paquetage binaires /ou sources : DEB (DEBian package)
apt-get install nom du paquet.deb
ou
dpkg -i nom du paquet.deb
Lister les services et leurs niveaux d’exécution :
chkconfig --list
Liste des services en écoute :
netstat -an
Hanteville
(CFBS)’COMMAND∣LISTEN’
Sécurité des systèmes Linux
lsof -iNicolas
-n∣egrep
24/11/2009
21 / 116
Applications
Paquetage binaires /ou sources : DEB (DEBian package)
apt-get install nom du paquet
apt-get update
apt-get remove nom du paquet
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
22 / 116
Applications
Paquetage binaires /ou sources : DEB (DEBian package)
apt-get install nom du paquet
apt-get update
apt-get remove nom du paquet
Fichier de configuration et source pour apt-get :
/etc/apt/apt.conf
/etc/apt/preferences
/etc/apt/source.list
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
22 / 116
Applications
Paquetage binaires /ou sources : DEB (DEBian package)
apt-get install nom du paquet
apt-get update
apt-get remove nom du paquet
Fichier de configuration et source pour apt-get :
/etc/apt/apt.conf
/etc/apt/preferences
/etc/apt/source.list
Suppression des compilateurs, une personne mal intentionnée pourrait
créer des exécutables nuisibles :
rpm -qa∣grep -i gcc∣xargs rpm -e
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
22 / 116
Init
Init (abréviation de initialisation) est le programme sous Unix qui lance
toutes les autres tâches. Il s’exécute comme un démon informatique son
identifiant de processus (PID) est 1.
Depuis la version 6.10 de Ubuntu c’est Upstart qui remplace sysinit.
Il est même prévu qu’à terme il remplace cron, at, anacron et inetd.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
23 / 116
Run level
Le fonctionnement des systèmes Unix/Linux est basé sur différents niveaux
d’exécution (run level) numérotés de 1 à 6.
0 : Arrêt
1-S : Maintenance (single user)
2-5 : Mode multi-utilisateurs complet avec serveur graphique si
installé.
6 : Redémarrage
Les distributions à base debian (Ubuntu, Kubuntu. . .) ne différencient pas
les niveaux d’exécution de 2 à 5. Dans certaines distributions (Redhat,
Mandriva. . .) elles représentent :
2
: Mode multi-utilisateurs sans la couche réseau.
3
: Mode multi-utilisateurs avec la couche réseau.
4
: Inutilisé.
5
: Mode multi-utilisateurs avec le serveur graphique.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
24 / 116
Script de démarrage
Les raccourcis des scripts de démarrage sont situés dans /etc/rcX.d où X
prend les valeurs 0-6 et S (single user).
Le script update-rc.d permet de désactiver un module du démarrage :
sudo update-rc.d -f mdadm remove
Attention :
La suppression de certains services peut rendre le système instable.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
25 / 116
Services
Modifier/voir l’état d’un service :
/etc/rc.d/init.d/nom
/etc/rc.d/init.d/nom
/etc/rc.d/init.d/nom
/etc/rc.d/init.d/nom
Hanteville Nicolas (CFBS)
du
du
du
du
service
service
service
service
start
stop
restart
status
Sécurité des systèmes Linux
24/11/2009
26 / 116
Services
Modifier/voir l’état d’un service :
/etc/rc.d/init.d/nom
/etc/rc.d/init.d/nom
/etc/rc.d/init.d/nom
/etc/rc.d/init.d/nom
du
du
du
du
service
service
service
service
start
stop
restart
status
Ajouter un service :
update-rc.d nom du service defaults
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
26 / 116
Services
Modifier/voir l’état d’un service :
/etc/rc.d/init.d/nom
/etc/rc.d/init.d/nom
/etc/rc.d/init.d/nom
/etc/rc.d/init.d/nom
du
du
du
du
service
service
service
service
start
stop
restart
status
Ajouter un service :
update-rc.d nom du service defaults
Supprimer un service :
update-rc.d nom du service remove
update-rc.d nom du service stop 0 1 2 3 4 5 6
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
26 / 116
Services
Modifier/voir l’état d’un service :
/etc/rc.d/init.d/nom
/etc/rc.d/init.d/nom
/etc/rc.d/init.d/nom
/etc/rc.d/init.d/nom
du
du
du
du
service
service
service
service
start
stop
restart
status
Ajouter un service :
update-rc.d nom du service defaults
Supprimer un service :
update-rc.d nom du service remove
update-rc.d nom du service stop 0 1 2 3 4 5 6
Afficher les tâches programmées :
crontab -l
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
26 / 116
Processus
Lister les processus :
ps -aux
pstree
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
27 / 116
Processus
Lister les processus :
ps -aux
pstree
Tuer un processus :
kill -9 pid processus
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
27 / 116
Répertoires
/bin Fichiers utilisés pour booter le système et le noyau.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
28 / 116
Répertoires
/bin Fichiers utilisés pour booter le système et le noyau.
/dev Tous les périphériques.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
28 / 116
Répertoires
/bin Fichiers utilisés pour booter le système et le noyau.
/dev Tous les périphériques.
/home Répertoires de connexion des utilisateurs.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
28 / 116
Répertoires
/bin Fichiers utilisés pour booter le système et le noyau.
/dev Tous les périphériques.
/home Répertoires de connexion des utilisateurs.
/root Répertoire Home de root.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
28 / 116
Répertoires
/bin Fichiers utilisés pour booter le système et le noyau.
/dev Tous les périphériques.
/home Répertoires de connexion des utilisateurs.
/root Répertoire Home de root.
/lib Bibliothèques et modules noyau.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
28 / 116
Répertoires
/bin Fichiers utilisés pour booter le système et le noyau.
/dev Tous les périphériques.
/home Répertoires de connexion des utilisateurs.
/root Répertoire Home de root.
/lib Bibliothèques et modules noyau.
/opt Dans ce répertoire (optionnel), on peut ajouter des logiciels afin qu’ils
ne s’installent pas dans les répertoires système.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
28 / 116
Répertoires
/bin Fichiers utilisés pour booter le système et le noyau.
/dev Tous les périphériques.
/home Répertoires de connexion des utilisateurs.
/root Répertoire Home de root.
/lib Bibliothèques et modules noyau.
/opt Dans ce répertoire (optionnel), on peut ajouter des logiciels afin qu’ils
ne s’installent pas dans les répertoires système.
/sys et /proc Fichiers d’information sur la configuration système (les fichiers
sont générés dynamiquement, pas de modifications possibles). Les fichiers
dans ce répertoire n’existent pas sur le disque.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
28 / 116
Répertoires
/bin Fichiers utilisés pour booter le système et le noyau.
/dev Tous les périphériques.
/home Répertoires de connexion des utilisateurs.
/root Répertoire Home de root.
/lib Bibliothèques et modules noyau.
/opt Dans ce répertoire (optionnel), on peut ajouter des logiciels afin qu’ils
ne s’installent pas dans les répertoires système.
/sys et /proc Fichiers d’information sur la configuration système (les fichiers
sont générés dynamiquement, pas de modifications possibles). Les fichiers
dans ce répertoire n’existent pas sur le disque.
/usr Programmes, données, accessibles par les utilisateurs et non nécessaires
lors du boot.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
28 / 116
Répertoires
/bin Fichiers utilisés pour booter le système et le noyau.
/dev Tous les périphériques.
/home Répertoires de connexion des utilisateurs.
/root Répertoire Home de root.
/lib Bibliothèques et modules noyau.
/opt Dans ce répertoire (optionnel), on peut ajouter des logiciels afin qu’ils
ne s’installent pas dans les répertoires système.
/sys et /proc Fichiers d’information sur la configuration système (les fichiers
sont générés dynamiquement, pas de modifications possibles). Les fichiers
dans ce répertoire n’existent pas sur le disque.
/usr Programmes, données, accessibles par les utilisateurs et non nécessaires
lors du boot.
/boot Fichiers utilisés pour booter le noyau
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
28 / 116
Répertoires
/etc Contient les fichiers de configuration système.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
29 / 116
Répertoires
/etc Contient les fichiers de configuration système.
/initrd Répertoire temporaire de chargement
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
29 / 116
Répertoires
/etc Contient les fichiers de configuration système.
/initrd Répertoire temporaire de chargement
/mnt et /media Répertoires contenant les systèmes de fichiers montés.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
29 / 116
Répertoires
/etc Contient les fichiers de configuration système.
/initrd Répertoire temporaire de chargement
/mnt et /media Répertoires contenant les systèmes de fichiers montés.
/sbin Programmes nécessaires au boot, disponibles au root uniquement
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
29 / 116
Répertoires
/etc Contient les fichiers de configuration système.
/initrd Répertoire temporaire de chargement
/mnt et /media Répertoires contenant les systèmes de fichiers montés.
/sbin Programmes nécessaires au boot, disponibles au root uniquement
/tmp Répertoire temporaire.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
29 / 116
Répertoires
/etc Contient les fichiers de configuration système.
/initrd Répertoire temporaire de chargement
/mnt et /media Répertoires contenant les systèmes de fichiers montés.
/sbin Programmes nécessaires au boot, disponibles au root uniquement
/tmp Répertoire temporaire.
/var Fichiers de log, spool d’impression, de mail, etc.
En général, fichiers qui changent tout le temps.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
29 / 116
Répertoires
/etc Contient les fichiers de configuration système.
/initrd Répertoire temporaire de chargement
/mnt et /media Répertoires contenant les systèmes de fichiers montés.
/sbin Programmes nécessaires au boot, disponibles au root uniquement
/tmp Répertoire temporaire.
/var Fichiers de log, spool d’impression, de mail, etc.
En général, fichiers qui changent tout le temps.
/lost+found Fichier endommagés après un crash du système.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
29 / 116
Partitions
Il est très important de créer des partitions dédiées pour les points de
montage importants, afin d’éviter les débordements :
/
/tmp/ (les fichiers temporaires)
/var/ (les journaux d’audit)
/home/ (les profils utilisateurs)
Un bon cloisonnement du système permet sa pérennité.
Lister les partitions :
fdisk -l
sfdisk -l
cat /proc/partitions
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
30 / 116
Montage de partition
Pour monter une partition il faut utiliser les commandes mount et umount
avec les droits appropriés. Le fichier /etc/fstab contient les systèmes
montés.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
31 / 116
Montage de partition
Pour monter une partition il faut utiliser les commandes mount et umount
avec les droits appropriés. Le fichier /etc/fstab contient les systèmes
montés.
Identifier le point de montage à utiliser :
sfdisk -l ou fdisk -l ou dmesg ∣tail -15
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
31 / 116
Montage de partition
Pour monter une partition il faut utiliser les commandes mount et umount
avec les droits appropriés. Le fichier /etc/fstab contient les systèmes
montés.
Identifier le point de montage à utiliser :
sfdisk -l ou fdisk -l ou dmesg ∣tail -15
Monter une clé USB :
mount -t vfat /dev/sda1 /mnt/Cle FAT
mount -t ntfs-3g /dev/sda1 /mnt/Cle NTFS
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
31 / 116
Montage de partition
Pour monter une partition il faut utiliser les commandes mount et umount
avec les droits appropriés. Le fichier /etc/fstab contient les systèmes
montés.
Identifier le point de montage à utiliser :
sfdisk -l ou fdisk -l ou dmesg ∣tail -15
Monter une clé USB :
mount -t vfat /dev/sda1 /mnt/Cle FAT
mount -t ntfs-3g /dev/sda1 /mnt/Cle NTFS
Monter une image ISO :
mount -o loop -t iso9660 fic.iso Rep Montage
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
31 / 116
Montage de partition
Pour monter une partition il faut utiliser les commandes mount et umount
avec les droits appropriés. Le fichier /etc/fstab contient les systèmes
montés.
Identifier le point de montage à utiliser :
sfdisk -l ou fdisk -l ou dmesg ∣tail -15
Monter une clé USB :
mount -t vfat /dev/sda1 /mnt/Cle FAT
mount -t ntfs-3g /dev/sda1 /mnt/Cle NTFS
Monter une image ISO :
mount -o loop -t iso9660 fic.iso Rep Montage
Synchroniser et démonter un support :
sync
umount /mnt/Ma Cle Usb
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
31 / 116
Quotas
Il est possible d’implémenter des quotas via le paquetage quota :
en modifiant le fichier /etc/fstab
LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2
usrquota : permet de définir un quota par utilisateur.
grpquota : permet de définir un quota par groupe.
La documentation est disponible sur le site de redhat.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
32 / 116
Identification & authentification
Definition
identification = login
authentification = password
Le seul contrôle d’accès effectué en local sur une machine est le mot de
passe !!!
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
33 / 116
Identification & authentification
Definition
identification = login
authentification = password
Le seul contrôle d’accès effectué en local sur une machine est le mot de
passe !!!
Donc :
utilisez un mot de passe unique et complexe (chiffres, minuscules,
majuscules et caractères spéciaux) ;
le mots de passe ne doit pas exister (exemple : dans un dictionnaire) ;
changer régulièrement de mots de passe ;
ne jamais le communiquer à un tiers !
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
33 / 116
Identification & authentification
Le mot de passe est stoqué chiffré dans le fichier /etc/passwd par défaut.
Les droits pour ce fichier doivent toujours être (444).
Dans le fichier /etc/shadow les mots de passe sont stoqués sous forme de
hash MD5. Le fichier n’est lui lisible que par root (400).
Activer le chiffrement des mots de passe : (fichier /etc/login.defs)
Par défaut dans les nouvelles distributions elle est activée (pour la
désactiver : MD5 CRYPT ENAB no). Pour les anciennes distributions il faut
activer la ligne (MD5 CRYPT ENABLE yes).
Ou en utilisant les commandes :
/usr/sbin/pwconv
/usr/sbin/pwunconv
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
34 / 116
Identification & authentification
Le chiffrement utilisé par défaut :
DES a : /etc/passwd
MD5 b : /etc/shadow
SHA-1 c
SHA-2 d : /etc/pam.d/common-password
password [success=1 default=ignore] pam unix.so obscure sha512
a. DES (Data Encryption Standard) : transformation de bloc de 64 bits avec une clé
secrète de 56 bits.
b. MD5 (Message Digest de Ron Rivest) : hash de 128 bits avec un traitement par
bloc de 512 bits, basé sur MD4.
c. SHA-1 (Sécure Hash Algorithme 1) : hash de 160 bits avec un traitement par bloc
de 512 bits, basé sur MD4.
d. SHA-2 (Sécure Hash Algorithme 2) : hashs de 256/384/512 bits avec un traitement
par bloc de 512 bits, basé sur MD4 et se présente comme la future référence.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
35 / 116
Identification & authentification
Reconnaı̂tre les différents algorithmes :
Format d’un hash : $ID$SALT$PWD
1
ID : méthode de chiffrement utilisée ;
2
SALT (grain de sel) : permet de diminuer la facilité de brute force sur
le mot de passe ;
3
PWD : Hash/mot de passe chiffré.
1 : MD5 (Linux, BSD)
2a : Blowfish (OpenBSD)
md5 : Sun MD5
5 : SHA-256
6 : SHA-512
Note : le DES ne respecte pas ce schéma, le mot de passe chiffré est
directement écrit.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
36 / 116
Identification & authentification : /etc/passwd
1
Nom de compte (8 caractères alpha-numériques, minuscules)
2
Mot de passe (chiffré en DES, taille mdp min 6 et max 8
*=ne peut pas ouvrir une session, !!=pas encore utilisé, ø=pas de
mdp)
3
UID (User ID)
4
GID (Groupe ID)
5
Commentaire (peut être ajouté avec la commande chfn)
6
Répertoire de connexion
7
Shell
Pour éditer ce fichier de manière sécurisée il faut utiliser : /bin/vipw
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
37 / 116
Identification & authentification : /etc/shadow
1
Nom de compte (8 caractères alpha-numériques, minuscules)
2
Hash Mot de passe (MD5 + sel, taille mdp 256 max,
*=ne peut pas ouvrir une session, !!=désactivé, ø=pas de mdp)
3
Âge du mot de passe (en jours depuis le 1er janvier 1970)
4
Âge minimum du mot de passe (par défaut 0)
5
Âge maximum du mot de passe (par défaut 99999)
6
Nombre de jours avant avertissement de changement de mot
de passe
7
Nombre de jours avant désactivation du compte après
expiration du mot de passe
8
Nombre de jours depuis activation du compte
9
Champ réservé
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
38 / 116
Identification & authentification : groupes
/etc/group
1
Nom du groupe
2
Mot de passe pour s’ajouter au compte. (x indique l’utilisation du
fichier gshadow)
3
GID (Groupe ID)
4
utilisateurs du groupe (membre 1, membre 2, etc.)
Pour éditer ce fichier de manière sécurisée il faut utiliser : /bin/vigr
/etc/gshadow
Accessible qu’au compte root, activé avec le fichier shadow.
1
Nom du groupe
2
Mot de passe pour s’ajouter au compte.
3
GID (Groupe ID)
4
utilisateurs du groupe (membre 1, membre 2, etc.)
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
39 / 116
Identification & authentification : /etc/login.defs
1
CHFN AUTH : authentification obligatoire pour modifier la description de
compte.
2
CHFN RESTRICT : configuration pour modifier la description de compte.
3
PASS MAX DAYS et PASS MIN DAYS : âge minimum/maximum des
mots de passe, en jours.
4
PASS MIN LEN : taille minimum des mots de passe.
5
PASS WARN AGE : message avant expiration du mot de passe, en jours.
6
UID MIN et UID MAX : valeur minimum et maximum des Users ID.
7
GID MIN et GID MAX : valeur minimum et maximum des Groupes ID.
8
CREATE HOME : création du répertoire home lors de la création d’un
utilisateur.
9
UMASK : initialise l’UMASK de l’utilisateur (par défaut 077).
10
USERDEL CMD : exécute la commande lors de la suppression d’un
utilisateur.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
40 / 116
Identification & authentification : su & sudo
La commande su Nom utilisateur permet de changer d’utilisateur, sudo
permet d’exécuter une commande avec des privilèges particuliers.
Le fichier de configuration de sudo est /etc/sudoers.
Pour éditer ce fichier de manière sécurisée il faut utiliser : /bin/visudo
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
41 / 116
Identification & authentification : su & sudo
La commande su Nom utilisateur permet de changer d’utilisateur, sudo
permet d’exécuter une commande avec des privilèges particuliers.
Le fichier de configuration de sudo est /etc/sudoers.
Pour éditer ce fichier de manière sécurisée il faut utiliser : /bin/visudo
Exemple de commandes :
Exécuter une commande avec les droits d’un autre utilisateur/root :
sudo -u Nom utilisateur ls
sudo ls
Exécuter une application graphique (ici sous gnom) :
gksudo wireshark
Lister les commandes autorisées :
sudo -l
Passage en mode permanent (équivalent à un su) :
sudo -i
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
41 / 116
Identification & authentification : désactiver le compte root
Pour désactiver le compte root il suffit d’éditer le fichier /etc/passwd avec
la commande vipw et de remplacer le shell du compte root :
Remplacer : /bin/bash
par : /sbin/nologin
Attention : les droits doivent être convenablement appliqués !!!
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
42 / 116
Identification & authentification : commandes utiles
Ajouter un utilisateur :
adduser Nom utilisateur
ou
adduser Nom utilisateur -g Nom Groupe
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
43 / 116
Identification & authentification : commandes utiles
Ajouter un utilisateur :
adduser Nom utilisateur
ou
adduser Nom utilisateur -g Nom Groupe
Supprimer un utilisateur :
userdel Nom utilisateur
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
43 / 116
Identification & authentification : commandes utiles
Ajouter un utilisateur :
adduser Nom utilisateur
ou
adduser Nom utilisateur -g Nom Groupe
Supprimer un utilisateur :
userdel Nom utilisateur
Modifier le mot de passe d’un utilisateur :
passwd Nom utilisateur
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
43 / 116
Identification & authentification : commandes utiles
Ajouter un utilisateur :
adduser Nom utilisateur
ou
adduser Nom utilisateur -g Nom Groupe
Supprimer un utilisateur :
userdel Nom utilisateur
Modifier le mot de passe d’un utilisateur :
passwd Nom utilisateur
Créer un groupe :
groupadd Nom groupe
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
43 / 116
Identification & authentification : commandes utiles
Ajouter un utilisateur :
adduser Nom utilisateur
ou
adduser Nom utilisateur -g Nom Groupe
Supprimer un utilisateur :
userdel Nom utilisateur
Modifier le mot de passe d’un utilisateur :
passwd Nom utilisateur
Créer un groupe :
groupadd Nom groupe
Supprimer un groupe :
groupdel Nom groupe
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
43 / 116
Pluggable Authentication Modules
PAM est un moyen d’authentification modulable et centralisé. Il permet de
centraliser la politique des comptes en un seul point, d’augmenter les
capacités en termes de politique de sécurité et d’utiliser des méthodes
d’authentification différentes (exemple : LDAP).
Les fichiers importants :
/etc/pam.conf est le fichier de configuration par défaut. Sous certaines
distributions Mandriva, Redhat ou Debian il existe un fichier de
configuration par service situé dans /etc/pam.d/
/etc/pam.d/system-auth ou /etc/pam.d/common-auth est le fichier
principal.
/lib/security/ ou /usr/lib/ est le répertoire contenant les modules pour
PAM (pam *.so).
/etc/security/ est le répertoire contenant les fichiers de configuration
des modules pour PAM (access.conf, group.conf, pam env.conf,
namespace.conf, limits.conf. . .).
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
44 / 116
Pluggable Authentication Modules
Quelques modules :
pam cracklib : Politique d’exploitation des mots de passe (utilisation
unique, taille, ne fait pas partie d’un dictionnaire).
pam unix : Politique d’authentification par défaut.
pam time : autorise un accès par heure.
pam limits : Permet de limiter les ressources mises à la disposition
d’un utilisateur(/etc/security/limits.conf).
pam nologin : permet de désactiver les comptes (/etc/nologin).
pam securrety : Vérifie que le compte root a la possibilité de se
connecter sur cette console (/etc/securrety).
pam warm : journalisation des informations à syslog.
pam ldap : permet d’utiliser une base LDAP.
...
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
45 / 116
Pluggable Authentication Modules
Exemple de fichier /etc/pam.d/login (sous Ubuntu) :
# Interdit à root de se connecter sur la console si configuré dans /etc/securrety
auth requisite pam securetty.so
# Vérifie la présence du fichier /etc/nologin, si c’est le cas, seul root peut se
connecter.
auth requisite pam nologin.so
# Utilisation de modules
@include common-auth
@include common-account
@include common-session
@include common-password
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
46 / 116
Pluggable Authentication Modules
1
Indique le type de module :
▶
▶
▶
▶
▶
2
Drapeau de contrôle :
▶
▶
▶
▶
3
auth : authentifie l’utilisateur ;
account : restriction de compte (expiration) ;
password : gestion des mots de passe ;
session : ouverture/fermeture de session ;
@include : dépendance d’un module.
required : doit réussir, mais on continue à tester les autres modules ;
requisite : doit réussir, on ne continue pas à lire les autres modules et
transmet un message d’échec ;
sufficient : si le test est correct, on obtient immédiatement une
acceptation ;
optimal : est ignoré, aucun impact sur la réussite ou l’échec.
Indique l’emplacement et nom du module.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
47 / 116
Pluggable Authentication Modules
Possibilités avec PAM :
Ajouter une machine à un domaine (linux/windows) ;
Mettre des restrictions d’horaires ;
Forcer des règles de complexité pour les mots de passe ;
Modifier les moyens de chiffrement ;
...
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
48 / 116
Pluggable Authentication Modules
Mise en place d’un mot de passe en SHA-512
Dans le fichier /etc/pam.d/common-password
password [success=1 default=ignore] pam unix.so obscure sha512
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
49 / 116
Authentification forte
L’authentification forte (TWO FACTORS AUTHENTICATION) consiste à
utiliser au moins deux méthodes parmi les quatre méthodes primaires :
je connais, je possède, je suis et je sais faire.
Les protocoles les plus connus
OTP (One Time Password) : mot de passe à usage unique.
Kerberos : authentification par secret partagé.
SRP (Secure Remote Password Protocol) : protection du mot de
passe et de la clé de session en cas de compromission d’un des deux.
Moyen de centralisation de l’authentification
RADIUS (Remote Authentication Dial-In User Service) est un protocole
client-serveur permettant de centraliser des données d’authentification.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
50 / 116
Cassage de mots de passe
Les mots de passe sont facilement cassables sous Unix/Linux/Windows si
le mot de passe ou le niveau de chiffrement est faible.
Il existe un grand nombre de logiciels de cassage de mots de passe :
John the ripper, L0phtcrack, Tables rainbow. . .
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
51 / 116
Cassage de mots de passe
Nous allons utiliser ici John the ripper qui est un logiciel Open Source
disponible sur un grand nombre de systèmes et permettant d’attaquer un
grand nombre d’algorithmes.
Site Web : www.openwall.com/john
Definition
John the ripper lancé sans option, fonctionne par défaut en utilisant trois
modes :
1
single (simple) : règles de transformations définies dans john.conf
(dure quelques secondes) ;
2
wordlist (dictionnaire) : par défaut il utilise le dictionnaire intégré ou
celui du système ;
3
incremental (incrémental, brute force) : génération pseudo aléatoire de
mots de passe (peut être très long).
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
52 / 116
Cassage de mots de passe
1
Créer un utilisateur avec un mot de passe simple, puis faire une copie
du fichier shadow et modifier les droits sur le fichier.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
53 / 116
Cassage de mots de passe
1
Créer un utilisateur avec un mot de passe simple, puis faire une copie
du fichier shadow et modifier les droits sur le fichier.
2
Installation : apt-get ou téléchargement et décompression :
tar xvzf john-1.6.tar.gz
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
53 / 116
Cassage de mots de passe
1
Créer un utilisateur avec un mot de passe simple, puis faire une copie
du fichier shadow et modifier les droits sur le fichier.
2
Installation : apt-get ou téléchargement et décompression :
tar xvzf john-1.6.tar.gz
3
Compiler les sources :
make linux-x86-any-elf
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
53 / 116
Cassage de mots de passe
1
Créer un utilisateur avec un mot de passe simple, puis faire une copie
du fichier shadow et modifier les droits sur le fichier.
2
Installation : apt-get ou téléchargement et décompression :
tar xvzf john-1.6.tar.gz
3
Compiler les sources :
make linux-x86-any-elf
4
Lancer le test :
./john
./john
./john
./john
5
copie shadow ou
-single copie shadow ou
-wordfile:dico perso copie shadow ou
-stdin tapez le mot de passe copie shadow
Afficher les résultats :
./john -show copie shadow
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
53 / 116
Gestion des droits
La gestion des droits s’effectue sous forme d’arborescence.
Plusieurs types de fichiers : fichier, dossier, lien. . .
Un fichier caché est un fichier dont le nom commence par un ”.”.
Lister le contenu de tous les fichiers d’un répertoire :
ls -al
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
54 / 116
Gestion des droits : inode
Pour chaque fichier on considère un ensemble d’informations contenues
dans l’inode (I-LIST)
(contraction de index et node, en français : nœud d’index).
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
55 / 116
Gestion des droits : inode
Pour chaque fichier on considère un ensemble d’informations contenues
dans l’inode (I-LIST)
(contraction de index et node, en français : nœud d’index).
Contenu de l’inode :
le type de fichier
les droits d’accès (lecture/écriture/exécution, propriétaire, groupe)
le nombre de liens
l’UID, le GID
la taille du fichier
une table de blocs de données ou de redirection (pour les liens)
les dates de création / modification / derniers accès
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
55 / 116
Gestion des droits
Le contrôle d’accès sous UNIX/LINUX fonctionne par objets manipulés
(fichiers et répertoires), ils sont exploités en fonction de 3 critères :
le propriétaire, le groupe du propriétaire, et les autres.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
56 / 116
Gestion des droits
Le contrôle d’accès sous UNIX/LINUX fonctionne par objets manipulés
(fichiers et répertoires), ils sont exploités en fonction de 3 critères :
le propriétaire, le groupe du propriétaire, et les autres.
Par défaut le créateur du fichier est son propriétaire, il peut modifier ces
accès par la suite (on appelle cela un système discrétionnaire).
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
56 / 116
Gestion des droits : lecture (r)
Si c’est un fichier on peut le lire ou le copier (cat, vi, cp)
Si c’est un répertoire on peut le consulter (ls),
pour accéder à la suite de l’arborescence
(ls -R Chemin pour le mode récursif)
il faut avoir le droit d’exécution en plus.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
57 / 116
Gestion des droits : écriture (w)
Si c’est un fichier on peut le modifier ou l’effacer (vi, rm)
Si c’est un répertoire on peut créer ou supprimer une entrée
(mkdir, rmdir, rm) et modifier les droits d’entrée.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
58 / 116
Gestion des droits : exécution (x)
Si c’est un fichier il peut être exécuté.
Si c’est un répertoire il a le droit de passage (cd, ls -R).
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
59 / 116
Gestion des droits : modification des droits
Modifier le propriétaire d’un fichier :
chown utilisateur fichier
Modifier le groupe propriétaire d’un fichier :
chgrp groupe fichier
Modifier les droits d’un fichier :
chmod 777 fichier
on peut aussi le faire avec +r, -w. . .
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
60 / 116
Gestion des droits : sticky bit
Le sticky bit (bit T : bit de collage) est un droit complémentaire,
positionné sur un fichier il permet de garder le fichier en mémoire, si par
contre il est positionné sur un répertoire, les fichiers créés dans ce
répertoire ne pourront être supprimés que par le propriétaire du fichier.
Il est positionné par exemple sur le répertoire /tmp/
on peut le positionner avec la commande: chmod +t /tmp
Attention son utilisation excessive peut ralentir lourdement le système !!!
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
61 / 116
Gestion des droits : liens symboliques
Création d’un lien symbolique :
ln -s fichier pointe fichier raccourcis
Supprimer un lien symbolique :
unlink fichier raccourcis
Attention un lien symbolique passe outre une arborescence sécurisée
et permet de modifier les droits du fichier distant, de le supprimer. . .
Suivant les systèmes (sous UNIX par exemple) d’autres systèmes de
droits existent avec des liaisons à des comptes systèmes. . .
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
62 / 116
Gestion des droits : attributs
Les commandes chattr et lsattr permettent de positionner et d’afficher les
attributs complémentaires.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
63 / 116
Gestion des droits : attributs
Les commandes chattr et lsattr permettent de positionner et d’afficher les
attributs complémentaires.
a : on peut seulement ajouter des données au fichier.
c : compressé automatiquement par le noyau.
d : désactive la sauvegarde dans une partition montée avec l’option de
sauvegarde automatique dump (ext2/ext3).
i : ne peut être modifié (ni supprimé, ni renommé).
j : active la journalisation de modification (ext3).
s : remplacement de tous les blocs du fichier lors de la suppression par des 0.
u : sauvegarde du fichier en cas de suppression.
chattr +i monfichier : ajoute l’attribut
chattr -i monfichier : supprime l’attribut
chattr =i monfichier : ne laisse que l’attribut
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
63 / 116
Gestion des droits : SUID & SGID
Pour exécuter certaines commandes ou modifier certains fichiers
(/etc/passwd avec la commande passwd) il faut avoir les droits propriétaires.
Avec la commande chmod on peut positionner ce droit avec la valeur 4000
pour le SUID et 2000 pour le SGID, ils sont visibles avec la commande :
ls -l avec un s positionné à la place du x.
(ls -l /usr/bin/passwd)
find / ∖( -perm -4000 -o -perm -2000 ∖) -exec ls -l {} ∖;
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
64 / 116
Gestion des droits : umask
Lors de l’installation du système, un masque de permission est appliqué
aux fichiers, ce masque peut être modifié avec la commande :
umask -S
Droits par défaut :
Masque par défaut pour un fichier : rwx rwx r-x
Masque par défaut pour un répertoire : rw- rw- r--
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
65 / 116
Gestion des droits : umask
Les droits sont trop permissifs par défaut, il faut donc les changer.
(droits octals par défaut, 022, 027, calcul 777-022 = 755)
Attention la commande gère en fonctionnement octal, mais permet
d’utiliser le mode posix comme avec chmod.
Binaire
000
001
010
011
100
101
110
111
Hanteville Nicolas (CFBS)
Droits
----x
-w-wx
r-r-x
rwrwx
Octal
0
1
2
3
4
5
6
7
Droits Umask
7
6
5
4
3
2
1
0
Sécurité des systèmes Linux
24/11/2009
66 / 116
Gestion des droits : ACL
C’est un mécanisme de contrôle supplémentaire de système discrétionnaire
natif (DAC : Discretionary Access Control),
il peut être implémenté avec des modules supplémentaires.
Ce système n’est pas recommandé, même s’il permet de définir des accès
plus sélectifs aux fichiers (ajout de droits de personnes complémentaires. . .)
il n’est à installer que si l’utilisation du système l’exige.
Sous HP-UX : chacl ou lsacl
Sous Linux : setacl et getacl
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
67 / 116
Compression & décompression de fichiers
Sous Linux il est possible de compresser en tar, gz, bz2 qui sont des
formats de compression du type ZIP.
Les fichiers RPM (Redhat Package Manager) et DEB (DEBian) sont des
répertoires compressés.
Décompression de fichiers :
Décompression de tar.gz: tar xfvz fichier.tar.gz
Décompression de tar.bz2 : bzip2 -d fichier.tar.bz2
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
68 / 116
Contrôle d’intégrité : présentation
Lors de piratage il est important de déterminer les modifications effectuées
sur le système (qui, quand, où et quoi?)
L’objectif d’un contrôle d’intégrité :
Détecter les intrusions : pourquoi la commande bash a-t-elle changé
de taille ?
Corriger une configuration : depuis hier ce logiciel ne se lance plus,
qu’est-ce qui a changé ?
Faire des rapports d’installation : pour savoir ce qu’un logiciel installe
exactement.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
69 / 116
Contrôle d’intégrité : fonctionnement
Quoi contrôler ?
la taille ;
les droits ;
les propriétaires et groupes ;
la date de modification et d’accès ;
le checksum (md5, sha1) : à calculer pour détecter des modifications.
Le fonctionnement :
Le logiciel travaille par comparaison avec un état précédent. Il stocke cet
état dans une base de données.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
70 / 116
Contrôle d’intégrité : les limites
La configuration initiale :
Des fichiers sont modifiés en permanence, pour ne pas être submergé de
fausses alarmes, on ne peut pas surveiller tous les fichiers, ni tous les
paramètres. Il y a donc un travail important de configuration initiale.
Après la configuration, il faut fabriquer le premier ”état”, il doit être sûr.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
71 / 116
Contrôle d’intégrité : les mises à jour
1
Attention à ne prendre que des correctifs sûrs : si possible signés par
gpg, et contrôler l’intégrité du correctif.
2
Toute mise à jour va générer de gros rapports, qu’il va falloir
contrôler pour voir si ça ne masque pas une intrusion.
3
Il faut mettre à jour la base de données du contrôleur d’intégrité.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
72 / 116
Contrôle d’intégrité : intrusion
Lors d’une intrusion, l’attaquant va chercher à camoufler ses traces :
journaux, modification de fichiers, programmes, noyau, base de données du
contrôleur d’intégrité.
Solutions :
chiffrement de la base de données de référence ;
base de données excentrée sur un serveur externe et en lecture seule
(montage de partition, CD. . .) ;
contrôle aussi de l’application de contrôle d’intégrité ;
logiciel excentré (support externe, partage, CDROM. . .) ;
en cas de modification du noyau, on peut aussi exécuter l’application
sur un support externe propre (Live CD).
La solution serait d’utiliser à la fois un test local (cron table) ainsi qu’un
test externe par un live CD ou une autre machine.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
73 / 116
Contrôle d’intégrité : outils
Des outils :
Tripwire : permet d’enregistrer les modifications apportées aux
fichiers du système (empreinte CRC32, MD5. . .)
AFICK (Another File Integrity Checker) : comme Tripwire mais
administrable à distance via webmin.
MSEC (Mandrake/Mandriva SECurity tool) : intégré sous Mandriva
il permet d’établir des niveaux de sécurité.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
74 / 116
Contrôle d’intégrité : AFICK
Logiciel sous licence GPL (libre), multi-plateformes, syntaxe équivalente à
tripwire, codé en perl/tk, centralisation des rapports pour un parc
informatique.
Présentation :
afick : est l’outil de base, en mode ligne de commande (script perl) ;
afick-gui (optionnel) : est une interface graphique (en perl/Tk) ;
afick-webmin : est un module pour webmin qui permet une
administration distante via un navigateur Internet ;
rtafick (en test) : un IDS (détection temps réel), basé sur couplage
d’afick et de fam (file alteration monitor), une version qui tournera
comme un daemon (unix) ou comme un service windows.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
75 / 116
Contrôle d’intégrité : AFICK
Paquets debian nécessaires :
perl, perl-base, perl-module, perl-Tk;
libdigest-md5-perl, libdigest-sha1-perl.
Initialisation :
Initialiser la base de données :
afick.pl -c configfile -i
par l”interface graphique : menu Action/init
Comparaison :
afick.pl -c configfile -k
avec mise à jour de la base :
afick.pl -c configfile -u
par l”interface graphique : menu Action/kompare ou Action/update
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
76 / 116
Shells et environnements restreints
Definition
Un shell restreint (restricted shell) est un shell système, modifiable de sorte
à restreindre les possibilités des utilisateurs.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
77 / 116
Shells et environnements restreints
Les différents shells connus :
sh bourne SHell
csh C SHell
ksh Korn SHell
bash Bourne Again SHell
tcsh TENEX C SHell
zsh Zhong Shao SHell
rc Run Commands
Changer de shell :
/bin/ksh
/sbin/zsh
Afficher le shell courant :
echo $0
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
78 / 116
Shells et environnements restreints
Les versions restreintes de shell sont nommées avec un ’r’ devant le nom.
Exemples :
/bin/rbash
/bin/rsh
...
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
79 / 116
Shells et environnements restreints
Les versions restreintes de shell sont nommées avec un ’r’ devant le nom.
Exemples :
/bin/rbash
/bin/rsh
...
S’ils n’existent pas, il est possible de les appeler avec les paramètres -r ou
-restricted.
Exemples :
/bin/bash -r
/bin/sh -restricted
...
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
79 / 116
Shells et environnements restreints
Les restrictions les plus courantes :
Le répertoire courant est verrouillé (commande cd, indisponible).
La modification des variables d’environnement est désactivée (SHELL,
PATH, ENV. . .).
Interdire l’exécution de commande avec le chemin complet (/bin/cd).
Interdire la redirection de commandes (<<, >>).
Désactiver des commandes spécifiques (exec).
L’utilisateur ne peut exécuter que des commandes contenues dans le
shell ou dans le PATH.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
80 / 116
Shells et environnements restreints
Fonctionnement standard :
1
l’utilisateur se connecte (identification/authentification) ;
2
transfert vers son répertoire personnel (/home/nom utilisateur/) ;
3
lancement du shell associé au compte ;
lecture par le shell (par défaut) des fichiers de configuration :
4
1
2
3
/etc/profile
/etc/bash.bashrc
/home/nom utilisateur/.profile et .bashrc (enregistrement du PATH).
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
81 / 116
Shells et environnements restreints
Fonctionnement dans un environnement restreint :
1
l’utilisateur se connecte (identification/authentification) ;
2
transfert vers son répertoire personnel (/home/nom utilisateur/) ;
3
lancement du shell associé au compte (shell restreint ici);
lecture par le shell (par défaut) des fichiers de configuration :
4
1
2
/etc/profile (une condition désactive le fonctionnement standard)
/home/nom utilisateur/.bash profile
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
82 / 116
Shells et environnements restreints : mise en place
1
Si le fichier /bin/rbash n’existe pas on le crée :
ln -s /bin/bash -r /bin/rbash
Il faut que la ligne /bin/rbash soit présente dans le fichier /etc/shells
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
83 / 116
Shells et environnements restreints : mise en place
1
Si le fichier /bin/rbash n’existe pas on le crée :
ln -s /bin/bash -r /bin/rbash
Il faut que la ligne /bin/rbash soit présente dans le fichier /etc/shells
2
Il faut maintenant attribuer le shell à un utilisateur en modifiant le
fichier : /etc/passwd avec la commande vipw ou en exécutant la
commande :
usermod -s /bin/rbash nom utilisateur
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
83 / 116
Shells et environnements restreints : mise en place
1
Si le fichier /bin/rbash n’existe pas on le crée :
ln -s /bin/bash -r /bin/rbash
Il faut que la ligne /bin/rbash soit présente dans le fichier /etc/shells
2
Il faut maintenant attribuer le shell à un utilisateur en modifiant le
fichier : /etc/passwd avec la commande vipw ou en exécutant la
commande :
usermod -s /bin/rbash nom utilisateur
3
Appliquer des droits restrictifs aux répertoires et fichiers de
l’utilisateur :
▶
▶
/home/home utilisateur : 511, propriétaire : root
(à créer) /home/home utilisateur/.bash profile : 444, propriétaire : root
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
83 / 116
Shells et environnements restreints : mise en place
1
Si le fichier /bin/rbash n’existe pas on le crée :
ln -s /bin/bash -r /bin/rbash
Il faut que la ligne /bin/rbash soit présente dans le fichier /etc/shells
2
Il faut maintenant attribuer le shell à un utilisateur en modifiant le
fichier : /etc/passwd avec la commande vipw ou en exécutant la
commande :
usermod -s /bin/rbash nom utilisateur
3
Appliquer des droits restrictifs aux répertoires et fichiers de
l’utilisateur :
▶
▶
4
/home/home utilisateur : 511, propriétaire : root
(à créer) /home/home utilisateur/.bash profile : 444, propriétaire : root
Pour chacune des applications que l’on veut rendre disponible, on crée
un lien symbolique. Par exemple dans : /usr/local/rbin/
ln -s /usr/bin/passwd /usr/local/rbin/passwd
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
83 / 116
Shells et environnements restreints : mise en place
5
Pour que le fichier /etc/profile n’influence pas le rbash on le modifie :
if [”$0” = ”-bash”]; then
#contenu du fichier
fi
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
84 / 116
Shells et environnements restreints : mise en place
5
Pour que le fichier /etc/profile n’influence pas le rbash on le modifie :
if [”$0” = ”-bash”]; then
#contenu du fichier
fi
6
Le fichier /home/home utilisateur/.bash profile doit contenir :
export PATH=/usr/local/rbin
on peut aussi préciser les commandes interdites il suffit d’ajouter à la
fin du fichier :
enable -n pwd unset
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
84 / 116
Shells et environnements restreints : shell escape
Definition
Toutes les applications ne permettent pas l’utilisation de shell restreint,
mais possèdent parfois une fonction intégré qui permet d’appeler le shell
(shell escape).
Cette fonction est en général appelée par le caractère !.
Avec ftp, si vous voulez consulter la liste des fichiers dans le répertoire
courant il suffit d’utiliser la commande :
! ls -al
Exemple application utilisant le shell escape :
telnet, ftp, mail ;
less, more, vi. . .
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
85 / 116
Configuration réseau
Lors de la mise en place d’un réseau, il faut étudier l’architecture en
fonction de nos besoins, mettre en place les éléments sécurisés qui
conviennent (firewall, proxy, sondes IDS/IPS).
Prendre en compte la sécurisation du réseau pour chaque couche
(modem, PABX, routeur, switch, réseau, applications, utilisateur et
sensibilisation).
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
86 / 116
Configuration réseau : commandes
ifconfig -a
ou more /etc/sysconfig/network ou more /etc/network/interfaces
route (Attention ARP poisoning, DOS, Man In The Middle)
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
87 / 116
Configuration réseau : commandes
ifconfig eth0 IP netmask 255.255.255.0
ifconfig eth0 hw ether adresse MAC
ifconfig eth0 down / up
pour d’autres options voir ifconfig -help
via le client dhcp (si un serveur existe) dhclient
On peut aussi modifier les fichiers de configuration :
Réseau : /etc/sysconfig/network
Liste des serveurs DNS : /etc/resolv.conf
Résolution de nom statique : /etc/hosts
Ordre de résolution de nom : /etc/host.conf
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
88 / 116
Renifleurs / Analyseurs réseau
Definition
Ils permettent d’afficher les informations lues par la carte réseau. Les plus
connus sont Wireshark (ex Ethereal), TCPdump. . .
1
Que peut-on récupérer avec un sniffer?
2
Qu’est-ce que le mode promiscuous?
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
89 / 116
Renifleurs / Analyseurs réseau
Definition
Ils permettent d’afficher les informations lues par la carte réseau. Les plus
connus sont Wireshark (ex Ethereal), TCPdump. . .
1
Que peut-on récupérer avec un sniffer?
2
Qu’est-ce que le mode promiscuous?
1
Les trames qui sont reçues par la carte la réseau.
2
Il permet d’écouter toutes les trames et pas seulement celles destinées
à nos cartes réseaux.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
89 / 116
Les services réseaux
Definition
Application permettant la communication (serveur) à travers un médium.
Les services les plus connus : Telnet, FTP, HTTP, SNMP, SMTP, SSH. . .
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
90 / 116
Les services réseaux
Definition
Application permettant la communication (serveur) à travers un médium.
Les services les plus connus : Telnet, FTP, HTTP, SNMP, SMTP, SSH. . .
Problématique des services non sécurisés ? (Telnet, FTP, SNMP, SMTP. . .)
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
90 / 116
Les services réseaux
Definition
Application permettant la communication (serveur) à travers un médium.
Les services les plus connus : Telnet, FTP, HTTP, SNMP, SMTP, SSH. . .
Problématique des services non sécurisés ? (Telnet, FTP, SNMP, SMTP. . .)
Les identifiants , mots de passe et les données transitent en clair.
Attention aux bannières trop verbeuses !!!
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
90 / 116
Les services réseaux : TELNET
Définition :
Telnet (TErminal NETwork/TELecommunication NETwork/TELetype NETwork)
est un protocole réseau utilisé sur tout réseau supportant le protocole TCP/IP. Il
appartient à la couche session du modèle OSI et à la couche application du
modèle ARPA. Il est normalisé par l’IETF (RFC 854 et RFC 855). Selon, l’IETF,
le but du protocole Telnet est de fournir un moyen de communication très
généraliste, bi-directionnel et orienté octet. Il est non sécurisé (toutes les
transactions passent en clair sur le réseau).
Éviter d’utiliser TELNET, préférer OpenSSH/SSH !
Les r-commandes rlogin, rcp sous Unix ou rsh, rexec sous Linux
Elles permettent d’effectuer des commandes distantes simplement par réseau/IP
de confiance (trusted hosts). Ce système est à éviter, car lorsqu’une machine du
réseau est touchée toutes les autres le sont aussi (utilisé par le ver Morris).
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
91 / 116
Les services réseaux : FTP
Définition :
FTP : File Transfert Protocol (port 21 TCP pour les commandes et 20 TCP pour
les données), protocole non chiffré permettant la réception et l’envoie de fichier,
RFC 959. . . Il fonctionne en mode actif/passif et gère l’envoie de fichier binaire,
transforme automatiquement les fichiers ASCII (gestion des systèmes de fichier
UNIX/WINDOWS)
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
92 / 116
Les services réseaux : FTP
Définition :
FTP : File Transfert Protocol (port 21 TCP pour les commandes et 20 TCP pour
les données), protocole non chiffré permettant la réception et l’envoie de fichier,
RFC 959. . . Il fonctionne en mode actif/passif et gère l’envoie de fichier binaire,
transforme automatiquement les fichiers ASCII (gestion des systèmes de fichier
UNIX/WINDOWS)
Points à vérifier :
Rendre anonyme la bannière de connexion.
Le compte Anonymous doit être désactivé
Un filtrage doit être appliqué sur les IP des clients.
Des ACL doivent être appliquées aux dossiers pour limiter l’écriture et la lecture.
L’utilisation du FTP doit être limité au strict minimum (pas de centralisation de
tous les journaux d’audit, mise à jour antivirus. . .).
Le service doit être cloisonné (limiter les accès de l’application sur le système,
CHROOT).
Une journalisation des actions des clients distants doit être implémentée.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
92 / 116
Les services réseaux : SMTP
Définition :
SMTP (Protocole simple de transfert de messagerie) est un protocole réseau basé
sur TCP/IP utilisant le port 25, permettant l’envoie de messages électronique
(mails), RFC 4409. . . Il est non sécurisé (toutes les transactions passent en clair
sur le réseau), mais il est possible d’implémenter du SSL pour chiffrer la
connexion. En cas d’envoi de fichiers, le fichier est intégré dans la message en
texte : codés en BASE64.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
93 / 116
Les services réseaux : SMTP
Définition :
SMTP (Protocole simple de transfert de messagerie) est un protocole réseau basé
sur TCP/IP utilisant le port 25, permettant l’envoie de messages électronique
(mails), RFC 4409. . . Il est non sécurisé (toutes les transactions passent en clair
sur le réseau), mais il est possible d’implémenter du SSL pour chiffrer la
connexion. En cas d’envoi de fichiers, le fichier est intégré dans la message en
texte : codés en BASE64.
Envoie d’un mail en SMTP et écoute avec Wireshark :
Utilisation de TELNET.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
93 / 116
Les services réseaux : SMTP
Exemple d’envoi de message :
telnet 192.168.2.5 25
EHLO Jo
MAIL FROM :<[email protected]>
RCPT TO :<[email protected]>
DATA
From : Jo <[email protected]>
Subject : test
To : Chef <[email protected]>
Mon message. . .
QUIT
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
94 / 116
Les services réseaux : SMTP
Points à vérifier :
Rendre anonyme la bannière de connexion.
L’envoi de mail ne doit être autorisé qu’après authentification.
Lors de l’envoi de mail l’expéditeur doit être l’utilisateur authentifié.
Lors de l’envoi de mail le destinataire doit être vérifié sinon le message doit être
supprimé.
Un quota d’espace de stockage utilisateur doit être implémenté.
La taille des pièces jointes doit être limitée (en émission et réception).
Les messages et pièces jointes doivent être automatiquement testés par un
antivirus.
Le service doit être cloisonné (limiter les accès de l’application sur le système,
CHROOT).
Les connexions au serveur et envois de mails doivent être journalisés (avec IP des
clients).
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
95 / 116
Les services réseaux
NFS : Network File System
Permet le partage de ressources (fichiers) de manière transparente. Depuis la
version 4, ce service est mieux sécurisé.
NIS/NIS+ : Network Information Service
Son but est de distribuer les informations contenues dans des fichiers de
configuration (/etc/hosts, /etc/passwd. . .).
NIS est maintenant remplacé par Kerberos, LDAP, Radius. . .
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
96 / 116
Les services réseaux : DNS
DNS
Domain Name System, est un service permettant d’établir une correspondance
entre une adresse IP et un nom de domaine. Port 53 en UDP (résolution) et TCP
(transfert de zone). BIND (Berkeley Internet Name Domain) est un service DNS.
Quelques outils pour afficher les informations du DNS :
host, dig et nslookup. . .
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
97 / 116
Les services réseaux : DNS
DNS
Domain Name System, est un service permettant d’établir une correspondance
entre une adresse IP et un nom de domaine. Port 53 en UDP (résolution) et TCP
(transfert de zone). BIND (Berkeley Internet Name Domain) est un service DNS.
Quelques outils pour afficher les informations du DNS :
host, dig et nslookup. . .
Liste des serveurs de messagerie de gouv.fr :
nslookup -type=MX gouv.fr
Lecture de toutes les informations du DNS gouv.fr :
nslookup -type=any gouv.fr
Transfert de zone :
nslookup
serveur DNS-de-transfert
ls -d DNS-cible
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
97 / 116
Les services réseaux : HTTP
HTTP
HyperText Transfer Protocol, est un protocole de communication client-serveur
développé pour le World Wide Web.
Lecture de l’entête d’une page (exemple : unik.orange.fr) :
telnet unik.orange.fr 80
HEAD / HTTP/1.0
Lecture d’une page :
telnet unik.orange.fr 80
GET / HTTP/1.0
Exemple de recherche WEB en utilisant les google hack, pour rechercher les sous
domaines d’un domaine :
-inurl: orange.fr
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
98 / 116
Les services réseaux : SNMP
SNMP
Simple Network Management Protocol, est un protocole de communication qui
permet aux administrateurs réseau de gérer les équipements du réseau, superviser
et de diagnostiquer des problèmes réseaux, matériels à distance. Il existe plusieurs
versions du protocole : V1 et V2 sont peu sécurisés, la connexion s’effectue grâce
à un nom de communauté (privé et public) qu’il convient de modifier, préférer la
V3 qui ajoute des mécanismes complémentaires de sécurité (chiffrement,
authentification. . .)
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
99 / 116
Les services réseaux : X11
XWindows (X11)
Protocole peu sécurisé sert à l’affichage d’applications graphiques. Il fonctionne
en modèle client-serveur (local/distant).
Un serveur X est un serveur permettant l’envoi de données d’affichage.
Plusieurs commandes permettent son utilisation:
xhosts : permet de restreindre les clients pouvant s’y connecter.
xauth : permet une authentification par clé de 32 chiffres hexadécimaux.
Pour plus amples informations consulter l’aide.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
100 / 116
Les services réseaux : GPG & SSH
2 types de chiffrement nous intéressent ici : symétrique et asymétrique.
le chiffrement des messages afin de garantir la confidentialité;
l’authentification dans un environnement physique et logique,
la signature des documents numériques (auteur/frauduleux);
la garantie d’intégrité des données
PGP
Pretty Good Privacy de Philip Zimmerman : solution gratuite équivalente à GPG.
GPG
Fonctionnement par réseau de confiance, avec des certificats, clés publiques, clés
privées, permet la signature des messages, le chiffrement des données. . .
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
101 / 116
Les services réseaux : SSH
Secure SHell, permet une administration distante sécurisée par tunneling (telnet,
SFTP, SCP, redirection chiffrée)
Attention! SSH est un protocole, qui englobe un grand nombre de fonctions.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
102 / 116
Les services réseaux : SSH
Secure SHell, permet une administration distante sécurisée par tunneling (telnet,
SFTP, SCP, redirection chiffrée)
Attention! SSH est un protocole, qui englobe un grand nombre de fonctions.
Copie d’un fichier à partir d’un serveur vers le répertoire courant :
scp login@serveur:Chemin/Fichier
Copie d’un répertoire vers le serveur :
scp -r [répertoire] login@serveur:Chemin
Redirection locale de port (-L, -R pour remote), ouvre une connexion entre le
Ip local:port vers Ip distant:port en utilisant le serveur SSH login@serveur:port :
ssh login@serveur:port -L Ip local:port:Ip distant:port
Fichier de configuration du serveur SSH : /etc/ssh/sshd config
Fichier de configuration du client SSH : /etc/ssh/ssh config
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
102 / 116
Les services réseaux : SSH
Paramètres de /etc/ssh/sshd config :
#Port du service, il vaut mieux le changer.
Port 22
#Version du protocole de communication utilisé, ne laisser que 2.
Protocol 2
#Ne pas autoriser la connexion directe avec root.
PermitRootLogin no
#Ne pas autoriser la redirection TCP.
AllowTcpForwarding no
#N’autorise l’utilisation de SSH que pour le compte toto
#(même principes avec AllowGroups, DenyGroups ou DenyUsers).
AllowUsers toto
#Message s’affichant lors de la connexion au service.
Banner fichier.txt
#Adresse IP et port d’écoute de SSH.
ListenAddress host:port
#Nombre maximum de connexion non authentifiées au service SSH.
MaxStartups 5
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
103 / 116
Les services réseaux : SSH
Paramètres de /etc/ssh/sshd config :
#(Par défaut) Spécifie si l’authentification par mot de passe est autorisée.
PasswordAuthentication yes
#(Par défaut) Spécifie si un mot de passe vide est autorisée.
PermitEmptyPasswords no
#Clé de connexion pour une machine, fortement recommandé d’en utiliser une.
HostKey $SYSCONFDIR/ssh host key
#(Par défaut) Spécifie si on autorise les redirections X11.
X11Forwarding no
#Paramètres d’authentification par clé ou service :
#HostbasedAuthentication, RhostsRSAAuthentication, HostKey,
#KerberosAuthentication, PAMAuthenticationViaKbdInt. . .
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
104 / 116
CHROOT
CHROOT est une commande qui permet de modifier la racine virtuelle d’un
programme.
Son application permet de restreindre l’accès aux fichiers en cas d’exploitation
d’une vulnérabilité, qui permettrait d’accéder au répertoire racine de la machine
hôte.
(exemple: buffer-overflow : dépassement de tampon)
Il permet également de faire tourner plusieurs instances d’un même ensemble de
services ou démons sur la même machine hôte.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
105 / 116
CHROOT
CHROOT est une commande qui permet de modifier la racine virtuelle d’un
programme.
Son application permet de restreindre l’accès aux fichiers en cas d’exploitation
d’une vulnérabilité, qui permettrait d’accéder au répertoire racine de la machine
hôte.
(exemple: buffer-overflow : dépassement de tampon)
Il permet également de faire tourner plusieurs instances d’un même ensemble de
services ou démons sur la même machine hôte.
Dans le cas où un service n’est pas chrooté, l’exploitation d’une vulnérabilité de
type buffer-overflow pourra nous permettre de remonter dans l’arborescence des
fichiers avec les droits de l’utilisateur exécutant l’application.
Donc le daemon doit être lancé avec un minimum de droits !!!
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
105 / 116
Les services réseaux
Il existe plusieurs méthodes pour sécuriser les services réseaux :
en appliquant les droits adéquats aux services
(droits des fichiers, droits d’exécution) ;
en recompilant les applications qui le permettent
(avec la fonction chroot()) ;
en modifiant la racine (commande CHROOT) sur le service;
en créant un compte restreint pour l’application
(compte dédié et shell restreint) ;
en recopiant en local les commandes utilisées par l’application, avec les
droits associés;
en modifiant le port par défaut et en supprimant les bannières verbeuses
(version, heure. . .).
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
106 / 116
Scanner de ports et vulnérabilités : Nmap
Nmap
C’est un scanner de ports open source (le plus connu) qui permet de lister les
ports ouverts et de déterminer les services associés.
Fonctionnalités
scan de ports de machines
découverte de services liés aux ports
Ping Of Death
scan de ports par rebond
...
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
107 / 116
Scanner de ports et vulnérabilités : Nmap
Nmap
C’est un scanner de ports open source (le plus connu) qui permet de lister les
ports ouverts et de déterminer les services associés.
Fonctionnalités
scan de ports de machines
découverte de services liés aux ports
Ping Of Death
scan de ports par rebond
...
Scanner une machine :
nmap -F IP
nmap -vv -sV -sR -sS -sU -p10-500 192.168.0.1 -oX FichierResultat.xml
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
107 / 116
Scanner de ports et vulnérabilités : Nessus
Nessus
C’est un scanner de vulnérabilités open source en deux parties (client-serveur).
Le serveur est celui qui va scanner la machine distante.
Le client est celui qui va envoyer les ordres d’exécution au serveur.
La dernière version n’est plus open source, mais reste gratuite à usage personnel.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
108 / 116
Scanner de ports et vulnérabilités : Nessus
Il faut créer un utilisateur avec la commande nessus-adduser.
Lancer le daemon nessusd -D (les plugins vont se charger).
Exécuter ensuite le client nessus& puis indiquer les logins + mdp.
Sélectionner les pluggins qui nous intéressent.
Effectuer un scan d’un poste.
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
109 / 116
Les Antivirus
Sous Linux il existe des virus et des antivirus (clamav)!!!
Sous Linux il existe des chevaux de Troie !!!
Les mails sont de plus en plus infectés par des virus
(SPAM, hoax).
Donc installer et mettre à jour l’antivirus !!!
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
110 / 116
Journalisation
Syslog (syslogd) est l’application de gestion centralisée des journaux d’audit.
Les applications utilisent syslog, pour un utilisateur il faut utiliser la commande
logger.
Le fichier de configuration de syslog : /etc/syslog.conf
Fonctionnement du fichier :
service.priorité fichier de destination
Exemple : mail.info /var/log/mail.info
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
111 / 116
Journalisation
Les différents services
kern : noyau
user : processus utilisateur
mail : messagerie
lpr : impression
auth : authentification
daemon : processus / services
local : réservé à l’utilisation de code local
mark : permet la consigne de message automatique
cron : généré par les gestionnaires de tâches planifiées (cron, at)
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
112 / 116
Journalisation
Les différents niveaux de priorité
emerg : envoi global, le système est HS
alert : doit être corrigé immédiatement
crit : panne matérielle
err : erreur générique
warning : avertissement
notice : pas une erreur mais nécessite un traitement particulier
info : information
debug : information dans un contexte de déboguage
Attention : les niveaux de priorités info et debug ne doivent pas être présents sur
un système en production !!!
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
113 / 116
Journalisation : analyse des journaux
Les fichiers de journalisation peuvent être conséquents (plusieurs Go) il faut donc
établir un traitement pour exploiter ces journaux.
outils existants
logcheck, swatch, logwatch, log3c, sfs, log-analysis. . .
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
114 / 116
Liens
Compilation de noyau : http://doc.ubuntu-fr.org/tutoriel/
compiler_linux?s[]=compiler&s[]=noyau
Configurer GRUB : http://doc.ubuntu-fr.org/grub
Configurer LILO : http://doc.ubuntu-fr.org/lilo
GAG (Graphical Boot Manager) :
http://gag.sourceforge.net/download.html
Syslinux (un autre gestionnaire de BOOT) :
http://syslinux.zytor.com/wiki/index.php/The_Syslinux_Project
PAM (Pluggable Authentication Modules) : http://www.linux-kheops.
com/doc/cours/jgourdin/outils-tcp-ip/Linux-pam.html
Guides d’administration : http://www.morot.fr/
AFICK : http://eric.gerbier.free.fr/controle_integrite.html
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
115 / 116
Des questions ?
Contact : [email protected]
Hanteville Nicolas (CFBS)
Sécurité des systèmes Linux
24/11/2009
116 / 116