Вы находитесь на странице: 1из 62

SCURIT DES SYSTMES DEXPLOITATION C.

BENZAID
Scurit de Linux

Scurit de Linux

Linux est devenu un des systmes dexploitation les plus populaires De nombreuses fonctionnalits impliquent plus de possibilits dattaque Pouvoir crer des systmes Linux hautement scuriss Passer en revue
Les contrles daccs discrtionnaires Les vulnrabilits et exploits typiques dans Linux Meilleures pratiques pour attnuer ces menaces Nouvelles amliorations au modle de scurit de Linux

Modle de Scurit de Linux


Modle de scurit traditionnel de Linux est :


Les utilisateurs et les processus avec les privilges root peuvent faire nimporte quoi Les autres comptes peuvent faire beaucoup moins

Do les attaquants cherchent obtenir les privilges root Peut excuter des systmes Linux robustes et scuriss Lessentiel du problme est lutilisation des contrles daccs discrtionnaires (Discritionary Acces Control, DAC)

Transactions de la Scurit de Linux

Scurit du Systme de Fichiers


Sous Linux, tout est fichier


Ex.

Mmoire, priphriques, tubes nomms, et dautres ressources systme

Cest pourquoi la scurit du systme de fichiers est si importante

Utilisateurs et Groupes

Un compte utilisateur (user)


reprsente quelquun capable dutiliser les fichiers associ la fois aux personnes et aux processus

Ex. lpd (Linux Printer Daemon) sexcute en tant quutilisateur lp

Un compte groupe (group)


est une liste de comptes utilisateurs Les utilisateurs ont un groupe principal spcifi dans /etc/passwd Ils peuvent aussi appartenir dautres groupes

Les utilisateurs et les groupes ne sont pas des fichiers

Utilisateurs et Groupes

Les dtails de lutilisateur sont conservs dans /etc/passwd Des dtails supplmentaires sur le groupe se trouvent dans /etc/group Les dtails relatifs au mot de passe crypt de lutilisateur se trouvent dans /etc/shadow Commandes
useradd, usermod, userdel groupadd, groupmod, groupdel passwd, chage, chown, chgrp

Structure de /etc/passwd

1. Nom du compte de lutilisateur


Utilis

lorsque lutilisateur se connecte Sa longueur doit tre comprise entre 1 et 32 caractres


2. Mot de passe
Un

caractre x indique que le mot de passe crypt est sauvegard dans le fichier /etc/shadow

Structure de /etc/passwd

3. ID Utilisateur (UID)
Chaque

utilisateur doit tre assign un UID UID 0 (zro) est rserv pour lutilisateur root UIDs 1-499 sont rservs par le systme pour des comptes systmes et administratifs
Ex.

mail, lp, daemon, etc.

Structure de /etc/passwd

4. ID Groupe (GID)
ID

du groupe primaire Sauvegard dans le fichier /etc/group


5. Commentaire
Informations

sur lutilisateur permet de rajouter des informations supplmentaires sur lutilisateur, telles que son nom rel, son Tel, etc. Ce champ est utilis par la commande finger

Structure de /etc/passwd

6. Rpertoire de connexion Chemin absolu du rpertoire dans lequel lutilisateur se trouve aprs stre connect au systme Si ce rpertoire nexiste pas, alors le rpertoire de connexion sera la racine (i.e. /) 7. Commande/Shell Chemin absolu dune commande (ou Shell) excute aprs connexion au systme Gnralement, cest le Shell

Structure de /etc/group

1. Nom du groupe 2. Mot de passe


Gnralement,

non utilis. Il est donc vide Il peut stocker un mot de passe crypt Utile pour mettre en uvre des groupes privilgis

Structure de /etc/group

3. ID Groupe (GID)
Chaque

utilisateur doit tre assign un GID

4. Liste groupe
Liste

des noms dutilisateurs qui sont membres du groupe Les noms des utilisateurs doivent tre spars par des virgules

Structure de /etc/shadow

1. Nom de lutilisateur
Exactement

la mme entre que dans le fichier /etc/passwd

2. Mot de passe crypt


Une

entre nulle indique quun mot de passe nest pas demand (Dconseill) Une entre * indique que le compte a t dsactiv

