Mon serveur Linux a été piraté. Comment savoir comment et quand cela a été fait?

11

J'ai un serveur domestique exécutant une distribution Ubuntu de bureau. J'ai trouvé ça dans ma crontab

* * * * * /home/username/ /.access.log/y2kupdate >/dev/null 2>&1

et en regardant dans ce répertoire (l'espace après le nom d'utilisateur / est un nom de répertoire), j'ai trouvé beaucoup de scripts qui font évidemment quelque chose qu'ils ne devraient pas faire.

Avant de nettoyer cet ordinateur et de réinstaller des éléments, j'aimerais savoir ce qui a causé la violation de sécurité et quand cela a été fait. Je n'ouvre donc plus le même trou.

Dans quels fichiers journaux dois-je regarder? Les seuls serveurs que je connais qui fonctionnent sur l'ordinateur sont sshd et lighttpd.

Que dois-je faire pour détecter si de telles choses se reproduisent?

Jonatan Kallus
la source
@Personne qui a voté pour passer à SU: Comment pensez-vous que la criminalistique de virus / piratage concerne plus le super utilisateur que la défaillance du serveur ??
Chris S
3
Je suis content d'apprendre que le plan est d'essuyer l'ordinateur et de réinstaller des trucs. C'est absolument la bonne chose à faire, peu importe ce que vous trouvez, car il y a toujours de bonnes chances qu'il y ait quelque chose de pire que vous n'avez pas trouvé.
mattdm
Vous devriez vraiment voter pour passer à la sécurité informatique ( security.stackexchange.com ), pas SU ou Serverfault!
Rory Alsop

Réponses:

4

Tout d'abord, assurez-vous que l'ordinateur est déconnecté de tout réseau.
Deuxièmement, assurez-vous de retirer toutes les données importantes des disques avant de redémarrer le système d'exploitation piraté.

Commencez par vérifier les horodatages des fichiers en question. Ils sont souvent précis.
Croisez ceux qui ont le journal httpd et le journal d'authentification s'ils n'ont pas été effacés. Si l'autre s'est essuyé, on peut parier que c'était le moyen d'entrée. S'ils sont toujours en contact, vous pourrez peut-être glaner plus d'informations sur la façon dont ils sont entrés dans le journal.

S'ils sont tous essuyés, vous êtes plutôt foutus. Il faudrait probablement plus de temps pour comprendre ce qui s'est passé que cela ne vaut.

Vous avez mentionné que ces deux services étaient en cours d'exécution, y avait-il un bon pare-feu en place pour empêcher tout autre accès? Avez-vous autorisé SSH sur le port 22; votre connexion est-elle raisonnablement facile à deviner; avez-vous autorisé les connexions par mot de passe; aviez-vous une sorte de limitation du débit réel pour les connexions par mot de passe? Avez-vous installé un logiciel supplémentaire avec lighttpd; perl; php; cgi; un CMS ou similaire? Exécutiez-vous une version mise à jour de tous les logiciels; vous abonnez-vous aux notifications de sécurité pour tous les logiciels que vous exécutez et évaluez soigneusement toutes les notifications pour voir si elles s'appliquent aux logiciels que vous exécutez / exposez au public?

Chris S
la source
L'installation était une Ubuntu Desktop Edition 10.x standard, rien de particulier n'a été fait pour la sécurité. J'ai supposé qu'il y avait un pare-feu assez bon par défaut. N'est-ce pas exact? J'ai autorisé la connexion par mot de passe sur le port 22, mais le mot de passe était une chaîne aléatoire de 8 caractères. Devrait être assez bon?
Jonatan Kallus
Je crois que le pare-feu par défaut est "Wide Open - No Firewall". À moins que vous ne l'ayez soigneusement configuré, il ne fait rien.
Chris S
La question est de savoir quels services utilisiez-vous davantage que quel pare-feu. À moins que le pare-feu ne soit configuré pour configurer des adresses IP particulières pour l'accès, le meilleur pare-feu est de ne pas exécuter de services inutiles en premier lieu. Et quelle était votre configuration réseau? Ouverte sur Internet? À l'intérieur d'un réseau privé? Vous n'aviez pas de pare-feu au moment où votre réseau interne est entré sur Internet ou votre serveur était-il dans une zone démilitarisée?
Bart Silverstrim
Le serveur était directement connecté à Internet. Je l'ai également utilisé comme routeur. Si le pare-feu par défaut est grand ouvert, je pense que j'ai suffisamment d'explications sur la façon dont cela pourrait se produire ..
Jonatan Kallus
4

