Comment configurer un Endlessh Tarpit sur Ubuntu 22.04

De Get Docs
Aller à :navigation, rechercher

Introduction

Lorsque vous consultez les journaux d'authentification, vous pouvez voir plusieurs tentatives de connexion infructueuses à partir de différentes adresses IP. Ces tentatives de connexion infructueuses proviennent souvent d'un nœud sur un botnet qui analyse l'ensemble du Web à la recherche de serveurs vulnérables avec des informations d'identification par défaut. Alors que la plupart des gens auront un mot de passe sécurisé ou des clés SSH empêchant les attaquants de se connecter à leur serveur, certains serveurs seront vulnérables à cette analyse. Bien que vous ne puissiez pas arrêter ces attaques, vous pouvez les ralentir avec tarpits.

Dans ce didacticiel, vous allez installer et configurer Endlessh, un tarpit qui envoie lentement une bannière infiniment longue à tout utilisateur tentant de se connecter. Vous configurerez également le service SSH pour qu'il s'exécute sur un port différent, ce qui rendra vos journaux d'authentification plus lisibles.

Après avoir terminé ce didacticiel, vous pourrez vous connecter à votre serveur sur un port non standard, tandis que les robots qui analysent votre serveur verront leur temps perdu en frappant à une porte qui ne s'ouvrira jamais.

Conditions préalables

Pour terminer ce tutoriel, vous aurez besoin des éléments suivants :

Étape 1 - Déplacer SSH vers un port non standard

Dans cette étape, vous allez déplacer SSH vers un port non standard afin de libérer un port pour Endlessh. Étant donné que les botnets ne disposent pas de ressources infinies, ils n'analysent généralement que le port SSH par défaut (22). En déplaçant votre SSH vers un port non standard, vous pouvez piéger le bot dans le tarpit Endlessh.

Pour commencer, faites une sauvegarde de votre fichier de configuration SSH depuis votre serveur avec la commande suivante :

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Ce fichier peut être utilisé pour restaurer les paramètres d'origine si quelque chose ne fonctionne pas ou si vous décidez de déplacer SSH vers le port par défaut.

Ouvrez le fichier de configuration SSH /etc/ssh/sshd_config en utilisant nano ou votre éditeur de texte préféré :

sudo nano /etc/ssh/sshd_config

Localisez la ligne #Port 22. Décommentez cette ligne en supprimant le #, puis remplacez le port par un port inutilisé sur votre serveur :

/etc/ssh/sshd_config

...
Port 2222
...

Un exemple de port normalement inutilisé est 2222. Vous pouvez sélectionner le port que vous souhaitez utiliser pour vos connexions SSH récurrentes. Enregistrez et fermez le fichier.

Si votre serveur utilise un pare-feu, tel que ufw, vous devrez autoriser le trafic vers le nouveau port :

sudo ufw allow 2222/tcp

Ensuite, redémarrez le service SSH :

sudo systemctl restart sshd

Dans une session de terminal distincte, essayez de vous connecter à votre serveur à l'aide du nouveau port :

ssh sammy@your_server_ip -p 2222

Avertissement : Ne fermez pas votre session SSH active à moins d'avoir confirmé que vous pouvez utiliser SSH sur le nouveau port. Si vous ne pouvez pas vous connecter via le nouveau port, vous risquez de perdre l'accès à votre serveur en fermant la session. Si vous ne pouvez pas vous connecter à votre serveur dans une session de terminal distincte, vous pouvez restaurer vos paramètres SSH d'origine en exécutant les commandes suivantes :

sudo cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
sudo systemctl restart sshd

Si vous rencontrez d'autres problèmes, vérifiez que sshd redémarré avec succès et vérifiez les paramètres de votre pare-feu pour vous assurer que le port 2222 accepte le trafic TCP.


Une fois que vous avez vérifié, vous pouvez établir une nouvelle connexion au port 2222, vous pouvez fermer votre terminal d'origine en toute sécurité. Lorsque vous vous connecterez à votre serveur à l'avenir, vous devrez toujours spécifier le nouveau port, comme ceci :

ssh sammy@your_server_ip -p 2222

Maintenant que vous avez réussi à déplacer SSH vers un port non standard, il est temps de configurer Endlessh.

Étape 2 - Installer Endlessh

Endlessh n'a pas de package officiel, vous allez donc cloner le référentiel pour le construire manuellement. Vous utiliserez Git pour cloner le dépôt, le build-essential package (pour compiler le projet), et le libc6-dev forfait.

Installez les packages requis à l'aide du gestionnaire de packages apt :

sudo apt install build-essential libc6-dev

Confirmez l'installation avec y lorsque vous y êtes invité.

Ensuite, clonez le référentiel Endlessh de GitHub vers votre répertoire personnel :

git clone https://github.com/do-community/endlessh

Déplacez-vous dans le répertoire du projet et utilisez le make commande pour compiler Endlessh :

cd endlessh
make

Vous pouvez maintenant démarrer Endlessh avec la commande suivante :

sudo ./endlessh -v -p 22

Pour tester le fonctionnement d'Endlessh, vous pouvez tenter d'établir une connexion SSH au port 22 avec le -v drapeau verbeux, qui montrera la bannière sans fin en cours de transmission. Dans une nouvelle fenêtre de terminal, établissez une connexion SSH au port 22 avec l'une des commandes suivantes :