Structure de /etc/shadow

3. Date de la dernire modification du mot de passe


En

nombre de jours depuis le 1er Janvier 1970

4. Nombre de jours avant que le mot de passe puisse

tre modifi
0

indique quil peut tre chang nimporte quel moment

Structure de /etc/shadow

5. Nombre de jours avant que le mot de passe doive

tre modifi
99999

indique que lutilisateur peut garder son mot de passe inchang pendant une longue dure

6. Nombre de jours durant lesquels lutilisateur est

prvenu de lexpiration de son mot de passe

Structure de /etc/shadow

7. Nombre de jours entre lexpiration du mot de

passe et la fermeture du compte 8. Date de fermeture du compte


En

nombre de jours depuis le 1er Janvier 1970 une utilisation future possible

9. Champ rserv
pour

Permissions sur les Fichiers


Chaque fichier a un propritaire et un groupe Les permissions sont attribues par le propritaire
lecture,

criture, excution propritaire, groupe, autres reprsentes par un vecteur de quatre valeurs octales

Seulement le propritaire et root peuvent modifier les permissions


Ce

privilge ne doit tre ni dlgu, ni partag Commande : chmod

Interprtation des Permissions


Type daccs Lecture Ecriture Fichier Si le contenu du fichier peut tre lu Si lutilisateur ou le processus peut changer son contenu Repertoire Si le contenu du rpertoire peut tre list Si lutilisateur ou le processus peut modifier le contenu du rpertoire en crant, renommant et supprimant des fichiers dans le rpertoire Si lutilisateur ou le processus peut accder au rpertoire

Execution

Si le fichier peut tre excut

Bit Sticky

A lorigine, utiliser pour verrouiller les fichiers dans la mmoire Maintenant, utiliser sur les rpertoires pour limiter les suppressions

Si initialiser, il faut tre le propritaire du fichier ou du rpertoire pour pouvoir supprimer Les autres utilisateurs ne peuvent pas supprimer mme sils ont le droit dcriture

Initialiser en utilisant chmod avec le drapeau +t (Octal:1000)


chmod +t Directory ls Directory -> le drapeau t ou T

Les permissions ne sont pas hrites par les rpertoires fils

Bits SetUID et SetGID


Le bit SetUID signifie que le programme sexcute comme propritaire


Peu

importe qui lexcute Initialiser en utilisant chmod avec le drapeau u+s (Octal: 4000)

Le bit SetGID signifie sexcute comme un membre du groupe dont il est propritaire
Encore

une fois, peu importe qui lexcute Initialiser en utilisant chmod avec le drapeau g+s (Octal: 2000)

Bits SetUID et SetGID


Sexcuter comme = sexcuter avec les mmes privilges comme Trs dangereux sils sont initialiss sur des fichiers appartenant root ou dautres comptes et groupes privilgis
Utiliser

uniquement sur des fichiers excutables, pas sur des scripts Shell

SetGID et les Rpertoires


SetUID na aucun effet sur les rpertoires SetGID provoque que tout fichier cr dans un rpertoire hrite le groupe du rpertoire Utile si les utilisateurs appartiennent dautres groupes et rgulirement crent des fichiers partager avec les autres membres de ces groupes
Au

lieu de changer manuellement son groupe

Permissions sur les Fichiers


Propritaire Groupe Autres

SUID

SUID SGID +x

SGID Sticky +x bit

Sticky bit +x

ID Utilisateur Effectif

Chaque processus a trois identits


UID Rel (Real User ID, RUID)


Le mme que lUID du parent Utilis pour dterminer quel utilisateur a lanc le processus

UID Effectif (Effective User ID, EUID)


Depuis le bit SUID sur le fichier qui sexcute, ou lappel systme Dtermine les permissions du processus

Accs aux fichiers et ressources partages


UID Sauvegard (Saved User ID, SUID)


Afin que lancien EUID soit restaur

ID Groupe Rel et ID Groupe Effectif, utiliss de la mme faon

Espace Noyau vs Utilisateur


Espace noyau

reprsente la mmoire utilise par le noyau Linux et ses modules chargeables (Ex. Pilotes de priphriques) reprsente la mmoire utilise par tous les autres processus

