Vous êtes sur la page 1sur 8

Université Adbelhamid Ibn Badis de Mostaganem Master 2 : Réseaux et Systèmes

Faculté des Sciences Exactes et de l’Informatique Matière : Administration de Serveur Linux


Département de Mathématiques et de l’informatique Année universitaire : 2020/2021

Chapitre 5 :
Sécurité

Dr. F.Z. Filali


fatimazohra.fillali@univ-mosta.dz 1
Université Adbelhamid Ibn Badis de Mostaganem Master 2 : Réseaux et Systèmes
Faculté des Sciences Exactes et de l’Informatique Matière : Administration de Serveur Linux
Département de Mathématiques et de l’informatique Année universitaire : 2020/2021

Sommaire
1. Introduction....................................................................................................................... 3
2. Moyens de protection ........................................................................................................ 3
3. Mesure de sécurité............................................................................................................. 3
3.1. La commande umask .................................................................................................. 3
3.2. Les droits d’utilisateurs ............................................................................................... 4
3.3. Vérifier les packages ................................................................................................... 4
3.4. Politique de mot de passe ............................................................................................ 4
3.5. Interdire les connexions .............................................................................................. 5
3.6. Les virus ..................................................................................................................... 5
3.7. Les limites de l’utilisateur ........................................................................................... 5
3.8. Les droits SUDO ........................................................................................................ 5
4. Sécurité du réseau ............................................................................................................. 6
4.1. Vérifier les ports ouverts ............................................................................................. 6
4.2. Supprimer les services inutiles .................................................................................... 6
4.3. Par-feux ...................................................................................................................... 7

Objectifs
• Acquérir les bases de sécurité.
• Gérer les connexions et limites des utilisateurs.
• Contrôler la sécurité du réseau avec nmap.
• Stopper les services inutiles.
• Paramétrer un pare-feu de base avec Netfilter.

Dr. F.Z. Filali


fatimazohra.fillali@univ-mosta.dz 2
Université Adbelhamid Ibn Badis de Mostaganem Master 2 : Réseaux et Systèmes
Faculté des Sciences Exactes et de l’Informatique Matière : Administration de Serveur Linux
Département de Mathématiques et de l’informatique Année universitaire : 2020/2021

1. Introduction
La sécurité des systèmes linux comprend plusieurs objectifs, on y retrouve :
• Confidentialité : l’accès aux données en consultation et en modification doit être limité
aux seuls utilisateurs autorisés.
• Intégrité : il s’agit de faire en sorte que les fichiers et les bases de données ne soient
pas corrompus et de maintenir la cohérence entre les données.
• Disponibilité : il s’agit de garantir que les services et applications soient en
fonctionnement et disponible pour tous les utilisateurs.
• Authentification : il s’agit de contrôler que les utilisateurs qui se connectent sont bien
autorisés à le faire et de leur interdire l’accès au système dans le cas contraire.

