Différences entre versions de « Sécuriser sa machine Debian »

De Ikoula Wiki
Jump to navigation Jump to search
 
(31 versions intermédiaires par 8 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
<span data-link_translate_fr_title="Sécuriser sa machine Debian"  data-link_translate_fr_url="Sécuriser sa machine Debian"></span>[[:fr:Sécuriser sa machine Debian]][[fr:Sécuriser sa machine Debian]]
 +
<span data-link_translate_ar_title="تأمين جهاز به دبيان"  data-link_translate_ar_url="%D8%AA%D8%A3%D9%85%D9%8A%D9%86+%D8%AC%D9%87%D8%A7%D8%B2+%D8%A8%D9%87+%D8%AF%D8%A8%D9%8A%D8%A7%D9%86"></span>[[:ar:تأمين جهاز به دبيان]][[ar:تأمين جهاز به دبيان]]
 +
<span data-link_translate_zh_title="确保其 Debian 的机器"  data-link_translate_zh_url="%E7%A1%AE%E4%BF%9D%E5%85%B6+Debian+%E7%9A%84%E6%9C%BA%E5%99%A8"></span>[[:zh:确保其 Debian 的机器]][[zh:确保其 Debian 的机器]]
 +
<span data-link_translate_he_title="אבטחת הרכב דביאן שלה"  data-link_translate_he_url="%D7%90%D7%91%D7%98%D7%97%D7%AA+%D7%94%D7%A8%D7%9B%D7%91+%D7%93%D7%91%D7%99%D7%90%D7%9F+%D7%A9%D7%9C%D7%94"></span>[[:he:אבטחת הרכב דביאן שלה]][[he:אבטחת הרכב דביאן שלה]]
 +
<span data-link_translate_ro_title="Asigurarea sa maşină de Debian"  data-link_translate_ro_url="Asigurarea+sa+ma%C5%9Fin%C4%83+de+Debian"></span>[[:ro:Asigurarea sa maşină de Debian]][[ro:Asigurarea sa maşină de Debian]]
 +
<span data-link_translate_ru_title="Обеспечение его машины под управлением Debian"  data-link_translate_ru_url="%D0%9E%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B5%D0%B3%D0%BE+%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D1%8B+%D0%BF%D0%BE%D0%B4+%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC+Debian"></span>[[:ru:Обеспечение его машины под управлением Debian]][[ru:Обеспечение его машины под управлением Debian]]
 +
<span data-link_translate_pl_title="Zabezpieczanie swojej maszynie Debiana"  data-link_translate_pl_url="Zabezpieczanie+swojej+maszynie+Debiana"></span>[[:pl:Zabezpieczanie swojej maszynie Debiana]][[pl:Zabezpieczanie swojej maszynie Debiana]]
 +
<span data-link_translate_ja_title="その Debian マシンを確保"  data-link_translate_ja_url="%E3%81%9D%E3%81%AE+Debian+%E3%83%9E%E3%82%B7%E3%83%B3%E3%82%92%E7%A2%BA%E4%BF%9D"></span>[[:ja:その Debian マシンを確保]][[ja:その Debian マシンを確保]]
 +
<span data-link_translate_de_title="Sicherung ihrer Debian-Rechner"  data-link_translate_de_url="Sicherung+ihrer+Debian-Rechner"></span>[[:de:Sicherung ihrer Debian-Rechner]][[de:Sicherung ihrer Debian-Rechner]]
 +
<span data-link_translate_nl_title="Beveiligen zijn Debian machine"  data-link_translate_nl_url="Beveiligen+zijn+Debian+machine"></span>[[:nl:Beveiligen zijn Debian machine]][[nl:Beveiligen zijn Debian machine]]
 +
<span data-link_translate_it_title="Protezione relativa macchina Debian"  data-link_translate_it_url="Protezione+relativa+macchina+Debian"></span>[[:it:Protezione relativa macchina Debian]][[it:Protezione relativa macchina Debian]]
 +
<span data-link_translate_pt_title="Protegendo sua máquina Debian"  data-link_translate_pt_url="Protegendo+sua+m%C3%A1quina+Debian"></span>[[:pt:Protegendo sua máquina Debian]][[pt:Protegendo sua máquina Debian]]
 +
<span data-link_translate_es_title="Su máquina Debian"  data-link_translate_es_url="Su+m%C3%A1quina+Debian"></span>[[:es:Su máquina Debian]][[es:Su máquina Debian]]
 +
<span data-link_translate_en_title="Securing its Debian machine"  data-link_translate_en_url="Securing+its+Debian+machine"></span>[[:en:Securing its Debian machine]][[en:Securing its Debian machine]]
 +
 +
{{#seo:
 +
|title=Sécuriser sa machine Debian
 +
|title_mode=append
 +
|keywords=these,are,your,keywords
 +
|description=Découvrez dans cet article comment sécuriser sa machine Debian
 +
|image=Uploaded_file.png
 +
|image_alt=Wiki Logo
 +
}}
  
 
==Introduction==
 
==Introduction==
Assurer la sécurité de sa machine est un point essentiel qui ne doit pas être sous-estimé sous peine de devenir la cible de diverses attaques. La puissance actuelle des ordinateurs rendant aujourd'hui des techniques d'intrusions comme l'attaque par force brute ou ''bruteforce'' très simple à mettre en oeuvre pour obtenir un accès administrateur à la machine cible en un temps réduit.
+
Assurer la {{Template:Sécurité}} de sa machine est un point essentiel qui ne doit pas être sous-estimé sous peine de devenir la cible de diverses attaques. La puissance actuelle des ordinateurs rendant aujourd'hui des techniques d'intrusions comme l'attaque par force brute ou ''bruteforce'' très simple à mettre en oeuvre pour obtenir un accès administrateur à la machine cible en un temps réduit.
 
<br><br>
 
<br><br>
Vous trouverez sur cette page une liste non exhaustive de pistes afin de sécuriser votre serveur Debian sur différents points tels que le compte root, l'accès ssh, le pare-feu, etc...
+
Vous trouverez sur cette page une liste non exhaustive de pistes afin de sécuriser votre {{Template:Serveur}} Debian sur différents points tels que le compte root, l'accès ssh, le pare-feu, etc...
<div style="background-color: #FF9999;"> '''Avertissement''': Avant toute modification de vôtre système prévoyez toujours une sauvegarde de vos fichiers en cas de mauvaise manipulation.<br>
+
<div style="background-color: #FF9999;"> '''Avertissement''': Avant toute modification de votre système prévoyez toujours une {{Template:Sauvegarde}} de vos fichiers en cas de mauvaise manipulation.<br>
Sur un serveur de production, pensez à effectuer ces opérations pendant les heures creuses afin de minimiser l'impact de vos actions.</div>
+
Sur un {{Template:Serveur}} de production, pensez à effectuer ces opérations pendant les heures creuses afin de minimiser l'impact de vos actions.</div>
  
 
==Pré-requis==
 
==Pré-requis==
L'un des pré-requis essentiel à la sécurité de son serveur est de maintenir ses paquets dans leur version la plus à jour possible. Un nombre important de failles découvertes sont rapidement corrigées par les développeurs des paquets et applications concernées, dans la mesure du possible il faut toujours conserver son système à jour et ainsi éviter les failles de sécurité.
+
L'un des pré-requis essentiel à la {{Template:Sécurité}} de son {{Template:Serveur}} est de maintenir ses paquets dans leur version la plus à jour possible. Un nombre important de failles découvertes sont rapidement corrigées par les développeurs des paquets et applications concernées, dans la mesure du possible il faut toujours conserver son système à jour et ainsi éviter les failles de {{Template:Sécurité}}.
 +
<pre> apt-get update
 +
apt-get upgrade </pre>
 
Afin de conserver votre système Debian à jour, assurez-vous de posséder une liste des dépôts officiels à jour. Vous pourrez trouver une liste des dépôts disponibles chez Ikoula et les instructions d'installation [[Quelles_sont_les_sources_des_d%C3%A9p%C3%B4ts_debian_chez_Ikoula| à cette adresse]].
 
Afin de conserver votre système Debian à jour, assurez-vous de posséder une liste des dépôts officiels à jour. Vous pourrez trouver une liste des dépôts disponibles chez Ikoula et les instructions d'installation [[Quelles_sont_les_sources_des_d%C3%A9p%C3%B4ts_debian_chez_Ikoula| à cette adresse]].
  
 +
==Les répertoires utilisateurs==
 +
Par défaut sur un système [https://www.ikoula.com/fr/serveur-dedie/linux/debian Debian], les répertoires utilisateurs sont accessibles aux autres comptes locaux présents sur la machine.<br>
 +
Afin de palier à cette faille dans la {{Template:Sécurité}} il nous est nécessaire de reconfigurer le comportement par défaut.
 +
;Faisons en sorte que les répertoires ne soient lisible que par leur propriétaire respectif
 +
<syntaxhighlight lang="bash"> dpkg-reconfigure adduser</syntaxhighlight>
 +
[[File:dpkg-reconfigureadduser.png||dpkg-reconfigure adduser]]
 
==L'accès root==
 
==L'accès root==
 
Autoriser la connexion du compte ''root'' après la première utilisation n'est en général pas une bonne idée. En effet le compte ''root'' ou ''super-utilisateur'' possède un accès total à votre système.<br>Si une personne malveillante vient à gagner l'accès au compte ''super-utilisateur'' elle aura le contrôle total de votre machine.
 
Autoriser la connexion du compte ''root'' après la première utilisation n'est en général pas une bonne idée. En effet le compte ''root'' ou ''super-utilisateur'' possède un accès total à votre système.<br>Si une personne malveillante vient à gagner l'accès au compte ''super-utilisateur'' elle aura le contrôle total de votre machine.
Ligne 36 : Ligne 67 :
 
<syntaxhighlight lang="bash">  PermitRootLogin no </syntaxhighlight>
 
<syntaxhighlight lang="bash">  PermitRootLogin no </syntaxhighlight>
  
N'oubliez pas ensuite de sauvegarder et de fermer le fichier de configuration.<br>
+
N'oubliez pas ensuite de {{Template:Sauvegarde}}r et de fermer le fichier de configuration.<br>
 
;Lorsque le service SSH sera relancé vos modifications prendront effet.
 
;Lorsque le service SSH sera relancé vos modifications prendront effet.
 
<syntaxhighlight lang="bash"> /etc/init.d/ssh restart </syntaxhighlight>
 
<syntaxhighlight lang="bash"> /etc/init.d/ssh restart </syntaxhighlight>
Ligne 44 : Ligne 75 :
  
 
==L'accès SSH==
 
==L'accès SSH==
Grâce aux solutions apportées précédemment notre système est déjà bien sécurisé, mais nous pouvons encore renforcer cette sécurité en mettant en place une authentification par fichier de clé.<br>
+
Grâce aux solutions apportées précédemment notre système est déjà bien sécurisé, mais nous pouvons encore renforcer cette {{Template:Sécurité}} en mettant en place une authentification par fichier de clé.<br>
 
Habituellement la connexion et l'authentification sur votre système s'effectue grâce à une paire login/mot de passe. Nous pouvons remplacer cette méthode qui n'est pas infaillible par une authentification par clé.<br>
 
Habituellement la connexion et l'authentification sur votre système s'effectue grâce à une paire login/mot de passe. Nous pouvons remplacer cette méthode qui n'est pas infaillible par une authentification par clé.<br>
 
Une fois la modification mise en place lors de chaque nouvelle connexion le système va regarder si l'utilisateur qui tente de se connecter possède une clé valide et si cette-ci est bien autorisée à effectuer une connexion pour cet utilisateur.<br>
 
Une fois la modification mise en place lors de chaque nouvelle connexion le système va regarder si l'utilisateur qui tente de se connecter possède une clé valide et si cette-ci est bien autorisée à effectuer une connexion pour cet utilisateur.<br>
Bien qu'aucune méthode ne soit infaillible l'authentification par fichier de clé requiert de la personne voulant s'introduire dans le système qu'elle possède ce fichier. Nous pouvons donc renforcer la sécurité par rapport à un mot de passe qui peut être deviné par ''brute force''<br>
+
Bien qu'aucune méthode ne soit infaillible l'authentification par fichier de clé requiert de la personne voulant s'introduire dans le système qu'elle possède ce fichier. Nous pouvons donc renforcer la {{Template:Sécurité}} par rapport à un mot de passe qui peut être deviné par ''brute force''<br>
 
Plusieurs inconvénients sont cependant présents lorsque cette méthode est choisie, en effet il est impératif de devoir posséder le fichier de clé quelque soit l'endroit de la connexion, par exemple entre des ordinateurs au travail et à la maison.<br>
 
Plusieurs inconvénients sont cependant présents lorsque cette méthode est choisie, en effet il est impératif de devoir posséder le fichier de clé quelque soit l'endroit de la connexion, par exemple entre des ordinateurs au travail et à la maison.<br>
 
Vous devrez également ajouté manuellement chaque nouveau fichier de clé qui sera autorisé à accéder à votre système, dans le cas par exemple de l'ajout d'un nouvel utilisateur ou de l'accès d'une personne autorisée à votre système.
 
Vous devrez également ajouté manuellement chaque nouveau fichier de clé qui sera autorisé à accéder à votre système, dans le cas par exemple de l'ajout d'un nouvel utilisateur ou de l'accès d'une personne autorisée à votre système.
  
 
=== Changer le port par défaut ===
 
=== Changer le port par défaut ===
L'un des moyens les plus efficace pour arrêter les tests automatiques lancés contre les serveurs est de changer le port par défaut de SSH sur votre machine.
+
L'un des moyens les plus efficace pour arrêter les tests automatiques lancés contre les {{Template:Serveur}}s est de changer le port par défaut de SSH sur votre machine.
 
Pour ce faire éditez votre fichier '''sshd_config'''
 
Pour ce faire éditez votre fichier '''sshd_config'''
 
<syntaxhighlight lang="bash"> vi /etc/ssh/sshd_config </syntaxhighlight>
 
<syntaxhighlight lang="bash"> vi /etc/ssh/sshd_config </syntaxhighlight>
Ligne 73 : Ligne 104 :
  
 
=== Copier une paire de clé ===
 
=== Copier une paire de clé ===
Lorsque la paire est générée nous devons à présent indiquer sur le serveur quelles sont les personnes autorisées à se connecter à notre nouvel utilisateur.
+
Lorsque la paire est générée nous devons à présent indiquer sur le {{Template:Serveur}} quelles sont les personnes autorisées à se connecter à notre nouvel utilisateur.
 
Pour ce faire chaque utilisateur de notre système dispose d'un fichier '''ssh/authorized_keys''' présent dans son répertoire local.
 
Pour ce faire chaque utilisateur de notre système dispose d'un fichier '''ssh/authorized_keys''' présent dans son répertoire local.
  
Ligne 90 : Ligne 121 :
 
<syntaxhighlight lang="bash"> ssh-rsa AAAB3NzaC1yc2EAAAADAQaSdMTJXMy3MtlQhva+j9CgguyVbU3nCKneB+KjKiS/1rggpFmu3HbXBnWSUdf votre_utilisateur@machine.locale </syntaxhighlight>
 
<syntaxhighlight lang="bash"> ssh-rsa AAAB3NzaC1yc2EAAAADAQaSdMTJXMy3MtlQhva+j9CgguyVbU3nCKneB+KjKiS/1rggpFmu3HbXBnWSUdf votre_utilisateur@machine.locale </syntaxhighlight>
 
On enregistre et on ferme le fichier.
 
On enregistre et on ferme le fichier.
; Par mesure de sécurité nous allons restreindre l'accès à notre fichier
+
; Par mesure de {{Template:Sécurité}} nous allons restreindre l'accès à notre fichier
 
<syntaxhighlight lang="bash"> chmod 600 .ssh/authorized_keys
 
<syntaxhighlight lang="bash"> chmod 600 .ssh/authorized_keys
 
</syntaxhighlight>
 
</syntaxhighlight>
 
A partir de maintenant notre utilisateur est autorisé à se connecter à la machine.
 
A partir de maintenant notre utilisateur est autorisé à se connecter à la machine.
  
 +
==Chrooter son système==
 +
Mettre en place une prison, un '''chroot''' pour ses utilisateurs peut être une bonne solution afin de sécuriser son {{Template:Serveur}}. Les utilisateurs emprisonnés sur le système auront un choix d'actions réduit aux commandes autorisées par vous même.<br>
 +
Vous trouverez de plus amples informations sur le '''chroot''' et sa mise en place dans l'article disponible à l'adresse [[Chrooter ses utilisateurs Debian|suivante]]
 +
 +
==ICMP Comment activer ou désactiver (bloquer) le ping sous Linux==
 +
 +
Pour des raisons de sécurité, il est souvent conseillé sous Linux (comme sur les autres OS), de désactiver le ping. Cela permet entre autre de se prémunir contre les scans réseaux, dont les plus basiques sont souvent effectués avec un ping successif de toutes les adresse IP d'une plage donnée. En revanche pour faciliter les opérations de maintenance il est plus confortable pour les administrateurs d’avoir un serveur qui répond normalement au ping.
 +
 +
Pour [[https://fr-wiki.ikoula.com/fr/ICMP_Comment_activer_ou_d%C3%A9sactiver_(bloquer)_le_ping_sous_Linux/Windows | désactiver le ping]]
  
 
==Pare-feu==
 
==Pare-feu==
 
L'utilisation d'un pare-feu est fortement recommandée pour la sécurisation de votre système.<br>
 
L'utilisation d'un pare-feu est fortement recommandée pour la sécurisation de votre système.<br>
 
Le pare-feu est souvent la première ligne de défense de votre machine contre l'extérieur, c'est en effet lui qui va analyser le trafic qui transite entre votre machine et l'extérieur.<br>
 
Le pare-feu est souvent la première ligne de défense de votre machine contre l'extérieur, c'est en effet lui qui va analyser le trafic qui transite entre votre machine et l'extérieur.<br>
Grâce au pare-feu vous êtes en mesure de pouvoir bloquer ou autoriser l'accès de votre machine depuis l'extérieur à certains ports ou protocoles, assurant ainsi la sécurité de votre système.
+
Grâce au pare-feu vous êtes en mesure de pouvoir bloquer ou autoriser l'accès de votre machine depuis l'extérieur à certains ports ou protocoles, assurant ainsi la {{Template:Sécurité}} de votre système.
===Les politiques de sécurité===
+
===Les politiques de {{Template:Sécurité}}===
Dans le cas d'un pare-feu il est nécessaire de définir une politique de sécurité à mettre en place. En effet sans une définition efficace le choix du blocage ou de l'autorisation des ports et protocoles se trouverait être assez aléatoire.<br>
+
Dans le cas d'un pare-feu il est nécessaire de définir une politique de {{Template:Sécurité}} à mettre en place. En effet sans une définition efficace le choix du blocage ou de l'autorisation des ports et protocoles se trouverait être assez aléatoire.<br>
Il est donc nécessaire de définir au préalable une politique claire quant à la sécurité de son réseau informatique ou de sa machine.<br>
+
Il est donc nécessaire de définir au préalable une politique claire quant à la {{Template:Sécurité}} de son réseau informatique ou de sa machine.<br>
 
<br>
 
<br>
 
Parmi les différentes politiques les plus couramment utilisées se trouvent les politiques de '''la liste blanche''' et celle de '''la liste noire'''.
 
Parmi les différentes politiques les plus couramment utilisées se trouvent les politiques de '''la liste blanche''' et celle de '''la liste noire'''.
 
====Liste blanche====
 
====Liste blanche====
Le principe de la politique de la '''liste blanche''' consiste à bloquer tout le trafic entrant sans exception et n'autoriser explicitement que les ports et protocoles dont nous sommes absolument sûrs de leur sécurité.
+
Le principe de la politique de la '''liste blanche''' consiste à bloquer tout le trafic entrant sans exception et n'autoriser explicitement que les ports et protocoles dont nous sommes absolument sûrs de leur {{Template:Sécurité}}.
Cette politique de sécurité présente de nombreux avantages par rapport à la '''liste noire'''. En effet tout trafic non explicitement autorisé sera bloqué, ceci permet d'éviter la plupart des tentatives de connexion que nous n'aurions pas forcement eu le réflexe de sécuriser.<br>
+
Cette politique de {{Template:Sécurité}} présente de nombreux avantages par rapport à la '''liste noire'''. En effet tout trafic non explicitement autorisé sera bloqué, ceci permet d'éviter la plupart des tentatives de connexion que nous n'aurions pas forcement eu le réflexe de sécuriser.<br>
 
L'un des désavantages de cette politique est l'obligation de devoir définir chaque ports ou protocoles utilisés afin de ne pas bloquer l’exécution de nos services ( par exemple le protocole ''http'' sur le port 80 ), il faut donc connaître chaque port utilisé par la machine et garder à jour les règles établies lors de l'ajout ou de la suppression d'un service.
 
L'un des désavantages de cette politique est l'obligation de devoir définir chaque ports ou protocoles utilisés afin de ne pas bloquer l’exécution de nos services ( par exemple le protocole ''http'' sur le port 80 ), il faut donc connaître chaque port utilisé par la machine et garder à jour les règles établies lors de l'ajout ou de la suppression d'un service.
Concernant le trafic sortant dans la majorité des cas il n'est pas considéré comme risqué de tout autorisé, en effet vous êtes censé connaître le trafic sortant de votre réseau ou machine. Il est cependant recommandé de garder une trace du trafic sortant par mesure de sécurité.
+
Concernant le trafic sortant dans la majorité des cas il n'est pas considéré comme risqué de tout autorisé, en effet vous êtes censé connaître le trafic sortant de votre réseau ou machine. Il est cependant recommandé de garder une trace du trafic sortant par mesure de {{Template:Sécurité}}.
 
====Liste noire====
 
====Liste noire====
Le principe de la politique de la '''liste noire''' consiste à autoriser tout le trafic entrant sans exception et à ne bloquer explicitement que les ports et protocoles dont nous sommes sûrs qu'ils présentent un risque pour la sécurité.<br>
+
Le principe de la politique de la '''liste noire''' consiste à autoriser tout le trafic entrant sans exception et à ne bloquer explicitement que les ports et protocoles dont nous sommes sûrs qu'ils présentent un risque pour la {{Template:Sécurité}}.<br>
Cette politique de sécurité présente de nombreux désavantages par rapport à la '''liste blanche'''. En effet autoriser tout le trafic entrant sans aucune restriction n'est pas recommandé, le blocage n'intervenant seulement que dans le cas d'un port ou protocole explicitement établi.
+
Cette politique de {{Template:Sécurité}} présente de nombreux désavantages par rapport à la '''liste blanche'''. En effet autoriser tout le trafic entrant sans aucune restriction n'est pas recommandé, le blocage n'intervenant seulement que dans le cas d'un port ou protocole explicitement établi.
Concernant le trafic sortant dans la majorité des cas il n'est pas considéré comme risqué de tout autorisé, en effet vous êtes censé connaître le trafic sortant de votre réseau ou machine. Il est cependant recommandé de garder une trace du trafic sortant par mesure de sécurité.
+
Concernant le trafic sortant dans la majorité des cas il n'est pas considéré comme risqué de tout autorisé, en effet vous êtes censé connaître le trafic sortant de votre réseau ou machine. Il est cependant recommandé de garder une trace du trafic sortant par mesure de {{Template:Sécurité}}.
 
===IPTables===
 
===IPTables===
 
IPTables est surement le plus connu des pare-feu logiciel disponible pour Debian.
 
IPTables est surement le plus connu des pare-feu logiciel disponible pour Debian.
Ligne 132 : Ligne 172 :
 
sudo iptables -A INPUT -p tcp --dport ssh -s x.x.x.x -j ACCEPT
 
sudo iptables -A INPUT -p tcp --dport ssh -s x.x.x.x -j ACCEPT
 
</syntaxhighlight>
 
</syntaxhighlight>
<div style="background-color: #FFCC99;"> '''Note''': Attention dans le cas d'une adresse IP dynamique, dès lors que votre IP aura changée vous serez incapable de vous connecter en SSH sur votre serveur!<br>
+
Vous pouvez aussi bloquer toutes les connexions sauf la votre (ATTENTION, Soyez prudent lors des manipulations)
 +
<syntaxhighlight lang="bash">
 +
iptables -P INPUT DROP  # Bloque tout le trafic entrant par défaut
 +
iptables -P FORWARD DROP  # Bloque le transfert de paquets
 +
iptables -P OUTPUT ACCEPT  # Autorise le trafic sortant
 +
 
 +
# Autoriser votre IP uniquement (X.X.X.X est à remplacer par votre IP)
 +
iptables -A INPUT -s X.X.X.X -j ACCEPT
 +
 
 +
# Autoriser le trafic loopback (nécessaire pour le bon fonctionnement du système)
 +
iptables -A INPUT -i lo -j ACCEPT
 +
</syntaxhighlight>
 +
 
 +
Sous Debian 12, iptables ne sauvegarde pas les règles après un redémarrage. Pour les conserver :
 +
<syntaxhighlight lang="bash">
 +
apt install iptables-persistent  # Installer le service de persistance
 +
netfilter-persistent save  # Sauvegarder les règles actuelles
 +
netfilter-persistent reload  # Recharger les règles au redémarrage
 +
</syntaxhighlight>
 +
 
 +
<div style="background-color: #FFCC99;"> '''Note''': Attention dans le cas d'une adresse IP dynamique, dès lors que votre IP aura changée vous serez incapable de vous connecter en SSH sur votre {{Template:Serveur}}!<br>
 
Faites preuve de prudence lors de l'assignation d'une adresse IP qui pourrait être dynamique, par exemple celle de votre box internet à la maison.</div>
 
Faites preuve de prudence lors de l'assignation d'une adresse IP qui pourrait être dynamique, par exemple celle de votre box internet à la maison.</div>
 
;Supprimer une règle
 
;Supprimer une règle
Ligne 140 : Ligne 200 :
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
 +
==Fail2ban==
 +
Il peut être utile de mettre en place le service '''fail2ban''' sur votre système afin de prévenir tout risque d'attaque par ''force brute''. En effet le service '''fail2ban''' vous permet de bannir, pour un temps donné, toute personne échouant à s'authentifier un certain nombre de fois sur la machine.<br>
 +
Vous trouverez de plus amples informations sur '''fail2ban''' et sa mise en place dans l'article disponible à l'adresse [[Mettre en place fail2ban sur Debian|suivante]].
 +
<br>
 
[[Catégorie:Serveur dédié]]
 
[[Catégorie:Serveur dédié]]
 
[[Catégorie:Linux]]
 
[[Catégorie:Linux]]
 +
[[Catégorie:Serveur VPS]]
 
<br />
 
<br />
<comments />
+
 
 +
==Rkhunter==
 +
 
 +
Vous avez la possibilité de détecter si des malwares/rootkits sont présents sur votre serveur via l'utilitaire rkhunter. <br />
 +
Vous pouvez l'installer via la commande: <br />
 +
<syntaxhighlight lang="bash">
 +
apt-get install rkhunter
 +
</syntaxhighlight>
 +
 
 +
<br />
 +
 
 +
Une fois installé, vous pouvez lancer un check de votre système via la commande
 +
 
 +
<br />
 +
 
 +
<syntaxhighlight lang="bash">
 +
rkhunter --checkall
 +
</syntaxhighlight>
 +
 
 +
<br />
 +
 
 +
Vous pouvez ajouter l'option "--report-warnings-only" afin de n'avoir que les erreurs dans le rapport. <br />
 +
 
 +
Vous pouvez par exemple automatiser cette tâche tout les jours en ajoutant une tâche cron:  (/etc/crontab ou crontab -e)
 +
 
 +
<pre> 0  0    * * *  root rkhunter --checkall --report-warnings-only  </pre>  
 +
(ici tout les jours à minuit)

Version actuelle datée du 30 janvier 2025 à 15:04

fr:Sécuriser sa machine Debian ar:تأمين جهاز به دبيان zh:确保其 Debian 的机器 he:אבטחת הרכב דביאן שלה ro:Asigurarea sa maşină de Debian ru:Обеспечение его машины под управлением Debian pl:Zabezpieczanie swojej maszynie Debiana ja:その Debian マシンを確保 de:Sicherung ihrer Debian-Rechner nl:Beveiligen zijn Debian machine it:Protezione relativa macchina Debian pt:Protegendo sua máquina Debian es:Su máquina Debian en:Securing its Debian machine

Introduction

Assurer la sécurité de sa machine est un point essentiel qui ne doit pas être sous-estimé sous peine de devenir la cible de diverses attaques. La puissance actuelle des ordinateurs rendant aujourd'hui des techniques d'intrusions comme l'attaque par force brute ou bruteforce très simple à mettre en oeuvre pour obtenir un accès administrateur à la machine cible en un temps réduit.

Vous trouverez sur cette page une liste non exhaustive de pistes afin de sécuriser votre serveur Debian sur différents points tels que le compte root, l'accès ssh, le pare-feu, etc...

Avertissement: Avant toute modification de votre système prévoyez toujours une sauvegarde de vos fichiers en cas de mauvaise manipulation.
Sur un serveur de production, pensez à effectuer ces opérations pendant les heures creuses afin de minimiser l'impact de vos actions.

Pré-requis

L'un des pré-requis essentiel à la sécurité de son serveur est de maintenir ses paquets dans leur version la plus à jour possible. Un nombre important de failles découvertes sont rapidement corrigées par les développeurs des paquets et applications concernées, dans la mesure du possible il faut toujours conserver son système à jour et ainsi éviter les failles de sécurité.

 apt-get update
 apt-get upgrade 

Afin de conserver votre système Debian à jour, assurez-vous de posséder une liste des dépôts officiels à jour. Vous pourrez trouver une liste des dépôts disponibles chez Ikoula et les instructions d'installation à cette adresse.

Les répertoires utilisateurs

Par défaut sur un système Debian, les répertoires utilisateurs sont accessibles aux autres comptes locaux présents sur la machine.
Afin de palier à cette faille dans la sécurité il nous est nécessaire de reconfigurer le comportement par défaut.

Faisons en sorte que les répertoires ne soient lisible que par leur propriétaire respectif
 dpkg-reconfigure adduser

dpkg-reconfigure adduser

L'accès root

Autoriser la connexion du compte root après la première utilisation n'est en général pas une bonne idée. En effet le compte root ou super-utilisateur possède un accès total à votre système.
Si une personne malveillante vient à gagner l'accès au compte super-utilisateur elle aura le contrôle total de votre machine.

La commande sudo

Afin de réduire les risques vous pouvez, par exemple, ajouter un utilisateur qui, au besoin, obtiendra les droits de notre super-utilisateur par l'utilisation de la commande sudo.

Il nous faut tout d'abord créer un nouvel utilisateur
 adduser votre_utilisateur

Remplissez ensuite les différents champs ainsi que le mot de passe qui, de préférence, sera composé de minuscules, majuscules et chiffres.

Nous allons maintenant installer sudo
 apt-get install sudo
Maintenant que notre utilisateur est créé et que sudo est installé il va devoir être dans le groupe sudo pour pouvoir utiliser la commande
 usermod -a -G sudo votre_utilisateur

A partir de maintenant notre utilisateur pourra, au besoin, faire précéder la commande souhaitée de sudo afin de l'exécuter avec les permissions du super-utilisateur.
Son mot de passe lui sera demandé avant d'exécuter toute commande.

 sudo cat /etc/password

Interdire le login root

Maintenant que nous disposons d'un autre utilisateur nous pouvons par exemple empêcher la connexion à notre système à partir du compte root.

Tout d'abord il vous faut éditer le fichier de configuration du service ssh
  vi /etc/ssh/sshd_config
Trouvez et éditez la ligne suivante dans votre fichier sshd_config, en modifiant le yes par no. Au besoin dé-commentez la ligne en supprimant le symbole #.
  PermitRootLogin no

N'oubliez pas ensuite de sauvegarder et de fermer le fichier de configuration.

Lorsque le service SSH sera relancé vos modifications prendront effet.
 /etc/init.d/ssh restart


Conseil: Nous vous conseillons de toujours garder le terminal SSH connecté en root pendant la durée des tests. En effet une mauvaise manipulation rendrait la connexion à votre système impossible.
L'ouverture d'un second terminal afin de tester la connexion et l'utilisation des modifications sur le nouvel utilisateur est donc recommandée.

L'accès SSH

Grâce aux solutions apportées précédemment notre système est déjà bien sécurisé, mais nous pouvons encore renforcer cette sécurité en mettant en place une authentification par fichier de clé.
Habituellement la connexion et l'authentification sur votre système s'effectue grâce à une paire login/mot de passe. Nous pouvons remplacer cette méthode qui n'est pas infaillible par une authentification par clé.
Une fois la modification mise en place lors de chaque nouvelle connexion le système va regarder si l'utilisateur qui tente de se connecter possède une clé valide et si cette-ci est bien autorisée à effectuer une connexion pour cet utilisateur.
Bien qu'aucune méthode ne soit infaillible l'authentification par fichier de clé requiert de la personne voulant s'introduire dans le système qu'elle possède ce fichier. Nous pouvons donc renforcer la sécurité par rapport à un mot de passe qui peut être deviné par brute force
Plusieurs inconvénients sont cependant présents lorsque cette méthode est choisie, en effet il est impératif de devoir posséder le fichier de clé quelque soit l'endroit de la connexion, par exemple entre des ordinateurs au travail et à la maison.
Vous devrez également ajouté manuellement chaque nouveau fichier de clé qui sera autorisé à accéder à votre système, dans le cas par exemple de l'ajout d'un nouvel utilisateur ou de l'accès d'une personne autorisée à votre système.

Changer le port par défaut

L'un des moyens les plus efficace pour arrêter les tests automatiques lancés contre les serveurs est de changer le port par défaut de SSH sur votre machine. Pour ce faire éditez votre fichier sshd_config

 vi /etc/ssh/sshd_config
Trouvez et éditez la ligne suivante du fichier en remplaçant la valeur par celle choisie
# What ports, IPs and protocols we listen for
Port 22
Redémarrez le service SSH
 /etc/init.d/ssh restart
Note: A présent la connexion à votre machine s'effectuera en précisant le nouveau port SSH utilisé: ssh utilisateur@Adresse_IP -p Votre_port


Générer une paire de clé

Windows

PuTTYgen sous Windows

Vous pouvez générer votre paire de clé depuis le logiciel PuTTYgen disponible sous Windows.

Linux

Sous linux vous pouvez taper la commande suivante :

 ssh-keygen

Copier une paire de clé

Lorsque la paire est générée nous devons à présent indiquer sur le serveur quelles sont les personnes autorisées à se connecter à notre nouvel utilisateur. Pour ce faire chaque utilisateur de notre système dispose d'un fichier ssh/authorized_keys présent dans son répertoire local.

Si vous êtes actuellement en train de générer la paire de clé sur votre système Debian vous pouvez utiliser la commande suivante afin de copier automatiquement la clé dans le fichier.
 ssh-copy-id votre_utilisateur@IP_VotreServeur
SInon vous pouvez manuellement ajouter votre clé publique au fichier des personnes autorisées

Si le dossier .ssh n'existe pas dans le dossier local de notre utilisateur nous devons le créer

mkdir .ssh
chmod 700 .ssh
Maintenant nous devons créer un fichier authorized_keys dans notre dossier .ssh
 vi .ssh/authorized_keys
On ajoute ensuite la clé publique au fichier, le résultat doit être semblable à cet exemple
 ssh-rsa AAAB3NzaC1yc2EAAAADAQaSdMTJXMy3MtlQhva+j9CgguyVbU3nCKneB+KjKiS/1rggpFmu3HbXBnWSUdf votre_utilisateur@machine.locale

On enregistre et on ferme le fichier.

Par mesure de sécurité nous allons restreindre l'accès à notre fichier
 chmod 600 .ssh/authorized_keys

A partir de maintenant notre utilisateur est autorisé à se connecter à la machine.

Chrooter son système

Mettre en place une prison, un chroot pour ses utilisateurs peut être une bonne solution afin de sécuriser son serveur. Les utilisateurs emprisonnés sur le système auront un choix d'actions réduit aux commandes autorisées par vous même.
Vous trouverez de plus amples informations sur le chroot et sa mise en place dans l'article disponible à l'adresse suivante

ICMP Comment activer ou désactiver (bloquer) le ping sous Linux

Pour des raisons de sécurité, il est souvent conseillé sous Linux (comme sur les autres OS), de désactiver le ping. Cela permet entre autre de se prémunir contre les scans réseaux, dont les plus basiques sont souvent effectués avec un ping successif de toutes les adresse IP d'une plage donnée. En revanche pour faciliter les opérations de maintenance il est plus confortable pour les administrateurs d’avoir un serveur qui répond normalement au ping.

Pour [| désactiver le ping]

Pare-feu

L'utilisation d'un pare-feu est fortement recommandée pour la sécurisation de votre système.
Le pare-feu est souvent la première ligne de défense de votre machine contre l'extérieur, c'est en effet lui qui va analyser le trafic qui transite entre votre machine et l'extérieur.
Grâce au pare-feu vous êtes en mesure de pouvoir bloquer ou autoriser l'accès de votre machine depuis l'extérieur à certains ports ou protocoles, assurant ainsi la sécurité de votre système.

Les politiques de sécurité

Dans le cas d'un pare-feu il est nécessaire de définir une politique de sécurité à mettre en place. En effet sans une définition efficace le choix du blocage ou de l'autorisation des ports et protocoles se trouverait être assez aléatoire.
Il est donc nécessaire de définir au préalable une politique claire quant à la sécurité de son réseau informatique ou de sa machine.

Parmi les différentes politiques les plus couramment utilisées se trouvent les politiques de la liste blanche et celle de la liste noire.

Liste blanche

Le principe de la politique de la liste blanche consiste à bloquer tout le trafic entrant sans exception et n'autoriser explicitement que les ports et protocoles dont nous sommes absolument sûrs de leur sécurité. Cette politique de sécurité présente de nombreux avantages par rapport à la liste noire. En effet tout trafic non explicitement autorisé sera bloqué, ceci permet d'éviter la plupart des tentatives de connexion que nous n'aurions pas forcement eu le réflexe de sécuriser.
L'un des désavantages de cette politique est l'obligation de devoir définir chaque ports ou protocoles utilisés afin de ne pas bloquer l’exécution de nos services ( par exemple le protocole http sur le port 80 ), il faut donc connaître chaque port utilisé par la machine et garder à jour les règles établies lors de l'ajout ou de la suppression d'un service. Concernant le trafic sortant dans la majorité des cas il n'est pas considéré comme risqué de tout autorisé, en effet vous êtes censé connaître le trafic sortant de votre réseau ou machine. Il est cependant recommandé de garder une trace du trafic sortant par mesure de sécurité.

Liste noire

Le principe de la politique de la liste noire consiste à autoriser tout le trafic entrant sans exception et à ne bloquer explicitement que les ports et protocoles dont nous sommes sûrs qu'ils présentent un risque pour la sécurité.
Cette politique de sécurité présente de nombreux désavantages par rapport à la liste blanche. En effet autoriser tout le trafic entrant sans aucune restriction n'est pas recommandé, le blocage n'intervenant seulement que dans le cas d'un port ou protocole explicitement établi. Concernant le trafic sortant dans la majorité des cas il n'est pas considéré comme risqué de tout autorisé, en effet vous êtes censé connaître le trafic sortant de votre réseau ou machine. Il est cependant recommandé de garder une trace du trafic sortant par mesure de sécurité.

IPTables

IPTables est surement le plus connu des pare-feu logiciel disponible pour Debian.

Voici quelques commandes pratiques le concernant:

Installation d'iptables
 sudo apt-get install iptables
Lister les règles actuellement établies
 sudo iptables -L
Purger les règles établies
sudo iptables -F
sudo iptables -X
Ajouter une règle
# Autoriser les connexions entrantes sur le port ssh(22) tcp depuis l'adresse ip x.x.x.x par exemple
sudo iptables -A INPUT -p tcp --dport ssh -s x.x.x.x -j ACCEPT

Vous pouvez aussi bloquer toutes les connexions sauf la votre (ATTENTION, Soyez prudent lors des manipulations)

iptables -P INPUT DROP  # Bloque tout le trafic entrant par défaut
iptables -P FORWARD DROP  # Bloque le transfert de paquets
iptables -P OUTPUT ACCEPT  # Autorise le trafic sortant

# Autoriser votre IP uniquement (X.X.X.X est à remplacer par votre IP)
iptables -A INPUT -s X.X.X.X -j ACCEPT

# Autoriser le trafic loopback (nécessaire pour le bon fonctionnement du système)
iptables -A INPUT -i lo -j ACCEPT

Sous Debian 12, iptables ne sauvegarde pas les règles après un redémarrage. Pour les conserver :

apt install iptables-persistent  # Installer le service de persistance
netfilter-persistent save  # Sauvegarder les règles actuelles
netfilter-persistent reload  # Recharger les règles au redémarrage
Note: Attention dans le cas d'une adresse IP dynamique, dès lors que votre IP aura changée vous serez incapable de vous connecter en SSH sur votre serveur!
Faites preuve de prudence lors de l'assignation d'une adresse IP qui pourrait être dynamique, par exemple celle de votre box internet à la maison.
Supprimer une règle
# Supprimer la règle n°2 de la catégorie OUTPUT
sudo iptables -D OUTPUT 2


Fail2ban

Il peut être utile de mettre en place le service fail2ban sur votre système afin de prévenir tout risque d'attaque par force brute. En effet le service fail2ban vous permet de bannir, pour un temps donné, toute personne échouant à s'authentifier un certain nombre de fois sur la machine.
Vous trouverez de plus amples informations sur fail2ban et sa mise en place dans l'article disponible à l'adresse suivante.

Rkhunter

Vous avez la possibilité de détecter si des malwares/rootkits sont présents sur votre serveur via l'utilitaire rkhunter.
Vous pouvez l'installer via la commande:

apt-get install rkhunter


Une fois installé, vous pouvez lancer un check de votre système via la commande


rkhunter --checkall


Vous pouvez ajouter l'option "--report-warnings-only" afin de n'avoir que les erreurs dans le rapport.

Vous pouvez par exemple automatiser cette tâche tout les jours en ajoutant une tâche cron: (/etc/crontab ou crontab -e)

 0  0    * * *   root rkhunter --checkall --report-warnings-only  

(ici tout les jours à minuit)