Ich habe beschlossen , die erarbeiten und testen Ravexina ‚s Idee . Es funktioniert und ist effektiv, wenn Sie die Anzahl der eingerichteten SSH-Verbindungen einschränken möchten.
Zuerst habe ich festgestellt, dass es einen sshd
Prozess gibt, wenn der ssh-Daemon ohne Verbindung ausgeführt wird . Für jede neue Verbindung werden zwei neue sshd
Prozesse erstellt. Wenn Sie also ein Limit von 20 Verbindungen wünschen, sollte der Schwellenwert 41 (1 + 2x20) anstelle von 20 sein.
Dann habe ich eine ausführbare Datei mit dem Namen erstellt , die wie folgt aussieht:/usr/local/bin/limit-sshd
#!/bin/sh
if [ "$(pgrep -cx sshd)" -gt 7 ]
then
echo '\nThe limit was reached!\n'
pkill -xn sshd
fi
- Die Schwelle liegt hier bei 7, bzw. es konnten nur 3 Verbindungen hergestellt werden und der Rest wird fallengelassen.
Schließlich habe ich die folgende Direktive hinzugefügt /etc/ssh/sshd_config
:
ForceCommand /usr/local/bin/limit-sshd; $SHELL
- Die Variable
$SHELL
führt die Shell des Standardbenutzers aus.
- Ein unerwünschter Effekt ist, dass die Begrüßungsnachricht nicht mehr verfügbar ist.
- Vergessen Sie nicht, den ssh-Daemon neu zu starten:
sudo systemctl restart sshd.service
So funktioniert das ( klicken Sie auf das Bild, um eine animierte Demo zu sehen ):
Außerdem wurde mir klar, dass wir nichts töten müssen, wenn wir das Skript auf diese Weise ändern:
#!/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
Und jeweils /etc/ssh/sshd_config
auf diese Weise:
ForceCommand /usr/local/bin/limit-sshd
MaxSessions
Feld zugreifen dürfen, auf 20 ein