Comment gérer une faille de sécurité sur votre serveur

Les serveurs modernes exécutent fréquemment une multitude d'applications logicielles.

Dans notre cas, nous utilisons Docker sur le serveur pour exécuter plusieurs services.

L'un de ces services, Gitlab, présentait un problème de sécurité (gitlab workhorse plus précisément).

Ce qui a conduit à une infection par un cheval de Troie. (Dans notre cas, les binaires s'appelaient "wate", au cas où cela aurait de l'importance pour quelqu'un - bien que cela aurait pu être des noms purement aléatoires également).

Nous en avons pris connaissance lorsque notre hébergeur, Hetzner, a fermé notre IP (et envoyé plusieurs messages d'avertissement). Le cheval de Troie avait été utilisé dans le cadre d'une attaque DDoS sur une IP chinoise et générait des quantités suspectes de paquets.

Nous avons pris des mesures, et certaines connaissances utiles ont émergé grâce à cette situation.

Heureusement, le serveur était joignable par une autre IP (et d'ailleurs, Hetzner vous permet également de mettre une IP sur une liste blanche pendant 2 heures, ce qui vous permet de travailler avec un serveur n'ayant qu'une seule IP).

Voici quelques conseils essentiels pour diagnostiquer une telle violation de la sécurité

  • Ne paniquez pas. Sécurisez d'abord les journaux de docker (et créez éventuellement une sauvegarde) avant d'arrêter le serveur - vous pourriez avoir besoin de ces journaux pour diagnostiquer le problème.
  • vérifier quels utilisateurs ont été connectés en dernier / si de nouveaux comptes ont été créés
  • Utilisez un antivirus sur votre serveur (sur le système d'exploitation hôte de Docker). Nous avons utilisé clamav pour trouver les trojans.
    • Remarque : si vous utilisez également un serveur de messagerie (comme nous le faisons), le scanner de virus détectera probablement aussi un grand nombre de courriers suspects.
  • Utilisez un scanner de rootkit - il y en a deux que nous avons utilisés, rkhunter et chkrootkit
  • Utilisez htop pour savoir quels processus chargent le serveur.
  • Utiliser un utilitaire de surveillance du trafic réseau
  • Regardez la sortie de ps -aux pour voir les processus suspects.

Je recommande que avant en arrêtant le conteneur, vous créerez un dump de ps -aux | grep wate (dans notre cas) pour voir les processus de trojan en cours, puis après l'avoir arrêté à nouveau.

De cette façon, vous pourrez vous confirmer que la faille de sécurité a été contenue et que les processus ne se sont pas propagés en dehors du conteneur Docker.

Problèmes de performance de WordPress

Nous avons également connu quelques problèmes de performance de WordPress pendant cette situation - alors que l'IP principale du serveur était bloquée.

Après que Hetzner a débloqué notre IP, les problèmes de performance ont disparu. (Notre suspicion initiale était que la brèche avait été dans un conteneur WordPress)

Actions pour éviter la situation à l'avenir

  1. Nous allons mettre en place des mises à jour automatiques des conteneurs. Le petit ami de ma sœur m'a recommandé le conteneur Docker "Watchtower".
  2. Il existe un outil appelé Lynis qui est un outil d'audit de sécurité sur lequel nous allons nous pencher.
  3. Utilisez l'authentification par clé publique / privée sur le serveur pour SSH. Limitez spécifiquement les comptes qui sont autorisés à se connecter.
  4. Utiliser un service d'audit / scanner SaaS - nous prévoyons de l'utiliser régulièrement.
  5. Commencez à créer des sauvegardes continues si vous ne le faites pas déjà, afin de pouvoir revenir à une date antérieure.

Il n'y a pas de honte à faire des erreurs - l'informatique moderne est une entreprise complexe. Tant que vous continuez à tirer des leçons des situations et à utiliser des approches différentes des problèmes informatiques (et de la vie en général), vous progressez et allez de l'avant. La vie.

Heureusement, la plupart des situations peuvent être gérées et redressées. Nous espérons que vous avez mis en place des sauvegardes et que vous pourrez vous remettre de votre situation.

Bonne chance et merci d'avoir lu ces lignes.