L'accès SSH étant le point d'entrée le plus important pour l'administration de votre serveur, il est devenu un vecteur d'attaque largement utilisé.
Les étapes de base pour sécuriser SSH incluent: la désactivation de l'accès root, la désactivation de l'authentification par mot de passe (et l'utilisation de clés à la place) et la modification des ports (peu de chose à voir avec la sécurité, sauf la minimisation des scanners de ports courants et le spam de journaux).
La prochaine étape serait une solution de pare-feu PF avec suivi des connexions. Cette solution gérerait les états de connexion et bloquerait toute IP possédant trop de connexions. Cela fonctionne très bien et est très facile à faire avec PF, mais le démon SSH est toujours exposé à Internet.
Que diriez-vous de rendre SSH complètement inaccessible de l'extérieur? C'est là qu'intervient Spiped . Depuis la page d'accueil:
Spiped (prononcé "ess-pipe-dee") est un utilitaire pour créer des canaux cryptés et authentifiés symétriquement entre les adresses de socket, afin que l'on puisse se connecter à une adresse (par exemple, un socket UNIX sur localhost) et établir une connexion transparente avec un autre adresse (par exemple, un socket UNIX sur un autre système). Ceci est similaire à la fonctionnalité 'ssh -L', mais n'utilise pas SSH et nécessite une clé symétrique pré-partagée.
Génial! Heureusement pour nous, il a un package OpenBSD de haute qualité qui fait tout le travail de préparation pour nous, nous pouvons donc commencer par l'installer:
sudo pkg_add spiped
Cela installe également un joli script d'initialisation pour nous, afin que nous puissions aller de l'avant et l'activer:
sudo rcctl enable spiped
Et enfin lancez-le:
sudo rcctl start spiped
Le script init s'assure que la clé est créée pour nous (dont nous aurons besoin sur une machine locale dans un instant).
Ce que nous devons faire maintenant, c'est de désactiver l' sshd
écoute sur l'adresse publique, de bloquer le port 22 et d'autoriser le port 8022 (qui est par défaut utilisé dans le script d'initialisation spiped).
Ouvrez le /etc/ssh/sshd_config
fichier et modifiez (et décommentez) la ListenAddress
ligne à lire 127.0.0.1
:
ListenAddress 127.0.0.1
Si vous utilisez des règles PF pour le blocage de port, assurez-vous de passer le port 8022 (et vous pouvez laisser le port 22 bloqué), par exemple:
pass in on egress proto tcp from any to any port 8022
Assurez-vous de recharger les règles pour le rendre actif:
sudo pfctl -f /etc/pf.conf
Maintenant, tout ce dont nous avons besoin est de copier la clé spiped générée ( /etc/spiped/spiped.key
) du serveur vers une machine locale et d'ajuster notre configuration SSH, quelque chose dans les lignes suivantes:
Host HOSTNAME
ProxyCommand spipe -t %h:8022 -k ~/.ssh/spiped.key
Vous devez également avoir spipe/spiped
installé sur une machine locale. Si vous avez copié la clé et ajusté les noms / chemins, vous devriez pouvoir vous connecter avec cette ProxyCommand
ligne dans votre ~/.ssh/config
fichier.
Après avoir confirmé que cela fonctionne, nous pouvons redémarrer sshd
sur un serveur:
sudo rcctl restart sshd
Et c'est tout! Vous avez maintenant complètement éliminé un grand vecteur d'attaque et vous disposez d'un service de moins en écoute sur une interface publique. Vos connexions SSH devraient maintenant sembler provenir de localhost, par exemple:
username ttyp0 localhost Thu Nov 06 07:58 still logged in
Un avantage de l'utilisation de Vultr est que chaque VPS Vultr offre un joli client en ligne de type VNC disponible que nous pouvons utiliser au cas où nous nous verrouillerions accidentellement. Expérimentez loin!