Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
serveur:serveur_compromis [Le 27/12/2006, 23:43] 84.98.110.44 |
— (Version actuelle) | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | <code> | ||
- | Ubuntu toute versions | ||
- | </code> | ||
- | Rédigé par [[utilisateurs:ostaquet]] | ||
- | |||
- | ===== Que faire en cas de soupçons d'un serveur compromis ? ===== | ||
- | |||
- | Récemment, j'ai fait la triste expérience d'avoir des doutes qu'en à l'intégrité d'un de nos serveurs. Par chance, il n'était pas compromis, il s'agissait juste d'un problème d'alimentation qui provoquait un redémarrage du serveur de manière aléatoire. | ||
- | |||
- | Durant ces instants de doute, j'ai cherché à trouver une éventuelle faille de sécurité dans le système. Pour ce faire, j'ai fait pas mal d'opérations et il m'a semblé judicieux d'en faire part à d'autres. D'ailleurs, si vous voyez des opérations plus fines qui peuvent être utiles, n'hésitez pas à l'ajouter à ce document. | ||
- | |||
- | Rentrons dans le vif du sujet. | ||
- | |||
- | |||
- | ==== Bloquer tous les accès instantanément ==== | ||
- | |||
- | La première chose à faire, c'est d'empêcher tous les accès (distant et localement) à la machine. | ||
- | |||
- | Pour ce faire, vous entrez la commande suivante : | ||
- | <code> | ||
- | sudo touch /etc/nologin | ||
- | </code> | ||
- | |||
- | A partir de ce moment, toutes les connexions locales et distantes sont refusées. (On réactivera les connexions plus tard). | ||
- | |||
- | **ATTENTION !!! Veillez à ne pas sortir de la session en cours, sinon vous ne pourrez plus vous reconnecter sur la machine.** | ||
- | |||
- | Ne le faite que si vous êtes certain de la qualité de votre connexion ! | ||
- | Si votre ADSL n'est pas très stable ou si votre connexion SSH coupe parfois, ne prenez pas ce risque, vous ne pourriez plus vous reconnecter. | ||
- | |||
- | ==== 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 [[applications: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''. | ||
- | |||
- | 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. | ||
- | |||
- | Evidemment, si vous avez un vrai pirate qui est entré dans votre système, il aura prit soin de supprimer les fichiers logs d'authentification ou au moins effacer les lignes qui le mettent en cause. | ||
- | |||
- | ==== Examen des historiques des utilisateurs ==== | ||
- | |||
- | Ensuite, vous pouvez examiner les commandes introduites par les utilisateurs dans l'historique du bash (la système qui permet de 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. | ||
- | |||
- | Les historiques se trouvent dans les répertoires des utilisateurs (''/root'', ''/home/ostaquet'', ''/home/ju'',...) et porte le nom ''.bash_history''. | ||
- | |||
- | ==== Bloquer un utilisateur et politique 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. | ||
- | |||
- | Pour ce faire, il vous suffit d'éditer le fichier ''/etc/passwd'' et de remplacer le shell par défaut de l'utilisateur en ''/bin/false''. | ||
- | |||
- | Par exemple, avant : | ||
- | <code> | ||
- | ostaquet:x:1000:1000:Olivier Staquet,,,:/home/ostaquet:/bin/bash | ||
- | </code> | ||
- | |||
- | Après : | ||
- | <code> | ||
- | ostaquet:x:1000:1000:Olivier Staquet,,,:/home/ostaquet:/bin/false | ||
- | </code> | ||
- | |||
- | Ensuite, vous supprimez tous les processus attachés à cet utilisateur (par exemple, pour l'utilisateur ''ostaquet'') : | ||
- | <code> | ||
- | sudo killall -u ostaquet | ||
- | </code> | ||
- | |||
- | Vous pouvez, à priori, réouvrir les connexions entrantes (surtout si la machine est une machine de production) : | ||
- | <code> | ||
- | sudo rm /etc/nologin | ||
- | </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. | ||
- | |||
- | Vous trouverez des informations pour la génération des mots de passe sur [[applications:mots_de_passe|cette page]]. | ||
- | |||
- | ==== 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 : | ||
- | |||
- | <code> | ||
- | sudo /etc/init.d/<service> stop | ||
- | </code> | ||
- | |||
- | Pensez également à arrêter le ''portmap'', l' ''inetd'' et l' ''xinetd''. | ||
- | Sans oublier les services //spéciaux// ou propriétaires. | ||
- | |||
- | ==== Scan des ports ouverts sur la machine ==== | ||
- | |||
- | A partir d'une autre machine et sur chacune des interfaces réseaux du serveur suspect, lancer un ''nmap''. | ||
- | |||
- | L'application ''nmap'' est un scanneur de port qui s'installe très facilement via la commande suivante : | ||
- | |||
- | <code> | ||
- | sudo apt-get install nmap | ||
- | </code> | ||
- | |||
- | Ensuite, vous l'utilisez de la manière suivante (''192.168.0.1'' étant le serveur suspect) : | ||
- | |||
- | <code> | ||
- | sudo nmap 192.168.0.1 -p 1-65535 | ||
- | </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. | ||
- | |||
- | Si vous n'avez aucun port ouvert, c'est un bon signe. Si il reste des services ouverts, arrêtez-les et relancez le scan. | ||
- | |||
- | |||
- | ==== Vérification des rootkits ==== | ||
- | |||
- | Après cela, il est intéressant de vérifier si aucun rootkit n'a été installé. Dans les grandes lignes, un rootkit permet à un intrus de reprendre le contrôle de la machine ultérieurement en laissant un petit programme lui ouvrant la porte. | ||
- | |||
- | 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> | ||
- | sudo apt-get install chkrootkit rkhunter | ||
- | </code> | ||
- | |||
- | Exécutez-les par les commandes suivantes : | ||
- | |||
- | <code> | ||
- | sudo chkrootkit | ||
- | sudo rkhunter --checkall | ||
- | </code> | ||
- | |||
- | Si rien ne vous semble suspect, redémarrez la machine et procédez à nouveau à la vérification. | ||
- | Si quelque chose est détecté comme suspect, l'application indiquera quel est le port suspecté. | ||
- | |||
- | Pour savoir quel est exactement l'application qui tient ce port (peut-être pas détecté par le scan ''nmap''), vous pouvez utiliser la commande suivante (exemple, pour le port 600) : | ||
- | |||
- | <code> | ||
- | sudo lsof -i:600 | ||
- | </code> | ||
- | |||
- | 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 ==== | ||
- | |||
- | La dernière vérification indispensable à faire est le scan complet du disque dur avec un antivirus (**à jour !!!**). | ||
- | Sur la page wiki traitant de la [[:sécurité]], vous trouverez différents antivirus. | ||
- | |||
- | ==== Après tout... ==== | ||
- | |||
- | Une fois la batterie de tests effectuées, si rien n'a été trouvé... Relancez tous les tests mais après un redémarrage de la machine (au cas où un système d'intrusion s'activerait au démarrage suivant). | ||
- | |||
- | Si tout bien, il n'y a **normalement** rien d'anormal sur votre serveur. Je dis bien normalement 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 //faux// pirates qui ré-utilisent des //exploits// créés par d'autres. Fondamentalement, 95% des attaques sont toujours faites avec une poignée de 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. |