Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tutoriel:que_faire_en_cas_de_serveur_compromis [Le 28/07/2012, 11:15]
xavier4811
tutoriel:que_faire_en_cas_de_serveur_compromis [Le 11/09/2022, 12:18] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 9: Ligne 9:
  
  
-Récemment, j'ai eu des doutes quant à l'​intégrité d'un de nos serveurs car il redémarrait de manière aléatoire. J'ai alors cherché d'​éventuelles traces de passage d'un pirate qui aurait pu compromettre ce serveur. Pour ce faire, j'ai fait beaucoup d'​opérations ​et il m'a semblé judicieux d'en faire part à d'​autres. Si vous pensez à d'​autres vérifications qui peuvent être utiles, n'​hésitez pas à les ajouter à ce document. Par chance, la machine n'​était pas compromise, il s'​agissait juste d'un problème d'​alimentation.+Récemment, j'ai eu des doutes quant à l'​intégrité d'un de nos serveurs car il redémarrait de manière aléatoire. J'ai alors cherché d'​éventuelles traces de passage d'un pirate qui aurait pu compromettre ce serveur. Pour ce faire, j'ai fait beaucoup d'​opérations ​etil m'a semblé judicieux d'en faire part à d'​autres. Si vous pensez à d'​autres vérifications qui peuvent être utiles, n'​hésitez pas à les ajouter à ce document. Par chance, la machine n'​était pas compromise, il s'​agissait juste d'un problème d'​alimentation.
  
 Rentrons dans le vif du sujet. Rentrons dans le vif du sujet.
Ligne 16: Ligne 16:
 ===== Bloquer tous les accès instantanément ===== ===== Bloquer tous les accès instantanément =====
  
-La première chose à faire, c'est d'​empêcher tous les accès (distants ​et locaux) à la machine, mais vous devez aussi pouvoir accéder au serveur en cas de déconnexion.\\+La première chose à faire, c'est d'​empêcher tous les accès (distants ​etlocaux) à la machine, mais vous devez aussi pouvoir accéder au serveur en cas de déconnexion.\\
  
 ==== Prévoyez un accès de secours ==== ==== Prévoyez un accès de secours ====
  
-=== Si vous avez accès au serveur ​et si celui ci peut être redémarré. ===+=== Si vous avez accès au serveur ​etsi celui ci peut être redémarré. ===
 Munissez vous d'un [[:​live_cd]] ou [[:​live_usb]],​ en cas de déconnexion involontaire,​ vous ne pourrez pas vous reconnecter.\\ Munissez vous d'un [[:​live_cd]] ou [[:​live_usb]],​ en cas de déconnexion involontaire,​ vous ne pourrez pas vous reconnecter.\\
 Il vous faudra donc booter sur le [[:​live_cd]] ou [[:​live_usb]] pour supprimer le fichier **nologin** qui va être créé ci-dessous.\\ Il vous faudra donc booter sur le [[:​live_cd]] ou [[:​live_usb]] pour supprimer le fichier **nologin** qui va être créé ci-dessous.\\
  
 === Si vous n'avez pas accès au serveur, si vous ne pouvez pas le redémarrer. === === Si vous n'avez pas accès au serveur, si vous ne pouvez pas le redémarrer. ===
-Seul le compte **root** sera autorisé a se reconnecter,​ vous devez donc préparer ​cet accès ​de secours.+Seul le compte **root** sera autorisé a se reconnecter,​ vous devez donc préparer ​cetaccès ​de secours.
  
 <note warning> <note warning>
Ligne 31: Ligne 31:
 </​note>​ </​note>​
  
-S'il s'agit d'une connexion [[:SSH]], vérifiez que **root** ​est autorisé a se connecter. La variable suivante du fichier **/​etc/​ssh/​sshd_config** doit être égale à **yes**.\\+S'il s'agit d'une connexion [[:SSH]], vérifiez que **root** ​soit autorisé a se connecter. La variable suivante du fichier **/​etc/​ssh/​sshd_config** doit être égale à **yes**.\\
 <​file>​ <​file>​
 PermitRootLogin yes PermitRootLogin yes
Ligne 53: Ligne 53:
 </​code>​ </​code>​
  