2. Moyens de protection
La protection des systèmes Linux peut être assurée par plusieurs moyens, on peut citer :
• L’authentification des utilisateurs par un mot de passe.
• Le cryptage des données.
• La sécurité physique en contrôlant l’accès des personnes aux salles informatiques, en
utilisant des circuits inviolables matériellement.
• Le contrôle fréquent des droits d’accès aux fichiers et aux bases de données.
• Le contrôle des « checksum » des fichiers pour s’assurer de leur intégrité.
• La sauvegarde régulière des données.
• L’audit des principaux événements du système.
• L’installation de « firewall » qui contrôle les accès au système informatique depuis
l’extérieur et limitent l’accès à des services externes par des utilisateurs non avertis ou
qui n’en ont pas besoin pour.
• L’installation d’un antivirus, même sous Linux, si le serveur traite des données depuis
et vers des systèmes d’exploitation concernés par les virus.
• L’installation d’outils anti-spams et anti-spywares, selon le même principe, afin
d’éviter une intrusion et la saturation des serveurs de courrier électronique.
• Le démarrage uniquement des services réellement utiles sur le serveur et sur le client.
3. Mesure de sécurité
Dans cette partie, nous allons présenter quelques moyens utilisés pour assurer la sécurité pour
les systèmes linux :
3.1. La commande umask
Le umask (user file creation mode mask, masque de création de fichier par l'utilisateur)
est un attribut des processus Unix, qui définit les permissions par défaut d'un répertoire ou d'un
fichier créé.
Syntaxe : umask [-p] [mode]
Avec :
• Mode : Si le mode commence par un chiffre, il est interprété comme un nombre octal,
sinon il est interprété comme un masque de mode symbolique similaire à celui accepté
par chmod. Si le mode est omis, la valeur actuelle du masque est imprimée.
• -S : affichage du masque sous forme symbolique; la sortie par défaut est un nombre
octal.
Exemples :
umask

Dr. F.Z. Filali


fatimazohra.fillali@univ-mosta.dz 3
Université Adbelhamid Ibn Badis de Mostaganem Master 2 : Réseaux et Systèmes
Faculté des Sciences Exactes et de l’Informatique Matière : Administration de Serveur Linux
Département de Mathématiques et de l’informatique Année universitaire : 2020/2021

umask 022
 Permissions : 777 - 022 = 755
umask 000
 Permissions : 777 - 000 = 777
umask 777
 Permissions : 777 - 777 = 000
Mesure de sécurité :
On peut définir une valeur de umask restrictive (ex : 077) quitte à étendre ensuite les
droits d’accès de certains fichiers.
3.2. Les droits d’utilisateurs
Les droits d’endossement (bits SUID et SGID) sont souvent une cause d’insécurité du
système. En effet un utilisateur mal intentionné profitant de l’inattention ou de l’absence d’un
collègue ou d’un administrateur n’étant pas déconnecté de sa console peut modifier les droits
de certaines commandes à son avantage.
L’exemple le plus courant est de recopier un shell en tant que programme peu utilisé (par
exemple sx) et de lui donner les droits SUID. En lançant cette commande on peut devenir root.
Exemple :
Obtenir le droit de lister tous les fichiers
chmod u+s cat
Obtenir un shell root
cp /bin/sh /bin/sx
chmod u+s /bin/sx
sx
3.3. Vérifier les packages
Parmi les diverses options pour l’installation d’un package, certaines permettent de
contrôler la validité d’un package. La base RPM (DEB) contient, outre le nom du fichier, son
type (configuration, binaire, etc.) et dans certains cas (binaire) la somme de contrôle
(checksum) MD5 du fichier.
Syntaxe : rpm -V nom_package
Exemple :
rpm -V bash
Les options de sorties :
• S : la taille n’est pas la bonne
• M : les permissions ont été modifiées
• 5 : la somme de contrôle MD5 diffère
• T : la date de modification n’est pas correcte.
3.4. Politique de mot de passe
Les mots de passe sont à la base de l’authentification d’un utilisateur. Ils doivent être
sûrs. C’est pourtant généralement la source de beaucoup de négligence. Les utilisateurs doivent
choisir un bon mot de passe, en évitant la simplicité ou plutôt les évidences : noms de la famille,
de lieux, dates de naissance et généralement tout ce qui tient à cœur et qui est connu du milieu
professionnel ou personnel.
Un compromis peut être de modifier les règles de changement de mot de passe avec chage (ou
passwd) de manière à placer une durée de validité des mots de passe de 40 jours.

Dr. F.Z. Filali


fatimazohra.fillali@univ-mosta.dz 4
Université Adbelhamid Ibn Badis de Mostaganem Master 2 : Réseaux et Systèmes
Faculté des Sciences Exactes et de l’Informatique Matière : Administration de Serveur Linux
Département de Mathématiques et de l’informatique Année universitaire : 2020/2021

3.5. Interdire les connexions


Certains comptes ne doivent pas être interactifs : les connexions depuis une console
devraient leur être interdites. Ces comptes peuvent être dédiés à une application, à un service,
à une connexion FTP, etc., mais la connexion (shell) devrait être refusée.
Le shell /usr/sbin/nologin (ou /bin/false) n’en est pas vraiment un. Il interdit les
connexions interactives. Il retourne toujours faux. Dès qu’un login tente d’exécuter le shell de
connexion l’utilisateur est refoulé.
Exemples :
cat /etc/passwd
3.6. Les virus
Les premiers virus sont apparus sous Unix. Si le système est généralement sécurisé, et
que les virus sur les platesformes Unix et Linux sont presque inexistants, dans le cas plus ou
moins probable où un virus serait présent et risque de compromettre la sécurité de votre
machine, celle des autres ou de tout un réseau, il est de votre devoir de l’éradiquer.
Si votre machine sert de serveur, notamment de courrier électronique ou de fichiers sur un
réseau contenant des machines sous Windows fortement exposées, vous ne devez pas servir de
vecteur indirect de propagation. Vous devez éliminer la menace.
Il existe plusieurs antivirus sous Linux, certains commerciaux gratuits ou non, certains libres.
Exemple d’un antivirus libre est gratuit : Clam (ClamAV).
3.7. Les limites de l’utilisateur
La commande ulimit permet d’agir sur l’environnement du shell et des processus qu’il
contrôle. Le paramètre -a affiche toutes les options contrôlées par ulimit :
ulimit -a
Quelques résultats de sortie :
• max memory size : la taille mémoire max que l’utilisateur peut occuper
• open files : le nombre maximum de descripteurs de fichiers, donc le nombre maximum
de fichiers pouvant être ouverts
• max user processes : le nombre maximum de processus qu’un utilisateur peut lancer.
Ces valeurs peuvent être changées selon certaines limites imposées par l’administrateur.
Il existe des limites soft (douces ou basses) qui sont les valeurs par défaut retournées par ulimit,
et des limites hard (dures, hautes) qui ne peuvent être dépassées.
Exemple :
ulimit -n 2048
 Pour passer le nombre maximum de fichiers ouverts à 2048.
L’administrateur root peut contrôler les valeurs par défaut grâce au fichier
/etc/security/limits.conf.
3.8. Les droits SUDO
La commande sudo permet d’attribuer le droit d’exécuter des commandes données à un
ou plusieurs utilisateurs, sur une ou plusieurs machines. En pratique, si un utilisateur doit
exécuter une commande que seul root peut en principe exécuter, on peut ajouter un droit sudo
à cet utilisateur pour cette commande.
Le fichier de configuration de sudo est /etc/sudoers. Il est possible de l’éditer à la main,
ou par la commande visudo. Cette dernière commande vérifie la syntaxe du fichier à la
sauvegarde.
La syntaxe classique d’une ligne sudo est la suivante : user machine = (user2) commande
Avec :

Dr. F.Z. Filali


fatimazohra.fillali@univ-mosta.dz 5
Université Adbelhamid Ibn Badis de Mostaganem Master 2 : Réseaux et Systèmes
Faculté des Sciences Exactes et de l’Informatique Matière : Administration de Serveur Linux
Département de Mathématiques et de l’informatique Année universitaire : 2020/2021

• user : l’utilisateur (ou l’alias) à qui s’applique la règle.


• machine : la machine (ou l’alias) où s’applique la règle.
• user2 : en tant que quel utilisateur exécuter la commande.
• commande : la commande à exécuter.
Exemple :
user ALL = /sbin/runlevel
L’utilisateur peut obtenir la liste de ses droits sudo avec la commande :
sudo -l
L’avantage de sudo, outre d’attribuer des droits ponctuels à un groupe de personnes
données, est la tracabilité. Les messages de sudo sont transmis à syslog qui peut les rediriger
dans un fichier. La destination peut être réglée via syslog.conf ou syslog_ng.conf.
4. Sécurité du réseau
4.1. Vérifier les ports ouverts
Les connexions réseau entre deux machines s’effectuent par des sockets. Un socket est
une connexion entre deux points via un réseau. Une machine dispose d’une adresse IP et de
ports (virtuels) de connexions numérotées, auxquels sont rattachés des services. Un client
établit une connexion depuis un port de sa machine (port > 1024, généralement choisi
aléatoirement parmi les ports libres) vers un port donné d’une autre machine, par exemple un
serveur Web sur le port 80. La communication établie entre les deux passe par un socket.
Le système peut être configuré pour accepter ou rejeter des connexions depuis ou vers
certains ports locaux ou distants, idem pour les adresses IP. C’est le rôle du firewall comme
Netfilter. Sur une installation Linux de base, sauf si l’option était présente lors de l’installation,
le firewall n’est pas toujours activé par défaut. Les ports ne sont pas filtrés et toute machine
extérieure peut tenter d’établir une connexion sur un port de la machine.
On peut utiliser la commande nestat pour obtenir des informations et des statistiques
réseau sur une machine locale. Notamment on peut vérifier quels sont les ports à l’écoute sur
la machine, qui a établi une connexion, et quels sont les processus (services) locaux à l’écoute
: netstat -ap
Avec :
• -a : affiche tous les sockets.
• -p : affiche les noms de programmes/PID des sockets.

L’outil nmap est un outil de sécurité, de vérification, de tests, etc. Il est utilisé pour
l’exploration réseau et l’audit de sécurité. Il permet de tester les connexions réseaux d’une
machine donnée et de retourner un grand nombre d’informations. Notamment, en analysant les
trames, il arrive souvent à déterminer le type et la version du système d’exploitation distant.
Syntaxe : nmap [options] hôte
Exemples :
nmap localhost
nmap -A localhost
4.2. Supprimer les services inutiles
Un serveur peut avoir plusieurs ports réseaux ouverts vers Internet (ou depuis Internet) :
ftp, http, p2p, ssh, … Or il suffit qu’un seul des services associés présente un risque pour que
la machine soit attaquée avec les problèmes qui en découlent.

Dr. F.Z. Filali


fatimazohra.fillali@univ-mosta.dz 6
Université Adbelhamid Ibn Badis de Mostaganem Master 2 : Réseaux et Systèmes
Faculté des Sciences Exactes et de l’Informatique Matière : Administration de Serveur Linux
Département de Mathématiques et de l’informatique Année universitaire : 2020/2021

Même si le service en tant que tel n’a pas de faille connue, le paramétrage qu’on applique peut
être trop simple. Un exemple simple est l’installation de MySQL par défaut où le compte
d’administration n’a pas de mot de passe.
Donc il est important de désactiver tous les services dont on n’a pas besoin. S’il s’avère que
certains sont nécessaires à certains moments et pas à d’autres, il faut alors les démarrer
seulement à ce moment, et les stopper ensuite.
Les services lancés de manière indépendantes, sont contrôlés via la commande service ou
/etc/init.d/service. Pour contrôler les arrêts et relances de ces services de manière pérenne, on
peut utiliser les commandes suivantes :
• chkconfig (distributions RPM) ;
• rcudpate.d (Debian).
4.3. Par-feux
Netfilter est une architecture de filtrage des paquets pour les noyaux Linux 2.4 et 2.6. Le
filtrage se fait au sein même du noyau au niveau des couches 2, 3 et 4 du modèle OSI, c’est-à-
dire les liaisons données, réseau et transport. Il est par exemple capable d’agir à bas niveau sur
les interfaces ethernet (2), sur la pile IP (3) et sur les protocoles de transport comme TCP (4).
Le filtrage est stateless : comme Netfilter n’inspecte que les en-têtes des paquets, il est
extrêmement rapide et n’entraîne pas de temps de latence.
Le programme utilisateur permettant d’agir sur les règles de filtrage est iptables.
L’implémentation au niveau du noyau est réalisée par des modules.

Chaque état d’un paquet peur correspondre à un point de filtrage possible pour iptables.
Ces états peuvent être :
• PREROUTING : traite les paquets à leur arrivée. Si un paquet est à destination du
système local, il sera traité par un processus local (INPUT, OUTPUT). Sinon, et si le
forwarding est activé, les règles FORWARD et POST_ROUTING seront appliquées.
• FORWARD : les paquets ne font que traverser le système local. Traite les paquets
routés à travers le système local.
• INPUT : traite les paquets destinés au système local, en entrée (après le routage).
• OUTPUT : traite les paquets quittant le système local, avant POSTROUTING.
• POSTROUTING : traite les paquets avant leur sortie du système.

Lorsqu’un paquet est traité par netfilter, il l’est par rapport à un certain nombre de règles
qui déterminent ce qu’il faut en faire.
• Les règles sont ordonnées : la position d’une règle dans une liste indique quand et si la
règle sera utilisée.
• Les paquets sont testés avec chacune des règles, l’une après l’autre.
• Netfilter fonctionne selon le mécanisme de la première correspondance. Si une règle
correspond, les autres règles sont négligées et la vérification s’arrête.
• Une règle peut spécifier plusieurs critères.
• Pour qu’une règle corresponde à un paquet, tous les critères doivent correspondre.
• Si malgré toutes les règles, le paquet passe, une règle par défaut peut être appliquée.

Une cible de règle détermine quelle est l’action à entreprendre lorsqu’un paquet
correspond aux critères d’une règle. On utilise l’option -j de iptables pour spécifier la cible.
Les deux cibles de base sont DROP et ACCEPT. Des extensions de netfilter ajoutent d’autres
cibles comme LOG ou REJECT.
• DROP : le paquet est rejeté. Aucune notification n’est envoyée à la source.

Dr. F.Z. Filali


fatimazohra.fillali@univ-mosta.dz 7
Université Adbelhamid Ibn Badis de Mostaganem Master 2 : Réseaux et Systèmes
Faculté des Sciences Exactes et de l’Informatique Matière : Administration de Serveur Linux
Département de Mathématiques et de l’informatique Année universitaire : 2020/2021

• REJECT : le paquet est rejeté, retournant une erreur à la source.


• ACCEPT : le paquet est accepté.
• LOG : une information est envoyée à syslog pour les traces.
Syntaxe :
iptables -{A|D} chaine [-s source] [ -j cible] [-l]
Avec
• -A : ajout d’une règle avec un point de filtrage (INPUT, OUTPUT, FORWARD,
PREROUTING, POSTROUTING) qu’on appelle aussi chaîne.
• -D : supprimer une règle.
• -s : source, peut être une adresse IP, un nom d’hôte, un réseau, etc.
• -j : jump, cible de la règle (ACCEPT, DROP, REJECT...).
• -l : lister les règles.
Exemple :
iptables -A INPUT -s 192.168.100.20 -j DROP
 Interdit tous les paquets en provenance de 192.168.100.20
iptables -l
iptables -D input 1

Dr. F.Z. Filali


fatimazohra.fillali@univ-mosta.dz 8

Vous aimerez peut-être aussi