J'ai décidé d'élaborer et de tester la Ravexina d » idée . Cela fonctionne et il est efficace si vous souhaitez restreindre le nombre de connexions ssh établies.
D'abord, j'ai trouvé que lorsque le démon ssh s'exécute sans aucune connexion, il y a un sshd
processus. Pour chaque nouvelle connexion, deux nouveaux sshd
processus sont créés. Donc, si vous voulez limiter 20 connexions, le seuil doit être 41 (1 + 2x20) au lieu de 20.
Ensuite, j'ai créé un fichier exécutable, nommé , qui ressemble à ceci:/usr/local/bin/limit-sshd
#!/bin/sh
if [ "$(pgrep -cx sshd)" -gt 7 ]
then
echo '\nThe limit was reached!\n'
pkill -xn sshd
fi
- Le seuil est ici de 7, respectivement seulement 3 connexions ont pu être établies et le reste sera abandonné.
Enfin, j'ai ajouté la directive suivante à /etc/ssh/sshd_config
:
ForceCommand /usr/local/bin/limit-sshd; $SHELL
- La variable
$SHELL
exécutera le shell de l'utilisateur par défaut.
- Un effet indésirable est que le message d'accueil n'est plus disponible.
- N'oubliez pas de redémarrer le démon ssh:
sudo systemctl restart sshd.service
Voici comment cela fonctionne ( cliquez sur l'image pour voir une démo animée ):
De plus, j'ai réalisé que nous n'avons rien à tuer si nous modifions le script de cette manière:
#!/bin/sh
if [ "$(pgrep -cx sshd)" -gt 7 ]
then
echo '\nThe limit was reached!\n'
exit # This line is not mandatory
else
eval "$SHELL"
fi
Et respectivement /etc/ssh/sshd_config
de cette façon:
ForceCommand /usr/local/bin/limit-sshd
MaxSessions
terrain