C'est une sorte de sujet en soi; vous pouvez google for linux forensics pour plus d'informations. Fondamentalement, vous devez d'abord créer une image de vos disques pour une analyse hors ligne, puis essuyer l'ordinateur et installer à partir d'une table rase.

Et rappelez-vous tous les faux frais. Toute personne utilisant l'ordinateur aurait pu voir son mot de passe compromis. Modifiez les mots de passe, gardez-les hors ligne, etc. jusqu'à ce que vous les obteniez dans une «salle blanche» (machine virtuelle isolée).

Sinon, c'est beaucoup de vérification des journaux (qui peuvent être falsifiés) et de vérification de vos applications (scripts php? Bases de données? Mis à jour pour les derniers correctifs? D'autres utilisateurs donnent des mots de passe?)

Il n'y a littéralement aucun moyen facile de répondre à votre question, car vous devez effectuer un travail médico-légal sur le serveur et vérifier les trous. Vous pouvez utiliser certains outils automatisés, mais gardez à l'esprit que si l'attaquant avait des privilèges root, vous ne pouvez plus faire confiance aux binaires du système et vous ne pouvez pas faire confiance aux journaux.

En ce qui concerne les futures attaques, selon le niveau de sécurité que vous souhaitez sécuriser, vous pouvez commencer par rediriger vos journaux vers un système qui est juste utilisé pour enregistrer les journaux système. Aucun autre accès, pour réduire l'empreinte de l'attaque.

Vous devez également exécuter un logiciel de somme de contrôle sur votre système comme Tripwire pour vérifier l'intégrité de vos fichiers.

Et bien sûr, restez à jour avec les mises à jour et exécutez un logiciel d'analyse qui vérifie les rootkits.

Encore une fois, la sécurité n'est pas une chose à jeter. Cela peut aussi être une spécialité en soi. La sécurité en couches peut être aussi stricte que la vérification des hôtes / IP qui n'appartiennent pas à votre réseau, le chiffrement de tous les accès au système, l'envoi de journaux quotidiens des modifications trouvées sur votre système et la configuration d'un pot de miel sur votre réseau pour recherchez une activité étrange (pourquoi mon serveur essaie-t-il de se connecter au port 25 sur l'ordinateur du pot de miel?)

Tout d'abord, si vous souhaitez vérifier l'activité, obtenir l'image disque et réinstaller le logiciel serveur. De zéro. Les fichiers binaires du serveur ne sont plus fiables.

EDIT - d'autres choses qui me viennent à l'esprit depuis que vous exécutez SSH - installez denyhosts. Il peut être configuré de sorte que les attaques automatisées contre votre système sur SSHD soient bloquées après X nombre d'essais. Il peut également être configuré pour se mettre à jour à partir d'autres serveurs denyhost dans un «cloud» pour partager des IP verrouillées afin de minimiser les attaques automatisées. Vous pouvez également déplacer le port sur lequel il écoute; de nombreuses personnes soulignent que ce n'est que de la sécurité grâce à l'obscurité, mais étant donné le nombre de robots analysant, cela réduit considérablement les tentatives aléatoires de percée.

Bart Silverstrim
la source
Merci! Vous avez vraiment répondu à la moitié de la question chacun, j'aimerais pouvoir marquer les deux comme réponse acceptée.
Jonatan Kallus