Methode 1 - Deaktivieren Sie die Kennwortanmeldungen
Wenn Sie keine Kennwortanmeldungen zulassen müssen, erhalten Sie den gewünschten Effekt, wenn Sie diese einfach nicht zulassen. Fügen Sie einfach diese Zeile hinzu zu /etc/ssh/sshd_config
:
PasswordAuthentication no
Darüber hinaus können Sie die Verwendung von Kennwörtern auf bestimmte Benutzer beschränken, indem Sie den Match
Operator verwenden sshd_config
:
Match User root,foo,bar
PasswordAuthentication no
Match User user1,user2
PasswordAuthentication yes
Methode 2 - iptables
Sie können auch iptables
fehlgeschlagene Anmeldeversuche verfolgen und nach einem bestimmten Schwellenwert löschen. Dies ähnelt Ihrem Beispiel von HostingFu, ist jedoch leichter zu verstehen.
$ sudo iptables -I INPUT -p tcp --dport <YOUR PORT HERE> -i eth0 -m state --state NEW -m recent --set
$ sudo iptables -I INPUT -p tcp --dport <YOUR PORT HERE> -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
HINWEIS: In der ersten Zeile wird grundsätzlich eine Regel erstellt, die nur für Pakete gilt, die für neue Verbindungsversuche am SSH-Port verwendet werden. Die zweite Zeile besagt, dass bei mehr als 4 Versuchen von einer IP innerhalb von 60 Sekunden jeglicher Datenverkehr von dieser IP mit einem Blackholing versehen werden sollte. Diese Lösung kümmert sich nicht darum, ob die Versuche auf verschiedenen Benutzerkonten ausgeführt werden.
Methode 3 - Verwenden Sie PAM
Mir ist klar, dass Sie gesagt haben, dass Sie kein PAM zur Verfügung haben, aber wenn Sie dies getan haben, können Sie auf diese Weise fehlgeschlagene Anmeldeversuche verzögern. Wenn Sie einfach SSH-Anmeldefehler verzögern möchten, können Sie das PAM-Modul verwenden pam_faildelay
. Dieses PAM-Modul ist im Allgemeinen im Standardmix enthalten.
Auf meinem Fedora 19-System ist es Teil der Standardinstallation.
Beispiel
Suchen Sie nach Dateien im Zusammenhang mit pam_faildelay
.
$ locate pam|grep -i delay
/usr/lib/security/pam_faildelay.so
/usr/lib64/security/pam_faildelay.so
/usr/share/doc/pam-1.1.6/html/sag-pam_faildelay.html
/usr/share/doc/pam-1.1.6/txts/README.pam_faildelay
/usr/share/man/man8/pam_faildelay.8.gz
Sehen Sie, von welcher Drehzahl sie bereitgestellt werden:
$ rpm -qf /usr/share/man/man8/pam_faildelay.8.gz
pam-1.1.6-12.fc19.x86_64
pam-1.1.6-12.fc19.i686
Verwendung
Um eine Verzögerung bei einem Fehler zu erzeugen, fügen Sie Ihrer sshd
pam-Konfigurationsdatei einfach eine Zeile wie diese hinzu . Auch auf Fedora / CentOS / RHEL-Systemen befindet sich diese Datei hier : /etc/pam.d/sshd
.
So erstellen Sie eine Verzögerung von 10 Sekunden:
auth optional pam_faildelay.so delay=10000000
Eine Verzögerung von 60 Sekunden:
auth optional pam_faildelay.so delay=60000000
Beispiel
Mit einer Verzögerung von 20 Sekunden unter Verwendung der obigen Methode habe ich meine PAM- sshd
Konfigurationsdatei wie folgt geändert :
#%PAM-1.0
auth required pam_sepermit.so
auth substack password-auth
auth include postlogin
auth optional pam_faildelay.so delay=20000000
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session optional pam_keyinit.so force revoke
session include password-auth
session include postlogin
Wenn ich mich jetzt anmelde:
$ date
Tue Dec 17 09:16:30 EST 2013
$ ssh blah@localhost
blah@localhost's password:
Permission denied, please try again.
blah@localhost's password:
...Control + C....
$ date
Tue Dec 17 09:16:50 EST 2013
Verweise