-À partir de ce moment, toutes les connexions locales ​et distantes ​sont refusées.+À partir de ce moment, toutes les connexions locales ​etdistantes ​sont refusées.
  
 <note important>​ATTENTION !!! Veillez à ne pas sortir de la session en cours, sinon vous devrez utiliser votre solution de secours.</​note>​ <note important>​ATTENTION !!! Veillez à ne pas sortir de la session en cours, sinon vous devrez utiliser votre solution de secours.</​note>​
Ligne 76: Ligne 76:
 </​code>​ </​code>​
  
 +Blocage alternatif pour connexion entrante etsortant ( moins dangereuse ) avec le firewall intégré [[ufw]] :
 +<​code>​
 +sudo ufw disable
 +sudo ufw default deny incoming
 +sudo ufw default deny outgoing
 +sudo ufw enable
 +sudo ufw status verbose
 +</​code>​
  
 ===== Examen des logs d'​authentification ===== ===== Examen des logs d'​authentification =====
  
-La première source d'​information qui peut vous aider sont les logs du système. Si vous avez bien lu ce qu'à écrit [[utilisateurs:​Ju]] à propos du [[:sudo]], vous n'avez pas donné de mot de passe au ''​root'' ​et toutes ​les actions des administrateurs du système passent par la commande ''​sudo''​.+La première source d'​information qui peut vous aider sont les logs du système. Si vous avez bien lu ce qu'à écrit [[utilisateurs:​Ju]] à propos du [[:sudo]], vous n'avez pas donné de mot de passe au ''​root'' ​ettoutes ​les actions des administrateurs du système passent par la commande ''​sudo''​.
  
 Si c'est le cas, toutes les actions sont logguées dans le fichier ''/​var/​log/​auth.log''​. Ces logs vous permettront de savoir si un utilisateur a fait une erreur de manipulation ou si quelqu'​un a utilisé son mot de passe à de mauvaises fins. Si c'est le cas, toutes les actions sont logguées dans le fichier ''/​var/​log/​auth.log''​. Ces logs vous permettront de savoir si un utilisateur a fait une erreur de manipulation ou si quelqu'​un a utilisé son mot de passe à de mauvaises fins.
Ligne 88: Ligne 96:
 ===== Examen des historiques des utilisateurs ===== ===== Examen des historiques des utilisateurs =====
  
-Ensuite, vous pouvez examiner les commandes introduites par les utilisateurs dans l'​historique du bash (le système qui permet de retrouver les anciennes lignes tapées avec la flèche HAUT du clavier).+Ensuite, vous pouvez examiner les commandes introduites par les utilisateurs dans l'​historique du bash (le système qui permetde ​retrouver les anciennes lignes tapées avec la flèche HAUT du clavier).
  
-Ces historiques sont beaucoup moins précis que les logs d'​authentification mais elles permettront de mettre en cause ou non un utilisateur. Les pirates ne pensent pas toujours à supprimer ces historiques,​ ce qui peut aider à déterminer si le système est corrompu ​et prendre ​des mesures.+Ces historiques sont beaucoup moins précis que les logs d'​authentification mais elles permettront de mettre en cause ou non un utilisateur. Les pirates ne pensent pas toujours à supprimer ces historiques,​ ce qui peut aider à déterminer si le système est corrompu ​etprendre ​des mesures.
  
-Les historiques se trouvent dans les répertoires des utilisateurs (''/​root'',​ ''/​home/​jf'',​ ''/​home/​ju'',​...) ​et porte le nom ''​.bash_history''​.+Les historiques se trouvent dans les répertoires des utilisateurs (''/​root'',​ ''/​home/​jf'',​ ''/​home/​ju'',​...) ​etporte ​le nom ''​.bash_history''​.
  
  
  
-===== Bloquer un utilisateur ​et politique ​des mots de passe =====+===== Bloquer un utilisateur ​etpolitique ​des mots de passe =====
  
-Si vous avez vu quelque chose de suspect par rapport à un utilisateur,​ la première chose à faire est de lui bloquer ses accès ​et supprimer ​les processus qui lui sont attachés.+Si vous avez vu quelque chose de suspect par rapport à un utilisateur,​ la première chose à faire est de lui bloquer ses accès ​etsupprimer ​les processus qui lui sont attachés.
  
 Pour ce faire, il vous suffit de remplacer le shell par défaut de l'​utilisateur en ''/​bin/​false''​ par la commande : Pour ce faire, il vous suffit de remplacer le shell par défaut de l'​utilisateur en ''/​bin/​false''​ par la commande :