ssh sammy@your_server_ip -v
ssh sammy@your_server_ip -p 22 -v

Lorsque votre nouvelle session SSH tente de se connecter au port 22, vous verrez une chaîne de caractères aléatoires apparaître dans le terminal de connexion toutes les 10 secondes jusqu'à la fermeture de la session, comme la sortie ci-dessous :

Outputdebug1: kex_exchange_identification: banner line 0: NvnHF>]&W4p+tg*"+
debug1: kex_exchange_identification: banner line 1: n<
debug1: kex_exchange_identification: banner line 2: @/O5c0/;>1b{qd(M,vK
debug1: kex_exchange_identification: banner line 3: i+ OZ
debug1: kex_exchange_identification: banner line 4: yn
debug1: kex_exchange_identification: banner line 5: T[V\\[HUg

Une fois que vous avez confirmé qu'il fonctionne en essayant de vous connecter à une nouvelle session, vous pouvez fermer le nouveau terminal et arrêter Endlessh en utilisant Ctrl+C dans votre session de terminal d'origine.

Dans cette étape, vous avez téléchargé et construit Endlessh à partir de la source. Ensuite, vous allez le configurer et le déployer en tant que service pour le rendre persistant lors de la déconnexion et du redémarrage de votre serveur.

Étape 3 - Configuration d'Endlessh

Dans cette étape, vous configurerez Endlessh en tant que service qui persistera après la fin de votre session et lors des redémarrages du système.

Déplacez le binaire compilé dans le /usr/local/bin annuaire:

sudo mv ./endlessh /usr/local/bin/

Entrez votre mot de passe si vous y êtes invité.

Copiez le fichier de service du projet dans le /etc/systemd/system annuaire:

sudo cp util/endlessh.service /etc/systemd/system/

Vous modifierez légèrement le fichier de service pour exécuter Endlessh sur les ports sous 1024. Ouvrez le fichier de service dans nano ou votre éditeur de texte préféré :

sudo nano /etc/systemd/system/endlessh.service

Trouvez la section sur l'exécution d'Endlessh sur les ports sous 1024.

Mettre à jour le fichier en supprimant # au début de la ligne avec AmbientCapabilities=CAP_NET_BIND_SERVICE et en ajoutant # au début de la ligne PrivateUsers=true, ainsi:

/etc/systemd/system/endlessh.service

...
## If you want Endlessh to bind on ports < 1024
## 1) run: 
##     setcap 'cap_net_bind_service=+ep' /usr/local/bin/endlessh
## 2) uncomment following line
AmbientCapabilities=CAP_NET_BIND_SERVICE
## 3) comment following line
#PrivateUsers=true
...

Enregistrez et quittez le fichier.

Ensuite, vous autorisez Endlessh à s'exécuter sur des ports inférieurs à 1024, également appelés ports privilégiés de domaine Internet. Définissez cette capacité pour le binaire Endlessh avec le setcap commande:

sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/endlessh

Vous devrez définir un fichier de configuration pour Endlessh afin de lui indiquer quel port utiliser. Créez et ouvrez un fichier de configuration nommé /etc/endlessh/config:

sudo mkdir /etc/endlessh
sudo nano /etc/endlessh/config

Dans le fichier de configuration, définissez le port à utiliser comme 22:

/etc/endlessh/config

Port 22

Enregistrez et fermez le fichier.

Vous pouvez maintenant démarrer le service Endlessh de manière persistante :

sudo systemctl --now enable endlessh

Y compris --now enable rendra le service persistant après le redémarrage de votre serveur.

Pour vérifier que le service a démarré avec succès, vous pouvez utiliser le systemctl status commande:

sudo systemctl status endlessh

Si démarré avec succès, vous verrez une sortie comme celle-ci :

Output● endlessh.service - Endlessh SSH Tarpit
     Loaded: loaded (/etc/systemd/system/endlessh.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-04-22 11:20:39 UTC; 1 months 11 days ago
       Docs: man:endlessh(1)
   Main PID: 34007 (endlessh)
      Tasks: 1 (limit: 1081)
     Memory: 380.0K
     CGroup: /system.slice/endlessh.service
             └─34007 /usr/local/bin/endlessh

S'il est en cours d'exécution, vous pouvez tenter de vous connecter sur le port 22 dans une nouvelle session de terminal :

ssh sammy@your_server_ip

Parce que votre tarpit est en cours d'exécution, la nouvelle session de terminal ne pourra pas se connecter et fonctionnera à perpétuité jusqu'à ce qu'elle soit arrêtée manuellement avec Ctrl+C dans le terminal de connexion.

Si vous souhaitez arrêter l'exécution du service, vous pouvez utiliser la commande suivante :

sudo systemctl --now disable endlessh

Après avoir arrêté le service, vous pouvez utiliser les instructions de restauration SSH dans l'avertissement de l'étape 1 pour restaurer votre configuration de serveur d'origine. Vous pouvez réactiver le service avec sudo systemctl --now enable endlessh sans repasser par le processus de configuration, mais assurez-vous que SSH ne fonctionne pas sur le port 22 quand vous le faites.

Conclusion

Vous avez installé et configuré avec succès Endlessh, vous avez aidé à nettoyer vos journaux d'authentification et vous vous êtes préparé à perdre du temps avec des bots SSH aléatoires.

Après avoir configuré votre tarpit Endlessh, passez en revue les autres Mesures de sécurité recommandées pour protéger vos serveurs.