Espace utilisateur

Puisque le noyau Linux applique DAC et lisolation entre lespace noyau et utilisateur
Lespace noyau nest jamais swapp sur le disque Seulement root peut charger et dcharger les modules du noyau

Vulnrabilits de Linux

Vulnrabilits de Linux

Les installations par dfaut de Linux (non patches et non scurises) sont vulnrables
Buffer

overflows Race conditions Abus des programmes "SetUID root" Dni de Service (DoS) Vulnrabilits des applications Web Attaques rootkit

Vulnrabilits de SetUID root


Un programme setuid root sexcute comme root


Peu importe qui lexcute

Utiliser pour donner aux utilisateurs non privilgis laccs aux ressources privilgies Doit tre programm avec prudence Sil peut tre exploit d un bug logiciel

Peut permettre des utilisateurs non privilgis de lutiliser pour manier des privilges root non-autoriss

Les distributions actuelles minimisent les programmes setuid-root Les attaquants systme continuent les rechercher

Rootkits

Permettre lattaquant de brouiller ses pistes Si installer avec succs avant la dtection, il est trs difficile trouver et supprimer A lorigine : des collections de commandes pirates

Fichiers, rpertoires, processus dattaquant cachs

Maintenant : utilisent des modules chargeables du noyau (Loadable Kernel Modules, LKMs)
Interceptant les appels systme dans lespace noyau Cachant lattaquant de lutilisateur

Peuvent tre dtects avec chkrootkit Engendrent la reconstruction du systme

Durcissement de Linux

Durcissement du Systme Linux


Cela se fait au niveau systme dexploitation et applications Les tapes gnralises pour le durcissement du systme Linux
Planification

prliminaire Scurit physique du systme Installation du systme dexploitation Scurisation du systme de fichiers local Configuration et dsactivation des services

Durcissement du Systme Linux


Les tapes gnralises pour le durcissement du systme Linux (Suite )


Scurisation

du compte root Authentification des utilisateurs et les attributs des comptes utilisateurs Scurisation de lauthentification distante Installation de surveillance continue du systme Sauvegardes (Backups)

Installation de lOS

La scurit commence avec linstallation du systme dexploitation Spcialement, quel logiciel est excut?
Puisque

les applications inutilises risquent dtre laisses dans un tat par dfaut, non-durci et non patch X-Window, Services RPC, R-services, inetd, SMTP daemons, telnet, etc.

Gnralement, ils ne devraient pas excuter


Systme

Installation de lOS

Avoir une certaine configuration initiale du systme


Dfinir

le mot de passe root Crer un compte utilisateur non-root Dfinir un niveau de scurit global du systme Activer une politique simple de pare-feu hte Activer SELinux

Gestion des Patchs


Les applications serveurs installes doivent tre


configures

de manire scurise tenues jour avec les correctifs de scurit


Patching ne peut jamais gagner patch rat-race Avoir des outils pour tlcharger et installer automatiquement les mises jour de scurit
Ex.

Up2date (yum), YaST, apt-get Nexcuter pas les mises jour automatiques sur des systmes haute disponibilit sans tre testes

Contrles dAccs au Rseau


Libwrappers et TCP wrappers, un outil essentiel pour contrler laccs


tcpd

avant de permettre la connexion un service, vrifie


Contrles

dfinis dans /etc/hosts.allow Contrles dfinis dans /etc/hosts.deny


Utilisation de iptables pour les rgles du pare-feu local


Utiliser

un filtre rseau solide (iptables) Fonctionnalit intgre dans Linux

Logiciel Anti-Virus

Historiquement, Linux tait considr non vulnrable aux virus Patching rapide est efficace contre les vers Mais les virus abusent les privilges utilisateurs Utilisateurs non-root ont moins de possibilits exploiter

Mais peuvent continuer consommer les ressources

La popularit croissante de Linux signifie plus dexploitations Donc, les Anti-virus deviennent plus importants

Plusieurs Anti-Virus commerciaux et gratuits pour Linux

Gestion des Utilisateurs


Les principes directeurs dans la scurit des comptes utilisateurs


Dfinir