Ligne 104: Ligne 112:
 sudo chsh -s /bin/false user sudo chsh -s /bin/false user
 </​code>​ </​code>​
-Ensuite, vous supprimez tous les processus attachés à cet utilisateur ​(par exemple, pour l'​utilisateur ''​jf''​) :+Ensuite, vous supprimez tous les processus attachés à cetutilisateur ​(par exemple, pour l'​utilisateur ''​jf''​) :
 <​code>​ <​code>​
 sudo killall -u jf sudo killall -u jf
Ligne 114: Ligne 122:
 </​code>​ </​code>​
  
-Concernant les mots de passe, qui sont souvent une faille de sécurité, il est intéressant de les changer régulièrement (tous les 3 mois par exemple ou mieux, tous les mois) et d'​utiliser des mots de passe un peu complexe.+Concernant les mots de passe, qui sont souvent une faille de sécurité, il est intéressant de les changer régulièrement (tous les 3 mois par exemple ou mieux, tous les mois) etd'​utiliser des mots de passe un peu complexe.
  
 Vous trouverez des informations pour la génération des mots de passe sur [[:​securite|cette page]]. Vous trouverez des informations pour la génération des mots de passe sur [[:​securite|cette page]].
Ligne 120: Ligne 128:
 ===== Arrêt de tous les services ===== ===== Arrêt de tous les services =====
  
-Ensuite, il est intéressant d'​arrêter tous les services tournant sur la machine pour examiner les portes dérobées. Pour ce faire, il vous suffit de parcourir vos notes d'​exploitations (que vous avez rédigées au préalable...) ​et d'​utiliser les commandes du type :+Ensuite, il est intéressant d'​arrêter tous les services tournant sur la machine pour examiner les portes dérobées. Pour ce faire, il vous suffit de parcourir vos notes d'​exploitations (que vous avez rédigées au préalable...) ​etd'​utiliser les commandes du type :
  
 <​code>​ <​code>​
Ligne 126: Ligne 134:
 </​code>​ </​code>​
  
-Pensez également à arrêter le ''​portmap'',​ l' ''​inetd'' ​et l' ''​xinetd''​.+Pensez également à arrêter le ''​portmap'',​ l' ''​inetd'' ​etl' ''​xinetd''​.
 Sans oublier les services //​spéciaux//​ ou propriétaires. Sans oublier les services //​spéciaux//​ ou propriétaires.
  
Ligne 136: Ligne 144:
 ===== Scan des ports ouverts sur la machine ===== ===== Scan des ports ouverts sur la machine =====
  
-À partir d'une autre machine ​et sur chacune des interfaces réseaux du serveur suspect, lancer un ''​nmap''​.+À partir d'une autre machine ​etsur chacune des interfaces réseaux du serveur suspect, lancer un ''​nmap''​.
  
 L'​application ''​nmap''​ est un scanneur de ports qui s'​installe très facilement via la commande suivante : L'​application ''​nmap''​ est un scanneur de ports qui s'​installe très facilement via la commande suivante :
  
 <​code>​ <​code>​
-sudo apt-get install ​nmap+sudo apt-getinstall ​nmap
 </​code>​ </​code>​
  
Ligne 150: Ligne 158:
 </​code>​ </​code>​
  
-Le résultat indique quels sont les ports ouverts sur la machine. Ne paniquez pas tout de suite si vous avez des ports ouverts : il s'agit peut être d'un service que vous avez oublié d'​arrêter. ​+Le résultat indique quels sont les ports ouverts sur la machine. Ne paniquez pas tout de suite si vous avez des ports ouverts : il s'agit peut être d'un service que vous avez oublié d'​arrêter.
  
-Si vous n'avez aucun port ouvert, c'est un bon signe. S'il reste des services ouverts, arrêtez-les ​et relancez ​le scan.+Si vous n'avez aucun port ouvert, c'est un bon signe. S'il reste des services ouverts, arrêtez-les ​etrelancez ​le scan.
  
