Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
tutoriel:que_faire_en_cas_de_serveur_compromis [Le 12/12/2007, 14:31] – Mise en français du texte, liens WP SunWukong | tutoriel:que_faire_en_cas_de_serveur_compromis [Le 02/01/2015, 14:20] (Version actuelle) – [Prévoyez un accès de secours] 82.231.25.232 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ====== Que faire en cas de soupçons d'un serveur compromis ? ====== | ||
+ | |||
+ | |||
+ | Récemment, j'ai eu des doutes quant à l' | ||
+ | |||
+ | Rentrons dans le vif du sujet. | ||
+ | |||
+ | |||
+ | ===== Bloquer tous les accès instantanément ===== | ||
+ | |||
+ | La première chose à faire, c'est d' | ||
+ | |||
+ | ==== Prévoyez un accès de secours ==== | ||
+ | |||
+ | === Si vous avez accès au serveur et si celui ci peut être redémarré. === | ||
+ | Munissez vous d'un [[: | ||
+ | Il vous faudra donc booter sur le [[: | ||
+ | |||
+ | === 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, | ||
+ | |||
+ | <note warning> | ||
+ | La connection en tant que **root** est fortement déconseillée, | ||
+ | </ | ||
+ | |||
+ | S'il s'agit d'une connexion [[:SSH]], vérifiez que **root** soit autorisé a se connecter. La variable suivante du fichier **/ | ||
+ | < | ||
+ | PermitRootLogin yes | ||
+ | </ | ||
+ | |||
+ | Initialisez le mot de passe **root** | ||
+ | < | ||
+ | sudo passwd root | ||
+ | </ | ||
+ | |||
+ | Dè que vous aurez de nouveau autorisé les connexions utilisateurs, | ||
+ | < | ||
+ | sudo passwd -l root | ||
+ | </ | ||
+ | |||
+ | ==== Bloquez toutes les connexions ==== | ||
+ | |||
+ | Pour bloquer toute connection locale ou distante, entrez la commande suivante : | ||
+ | < | ||
+ | sudo touch / | ||
+ | </ | ||
+ | |||
+ | À partir de ce moment, toutes les connexions locales et distantes sont refusées. | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | Si vous êtes déconnecté d'une session [[:SSH]], voyez le résultat : | ||
+ | < | ||
+ | user@serveur: | ||
+ | [sudo] password for user: | ||
+ | user@serveur: | ||
+ | déconnexion | ||
+ | Connection to serveur.lan closed. | ||
+ | user@client: | ||
+ | Ubuntu 12.04 LTS | ||
+ | |||
+ | Connection closed by serveur.lan | ||
+ | user@client: | ||
+ | </ | ||
+ | |||
+ | Quand vous le jugerez opportun, vous autoriserez de nouveau les connexions en supprimant le fichier **nologin**: | ||
+ | < | ||
+ | sudo rm / | ||
+ | </ | ||
+ | |||
+ | Blocage alternatif pour connexion entrante et sortant ( moins dangereuse ) avec le firewall intégré [[ufw]] : | ||
+ | < | ||
+ | sudo ufw disable | ||
+ | sudo ufw default deny incoming | ||
+ | sudo ufw default deny outgoing | ||
+ | sudo ufw enable | ||
+ | sudo ufw status verbose | ||
+ | </ | ||
+ | |||
+ | ===== Examen des logs d' | ||
+ | |||
+ | La première source d' | ||
+ | |||
+ | Si c'est le cas, toutes les actions sont logguées dans le fichier ''/ | ||
+ | |||
+ | Évidemment, | ||
+ | |||
+ | |||
+ | ===== Examen des historiques des utilisateurs ===== | ||
+ | |||
+ | Ensuite, vous pouvez examiner les commandes introduites par les utilisateurs dans l' | ||
+ | |||
+ | Ces historiques sont beaucoup moins précis que les logs d' | ||
+ | |||
+ | Les historiques se trouvent dans les répertoires des utilisateurs (''/ | ||
+ | |||
+ | |||
+ | |||
+ | ===== Bloquer un utilisateur et politique des mots de passe ===== | ||
+ | |||
+ | Si vous avez vu quelque chose de suspect par rapport à un utilisateur, | ||
+ | |||
+ | Pour ce faire, il vous suffit de remplacer le shell par défaut de l' | ||
+ | < | ||
+ | sudo chsh -s /bin/false user | ||
+ | </ | ||
+ | Ensuite, vous supprimez tous les processus attachés à cet utilisateur (par exemple, pour l' | ||
+ | < | ||
+ | sudo killall -u jf | ||
+ | </ | ||
+ | |||
+ | Vous pouvez, a priori, réouvrir les connexions entrantes (surtout si la machine est une machine de production) : | ||
+ | < | ||
+ | sudo rm / | ||
+ | </ | ||
+ | |||
+ | 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' | ||
+ | |||
+ | Vous trouverez des informations pour la génération des mots de passe sur [[: | ||
+ | |||
+ | ===== Arrêt de tous les services ===== | ||
+ | |||
+ | Ensuite, il est intéressant d' | ||
+ | |||
+ | < | ||
+ | sudo / | ||
+ | </ | ||
+ | |||
+ | Pensez également à arrêter le '' | ||
+ | Sans oublier les services // | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Scan des ports ouverts sur la machine ===== | ||
+ | |||
+ | À partir d'une autre machine et sur chacune des interfaces réseaux du serveur suspect, lancer un '' | ||
+ | |||
+ | L' | ||
+ | |||
+ | < | ||
+ | sudo apt-get install nmap | ||
+ | </ | ||
+ | |||
+ | Ensuite, vous l' | ||
+ | |||
+ | < | ||
+ | sudo nmap 192.168.0.1 -p 1-65535 | ||
+ | </ | ||
+ | |||
+ | 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' | ||
+ | |||
+ | 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 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 : '' | ||
+ | |||
+ | |||
+ | |||
+ | ===== Vérification des rootkits ===== | ||
+ | |||
+ | Après cela, il est intéressant de vérifier qu' | ||
+ | |||
+ | Il existe deux applications permettant d' | ||
+ | |||
+ | < | ||
+ | sudo apt-get install chkrootkit rkhunter | ||
+ | </ | ||
+ | |||
+ | Exécutez-les par les commandes suivantes : | ||
+ | |||
+ | < | ||
+ | sudo chkrootkit | ||
+ | </ | ||
+ | |||
+ | et | ||
+ | |||
+ | < | ||
+ | sudo rkhunter --propupdate | ||
+ | sudo rkhunter --checkall | ||
+ | </ | ||
+ | |||
+ | 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 : | ||
+ | < | ||
+ | sudo rkhunter --checkall | ||
+ | [sudo] password for user: | ||
+ | [ Rootkit Hunter version 1.3.8 ] | ||
+ | |||
+ | Checking system commands... | ||
+ | |||
+ | Performing ' | ||
+ | Checking ' | ||
+ | |||
+ | Performing ' | ||
+ | Checking for preloading variables | ||
+ | Checking for preloaded libraries | ||
+ | Checking LD_LIBRARY_PATH variable | ||
+ | |||
+ | Performing file properties checks | ||
+ | Checking for prerequisites | ||
+ | / | ||
+ | / | ||
+ | ............... | ||
+ | </ | ||
+ | Un exemple d' | ||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | Suite des tests | ||
+ | < | ||
+ | Checking for rootkits... | ||
+ | |||
+ | Performing check of known rootkit files and directories | ||
+ | 55808 Trojan - Variant A [ Not found ] | ||
+ | ADM Worm [ Not found ] | ||
+ | ............... | ||
+ | |||
+ | Performing additional rootkit checks | ||
+ | Suckit Rookit additional checks | ||
+ | Checking for possible rootkit files and directories | ||
+ | Checking for possible rootkit strings | ||
+ | |||
+ | Performing malware checks | ||
+ | Checking running processes for suspicious files [ None found ] | ||
+ | Checking for login backdoors | ||
+ | Checking for suspicious directories | ||
+ | Checking for sniffer log files [ None found ] | ||
+ | Checking for Apache backdoor | ||
+ | |||
+ | Performing Linux specific checks | ||
+ | Checking loaded kernel modules | ||
+ | Checking kernel module names [ OK ] | ||
+ | ............... | ||
+ | </ | ||
+ | Encore des tests | ||
+ | < | ||
+ | Checking the network... | ||
+ | |||
+ | Performing checks on the network ports | ||
+ | Checking for backdoor ports [ None found ] | ||
+ | Checking for hidden ports [ Skipped ] | ||
+ | |||
+ | Performing checks on the network interfaces | ||
+ | Checking for promiscuous interfaces | ||
+ | |||
+ | Checking the local host... | ||
+ | |||
+ | Performing system boot checks | ||
+ | Checking for local host name [ Found ] | ||
+ | Checking for system startup files [ Found ] | ||
+ | Checking system startup files for malware | ||
+ | |||
+ | Performing group and account checks | ||
+ | Checking for passwd file [ Found ] | ||
+ | Checking for root equivalent (UID 0) accounts | ||
+ | Checking for passwordless accounts | ||
+ | Checking for passwd file changes | ||
+ | Checking for group file changes | ||
+ | Checking root account shell history files [ OK ] | ||
+ | |||
+ | Performing system configuration file checks | ||
+ | Checking for SSH configuration file [ Found ] | ||
+ | Checking if SSH root access is allowed | ||
+ | Checking if SSH protocol v1 is allowed | ||
+ | Checking for running syslog daemon | ||
+ | Checking for syslog configuration file [ Found ] | ||
+ | Checking if syslog remote logging is allowed | ||
+ | |||
+ | Performing filesystem checks | ||
+ | Checking /dev for suspicious file types [ None found ] | ||
+ | </ | ||
+ | L' | ||
+ | < | ||
+ | Checking for hidden files and directories | ||
+ | </ | ||
+ | Puis vient le récapitulatif. | ||
+ | < | ||
+ | System checks summary | ||
+ | ===================== | ||
+ | |||
+ | File properties checks... | ||
+ | Files checked: 135 | ||
+ | Suspect files: 1 | ||
+ | |||
+ | Rootkit checks... | ||
+ | Rootkits checked : 248 | ||
+ | Possible rootkits: 0 | ||
+ | |||
+ | Applications checks... | ||
+ | All checks skipped | ||
+ | |||
+ | The system checks took: 2 minutes and 1 second | ||
+ | |||
+ | All results have been written to the log file (/ | ||
+ | |||
+ | One or more warnings have been found while checking the system. | ||
+ | Please check the log file (/ | ||
+ | </ | ||
+ | |||
+ | 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, | ||
+ | |||
+ | Si quelque chose est détecté comme suspect, l' | ||
+ | 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 '' | ||
+ | |||
+ | < | ||
+ | sudo lsof -i:600 | ||
+ | </ | ||
+ | |||
+ | 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 [[: | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Après tout… ===== | ||
+ | |||
+ | Une fois la batterie de tests effectuée, 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' | ||
+ | |||
+ | Si tout va bien, il n'y a **a priori** rien d' | ||
+ | |||
+ | 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:// | ||
+ | |||
+ | ---- | ||
+ | |||
+ | // Contributeurs : [[utilisateurs: |