Professional Documents
Culture Documents
Securite Linux
Frederic RAYNAL
fred(at)security-labs.org
Historique
Unix, quest-ce que cest ?
Du big bang `a la matrice
Damien AUMAITRE
damien(at)security-labs.org
Banalites essentielles
S
ecurit
e Linux
Des origines `
a nos jours
Chronologie exhaustive
Diversit
e de lesp`
ece
Rappels darchitecture
Des origines `
a nos jours
Chronologie exhaustive
Diversit
e de lesp`
ece
Rappels darchitecture
2/
La pr
ehistoire
Lhistoire
Lhistoire moderne
Lhistoire contemporaine
Premi`ere partie I
Historique
3 / 251
S
ecurit
e Linux
6/
Des origines `
a nos jours
Chronologie exhaustive
Diversit
e de lesp`
ece
Rappels darchitecture
La pr
ehistoire
Lhistoire
Lhistoire moderne
Lhistoire contemporaine
Des origines `
a nos jours
Chronologie exhaustive
Diversit
e de lesp`
ece
Rappels darchitecture
La pr
ehistoire
Lhistoire
Lhistoire moderne
Lhistoire contemporaine
Ajout de programmes
Editeur
(vi), shell (csh), compilateurs LISP et pascal, . . .
Jusquen 1984
Developpement jusqu`
a Unix Version 7
Vente aux universites `
a un prix modique
1984 : d
emant`
element dAT&T
S
ecurit
e Linux
8 / 251
Des origines `
a nos jours
Chronologie exhaustive
Diversit
e de lesp`
ece
Rappels darchitecture
La pr
ehistoire
Lhistoire
Lhistoire moderne
Lhistoire contemporaine
10 /
Des origines `
a nos jours
Chronologie exhaustive
Diversit
e de lesp`
ece
Rappels darchitecture
S
ecurit
e Linux
12 / 251
S
ecurit
e Linux
14 /
Des origines `
a nos jours
Chronologie exhaustive
Diversit
e de lesp`
ece
Rappels darchitecture
Des origines `
a nos jours
Chronologie exhaustive
Diversit
e de lesp`
ece
Rappels darchitecture
Unix System V
Historique
S
ecurit
e Linux
Des origines `
a nos jours
Chronologie exhaustive
Diversit
e de lesp`
ece
Rappels darchitecture
17 / 251
S
ecurit
e Linux
Des origines `
a nos jours
Chronologie exhaustive
Diversit
e de lesp`
ece
Rappels darchitecture
18 /
Historique
Premi`eres versions dans les annees 70 `a base du code dAT&T
BSD Net/1 (1989) : recodage de toute la pile reseau pour eviter de
payer une licence tr`es ch`ere `a AT&T
BSD Net/2 (1991) : recodage de tous les utilitaires contenant du
code AT&T (seul le noyau a encore du code sous licence)
BSD386 (BSDi), fonde sur Net/2, est poursuivi en 1992 par les Unix
System Laboratories dAT&T
GNU/Linux
Un noyau tout seul
Des programmes fournis par la FSF
Developpe `a partir de rien par des volontaires
QNX
Syst`eme commercial temps-reel complet
Source du boyau temps reel disponible `a des fins non commerciales
Micro-noyau specialise pour les logiciels embarques
19 / 251
S
ecurit
e Linux
20 /
Des origines `
a nos jours
Chronologie exhaustive
Diversit
e de lesp`
ece
Rappels darchitecture
Des origines `
a nos jours
Chronologie exhaustive
Diversit
e de lesp`
ece
Rappels darchitecture
Le hardware
Le logiciel
Principe de la norme
Memory
S
ecurit
e Linux
22 / 251
Des origines `
a nos jours
Chronologie exhaustive
Diversit
e de lesp`
ece
Rappels darchitecture
Code
I/O
S
ecurit
e Linux
25 /
Le hardware
Le logiciel
Bus
Conception actuelle et
moderne . . . pensee dans
les annees 40
ALU
CPU
Data
Memory
Memory
Data
Code
Data
Code
= Opportunites pour du
hardware malicieux
(FireWire, USB . . . )
I/O
S
ecurit
e Linux
Data
Des origines `
a nos jours
Chronologie exhaustive
Diversit
e de lesp`
ece
Rappels darchitecture
Le hardware
Le logiciel
Architecture Harvard
Code
Memory
ALU
Programmable, les
instructions nont plus besoin
detre hardcodees dans
lordinateur
Les instructions et les donnees
partagent la meme memoire
= Injection de code, redirection de
flux dexecution
26 / 251
S
ecurit
e Linux
I/O
27 /
Des origines `
a nos jours
Chronologie exhaustive
Diversit
e de lesp`
ece
Rappels darchitecture
Des origines `
a nos jours
Chronologie exhaustive
Diversit
e de lesp`
ece
Rappels darchitecture
Le hardware
Le logiciel
Couches logicielles
Le hardware
Le logiciel
Pile logicielle
Noyau (kernel)
Abstraction pour le materiel
Ordonne les t
aches `
a
executer
Syst`eme dexploitation
(Operating System)
Applications
User
OS
Application
UI
API
User space
Kernel
Kernel space
System call
I/O port
Applications
Effectuent le travail . . .
S
ecurit
e Linux
29 / 251
Concepts fondamentaux
Processus et m
emoire virtuelle
Fichiers et espace de nommage
Contexte dex
ecution
Famous last words
S
ecurit
e Linux
30 /
Concepts fondamentaux
Processus et m
emoire virtuelle
Fichiers et espace de nommage
Contexte dex
ecution
Famous last words
Le secret dUnix
Deuxi`eme partie II
S
ecurit
e Linux
31 / 251
S
ecurit
e Linux
33 /
Concepts fondamentaux
Processus et m
emoire virtuelle
Fichiers et espace de nommage
Contexte dex
ecution
Famous last words
Concepts fondamentaux
Processus et m
emoire virtuelle
Fichiers et espace de nommage
Contexte dex
ecution
Famous last words
Processus
Organisation de la m
emoire
Les processus
Processus
Organisation de la m
emoire
De lalgorithme au processus
S
ecurit
e Linux
Concepts fondamentaux
Processus et m
emoire virtuelle
Fichiers et espace de nommage
Contexte dex
ecution
Famous last words
36 / 251
S
ecurit
e Linux
Concepts fondamentaux
Processus et m
emoire virtuelle
Fichiers et espace de nommage
Contexte dex
ecution
Famous last words
Processus
Organisation de la m
emoire
37 /
Processus
Organisation de la m
emoire
Processus
Ensemble de threads + espace
dadressage
Tout processus est cree par un
autre processus
pile
tas
text
0x00000000
PID = Process ID
S
ecurit
e Linux
0xC0000000
39 / 251
S
ecurit
e Linux
40 /
Concepts fondamentaux
Processus et m
emoire virtuelle
Fichiers et espace de nommage
Contexte dex
ecution
Famous last words
Concepts fondamentaux
Processus et m
emoire virtuelle
Fichiers et espace de nommage
Contexte dex
ecution
Famous last words
Processus
Organisation de la m
emoire
Les fichiers
Agencement de la memoire
Memoire physique transformee en memoire virtuelle via pagination
(adr. lineaire) puis segmentation (adr. logique)
Vue logique (adresses de 0x00000000 `a 0xFFFFFFFF) independante
de la realite physique (RAM disponible)
= Acc`es `a la memoire independant de la RAM
0xFFFFFFFF
pile
pile
pile
Noyau
text
pile
pile
pile
tas
tas
tas
text
text
text
0x00000000
S
ecurit
e Linux
Concepts fondamentaux
Processus et m
emoire virtuelle
Fichiers et espace de nommage
Contexte dex
ecution
Famous last words
41 / 251
Concepts fondamentaux
Processus et m
emoire virtuelle
Fichiers et espace de nommage
Contexte dex
ecution
Famous last words
Operations elementaires
interface de programmation
unique pour TOUS les fichiers
peripheriques, fichiers,
sockets
existence/implemantation
variable selon le type de fichier
S
ecurit
e Linux
43 /
Ouverture
Fermeture
Lecture
Ecriture
Deplacement de la
tete de lecture
Attente dun evt.
externe
Informations
Modes dacc`es
Mode bloc : acc`es par blocs de donnees
open()
close()
read()
write()
seek()
select()
stat()
Drivers : ioctl()
S
ecurit
e Linux
45 / 251
S
ecurit
e Linux
46 /
Concepts fondamentaux
Processus et m
emoire virtuelle
Fichiers et espace de nommage
Contexte dex
ecution
Famous last words
Concepts fondamentaux
Processus et m
emoire virtuelle
Fichiers et espace de nommage
Contexte dex
ecution
Famous last words
Proprietes
Fichiers reguliers
>> ls -l /etc/passwd
-rw-r--r-- 1 root wheel 1374 Sep 12 2003 /etc/passwd
Type
User
rwx
- fichier normal
d rpertoire
c pilote mode caractre
b pilote mode bloc
p pipe
l lien symbolique
...
Group Others
r-x
root
--x
bin
etc
ls
cat
dd
passwd
shadow
group
init.d
var
log
bin
home
spool
lib
l33t
jeankevin
fischy
X11
local
etc
Concepts fondamentaux
Processus et m
emoire virtuelle
Fichiers et espace de nommage
Contexte dex
ecution
Famous last words
usr
47 / 251
bin
sbin
S
ecurit
e Linux
Concepts fondamentaux
Processus et m
emoire virtuelle
Fichiers et espace de nommage
Contexte dex
ecution
Famous last words
Notions etendues
49 /
Cas speciaux
Syst`emes de fichiers
Fichiers et processus
lsof : liste les fichiers ouverts par un processus
fuser : liste les processus qui utilisent un fichier
S
ecurit
e Linux
50 / 251
S
ecurit
e Linux
51 /
Concepts fondamentaux
Processus et m
emoire virtuelle
Fichiers et espace de nommage
Contexte dex
ecution
Famous last words
Concepts fondamentaux
Processus et m
emoire virtuelle
Fichiers et espace de nommage
Contexte dex
ecution
Famous last words
bash>> /sbin/root_world_in_30s
execve("/sbin/ping 127.0.0.1");
execve("/sbin/root_world_in_30s");
S
ecurit
e Linux
>> id
uid=501(raynal) gid=501(raynal) groups=501(raynal), 80(admin)
>> ps aux | grep ping
root 2704 0.0 0.0 18260 304 p1 S+ 1:24AM 0:00.01 /sbin/ping 127.0.0.1
53 / 251
Concepts fondamentaux
Processus et m
emoire virtuelle
Fichiers et espace de nommage
Contexte dex
ecution
Famous last words
S
ecurit
e Linux
54 /
S
ecurit
e Linux
55 / 251
S
ecurit
e Linux
56 /
Histoire de boot
Acteurs de Hard
Et le courant fut . . .
Etat
indetermine de tous les composants materiels
Processeurs, bus, MMU, peripheriques, . . .
Bus
CPU
ROM
Memory
Data
Code
I/O
S
ecurit
e Linux
57 / 251
S
ecurit
e Linux
59 /
Deroulement du BIOS
POST (Power On Self Test) : init. composants essentiels
Risques
Initialisation extensions
Backdoor materielle
Effet Tempest
S
ecurit
e Linux
60 / 251
S
ecurit
e Linux
62 /
Securite du BIOS
63 / 251
65 /
Deroulement
Demande quoi charger `a lutilisateur
Chargement du noyau et des donnees optionnelle
Attention `
a ne pas ecraser en memoire le noyau courant
Probl`emes
Acc`es au support physique
S
ecurit
e Linux
66 / 251
S
ecurit
e Linux
67 /
Injection de param`etres
S
ecurit
e Linux
68 / 251
S
ecurit
e Linux
69 /
: setup() (arch/i386/boot/setup.S)
Vers le Moyen-Age
Uncompressing Linux....................
71 / 251
S
ecurit
e Linux
72 /
`
Initialise le thread noyau init() (Eve)
kernel thread(init, NULL,
CLONE FS|CLONE FILES|CLONE SIGHAND) ;
Do`
u le init et non [init]
Appelle init=arg, /sbin/init, /etc/init, /bin/init,
/bin/sh
S
ecurit
e Linux
73 / 251
S
ecurit
e Linux
74 /
Securite du noyau
user : init
Description
Premier processus, p`ere de tous les autres
Cree les autres processus `a partir dun fichier de conf.
S
ecurit
e Linux
75 / 251
S
ecurit
e Linux
77 /
Login
78 / 251
S
ecurit
e Linux
79 /
$1$<1 `
a 8 octets de graine>$<hash
e>
n de 24 `
a 231 , 64 par defaut
S
ecurit
e Linux
80 / 251
S
ecurit
e Linux
81 /
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Les utilisateurs
Identification
Un utilisateur est un numero
UID = User ID
Quatri`eme partie IV
root (UID=0)
Compte super-utilisateur disposant de tous les pouvoirs
Creation/suppression dutilisateur, de processus, de fichiers
82 / 251
Etat
desprit
Avant linstallation
Pendant linstallation
Apr`
es linstallation
S
ecurit
e Linux
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Introduction : pourquoi ?
83 /
Etat
desprit
Avant linstallation
Pendant linstallation
Apr`
es linstallation
Introduction : processus
La securite est un processus, elle depend du temps
Manipulations reguli`eres
Conserver ses syst`emes `a jour
S
ecurit
e Linux
86 / 251
S
ecurit
e Linux
87 /
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Etat
desprit
Avant linstallation
Pendant linstallation
Apr`
es linstallation
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Roadmap
Etat
desprit
Avant linstallation
Pendant linstallation
Apr`
es linstallation
Objectif
construire un Linux securise selon ses besoins
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
88 / 251
S
ecurit
e Linux
Etat
desprit
Avant linstallation
Pendant linstallation
Apr`
es linstallation
90 /
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Etat
desprit
Avant linstallation
Pendant linstallation
Apr`
es linstallation
Les partitions
Ne pas multiplier les OS sur une meme machine
a
Spoolers (mails, impressions), logs, ...
/var
nodev, nosuid,
noexec
/usr
/tmp
ro
nodev, nosuid,
noexec
/home
nodev, nosuid
/boot
ro
/usr/local
ro
Integrite
` verifier apr`es chaque telechargement, sur chaque CD
A
Ne fournit aucune garantie quant `a lorigine
Recalcule des MD5 par le pirate
Signatures numeriques
Garantie lorigine, lintegrite, etc...
91 / 251
nodev, nosuid
S
ecurit
e Linux
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Etat
desprit
Avant linstallation
Pendant linstallation
Apr`
es linstallation
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Minimisation (1/2)
Minimisation (2/2)
Installation
Se restreindre uniquement `a ce dont on a besoin
S
ecurit
e Linux
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Etat
desprit
Avant linstallation
Pendant linstallation
Apr`
es linstallation
94 / 251
S
ecurit
e Linux
Etat
desprit
Avant linstallation
Pendant linstallation
Apr`
es linstallation
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
96 /
Etat
desprit
Avant linstallation
Pendant linstallation
Apr`
es linstallation
Durcissement
Vulnerabilites et patches
Securite multi-niveaux
Espace utilisateur : scripts restrictifs
S
ecurit
e Linux
97 / 251
S
ecurit
e Linux
98 /
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Etat
desprit
Avant linstallation
Pendant linstallation
Apr`
es linstallation
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Surveiller
Etat
desprit
Avant linstallation
Pendant linstallation
Apr`
es linstallation
Accounting
Types de surveillances
Les outils
Support au niveau noyau
Audit
Analyser le comportement du syst`eme
outils userland
accton : active/desactive laccounting
lastcomm : informations sur une commande passee
sa : resume de laccounting
S
ecurit
e Linux
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
99 / 251
S
ecurit
e Linux
Etat
desprit
Avant linstallation
Pendant linstallation
Apr`
es linstallation
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Logging (1/2)
100 /
Etat
desprit
Avant linstallation
Pendant linstallation
Apr`
es linstallation
Logging (2/2)
Serveur de logs distant (RFC 3164)
Outils
Deux services de journalisation
Clients
/etc/syslog.conf : *.* @ip serveur
Relais de logs
Autoriser les connexions vers 514/UDP
Option de configuration : ? ? ? (BSD), -h (linux)
Double classification
S
ecurit
e Linux
102 /
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Etat
desprit
Avant linstallation
Pendant linstallation
Apr`
es linstallation
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Surveillance active
Etat
desprit
Avant linstallation
Pendant linstallation
Apr`
es linstallation
Touches finales
Snapshot
Commandes : last, ac
S
ecurit
e Linux
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
103 / 251
Etat
desprit
Avant linstallation
Pendant linstallation
Apr`
es linstallation
S
ecurit
e Linux
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
104 /
Lutilisateur
Fichiers et inodes
PAM
Contr
ole individuel des droits UGO
S
ecurit
e Linux
105 / 251
S
ecurit
e Linux
108 /
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Lutilisateur
Fichiers et inodes
PAM
Fichiers et inodes
Lutilisateur
Fichiers et inodes
PAM
Abstraction commune `
a bcp de syst`emes de fichiers (VFS)
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
110 / 251
S
ecurit
e Linux
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Lutilisateur
Fichiers et inodes
PAM
111 /
Lutilisateur
Fichiers et inodes
PAM
Fichiers et attributs
Au-del`a de linode
Chaque syst`eme de fichiers propose ses propres attributs
Les attributs influencent le comportement du syst`eme
ext2/ext3
Reserve `
a root
S
ecurit
e Linux
112 / 251
S
ecurit
e Linux
113 /
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Lutilisateur
Fichiers et inodes
PAM
Lutilisateur
Fichiers et inodes
PAM
Principe de PAM
Fonctionnement
Mecanisme flexible dauthentification des utilisateurs
Chargement `
a la demande
S
ecurit
e Linux
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
115 / 251
S
ecurit
e Linux
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Lutilisateur
Fichiers et inodes
PAM
Configuration
116 /
Lutilisateur
Fichiers et inodes
PAM
Fichiers / repertoire
S
ecurit
e Linux
117 / 251
S
ecurit
e Linux
118 /
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Lutilisateur
Fichiers et inodes
PAM
Lutilisateur
Fichiers et inodes
PAM
# acc`
es restreint `
a root si /etc/nologin pr
esent
auth required pam nologin.so
# controle et initialise les variables denv.
auth required pam env.so
# auth Unix classique
auth required pam unix.so nullok secure
# d
efaut : bloque lacc`
es aux comptes expir
es
account required pam unix.so
# d
efaut : quelques logs ...
session required pam unix.so
# affiche le MotD si auth==succ`
es
session optional pam motd.so
# "format" du mot de passe
password required pam unix.so nullok obscure min=4 max=8 md5
S
ecurit
e Linux
119 / 251
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
S
ecurit
e Linux
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Lutilisateur
Fichiers et inodes
PAM
C
a marche comment . . . en dessin
120 /
Sensibilit
e
Utilisation du syst`
eme
Applications sensibles
Fichier de conf
Application X
Authentification
+
Conversation
X
X
X
X
X
X
X
X
X
PAM
Service
auth
S
ecurit
e Linux
a.so
b.so
account
b.so
d.so
password
c.so
b.so
session
a.so
e.so
auth ...
auth ...
auth ...
account ...
account ...
password ...
password ...
session ...
session ...
a.so
b.so
c.so
b.so
d.so
c.so
b.so
a.so
e.so
c.so
121 / 251
S
ecurit
e Linux
124 /
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Sensibilit
e
Utilisation du syst`
eme
Configuration generale
Sensibilit
e
Utilisation du syst`
eme
Mesures externes
Principes de precaution
Calibrer precisement les privil`eges
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
126 / 251
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Sensibilit
e
Utilisation du syst`
eme
chroot() howto
127 /
Param`
etres noyau
Netfilter
Les services
La pile IP
Construire sa prison
sysctl -w <cl
e=val> : changer une valeur de cle
sysctl -p [fichier] : lit un fichier de conf
sysctl -a : affiche toutes les cles
strace -eopen
S
ecurit
e Linux
S
ecurit
e Linux
128 / 251
S
ecurit
e Linux
131 /
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Param`
etres noyau
Netfilter
Les services
Filtrage de paquets
Param`
etres noyau
Netfilter
Les services
Netfilter
3 tables . . . do`
u le nom iptables ;-)
Firewall stateful
Hooks `a differents points du voyage dun paquet
2 types de chanes
Evaluateur
== table IP
Target
Sa table
Sa chane
Un pattern (motif de reconnaissance pour un paquet)
Une cible (target) : la decision
S
ecurit
e Linux
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
S
ecurit
e Linux
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Param`
etres noyau
Netfilter
Les services
Enigme
134 /
Param`
etres noyau
Netfilter
Les services
Question
Pourquoi, meme si on bloque avec le pare-feu toutes les connexions, peuton encore sniffer sur le reseau ?
-r :
-au
-l :
-p :
Reponse
table de routage
| -at : connexions en cours et serveurs en ecoute
sockets en ecoute
processus associe (non standard)
Parce que la capture du paquet dans le noyau se fait avant quil soit
transmis au pare-feu
S
ecurit
e Linux
135 / 251
S
ecurit
e Linux
137 /
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Durcir Linux
Durcir le syst`
eme
Durcir les applications
Durcir le r
eseau
Param`
etres noyau
Netfilter
Les services
Param`
etres noyau
Netfilter
Les services
Outils
2 modes de demarrage
Monitoring
S
ecurit
e Linux
138 / 251
S
ecurit
e Linux
PaX
WX
SSP
Grsec
139 /
PaX
WX
SSP
Grsec
Pr
esentation
Historique
Non ex
ecution
ASLR
PaX
Cinqui`eme partie V
S
ecurit
e Linux
140 / 251
S
ecurit
e Linux
143 /
PaX
WX
SSP
Grsec
Pr
esentation
Historique
Non ex
ecution
ASLR
PaX
WX
SSP
Grsec
Historique
Pr
esentation
Historique
Non ex
ecution
ASLR
PAGEEXEC
Emuler
une semantique de pages non executables sur les processeurs qui
ne le supportent pas (en particulier les processeurs x86).
PAGEEXEC
Les pages `a rendre non executables sont marquees avec le bit
superviseur
Lutilisation dune telle page provoque une faute de pages qui est
interceptee par le gestionnaire de fautes de pages
S
ecurit
e Linux
145 / 251
PaX
WX
SSP
Grsec
S
ecurit
e Linux
Pr
esentation
Historique
Non ex
ecution
ASLR
147 /
PaX
WX
SSP
Grsec
SEGMEXEC
Pr
esentation
Historique
Non ex
ecution
ASLR
SEGMEXEC
SEGMEXEC
Utilise la segmentation pour obtenir des pages non executables
Separe le segment de code utilisateur du segment de donnees
utilisateur
Utilise le VMA mirroring pour que les pages de code soient aussi
disponible dans le segment de donnees
Inconv
enient : complexe `a implementer, reduit lespace dadressage `a
une taille de 1,5 Go
S
ecurit
e Linux
148 / 251
S
ecurit
e Linux
149 /
PaX
WX
SSP
Grsec
Pr
esentation
Historique
Non ex
ecution
ASLR
PaX
WX
SSP
Grsec
SEGMEXEC
Pr
esentation
Historique
Non ex
ecution
ASLR
SEGMEXEC
Avec SEGMEXEC :
Sans SEGMEXEC :
# cat /proc/self/maps
08048000-0804c000 r-xp
0804c000-0804d000 rw-p
0804d000-0806e000 rw-p
b7dd4000-b7dd5000 rw-p
b7dd5000-b7ef8000 r-xp
b7ef8000-b7efa000 r--p
b7efa000-b7efb000 rw-p
b7efb000-b7eff000 rw-p
b7f14000-b7f15000 r-xp
b7f15000-b7f2f000 r-xp
b7f2f000-b7f30000 r--p
b7f30000-b7f31000 rw-p
bfcf8000-bfd0f000 rw-p
00000000
00003000
0804d000
b7dd4000
00000000
00123000
00125000
b7efb000
b7f14000
00000000
00019000
0001a000
bfcf8000
08:03
08:03
00:00
00:00
08:03
08:03
08:03
00:00
00:00
08:03
08:03
08:03
00:00
1603665
1603665
0
0
1327889
1327889
1327889
0
0
1328128
1328128
1328128
0
# cat /proc/self/maps
110d4000-110d9000 r-xp
110d9000-110da000 r--p
110da000-110db000 rw-p
110db000-11106000 rw-p
4fbae000-4fbaf000 rw-p
4fbaf000-4fcdc000 r-xp
4fcdc000-4fcde000 r--p
4fcde000-4fcdf000 rw-p
4fcdf000-4fce3000 rw-p
4fce6000-4fce7000 r-xp
4fce7000-4fd01000 r-xp
4fd01000-4fd02000 r--p
4fd02000-4fd03000 rw-p
5d380000-5d396000 rw-p
710d4000-710d9000 r-xp
afbaf000-afcdc000 r-xp
afce6000-afce7000 r-xp
afce7000-afd01000 r-xp
/bin/cat
/bin/cat
[heap]
/lib/libc-2.6.1.so
/lib/libc-2.6.1.so
/lib/libc-2.6.1.so
[vdso]
/lib/ld-2.6.1.so
/lib/ld-2.6.1.so
/lib/ld-2.6.1.so
[stack]
S
ecurit
e Linux
150 / 251
PaX
WX
SSP
Grsec
00000000
00004000
00005000
110db000
4fbae000
00000000
0012d000
0012f000
4fcdf000
4fce6000
00000000
00019000
0001a000
5d380000
00000000
00000000
4fce6000
00000000
08:01
08:01
08:01
00:00
00:00
08:01
08:01
08:01
00:00
00:00
08:01
08:01
08:01
00:00
08:01
08:01
00:00
08:01
868139
868139
868139
0
0
822891
822891
822891
0
0
822916
822916
822916
0
868139
822891
0
822916
/lib/libc-2.6.1.so
/lib/libc-2.6.1.so
/lib/libc-2.6.1.so
[vdso]
/lib/ld-2.6.1.so
/lib/ld-2.6.1.so
/lib/ld-2.6.1.so
[stack]
/bin/cat
/lib/libc-2.6.1.so
[vdso]
/lib/ld-2.6.1.so
S
ecurit
e Linux
Pr
esentation
Historique
Non ex
ecution
ASLR
151 /
PaX
WX
SSP
Grsec
MPROTECT (1/2)
/bin/cat
/bin/cat
/bin/cat
[heap]
Pr
esentation
Historique
Non ex
ecution
ASLR
MPROTECT (2/2)
MPROTECT
Empeche quune zone de memoire puisse etre accessible `a la fois en
execution et en ecriture
Exception pour les fichiers ELF avec relocation (entree
DT TEXTREL dans la table dynamique)
S
ecurit
e Linux
152 / 251
S
ecurit
e Linux
153 /
PaX
WX
SSP
Grsec
Pr
esentation
Historique
Non ex
ecution
ASLR
PaX
WX
SSP
Grsec
Pr
esentation
Historique
Non ex
ecution
ASLR
Objectif
Empecher toute adresse ecrite en dur davoir un sens (complique la
fiabilisation des exploits).
ASLR
Randomisation de la pile utilisateur (RANDUSTACK)
Randomisation des zones mmap()ees (RANDMMAP)
Randomisation de lexecutable (RANDEXEC)
Necessite dutiliser des binaires de type ET DYN pour profiter
pleinement de lASLR
Possibilite dutiliser RANDEXEC (cest plus une preuve de concept
neanmoins)
S
ecurit
e Linux
155 / 251
PaX
WX
SSP
Grsec
S
ecurit
e Linux
Pr
esentation
Historique
Non ex
ecution
ASLR
156 /
PaX
WX
SSP
Grsec
Pr
esentation
Principe
WX
S
ecurit
e Linux
157 / 251
S
ecurit
e Linux
160 /
PaX
WX
SSP
Grsec
PaX
WX
SSP
Grsec
Pr
esentation
Principe
WX
Propolice/SSP
Principe
Reordonne les variables locales pour placer les buffers apr`es les
pointeurs de mani`ere `a eviter leur corruption
Copie les pointeurs donnes en argument dans une zone de memoire
situee avant les variables locales
Options du compilateur : -fstack-protector,
-fno-stack-protector, -fstack-protector-all,
-fno-stack-protector-all
S
ecurit
e Linux
162 / 251
S
ecurit
e Linux
PaX
WX
SSP
Grsec
164 /
PaX
WX
SSP
Grsec
Propolice/SSP
Pr
esentation
Historique
D
etection
Pr
evention
Confinement
Grsec
Detection
Prevention
Confinement
S
ecurit
e Linux
Inclus PaX
Contient un syst`eme RBAC (Role-Based Access Control)
165 / 251
S
ecurit
e Linux
168 /
PaX
WX
SSP
Grsec
Pr
esentation
Historique
D
etection
Pr
evention
Confinement
PaX
WX
SSP
Grsec
Historique
Pr
esentation
Historique
D
etection
Pr
evention
Confinement
Detection
Audit (exec, chdir, mount, umount, IPC)
S
ecurit
e Linux
170 / 251
PaX
WX
SSP
Grsec
S
ecurit
e Linux
Pr
esentation
Historique
D
etection
Pr
evention
Confinement
172 /
PaX
WX
SSP
Grsec
Logs renforces
Pr
esentation
Historique
D
etection
Pr
evention
Confinement
Detection
Prevention
Utilisation de PaX
Durcissement de certains appels syst`emes : chroot(), ptrace(),
mmap(), link(), symlink(), sysctl()
S
ecurit
e Linux
173 / 251
Randomisation des IPID, RPC XID, ports privilegies utilises dans les
RPC, PID
S
ecurit
e Linux
175 /
PaX
WX
SSP
Grsec
Pr
esentation
Historique
D
etection
Pr
evention
Confinement
PaX
WX
SSP
Grsec
Durcir le syst`eme
Pr
esentation
Historique
D
etection
Pr
evention
Confinement
Prevention
Module netfilter furtif repondant sur les ports libres pour ralentir les
scanners de ports
Amelioration de chroot : rend les appels syst`emes conscients du
chroot, chdir() automatique, capabilities restreintes
Restriction des fuites dinformations sur ladressage memoire et
anti-bruteforce
S
ecurit
e Linux
Confinement
TPE (Trusted Path Execution) : les utilisateurs ne peuvent executer
que des binaires possedes par root dans des repertoires inaccessibles
en ecriture pour tout le monde
RBAC (Role Base Access Control) : meme root peut etre restreint
176 / 251
S
ecurit
e Linux
Gentoo Hardened
OpenBSD
178 /
Gentoo Hardened
OpenBSD
Gentoo Hardened
Sixi`eme partie VI
Unix securises
S
ecurit
e Linux
179 / 251
S
ecurit
e Linux
181 /
Gentoo Hardened
OpenBSD
Pr
esentation
Fonctionnalit
es
Gentoo Hardened
OpenBSD
OpenBSD
Pr
esentation
Fonctionnalit
es
Fonctionnalites
Portable et standard
Syst`eme gratuit avec une licence tr`es libre
Cryptographie omnipresente
Supporte 17 plateformes materielles
Configuration par defaut bien faite (activation explicite des services
par exemple)
S
ecurit
e Linux
Gentoo Hardened
OpenBSD
184 / 251
S
ecurit
e Linux
Pr
esentation
Fonctionnalit
es
Gentoo Hardened
OpenBSD
Securite
186 /
Pr
esentation
Fonctionnalit
es
Cryptographie
IPSEC
Kerberos
Generateurs de nombres aleatoires forts, transformations et fonctions
de hachage cryptographiques integrees, support pour du materiel
cryptographique
S
ecurit
e Linux
187 / 251
S
ecurit
e Linux
188 /
Gentoo Hardened
OpenBSD
Pr
esentation
Fonctionnalit
es
Gentoo Hardened
OpenBSD
Divers
Pr
esentation
Fonctionnalit
es
Kernel flags
Ils permettent dajouter des permissions sur les fichiers. Les flags les plus
courants sont :
S
ecurit
e Linux
Gentoo Hardened
OpenBSD
189 / 251
Pr
esentation
Fonctionnalit
es
Gentoo Hardened
OpenBSD
Securelevels (1/2)
190 /
Pr
esentation
Fonctionnalit
es
Securelevels (2/2)
S
ecurit
e Linux
S
ecurit
e Linux
191 / 251
S
ecurit
e Linux
192 /
Gentoo Hardened
OpenBSD
Chroot
Apache
PHP
Pr
esentation
Fonctionnalit
es
Systrace
Durcissement de services
S
ecurit
e Linux
193 / 251
Chroot
Apache
PHP
S
ecurit
e Linux
194 /
Chroot
Apache
PHP
Pr
esentation
Sortir de prison
Chroot
Pr
esentation
Sortir de prison
Avec mount
Si on est root, on peut creer des syst`emes de fichiers et les monter
dans le chroot
Avec le pseudo syst`eme de fichiers devpts on peut injecter du code
dans les terminaux (exemple : un terminal admin)
S
ecurit
e Linux
197 / 251
S
ecurit
e Linux
199 /
Chroot
Apache
PHP
Chroot
Apache
PHP
Pr
esentation
Sortir de prison
Pr
esentation
Sortir de prison
Avec fchdir
Appel syst`eme permettant de changer le repertoire courant pour un
descripteur de fichier ouvert sur un autre repertoire
Avec ptrace
En tant quutilisateur, il peut sattacher `a nimporte quel processus
de meme UID que lui
S
ecurit
e Linux
200 / 251
Chroot
Apache
PHP
S
ecurit
e Linux
201 /
Chroot
Apache
PHP
Pr
esentation
Sortir de prison
Pr
esentation
Sortir de prison
Conclusion
S
ecurit
e Linux
chdir("/foo/bar");
chroot("/foo/bar");
setuid(non zero UID);
202 / 251
S
ecurit
e Linux
203 /
Chroot
Apache
PHP
Pr
esentation
Configuration
Modsecurity
Chroot
Apache
PHP
Presentation et historique
Directory traversal
http://www.example.com/cgi-bin/lame.cgi?file=../../../../etc/p
Null byte
http://www.example.com/cgi-bin/lame.cgi?page=../etc/passwd%00h
Buffer overflows
http://www.example.com/cgi-bin/lame.cgi?type=AAAAAAAAAAAAAAAAA
S
ecurit
e Linux
206 / 251
Chroot
Apache
PHP
S
ecurit
e Linux
Pr
esentation
Configuration
Modsecurity
207 /
Chroot
Apache
PHP
Pr
esentation
Configuration
Modsecurity
S
ecurit
e Linux
Pr
esentation
Configuration
Modsecurity
209 / 251
S
ecurit
e Linux
210 /
Chroot
Apache
PHP
Pr
esentation
Configuration
Modsecurity
Chroot
Apache
PHP
Modsecurity
Pr
esentation
Configuration
Modsecurity
Utilisation
Open source
Projet demarre en 2002
S
ecurit
e Linux
212 / 251
Chroot
Apache
PHP
Pr
esentation
Configuration
Modsecurity
213 /
Chroot
Apache
PHP
Fonctionnalites interessantes
Pr
esentation
Configuration
Modsecurity
3 modes de fonctionnement :
Just-in-time patching
Positive security
Negative security
S
ecurit
e Linux
S
ecurit
e Linux
214 / 251
S
ecurit
e Linux
215 /
Chroot
Apache
PHP
Pr
esentation
Configuration
Modsecurity
Chroot
Apache
PHP
Just-in-time patching
Pr
esentation
Configuration
Modsecurity
Positive security
Meme chose que le just-in-time patching
Mais chaque param`etre doit etre defini
Besoin dune periode dapprentissage
<LocationMatch "^/web/bin/auth/auth.dll$">
SecDefaultAction "log,deny,t:lowercase"
SecRule REQUEST_METHOD !POST
SecRule ARGS:destination " URL" "t:urlDecode"
SecRule ARGS:flags "[0-9]{1,2}"
SecRule ARGS:username "[0-9a-zA-Z].{256,}"
SecRule ARGS:password ".{256,}"
SecRule ARGS:SubmitCreds "!Log.On"
SecRule ARGS:trusted "!(0|4)"
</LocationMatch>
S
ecurit
e Linux
216 / 251
Chroot
Apache
PHP
S
ecurit
e Linux
Pr
esentation
Configuration
Modsecurity
217 /
Chroot
Apache
PHP
Negative security
Configuration
Suhosin
Configuration
register globals
Desactive depuis PHP 4.2
Tr`es dangereux
Exemple :
Fonctionnalites anti-evasion
S
ecurit
e Linux
<?
i f ( i s s e t ( $ admin ) == f a l s e ) {
d i e T h i s page i s f o r t h e a d m i n i s t r a t o r o n l y ! ;
}
?>
218 / 251
S
ecurit
e Linux
221 /
Chroot
Apache
PHP
Chroot
Apache
PHP
Configuration
Suhosin
Configuration
Configuration
Suhosin
Configuration
enable dl
PHP peut charger dynamiquement des modules avec dl()
Exemple :
http://www.example.com/view.php?what=index.php
<? i n c l u d e ( $ what ) ?>
S
ecurit
e Linux
222 / 251
Chroot
Apache
PHP
S
ecurit
e Linux
223 /
Chroot
Apache
PHP
Configuration
Suhosin
Configuration
Configuration
Suhosin
Configuration
expose php
Il est inutile dafficher la version de PHP utilisee
Presence deaster eggs :
disable functions
PHP autorise la desactivation de certaines fonctions
Credits :
http://www.example.com/index.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
Logo :
http://www.example.com/index.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
S
ecurit
e Linux
224 / 251
S
ecurit
e Linux
225 /
Chroot
Apache
PHP
Chroot
Apache
PHP
Configuration
Suhosin
Configuration
Configuration
Suhosin
Configuration
Par defaut les erreurs vont dans les logs dApache, il est plus utile de
creer un fichier par application
Mais desactiver laffichage des erreurs sur les pages web en utilisant
display errors = Off et display startup errors = Off
S
ecurit
e Linux
226 / 251
Chroot
Apache
PHP
S
ecurit
e Linux
227 /
Chroot
Apache
PHP
Configuration
Suhosin
Configuration
Configuration
Suhosin
Configuration
Limites
Limiter la memoire que peut consommer un script avec
memory limit
Uploads
Desactiver les uploads si besoin (file uploads = Off)
Limiter la taille avec upload max filesize
S
ecurit
e Linux
228 / 251
S
ecurit
e Linux
229 /
Chroot
Apache
PHP
Chroot
Apache
PHP
Configuration
Suhosin
Configuration
Configuration
Suhosin
Suhosin
Safe mode
Rajoute certaines restrictions pour tenter dameliorer la securite, par
exemple :
Chaque fichier doit avoir le meme UID que celui du script qui
lutilise (possibilite davoir le test uniquement sur le GID)
Les variables denvironnement peuvent etre protegees en ecriture
Seuls les binaires contenus dans un certain repertoire peuvent etre
executes
S
ecurit
e Linux
Compose :
Dun patch renforcant le cur de PHP
Dune extension pour PHP
230 / 251
Chroot
Apache
PHP
S
ecurit
e Linux
Configuration
Suhosin
232 /
Postfix
Vsftpd
Fonctionnalites
Patch :
Protection bas-niveau
Debordement de tampons
Chanes de format
Extension :
Rajout de fonctionnalites (exemple : fonctions cryptographiques)
Protection `
a lexecution (exemple : chiffrement des cookies,
protection contre les HTTP Response Splitting)
Protection des sessions
Peut filtrer les entrees
Fonctionnalites de logs avancees
S
ecurit
e Linux
233 / 251
S
ecurit
e Linux
234 /
Postfix
Vsftpd
Pr
esentation
Architecture
S
ecurit
e
Postfix
Vsftpd
Postfix
Pr
esentation
Architecture
S
ecurit
e
Architecture
Typiquement unix
Beaucoup de petits programmes independants qui neffectuent
quune seule tache
Un serveur principal charge de lancer les autres programmes `a la
demande
Remplacant de sendmail
A pour objectif detre facile `a administrer, configurable et securise
Compatible avec les programmes ecrits pour sendmail
Developpe par Wietse Venema (Coroners Toolkit, TCP wrapper,
SATAN)
S
ecurit
e Linux
237 / 251
Postfix
Vsftpd
S
ecurit
e Linux
Pr
esentation
Architecture
S
ecurit
e
239 /
Postfix
Vsftpd
Architecture
Pr
esentation
Architecture
S
ecurit
e
Securite (1/2)
trivial-rewrite(8)
|
\
V
Network -> qmqpd(8) --> cleanup(8) -> incoming
/
pickup(8) <- maildrop
|
V
Local -> sendmail(1) -> postdrop(1)
Network -> smtpd(8)
S
ecurit
e Linux
240 / 251
S
ecurit
e Linux
242 /
Postfix
Vsftpd
Pr
esentation
Architecture
S
ecurit
e
Postfix
Vsftpd
Securite (2/2)
Pr
esentation
S
ecurit
e
Vsftpd
File dattente :
Serveur ftp en GPL
Securise et rapide
Utilise par Redhat, OpenBSD, Debian, Suse et beaucoup dautres
Developpe par Chris Evans, chercheur de vulnerabilites employe par
Google
S
ecurit
e Linux
243 / 251
Postfix
Vsftpd
Pr
esentation
S
ecurit
e
246 /
Postfix
Vsftpd
Secure by design
Pr
esentation
S
ecurit
e
Secure by implementation
S
ecurit
e Linux
S
ecurit
e Linux
248 / 251
S
ecurit
e Linux
249 /
Unix
Neuvi`eme partie IX
Linux
Permet dadapter la securite `a ses besoins
Poste de travail, serveur, bastion, passerelle, . . .
S
ecurit
e Linux
250 / 251
S
ecurit
e Linux
251 /