avec prcaution les permissions sur les fichiers et rpertoires Utiliser les groupes pour diffrencier entre les rles Utiliser une extrme prudence dans loctroi/utilisation des privilges root

Grer les adhsions des utilisateurs aux groupes Dfinir des ges appropris aux mots de passe

Dlgation de Root

La commande su permet aux utilisateurs de sexcuter comme root


Soit

un Shell root ou une seule commande Doit fournir le mot de passe root

sudo permet aux utilisateurs de sexcuter comme root


Mais,

ncessite leur mot de passe, non pas le mot de passe root Fichier /etc/sudoers spcifient quelles sont les commandes autorises

Logging

Logs Linux utilisent soit syslogd ou syslog-NG


Ecrit les messages logs dans des fichiers log locaux/distants

syslog-NG souhaitable car il a :


Varit de sources/destinations de donnes log Un moteur de rgles beaucoup plus flexible configurer peut logger travers TCP qui peut tre crypt

Changer les configurations par dfaut de logging Gestion prudente des fichiers de log
Balancer le nombre et la taille des fichiers de log Faire la rotation des fichiers de log et supprimer les anciennes copies - logrotate

Scurit des Applications

Scurit des Applications


Un domaine vaste Plusieurs caractristiques de scurit sont implmentes de la mme faon travers diffrentes applications Sous-topic couverts
Sexcuter

comme utilisateur/groupe non-privilgi Sexcuter dans un chroot jail Modularit Cryptage Logging

Sexcuter comme utilisateur/groupe non-privilgi


Chaque processus sexcute comme certain utilisateur Extrmement important que lutilisateur ne soit pas root

Puisque nimporte quel bug peut compromettre le systme en entier

Peut ncessit les privilges root


Avoir un parent root ralisant la fonction privilgie Mais le service principal partir du fils non privilgi

Utilisateur/groupe utilis doit tre ddis


Identification plus facile des sources des messages de log

Sexcuter dans un chroot jail


chroot attribue un processus un sous-ensemble de /


Mappe

un / virtuel un autre rpertoire Rpertoires en dehors de chroot jail ne sont ni visibles, ni atteignables

Contient les effets des daemons compromis Difficile configurer et dpanner

Modularit

Les applications sexcutant comme un seul, large, multiobjectifs processus, peuvent tre
Plus difficiles tre excutes comme un utilisateur non privilgi Difficile localiser et fixer les bugs de scurit dans le source Difficile dsactiver les fonctionnalits non ncessaires

Donc, la modularit se prsente comme une caractristique importante


Fournissant une surface dattaque beaucoup plus petite

Ex. postfix vs sendmail, modules Apache

Cryptage

Lenvoi de logins et mots de passe ou des donnes dapplication sur les rseaux en texte clair les expose diverses tentatives dcoute du rseau Par consquent, de nombreuses applications de rseau supportent le chiffrement pour protger de telles donnes

Protocoles SSL et TLS de la bibliothque OpenSSL utiliss

Ncessit dutiliser ses propres certificats X.509


Peuvent tre gnrs/signs en utilisant la commande openssl Peuvent utiliser des CA commercial/propritaire/gratuit

Logging

Les applications peuvent tre configures pour logger nimporte quel niveau de dtail (debug rien) Un logging centralis (en utilisant syslog par exemple) peut tre utilis pour la cohrence Assurer lexistence de certaine forme de gestion de logging, telle que la rotation

SELinux

SELinux

est une implmentation puissante des contrles daccs obligatoires (Mandatory Control Access) pour Linux (NSA) Les DACs Linux continuent sappliquer, mais sils permettent laction, SELinux value cette action contre ses propres politiques de scurit Sujets sont des processus (excutent les cmds utilisateur) Actions sont des permissions Objets ne sont pas seulement des fichiers et rpertoires Pour grer la complexit, SELinux a :

"ce qui nest pas explicitement permis, est refus" des groupes de sujets, permissions, et objets

Contextes de Scurit

Chaque sujet et objet individuel dans SELinux est gouvern par un contexte de scurit, dfini par :

Utilisateur Utilisateur individuel (humain ou daemon)


