Semaine1et 2
Semaine1et 2
Semaine1et 2
Il s’agit des événements imprévisibles comme les pannes, les accidents ou encore les atteintes
intentionnelles sur les matériels. Par exemple :
– Intrusions physiques (circulation de personnes non autorisées dans les locaux, vol) ;
– Etc.
Voici des recommandations pour minimiser les risques physiques liés à la sécurité du serveur :
-Utilisez des onduleurs et des groupes électrogènes pour éviter les pertes de données.
-Mettez en place un système de surveillance physique pour détecter les intrusions et les
accès non autorisés.
-Élaborez et testez régulièrement un plan de sauvegarde des données pour vous assurer de
pouvoir récupérer vos données en cas d'incident
B- Les menaces liées à la sécurité des systèmes d’exploitation générées par l’exploitation possible des
vulnérabilités et failles éventuellement présentes sur le système, notamment :
Pour limiter les risques liés à notre server, nous allons le configurer selon les recommandations du
guide de la DGSSI.
1- Installation :
Le durcissement d’un serveur Linux commence dès la phase de l’installation du système.
Généralement, Il faut éviter de procéder à une installation par défaut. Il faut tout d’abord décider
quelle en sera l’utilisation (serveur Web, DNS, messagerie, etc.) avant de déterminer des règles à
mettre en place pour le sécuriser. Ci-après les principaux aspects à prendre en considération lors de
l’installation du système linux.
– Toute partition qui peut fluctuer, par exemple /var (surtout /var/log) devrait être également sur
une partition distincte ;
– Toute partition qui peut contenir des installations des logiciels ne faisant pas partie de la
distribution (des applications tierces) devrait être sur une partition distincte (par exemple /opt) ;
– Le répertoire /boot qui contient les fichiers indispensables au démarrage peut être mis dans une
partition à part.
#ps – aux
Identifier les ports réseaux utilisés : Afin d’identifier les différents ports ouverts, taper la commande :
#netstat -a
Identifier les services : Pour lister les services qui se lancent automatiquement avec le démarrage du
système, utiliser la commande :
#chkconfig –list
#sysv-rc-conf –list
Après l’installation, il convient d’identifier les services et les programmes installés pour désactiver
ceux qui sont inutiles :
Bluetooth - si vous n'utilisez pas de périphériques Bluetooth avec votre serveur, il est recommandé
de désactiver le service Bluetooth pour éviter les vulnérabilités de sécurité associées à cette
technologie.
Avahi-daemon - ce service fournit une découverte de service réseau pour les applications, mais il
peut également présenter des vulnérabilités de sécurité. Si vous n'avez pas besoin de ce service, il est
recommandé de le désactiver.
CUPS - CUPS est un système d'impression communément utilisé, mais si vous n'avez pas besoin de
fonctionnalités d'impression sur votre serveur, il est recommandé de désactiver ce service.
SNMP - SNMP (Simple Network Management Protocol) est un protocole de gestion de réseau qui
peut présenter des vulnérabilités de sécurité. Si vous n'utilisez pas ce service, il est recommandé de
le désactiver.
NTP - NTP (Network Time Protocol) est un protocole utilisé pour synchroniser l'horloge des systèmes
sur un réseau. Si vous n'utilisez pas ce service ou si vous utilisez une autre méthode de
synchronisation de l'horloge, il est recommandé de le désactiver.
Il est important de noter que la désactivation des services peut affecter le fonctionnement de votre
serveur si ces services sont nécessaires pour les applications en cours d'exécution. Par conséquent,
avant de procéder à la désactivation de tout service, il est recommandé de vérifier si ce service est
nécessaire et si sa désactivation ne causera aucun problème. Il est également recommandé de
sauvegarder vos données avant de procéder à la désactivation de tout service.
Cette ligne exécute les commandes apt update et apt upgrade toutes les 5 jours à 2h. L'option -y est
utilisée pour répondre automatiquement "oui" à toutes les questions de confirmation pendant la
mise à jour.
La tâche cron est maintenant planifiée pour s'exécuter automatiquement tous les 5 jours à 2h pour
mettre à jour notre système.
Comme c’est souvent le cas, les paramètres par défaut permettent de prendre nativement en charge
beaucoup de fonctionnalités. Pour une configuration appropriée des paramètres réseaux, il convient
de procéder comme suit :
Interface réseau : Il est fortement recommandé de désactiver toute interface réseau non utilisée.
Lorsque le serveur comporte plusieurs interfaces réseau, il est conseillé de spécialiser celles-ci pour
dissocier les différents types de flux métiers et les flux d’administration. Il convient alors d’imposer
que les services soient en écoute uniquement sur les interfaces adaptées.
IPv6 : Il est fortement recommandé de désactiver le support d’IPv6 s’il n’est pas encore utilisé. Ceci
peut être fait à partir du fichier /etc/sysctl.conf en ajoutant
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1
(Il est recommandé d'ignorer les broadcasts ICMP car ils peuvent être utilisés pour effectuer des attaques de déni de service distribué
(DDoS). Les paquets ICMP (Internet Control Message Protocol) sont généralement utilisés pour les messages de contrôle et de diagnostic
sur le réseau, tels que les messages d'erreur et de notification. Les paquets ICMP de diffusion peuvent être utilisés pour inonder un réseau
avec des paquets inutiles et donc causer une congestion inutile et ralentir le réseau. En ignorant les broadcasts ICMP, on peut réduire le
risque d'attaques DDoS et améliorer les performances du réseau )
Net.ipv4.icmp.echo_ignore_broadcasts = 1
En ignorant les erreurs ICMP erronées, le système ne répondra pas automatiquement aux paquets ICMP malformés, ce qui peut réduire le
risque d'attaques de type "Ping of Death" ou "Smurf Attack". Cependant, il est important de noter que cette mesure de sécurité ne doit pas
être considérée comme une protection absolue contre ces types d'attaques et doit être utilisée en combinaison avec d'autres mesures de
sécurité appropriées.)
Net.ipv4.icmp_ignore_bogus_error_responses = 1
# Ne pas accepter les redirections ICMP (empêche les attaques main in the
middle)
Net.ipv4.conf.all.accept_redirects = 0
# N’accepter les redirections ICMP que pour les passerelles de la liste des passerelles par
Net.ipv4.conf.all.secure_redirects = 1
#Ne pas accepter les redirections ICMP (ce n’est pas un routeur)
Net.ipv4.conf.all.send_redirects = 0
ip_forward=no »
Net.ipv4.conf.all.forwarding = 0
# Activer les TCP Syn Cookies : Remarque : assurez-vous que /etc/network/options contient
# « syncookies=yes »
Net.ipv4.tcp_syncookies = 1
Net.ipv4.conf.all.log_martians = 1
# Activer la vérification d’adresse source pour toutes les interfaces pour empêcher certaines
attaques par usurpation
Net.ipv4.conf.all.rp_filter = 1
# Ne pas accepter les paquets de routage source IP (ce n’est pas un routeur)
Net.ipv4.conf.all.accept_source_route = 0
Net.ipv4.tcp_fin_timeout = 15
Net.ipv4.tcp_keepalive_time=1880
#Désactiver tcp_windows_scaling
Net.ipv4.tcp_windows_scaling=0
#Désactiver tcp_sack
Net.ipv4.tcp_sack=0
#Désactiver tcp_timestamps
Net.ipv4.tcp_timestamps=0
Nous allons utiliser le pare-feu UFW, UFW (Uncomplicated Firewall) est un outil de pare-feu simple et
facile à utiliser pour Linux, qui utilise une syntaxe simplifiée pour configurer les règles de pare-feu. Il
est souvent utilisé pour protéger les serveurs Web, les bases de données et les systèmes sensibles
contre les menaces de sécurité.
- Installer le pare-feu:
Autoriser le trafic pour les services que vous voulez utiliser. Par exemple, pour autoriser le trafic
entrant pour le serveur Web, exécutez la commande suivante :
Activer le pare-feu :
Paramètres avancés :
Pour configurer le pare-feu de manière à bloquer tout trafic non autorisé, vous pouvez définir des
règles par défaut qui spécifient comment gérer le trafic entrant et sortant. Voici comment faire :
DEFAULT_INPUT_POLICY="DROP"
DEFAULT_OUTPUT_POLICY="DROP"
Ces lignes définissent la politique par défaut pour le trafic entrant et sortant. En définissant la valeur
sur "DROP", tout trafic qui ne correspond pas à une règle autorisée sera automatiquement bloqué.
Définissez les règles de pare-feu spécifiques que vous voulez autoriser en utilisant la commande ufw.
Par exemple, si vous voulez autoriser le trafic entrant pour le serveur Web (port 80), vous pouvez
exécuter la commande suivante :
Vous pouvez également autoriser des plages de ports spécifiques, des protocoles spécifiques, des
adresses IP, etc.
Une fois que vous avez défini toutes les règles de pare-feu nécessaires, activez le pare-feu en utilisant
la commande suivante :
Après avoir suivi ces étapes, le pare-feu bloquera automatiquement tout trafic qui ne correspond pas
à une règle de pare-feu autorisée, en utilisant les politiques par défaut que vous avez définies. Vous
pouvez vérifier les règles de pare-feu en utilisant la commande
Pour des distributions comme Ubuntu/Debian l’accès direct au compte root est désactivé par défaut,
l’utilisateur devrait utiliser la commande sudo pour effectuer toute tâche administrative. Il convient à
cet effet de créer un autre compte et d’ajouter cet utilisateur au groupe sudo par la commande :
#usermod -G sudo Nom_du_compte.
Les comptes systèmes : On trouve sur le système une série de comptes génériques (par exemple :
bin, daemon, sync, apache, etc.). Les UIDs compris entre 1 et 499 sont généralement utilisés pour ces
comptes. Il convient de bloquer l’exécution du Shell à partir de ces comptes. Pour ce faire, il faut tout
d’abord lister les comptes avec leurs UIDs ainsi que leurs Shells.
Pour lister les comptes système avec leurs UID et leurs shells, Nous pouvons utiliser la commande cat
/etc/passwd. Cette commande affichera le contenu du fichier /etc/passwd, qui contient des
informations sur tous les utilisateurs du système, y compris les comptes système.
Pour filtrer les comptes système, nous pouvons examiner les UIDs des utilisateurs. Les UIDs compris
entre 1 et 499 sont généralement utilisés pour les comptes système. Nous pouvons utiliser la
commande awk pour filtrer les comptes avec des UIDs compris entre 1 et 499, et afficher
uniquement les noms d'utilisateur et les shells. Par exemple :
cat /etc/passwd | awk -F: '{if ($3 < 500) {print $1 " : " $7}}'
Cette commande affichera une liste des noms d'utilisateur et des shells correspondants pour tous les
comptes système. Notons que la commande awk utilise le délimiteur : pour diviser chaque ligne du
fichier /etc/passwd en champs séparés.
En ce qui concerne le blocage de l'exécution du shell à partir de ces comptes, nous pouvons modifier
les informations de l'utilisateur en utilisant la commande usermod. Par exemple, pour bloquer
l'exécution du shell pour l'utilisateur apache, nous pouvons exécuter la commande suivante :
Cette commande modifie le shell de l'utilisateur apache pour /usr/sbin/nologin, ce qui empêchera
l'utilisateur de se connecter avec une session interactive.
Sécurité des mots de passe :
Une bonne gestion des mots de passe permet un accès sécurisé au système. Le mot de passe ne doit
pas être vide et doit systématiquement respecter une politique de complexité. Sous Linux, le système
est configuré de manière à ce que l’algorithme MD5 et les mots de passe masqués soient utilisés. Il
est fortement recommandé de ne pas modifier ces paramètres. L’utilisation de l’option des mots de
passe masqués permet de stocker ces derniers dans le fichier /etc/shadow lisible uniquement par le
root, et non pas dans le fichier /etc/passwd accessible en lecture pour tous les utilisateurs. Pour fixer
le nombre minimum de caractères que le mot de passe doit contenir ainsi que la période de sa
validité.
PASS_MIN_LEN 12 PASS_MAX_DAYS 90
Utilisation de l’algorithme SHA-512 pour le hachage : Lorsque cela est possible et pour certaines
distributions de linux, il convient de renforcer davantage la sécurité des mots de passe en utilisant le
SHA-512 au lieu de MD5. Pour ce faire ajouter au fichier /etc/login.defs : MD5_CRYPT_ENAB no
ENCRYPT_METHOD SHA512
Sécurité des mots de passe dans PAM : L’administrateur peut améliorer l’authentification des
utilisateurs sur le système par la configuration de PAM (Pluggable Authentication Modules). Le
module pam_cracklib permet d’accepter ou de rejeter un mot de passe si celui-ci se trouve dans un
dictionnaire (/usr/lib/cracklib.pwd). Il permet aussi de vérifier que le mot de passe n’est pas réutilisé.
Pour paramétrer ce module ajouter la ligne suivante dans le fichier :
/etc/pam.d/common-password
La sécurité des accès physiques au système repose en premier lieu sur l’emplacement et
l’environnement physique où est installé le serveur. Cela permet d’empêcher l’accès non autorisé
ainsi que les dommages de tout genre pouvant affecter le serveur.
BIOS : C’est le premier programme qui s’exécute au démarrage du système, il permet le contrôle des
éléments matériels. Il convient de sécuriser l’accès au BIOS par un mot de passe afin d’empêcher
toute modification de ses paramètres (par exemple : changer la configuration du BIOS de manière à
démarrer à partir d’un CD-ROM ou une clé USB).
GRUB : Il est recommandé de protéger la configuration du chargeur de démarrage par un mot de
passe pour empêcher toute tentative de connexion avec le mode single ou bien le changement des
paramètres pendant le démarrage. Pour ce faire, ajouter une directive de mot de passe dans le
fichier de configuration du
GRUB :
Authentification pour le mode de récupération (single user) :
Pour activer l'authentification pour le mode de récupération (single user) sur Debian 11, vous
pouvez suivre les étapes suivantes :
Authentication=1
TMOUT=900
else
TMOUT=3600
fi
readonly TMOUT
export TMOUT
La variable TMOUT permet de spécifier le temps d'inactivité maximum autorisé avant que
l'utilisateur soit déconnecté de sa session Shell. La commande "readonly" permet de rendre
la variable TMOUT en lecture seule, empêchant toute modification ultérieure. Enfin, la
commande "export" permet de rendre la variable TMOUT disponible pour tous les processus
lancés à partir de la session Shell.
vlock -c
L’effet de la combinaison CTR-ALT-DEL :
Dans la plupart des distributions linux l’utilisation de la combinaison ctrl-alt-del conduit au
redémarrage du système. Il convient de désactiver l’effet de cette option surtout pour les
serveurs de production. Pour ce faire, vous pouvez suivre les étapes suivantes :
HandlePowerKey=ignore
Après avoir suivi ces étapes, la combinaison de touches Ctrl+Alt+Del ne redémarrera plus le
système.
sudo update-grub
ls -l /etc/passwd
Si les droits d'accès ne sont pas correctement configurés, vous pouvez les modifier en
utilisant la commande chmod. Par exemple, pour configurer les droits d'accès recommandés
pour le fichier /etc/passwd, vous pouvez saisir la commande suivante :
Il est important de noter que la modification des droits d'accès de ces fichiers peut avoir des
conséquences importantes sur le fonctionnement du système, et doit donc être effectuée
avec prudence.
find / -type d -perm -2000 ! -perm -1000 -exec stat -c "%A %n" {} \;
chmod +t /fichier
Explications de la commande :
find / -type d: Recherche tous les répertoires à partir de la racine (/) du système.
-perm -2000: Recherche les répertoires ayant le droit d'écriture mais pas le droit sticky bit.
-exec stat -c "%A %n" {} \;: Exécute la commande stat pour afficher les permissions et le nom
du répertoire.
Cette commande listera tous les répertoires du système qui ont le droit d'écriture mais pas le
droit sticky bit. Assurez-vous de l'exécuter avec les privilèges de superutilisateur (sudo) pour
accéder à tous les répertoires du système.
Les fichiers avec droit d’écriture :
Il convient de limiter les droits d’écriture sur les fichiers au stricte nécessaire. Tout d’abord il
faut lister tous les fichiers ayant le droit d’écriture, puis enlever ce droit pour ceux dont le
besoin n’est pas justifié :
Il est fortement recommandé d’enlever ces droits sauf en cas de besoin majeur. Pour cela il
faut identifier les fichiers ayant le SUID et le GUID, puis appliquer la commande suivante sur
les fichiers trouvés :
chmod -s fichier
La valeur UMASK :
Le masque de protection de fichier permet de définir les droits par défaut de tout fichier
créé. Il convient de fixer la valeur de « UMASK » à 027. Ce qui signifie que tout fichier crée
aura comme droits : rwxr-x—
Accès à distance :