Sécurité des systèmes d’information
A. NAANAA
PLAN
Introduction à la sécurité
Sécurisation des accès physiques
Verrouillage d'accès physique aux serveurs
Protection par BIOS
Protection des chargeurs de démarrages
Les commandes de diagnostic
Outils de collecte (nmap, tcpdump, ethereal, netcat)
Les fichiers de journalisation
Éléments de la sécurité locale
Sécurité des utilisateurs (Authentification PAM)
Sécurité des processus
Sécurité des fichiers et du système de fichiers
Éléments de la sécurité réseau
Sécurisation inetd
Les tcp-wrappers
Infrastructure à base de clés
Mise en ouevre de SSL
2
Iptables
Introduction au VPN
PLAN
Les pare-feu
Pare-feu de filtrage: iptables/netfilter
Pare-feu proxy
L'audit de sécurité
Les r-commandes
Autorisation
/etc/hosts
/.rhosts
L'art de cryptographie
Cryptographie
Cryptanalyse
crypto-système
Secure SHell (SSH)
Cryptage DSA, RSA
Fichiers et clés
Configuration, transfert
Bootp/DHCP 3
Chapitre 1
Introduction à la sécurité
4
La problématique de la sécurité
La connectivité globale ont fait accroître les besoins en
termes de sécurité
Il faut protéger les informations et données
personnelles, commerciales, industrielles ou militaires
Il faut faire faces à tous les risques d'attaque ou de
piratage
Quelques objectifs de la sécurité
Contrôle d’accès
Techniques de mot de passe /Firewalls
Authentification
Signatures numériques
Confidentialité
Cryptographie
Intégrité
Signatures numériques
Virus
Anti-virus 5
Particularité de la sécurité Linux
Même si Linux est conceptuellement bien architecturé (Modèle en
couches, notion de FileSystem, notion de Processus, Bonne gestion
mémoire, Serveur X11 pour le graphisme, ...), il ne garantit qu'un certain
degré de sécurité !
Linux est conçu pour être un système d'exploitation à usage
général. C'est un système ouvert, multi-tâches et multi-utilisateurs
Un effort complémentaire doit être apporté afin de garantir la
sécurité locale du système
Un effort complémentaire doit être apporté afin de garantir la
sécurité des communications réseau
6
Particularité de la sécurité Linux
Comment administrer la sécurité Linux
D'abord bien comprendre le modèle de fonctionnement de Linux et
le modèle de fonctionnement de la pile TCP/IP
Utilisation de commandes systèmes, de fichiers de configuration,
et de scripts
Utilisation d'utilitaires additionnels simples et souvent gratuits
dédiés à la sécurité
Utilisation de suites logicielles de sécurité plus complètes
7
Chapitre 2
Sécurité des accès physiques
8
Protection de l'accès physique
L'objectif est d'empêcher une personne mal intentionnée d'obtenir les
accès administrateur sur la machine qu'elle utilise
Il faut savoir qu'une grande partie des piratages sont lancés par
des pirates ayant un accès physique sur un réseau
Bien fermer à clé les locaux hébergeant les serveurs, les routeurs et
les machines sensibles
Instaurer un système automatisé pour le contrôle d'accès par
badges et des lecteurs de badges
Instaurer éventuellement un système de vidéo surveillance des
équipements critiques
9
Protection de l'accès physique
Verrouillez les stations sensibles avec des cadenas sur les ours des
machines
Ceci empêchera tout d'abord le vol, mais évitera aussi des disques
durs montés en secret avec des utilitaires installés dessus
10
Protection par BIOS
Placer un mot de passe pour le BIOS
Ne pas oublier le mot de passe, afin d'éviter le retrait de la pile du
BIOS
Attention : certains BIOS peuvent comporter des failles logicielles
permettent d'outrepasser ces protections. S'informer sur la version
de votre BIOS
Désactivez au niveau BIOS, le boot sur le lecteur de disquette et sur le
lecteur de (CD/DVD)ROM
11
Protection par BIOS
Certaines versions de Linux s'installent en RAM grâce un nombre
limité de disquettes, ce qui rend possible le montage de tous les
systèmes de fichiers présents sur le(s) disque(s) dur(s) et d'en
modifier le contenu
Backtrack ([Link] est livré avec un
panel assez important d'utilitaires dédiés à la sécurité
Le programme NTFS2DOS, peut être lancé depuis une
disquette de démarrage DOS. Après transformation, une
partition NTFS est accédée sans restrictions
Des systèmes comme Knoppix ([Link]
système Linux bootable sur CD, peuvent être utilisés pour monter
12
les différentes systèmes de fichiers du disque
Le multi-boot
Le multi-boot est utile pour les postes de travail, mais l'est-il vraiment
en cas du serveur ?
Le mutli-boot est contre indiqué en termes de sécurité : un
attaquant pouvant avoir accès à l'un des systèmes de la machine
peut soit endommager le chargeur de démarrage, soit supprimer
une partition entière avec sont système d'exploitation ou bien un
logiciel de partitionnement
Omettre, si possible, la facilité de multi-boot sur le serveur
13
Le multi-boot
Éviter l'option failsafe au démarrage proposée LILO (Linux Loader) ou
par GRUB (GRand Unified Bootloader)
Cette option peut permettre d'obtenir un accès root (sans mot de
passe) pour la maintenance du système
Éviter le système de fichiers FAT pour Windows
NTFS permet une sécurisation accrue par rapport à FAT et FAT32.
Passez vos machines en NTFS
Il est déconseillé fortement d'utiliser Windows 95,98 et Me : le
niveau de sécurité offert par ces systèmes en natif n'est pas élevé!
14
Protection du chargeur de démarrage LILO
Exemple de contenu /etc/[Link]
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
message=/boot/message Remarque
default=linux LILO est de plus en plus délaissé par les
image=/boot/vmlinuz-2.4.0-0.43.6 récentes distributions de Linux au profit
label=linux de GRUB.
initrd=/boot/[Link] Il est nécessaire de savoir le configurer
read-only puisque beaucoup de systèmes actuels
root=/dev/hda5 l'utilisent encore.
Protection de LILO
Éditer le fichier de configuration [Link] en y ajoutant une clause password avant la
définition des images :
password = mot_de_passe
Inconvénient : Ce mot de passe est écrit en clair et peut être lu par n’importe quelle
personne qui se connecte à la machine, pour remédier à ce défaut l’administrateur peut
retirer le droit de lecture à tout autre utilisateur (excepté lui bien évidemment).
15
#chown root root /etc/[Link] ; chmod 600 /etc/[Link]
Protection du chargeur de démarrage GRUB
La protection de l'accès au chargeur GRUB est fortement recommandée
car GRUB permet d’offrir un accès à une interface de type shell
permettant de modifier la configuration de celui ci, d’obtenir des
informations système(commande cat) et de booter en ‘single mode’
Notation des partitions dans GRUB
La notation des partitions sous Grub est assez particulière. Un
exemple : (fd0). Cela signifie qu'il s'agit du premier périphérique
souple (disquette...). Le nombre 0 indique qu'il s'agit du premier
périphérique.
Quelques exemples pour mieux saisir la notation Grub :
(hd0,1) : seconde partition principale du premier disque dur
(hd0,4) : première partition étendue de premier disque dur. Les
16
partitions étendues commencent par 5.
Protection du chargeur de démarrage GRUB
Protection de GRUB avec un mot de passe crypté
$grub
grub> md5crypt
Password : *******
Encrypted : kw485/fgf$&ee
On doit copier le code encrypté et l’insérer dans le fichier de configuration
/etc/[Link] avant la définition des images :
Timeout = 100
Password --md5 kw485/fgf$&ee
Title Linux
Remarque : est possible de protéger GRUB par un mot de passe en clair,
mais ceci est sans grande efficacité (cf. LILO) 17
Chapitre 3
Les commandes de diagnostic
18
En-tête du protocole IP
Version:
Version: 44 (Ipv4)
(Ipv4)
IHL
IHL :: IP
IP Header
Header Length
Length (en-tête)
(en-tête)
TOS
TOS :: Type
Type ofof Service
Service (priorité)
(priorité)
Total
Total Length
Length :: dudu paquet
paquet
Idnetification
Idnetification :: numéro
numéro du du fragment
fragment
Flags
Flags :: par
par ex.
ex. dernier
dernier fragment
fragment
Fragmentation
Fragmentation Offset Offset :: position
position dudu fragment
fragment
TTL
TTL :: Time
Time ToTo Live,
Live, nombre
nombre max max dede sauts
sauts (hops)
(hops)
pour
pour attendre
attendre lala destination
destination
Protocol
Protocol :: de de niveau
niveau supérieur
supérieur (TCP
(TCP ou ou UDP)
UDP)
Header
Header checksum
checksum
Source
Source address
address :: 3232 bits,
bits, par
par ex:[Link]
ex:[Link]
Destination
Destination Address
Address :: 32
32 bits
bits
Options
Options :: par
par ex.
ex. cryptage
cryptage
Padding
Padding :: remplissage
remplissage àà 32 32 bits
bits
19
En-tête du protocole UDP
Source
SourcePort
Port: : (Application)
(Application)
Destination
DestinationPort
Port: :(Application)
(Application)
Length :
Length :
checksum
checksum: :
20
Outils de diagnostic
Commande Description
ifconfig Affiche la configuration IP
ping Teste la connectivité d'un poste
netstat Affiche les statistiques, liste les ports ouverts
nslookup, dig Testent le service DNS
tcpdump, ethereal Analyseurs de trames
nmap Scanner de ports
ps, top Liste les processus actifs
lsof Liste les fichiers et les sockets21
ouverts
Protocole IP : ifconfig
22
Protocole IP : ping
23
Protocole IP : ping
24
Protocole IP : netstat
25
Les processus
26
Analyseurs de trames
27
En-tête TCP : tcpdump
28
En-tête TCP:tcpdump
29
Etheral
30
Etheral
31
Les scanners réseau
32
Le scanner nmap
33
Le scanner nmap
34
Déterminer le système d'exploitation avec
nmap
35
Quelques options de namp
36
Identifier les versions des logiciels en écoute
37
Identifier les versions des logiciels en écoute
d
e
38
Les failles applicatives
39
Les failles applicatives
40
Les équipements physiques de diagnostic
41
Quelques éléments de méthodologie
42
Les problèmes réseau
43
Chapitre 4
Sécurité locale : utilisateurs,
processus et fichiers
44
Sécurité des utilisateurs
45
Pratiques de la sécurité des utilisateurs
46
Sécurisation des comptes utilisateur
47
Introduction à l'authentification avec PAM
48
Fichiers de configuration PAM
49
Configuration centrale de PAM
50
Restrictions d'accès: la manière flexible
51
Restriction d'accès : tout le monde dehors
52
Restrictions de connexions en fonction de
l'heure
53
Permettre aux utilisateurs de consoles de
contrôler le système
54
Données des privilèges root avec sudo
55
Suivi du système local
56
Sécurité des processus
57
Pratiques de la sécurité des processus
58
Suivi et limitation des processus
59
Limitation des processus
60
Utilisation des journaux pour suivre des
processus
61
Sécurité des fichiers
62
Pratiques de la sécurité des fichiers et du
système de fichiers
63
Fixer les permissions par ID d'utilisateur et
du groupe
64
Autres modes de fichiers
65
Exemples typiques d'autorisations
peuvent
66
Nettoyage : fichiers et répertoires
peuvent
67
Intégrité des données avec tripwire
68
Configuration de tripwire
69
Chapitre 5
Éléments de la sécurité réseau
70
Encodages des communications
71
Pratiques de sécurité par encodage
72
Pourquoi l'encodage ?
73
Composantes de base de la cryptographie
74
Nombres aléatoires
75
Codage à sens unique
76
Encodage symétrique
77
Codage asymétrique I
78
Codage asymétrique II
79
Applications : rpm
80
Infrastructure de clés publiques
81
Certificats numériques
82
Génération de certificats numériques
83
Configuration des r-commandes et ssh
PLAN
LES R_COMMANDES
SECURE SHELL
DHCP & BOOTP
Les R-commandes
• Présentation
Les r-commandes (r comme Remote : distant)
regroupent des commandes distantes.
Pour les utiliser, un mécanisme d’autorisation
permet de remplacer l’étape d’authentification sur
la machine cible.
Autorisation
Le mécanisme d’autorisation se met en place grâce
aux déclarations adéquates dans le fichiers de la
machine cible (machine serveur) .
La machine cliente doit obligatoirement être
déclarée dans le fichier /etc/hosts du serveur pour
pouvoir être référence ensuite dans les fichiers
d’autorisation créer chez le serveur le fichier
~/home/user/.rhosts .
87
/etc/hosts
Correspondance statiques de noms de hotes:On
associe les adresses IP avec les noms des hotes,une
ligne par adresse IP.
Pour chaque hôte, une unique ligne doit être présente,
avec les informations suivantes:
• Format:
adresse_IP Nom_officiel
88
/etc/hosts(Suite)
89
/.rhosts
Le fichier ".rhosts" est propre à chaque utilisateur. Il
est donc placé dans le répertoire de travail de chacun
(home directory).
Ce fichier contient la liste des utilisateurs pouvant se
connecter sous le nom de l'utilisateur courant à partir
d'une rcommande sans mot de passe.
91
rhosts(Suite)
92
93
rlogin(Remonte Login)
rlogin démarre une session terminal sur un hôte
distant.
Il existe 2 types de rlogin :
sans mot de passe
avec mot de passe
94
rlogin(Suite)
• Syntaxe:
rlogin hôte [-l nom_utilisateur]
• Option
-l : permet de se connecter sous un autre nom que le
nom de l'utilisateur courant.
95
rsh(Remote shell)
permet de demander l'exécution d'une commande
shell sur une machine distante sans avoir besoin de
s'y connecter (par un rlogin).
rsh se comporte comme un rlogin.
Cette commande ne fonctionne que dans le cas où
un mécanisme d’autorisation est déclaré.
97
rsh(Suite)
rsh est lancé par le démon rshd définit dans le
fichier /etc/services.
• Syntaxe:
rsh machine [-l utilisateur] [-n] commande
• Option
-n: Permet de dire au shell distant d'utiliser /dev/null
comme fichier standard d'entrée.
98
rcp(Remote Copy)
Elle permet de copier un ensemble de fichiers d'une
machine à une autre.
La copie entre deux machines peut être effectuée
depuis une machine tierce.
100
Rcp(Remote Copy)
• Syntaxe
rcp [-p] [-r] source cible
• Option
-r :Permet de copier récursivement les sous
répertoires.
-p :Demande la modification des dates des fichiers
copiés sur la machine cible.
101
$rcp -r anis@oranix:/home/anis/fichier /tmp
102
rusers (Remote USERS)
Renvoie les utilisateurs “logués” sur les machines
locales.
• Syntaxe:
rusers [-ahu] [host]
• Options:
-a:Liste les hôtes qui n’ont pas d’utilisateurs connectés.
103
rusers(Suite)
-h: Trier la liste des hôtes par ordre alphabétique.
-u: Trier les hôtes par le nombre d’utilisateurs qui y
sont connectés.
104
Reboot
Redémarrer une machine distante.
Syntaxe:
reboot
NB:
Il faut se connecter à distance avec (rlogin,ssh,rsh..).
Il faut avoir le mot de passe root de la machine à
redémarrer.
106
Rexec(Suite)
Exécuter une commande à distance
• Syntaxe
rexec –l login –p password host commande
108
SSH
110
Secure SHell
• SSH
Protocole qui permet de faire des connexions
sécurisées (i.e. cryptées) entre un serveur et un
client SSH.
Il utilise la cryptographie
Symétrique
Asymétrique (RSA ou DSA)
111
Le système de clés de SSH
• La cryptographie asymétrique
chaque personne dispose d'un couple de clé :
une clé publique
une clé privée
Quand A envoie un message confidentiel à B
A le crypte avec la clé publique de B
Seul B pourra le décrypter en utilisant sa clé
privée
112
Le système de clés de SSH(suite)
• La cryptographie symétrique
Pour pouvoir échanger des messages, A et B
doivent posséder la même clé secrète :
A crypte le message avec ce clé
B le décrypter en utilisant ce même clé
Toute autre personne en possession de la clé
secrète peut décrypter le message.
113
Le système de clés de SSH(suite)
La cryptographie symétrique est moins gourmande
en ressources processeur.
Problème :échanger la clé secrète.
SSH(se basant sur le protocole SSL)utilise la
cryptographie :
asymétrique pour échanger la clé sécrète
symétrique pour communiquer
114
Établir une connexion SSH
Envoie sa clé publique
S Envoie sa clé cryptée avec
la clé publique du serveur C
E
L
R
I
V Envoie un message crypté
avec la clé privée du client E
E
N
U Accepte ou refuse la T
R connexion
115
Établir une connexion SSH
• Échanger la clé sécrète
1. Le serveur envoie sa clé publique au client.
2. Le client génère une clé secrète, la crypte avec
celle du serveur et l'envoie.
3. Le serveur décrypte la clé secrète du client en
utilisant sa clé privée.
=>Ces étapes(1,2 et 3) résume le Cryptage
asymétrique
116
Établir une connexion SSH(suite)
• Communiquer
1. Le serveur crypte un message standard avec la
clé secrète et l'envoie au client.
2. Si le client retrouve le message standard en
utilisant la clé secrète, il envoie le login et le mot
de passe de l'utilisateur.
=> Ces étapes(4 et 5) résume le Cryptage
symétrique
Le canal sécurisé reste en place jusqu'à ce que
l'utilisateur se déloge.
117
Fichiers & Clés
• Coté serveur
le répertoire /etc/ssh et générées lors de
l'installation du serveur dont
Le fichier ssh_host_rsa_key contient la clé privée
( permissions 600).
Le fichier ssh_host_rsa_key.pub contient la clé
publique ( permissions 644 )
118
Configuration
fichier de configuration du serveur:
/etc/ssh/sshd_config
fichier de configuration du client SSH:
/etc/ssh/ssh_config
119
Fichiers de Configuration SSH
• /etc/ssh/sshd_config
Port 22 # le serveur écoute sur le port 22
Protocol 2 , 1 # serveur accepte les versions
n 1
et 2 du protocole
PermitRootLogin yes # ou ‘ no’
# yes : Pouvoir se loguer en root
# no : Il faut se connecter en tant que b
simple user
120
Se Logue par SSH
• Première Étape
Il faut ajouter le nom du serveur dans le fichier
/etc/[Link] (ou /etc/ssh/[Link] )
ce fichier contient les équivalences entre les
machines .
S’authentifier soit par mot de passe, soit par clé.
121
Authentification par mot de passe
• Syntaxe
Ssh [-option] login@NomServeur
-C : pour la compression des
messages.
-2 : pour la version 2 .
~/.ssh/known_hosts contient toutes les clés
public des serveurs ssh sur lesquels le client s’est
connecté .
122
Authentification par clé
Les utilisateurs peuvent s'authentifier aussi par le
couple de clés privée/publique, comme le fait le
serveur SSH auprès du client SSH.
Pour générer les clés :
• Syntaxe
ssh –keygen –t dsa/rsa
124
Authentification par clé
Lors de la création des clés, un mot de passe est
demander pour protéger la clé privée.. La pass
phrase (mot de passe) qui sera alors demandé à
chaque utilisation de la clé privée
126
Autorisé sa Clé
Il faut copier la clé publique du client dans le
fichier~/.ssh/authorized_keys de la machine
serveur . Crée le fichier s'il n'existe pas déjà.
la clé publique du client est stockée dans le fichier
~/.ssh/id_dsa.pub avec permissions.
La clé privée est stockée dans
~/.ssh/id_dsa avec permissions 600
128
Transfert de fichiers par SSH
• Syntaxe de SCP (Comme Ssh CoPy)
du client vers serveur
scp [-r] P/fich login@NomServer:P/fich
du serveur vers client
scp [-r] login@NomServer:P/fich P/fich
-r : pour transférer des répertoires
complets .
129
Transfert de fichiers par SSH
• Exemple1
Pour transférer le fichier [Link] situé
dans le répertoire courant vers le home du
compte toto de la machine pc1
sur laquelle tourne un serveur SSH :
scp [Link] toto@pc1
130
Transfert de fichiers par SSH
• Exemple2
Pour pour récupérer le fichier [Link] situé
le home de l'utilisateur toto de la machine
pc2 et l'écrire dans le répertoire
courant :
scp toto@pc2:[Link]
131
Transfert de fichiers par SSH
• SFTP (Comme Ssh FTP).
Pour se connecter par SFTP
sftp login@NomServeur
exp : sftp toto@pc1
Une fois connecté, un nouveau prompt
apparaît : sftp>
133
Transfert de fichiers par SSH
• Les commandes de base de SFTP
ls pour lister le contenu du répertoire
distant
lls pour lister le contenu du répertoire local
cd répertoire pour changer de répertoire
distant
134
Transfert de fichiers par SSH
• Les commandes de base de SFTP
lcd répertoire pour changer de répertoire
local
get fichier pour télécharger un fichier,
put fichier pour déposer un fichier
exit pour mettre fin à la connexion. Une fois
connecté, un nouveau prompt apparaît :
sftp>
135
Sécurité d'affichage
137
Secure Socket Layer : SSL
138
SSL et HTTPS
139
Sécurité basée sur les services
réseau et les firewalls
140
Pratiques de la sécurité à base des services
et des firewalls
141
Types de firewalls
142
Le démon xinetd
143
Les tcp_wrappers
144
Syntaxe de tcp_wrappers
145
Linux en tant que routeur et maquilleur
146
Routes statiques et routes dynamiques
147
Chapitre 6
Les pare-feu
148
Qu'est-ce qu'un pare-feu (Firewall) ?
149
Tâches basiques d'un firewall
150
Vérification système avant le firewall
151
Compilation du noyau pour le filtrage de
paquets
152
Construction de firewalls
153
Exemples de commandes ipchains
154
Construire un firewall avec ipchains
155
Activation du maquillage
156
Architectures
157
DMZ (DeMilitarized Zone)
158
Routeur filtrant
159
Proxy
160
NAT : Network Address Translation
161
Les produits
162
Les firewalls matériels
163
Firewalls logiciels libres : netfilter
164
Firewall logiciel commercial : check Point
165
Firewalls personnels sous Linux et Windows
167
Limites des firewalls personnels
168
Firewall logiciels, ce qu'ils laissent passer !
169
Chapitre 7
L'audit de sécurité
170
Outils d'audit
171
Saint
172
Snort
173
Autres outils d'audit
174
Outils d'audit
175