SELinux maintient sa propre liste dutilisateurs Etiquettes utilisateur sur les sujets spcifient les privilges du compte Etiquettes utilisateur sur les objets spcifient leur propritaire Un utilisateur ne peut assumer quun seul rle la fois, peut transiter entre les rles seulement si et quand il est autoris le faire

Rle tel que un groupe, assum par les utilisateurs



Domaine (type) un sandbox compos dune combinaison de sujets et dobjets qui peuvent interagir entre eux

Ce modle est appel Type Enforcement (TE)

Contextes de Scurit : Exemples


Contexte de scurit dun sujet


~]$ ps -Z -C init LABEL system_u:system_r:init_t:s0

PID TTY 1 ? Domaine Rle Utilisateur

TIME CMD 00:00:01 init

Contextes de Scurit : Exemples


Contexte de scurit dun objet


~]$ ps -Z -d /tmp drwxrwxrwt . root root system_u:object_r:tmp_t:s0

/tmp Type Rle Utilisateur

Prise de Dcisions dans SELinux


Deux types de dcisions : Dcisions daccs


dterminent

si un sujet donn est autoris raliser une opration donne sur un objet donn doivent tre autorises par la politique de

Dcisions de transitions
Transitions

SELinux

Prise de Dcisions dans SELinux


Dcisions de transitions
Invocation

de processus dans des domaines diffrents de celui dans lequel le sujet-processus est en cours dexcution Domaine vi_t Domaine initrc_t
Editeur vi Processus init

Domaine sshd_t
Cmd ls Demon Serveur SSH Cration de processus avec transition de domaine

Cration de processus sans transition de domaine

Prise de Dcisions dans SELinux


Dcisions de transitions
Cration

dobjets dans des types (domaines) diffrents de leur rpertoire parent


/tmp, un rpertoire tmp_t

Domaine sort_t
Utilit sort
/tmp/sorted_res, un fichier tmp_t

Le rpertoire et le nouveau fichier ont le mme type

Cration de fichier sans transition de type /tmp, un rpertoire tmp_t

Domaine syslogd_t
Processus syslog
/tmp/log.tmp, un fichier syslog_tmp_t

Le rpertoire et le nouveau fichier ont des types diffrents

Cration de fichier avec transition de type

Contrle dAccs Bas-Rle (RBAC)


Les rgles spcifient les rles quun utilisateur puisse assumer Dautres rgles spcifient les conditions de transition dun rle vers un autre

Utilisateur warda Rle par dfaut

Utilisateur warda Rle Enseignante

Tche spciale Moyenne du semestre

Scurit Multi(Niveau, Catgorie) (MLS/MCS)


Plutt intressante pour les gouvernements, militaire, etc. Un niveau de scurit est compos :
Sensibilit
Exemple

(Sensitivity)

Non-classifi, limit, confidentiel, secret, top secret


Catgorie
Exemple

(Category)

Etudiants, enseignants, gestion

Scurit Multi(Niveau, Catgorie) (MLS/MCS)


Sensibilits
Hirarchiques

Catgories
Non

Niveau de scurit

hirarchiques Non tris Comme un ensemble


Catgories

Scurit Multi(Niveau, Catgorie) (MLS/MCS)


Se proccupe de la classification des donnes


"no

read up, no write down" No read up


Les

utilisateurs (sujets) ne peuvent lire que des fichiers du mme ou au-dessous de leur niveau de scurit

No

write down

Les

utilisateurs (sujets) ne peuvent crer que des fichiers au mme ou au-dessus de leur niveau de scurit

MLS est applique via ltiquetage du systme de fichiers

Gestion de la Politique de SELinux


Cration et maintenance des politiques SELinux sont compliques et coteuses en temps Une seule politique SELinux peut se composer de centaines de lignes de texte RHEL a une politique cible (Targeted Policy) par dfaut
dfinit les types pour les applications rseaux slectionnes autorise le reste utiliser les contrles DAC

RHEL a un ensemble de commandes SELinux


Consulter les rfrences supplmentaires pour plus de dtails [1]

Rfrences
1. https://access.redhat.com/site/documentation//en -US/Red_Hat_Enterprise_Linux/6/html/SecurityEnhanced_Linux/index.html

Вам также может понравиться