-Si vous ne trouvez rien cela ne veut pas dire que vous n'avez pas été compromis… car il est possible que vous ayez des connexions inversées ! C'est à dire des connexions créées dans le sens inverse : le pirate a ouvert les ports sur sa propre machine ​et votre machine s'y connecte. Il y a deux façons de voir les connexions : ''​netstat -antp''​ et ''​wireshark''​. Le programme ''​netstat''​ peut avoir été modifié par l'​intrus aussi il est conseillé de faire tourner ''​wireshark''​ ou tout autre analyseur de paquets pour détecter les connexions suspectes.+Si vous ne trouvez rien cela ne veut pas dire que vous n'avez pas été compromis… car il est possible que vous ayez des connexions inversées ! C'est à dire des connexions créées dans le sens inverse : le pirate a ouvert les ports sur sa propre machine ​etvotre ​machine s'y connecte. Il y a deux façons de voir les connexions : ''​netstat -antp''​ et''​wireshark''​. Le programme ''​netstat''​ peut avoir été modifié par l'​intrus aussi il est conseillé de faire tourner ''​wireshark''​ ou tout autre analyseur de paquets pour détecter les connexions suspectes.
  
  
Ligne 160: Ligne 168:
 ===== Vérification des rootkits ===== ===== Vérification des rootkits =====
  
-Après cela, il est intéressant de vérifier qu'​aucun rootkit n'a été installé. Dans les grandes lignes, un rootkit est un cheval de Troie ( qui permet à un intrus de reprendre le contrôle de la machine ultérieurement en laissant un petit programme lui ouvrant la porte) mettant en œuvre des techniques furtives lui permettant de ne pas apparaître à première vue lors de l'​examen d'une machine. Les fichiers d'un rootkit n'​apparaissent pas avec la commande ''​ls''​ par exemple, le processus n'​apparaît pas non plus avec la commande ''​ps'',​ etc…+Après cela, il est intéressant de vérifier qu'​aucun rootkit n'a été installé. Dans les grandes lignes, un rootkit est un cheval de Troie ( qui permetà ​un intrus de reprendre le contrôle de la machine ultérieurement en laissant un petit programme lui ouvrant la porte) mettant en œuvre des techniques furtives lui permettant de ne pas apparaître à première vue lors de l'​examen d'une machine. Les fichiers d'un rootkit n'​apparaissent pas avec la commande ''​ls''​ par exemple, le processus n'​apparaît pas non plus avec la commande ''​ps'',​ etc…
  
-Il existe deux applications permettant d'​identifier les rootkits les plus courants : il s'agit de ''​rkhunter''​ et ''​chkrootkit''​. Pour les installer, utilisez la commande suivante :+Il existe deux applications permettant d'​identifier les rootkits les plus courants : il s'agit de ''​rkhunter''​ et''​chkrootkit''​. Pour les installer, utilisez la commande suivante :
  
 <​code>​ <​code>​
-sudo apt-get install ​chkrootkit rkhunter+sudo apt-getinstall ​chkrootkit rkhunter
 </​code>​ </​code>​
  
Ligne 174: Ligne 182:
 </​code>​ </​code>​
  
-et +et
  
 <​code>​ <​code>​
Ligne 183: Ligne 191:
 la commande **sudo rkhunter --propupdate** sert a la mise a jour des hash de fichiers pour limiter les faux positifs la commande **sudo rkhunter --propupdate** sert a la mise a jour des hash de fichiers pour limiter les faux positifs
  
-Rkhunter affiche ensuite les test effectués ​et affiche ​les fichiers annalysés : +Rkhunter affiche ensuite les test effectués ​etaffiche ​les fichiers annalysés : 
 <​code>​ <​code>​
 sudo rkhunter --checkall sudo rkhunter --checkall
Ligne 205: Ligne 213:
 ............... ...............
 </​code>​ </​code>​
-Un exemple d'​avertissement,​ ce fichier est un faux positif, affiché pour l'​exemple,​ il fait partie du paquet RkHunter. le fichier de configuration **/​etc/​rkhunter.conf** contient des exemples utilisables pour ignorer les faux positifs.+Un exemple d'​avertissement,​ ce fichier est un faux positif, affiché pour l'​exemple,​ il fait partie du paquetRkHunter. le fichier de configuration **/​etc/​rkhunter.conf** contient des exemples utilisables pour ignorer les faux positifs.
 <​code>​ <​code>​
 /​usr/​bin/​unhide.rb ​                                      [ Warning ] /​usr/​bin/​unhide.rb ​                                      [ Warning ]
