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 | ||
tutoriel:que_faire_en_cas_de_serveur_compromis [Le 02/01/2015, 14:20] 82.231.25.232 [Prévoyez un accès de secours] |
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 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 et sortant ( moins dangereuse ) avec le firewall intégré [[ufw]] : | + | Blocage alternatif pour connexion entrante etsortant ( moins dangereuse ) avec le firewall intégré [[ufw]] : |
<code> | <code> | ||
sudo ufw disable | sudo ufw disable | ||
Ligne 87: | Ligne 87: | ||
===== 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 96: | 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 112: | 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 122: | 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 128: | 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 134: | 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 144: | 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 158: | 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 168: | 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 182: | Ligne 182: | ||
</code> | </code> | ||
- | et | + | et |
<code> | <code> | ||
Ligne 191: | 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 213: | 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 309: | 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 322: | 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 336: | 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]]// |