Ligne 301: Ligne 309:
  
 Vous retrouvez un fichier suspect dans les propriétés de fichiers, en fait 1 faux positif identifié.\\ Vous retrouvez un fichier suspect dans les propriétés de fichiers, en fait 1 faux positif identifié.\\
-Après avoir consulté le fichier de log,si rien ne vous semble suspect comme ci-dessus,​redémarrez la machine ​et procédez ​à nouveau à la vérification.\\+Après avoir consulté le fichier de log,si rien ne vous semble suspect comme ci-dessus,​redémarrez la machine ​etprocédez ​à nouveau à la vérification.\\
  
-Si quelque chose est détecté comme suspect, l'​application indiquera le nombre de rootkits possibles ​et quels sont les ports suspectés. +Si quelque chose est détecté comme suspect, l'​application indiquera le nombre de rootkits possibles ​etquels ​sont les ports suspectés. 
-FIXME A quoi ça ressemble quelque chose de suspect ? +FIXME A quoi ça ressemble quelque chose de suspect ?
  
 Pour déterminer quelle application a ouvert ce port (éventuellement non détecté par le scanner ''​nmap''​),​ vous pouvez utiliser la commande suivante (exemple, pour le port 600) : Pour déterminer quelle application a ouvert ce port (éventuellement non détecté par le scanner ''​nmap''​),​ vous pouvez utiliser la commande suivante (exemple, pour le port 600) :
Ligne 314: Ligne 322:
 Après, à vous de voir si c'est vraiment une intrusion ou si c'est un service qui tourne en arrière-plan… Après, à vous de voir si c'est vraiment une intrusion ou si c'est un service qui tourne en arrière-plan…
  
-===== Vérification des virus et vers =====+===== Vérification des virus etvers ​=====
  
-La dernière vérification indispensable à faire est le scan complet du disque dur avec un antivirus (**à jour !!!**).+La dernière vérification indispensable à faire est le scan completdu ​disque dur avec un antivirus (**à jour !!!**).
 Sur la page wiki traitant de la [[:​sécurité]],​ vous trouverez différents antivirus. Sur la page wiki traitant de la [[:​sécurité]],​ vous trouverez différents antivirus.
  
Ligne 328: Ligne 336:
 Si tout va bien, il n'y a **a priori** rien d'​anormal sur votre serveur. « A priori »  car à moins de couler un système informatique dans du béton sans aucune connexion vers l'​extérieur,​ la sécurité totale n'​existe jamais. Si tout va bien, il n'y a **a priori** rien d'​anormal sur votre serveur. « A priori »  car à moins de couler un système informatique dans du béton sans aucune connexion vers l'​extérieur,​ la sécurité totale n'​existe jamais.
  
-Je ne prétends pas répondre à tous les problèmes de sécurité dans ce court document, cependant, les intrusions fréquentes sont effectuées par des [[http://​fr.wikipedia.org/​wiki/​Script_kiddie|script-kiddies]] : des pirates amateurs qui utilisent des failles de sécurité connues ​et des outils les exploitant créés par d'​autres. Fondamentalement,​ 95% des attaques sont toujours faites avec une poignée de [[http://​fr.wikipedia.org/​wiki/​Rootkit|rootkits]] connus. Dès lors, si vous avez été piraté par un pirate amateur, cela devrait être détecté avec les quelques outils présentés ici.+Je ne prétends pas répondre à tous les problèmes de sécurité dans ce court document, cependant, les intrusions fréquentes sont effectuées par des [[https://​fr.wikipedia.org/​wiki/​Script_kiddie|script-kiddies]] : des pirates amateurs qui utilisent des failles de sécurité connues ​etdes outils les exploitant créés par d'​autres. Fondamentalement,​ 95% des attaques sont toujours faites avec une poignée de [[http://​fr.wikipedia.org/​wiki/​Rootkit|rootkits]] connus. Dès lors, si vous avez été piraté par un pirate amateur, cela devrait être détecté avec les quelques outils présentés ici.
  
 ---- ----
  
 // Contributeurs : [[utilisateurs:​SunWukong]],​ [[utilisateurs:​xavier4811|Xavier4811]]//​ // Contributeurs : [[utilisateurs:​SunWukong]],​ [[utilisateurs:​xavier4811|Xavier4811]]//​
  • tutoriel/que_faire_en_cas_de_serveur_compromis.1343466953.txt.gz
  • Dernière modification: Le 28/07/2012, 11:15
  • par xavier4811