So stellen Sie die Anmeldeverzögerung in ssh bereit

11

Ich wollte eine Anmeldeverzögerung angeben, während ich mich über ssh anmelde. Ich habe verschiedene Möglichkeiten ausprobiert, konnte aber das gewünschte Ergebnis nicht finden.

Ich habe Schritte ausprobiert, die über den angegebenen Link bereitgestellt wurden.

http://hostingfu.com/article/ssh-dictionary-attack-prevention-with-iptables

iptables -N SSH_CHECK
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_CHECK
iptables -A SSH_CHECK -m recent --set --name SSH
iptables -A SSH_CHECK -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP

Ich habe kein Pam-Modul auf meinem Computer installiert und kann daher keine Änderungen an Pam-Dateien vornehmen

Also lässt mich irgendein Körper einen anderen Weg vorschlagen, um dasselbe zu tun?

Ich habe einen nackten Linux-Kernel, der auf einer eingebetteten Plattform läuft.

RAM
quelle
Warum möchten Sie eine Verzögerung einführen? Was ist dein ultimatives Ziel?
ein CVn
Ich wollte die Möglichkeit eines Brute-Force-Angriffs verhindern.
Ram
3
Das einfache Einführen einer Verzögerung für neue Verbindungen verhindert keinen Brute-Force-Angriff. Sie müssen sich Tools ansehen, mit denen Sie Ihr eigentliches Problem lösen können. Ich würde vorschlagen, zunächst mit fail2ban zu beginnen, das speziell für die Reaktion auf wiederholte Protokolleinträge durch Ausführen bestimmter Befehle entwickelt wurde und häufig speziell verwendet wird, um Brute-Force-Versuche zu verhindern, unbefugten Zugriff zu erhalten.
Ein CVn
Das ist in Ordnung, Michael, aber ich muss es mit der vorhandenen Infrastruktur tun, die ich bei mir habe. Wie kann ich bei jeder Verbindung über ssh eine Verzögerung einführen?
Ram
2
Alter, fail2banverwendet genau die Infrastruktur, die Sie bereits haben - SSH-Protokolle und Iptables-Regeln.
Shadur

Antworten:

11

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 MatchOperator verwenden sshd_config:

Match User root,foo,bar
    PasswordAuthentication no
Match User user1,user2
    PasswordAuthentication yes

Methode 2 - iptables

Sie können auch iptablesfehlgeschlagene 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 sshdpam-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- sshdKonfigurationsdatei 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

slm
quelle
Danke @slm, aber ich kann das Pam-Modul nicht installieren und meine SSHD-Authentifizierung stammt nicht von Pam. Möchten Sie einen anderen Weg vorschlagen
Ram
@AmitSinghTomar - Entschuldigung, ich habe meine Antwort erweitert. Ich habe versucht, eine kanonische Antwort auf Ihre Frage zu erstellen, die alle Methoden abdeckt, nicht nur Ihre allein.
slm
Nochmals vielen Dank @slm für Ihre ausführliche Antwort. Ich bin daran interessiert, die zweite von Ihnen vorgeschlagene Methode zu befolgen. Versuchen Sie es und teilen Sie Ihnen das Ergebnis mit. Außerdem verzögert es mich beim ersten Versuch, mich über ssh anzumelden.
Ram
@AmitSinghTomar - nein, es sollte sich erst nach 4 Versuchen verzögern. Wenn das --hitcount 4überschritten wird, wird die Regel die beleidigende IP-Adresse für 60 Sekunden schwarz lochen.
slm
Ein Punkt, den ich von Ihnen wissen wollte, damit Ihre dritte Methode (PAM) funktioniert. Muss die SSH-Authentifizierung über Pam erfolgen?
Ram
3

Passwörter deaktivieren. Keine Passwörter, kein Brute-Force-Angriff.

Sie können SSH-Schlüssel zum Anmelden verwenden - dies sollte viel sicherer und viel schwieriger zu hacken sein.

Nils
quelle
0

Bei einer Neuinstallation von Ubuntu 16.04 mit openssh-servergibt es bereits eine Verzögerung für einen falschen Kennwortversuch mit mehr als null Zeichen. Die Verzögerung scheint mehr als 1 Sekunde zu betragen .

Bei einem falschen Kennwortversuch mit null Zeichen gibt es keine Verzögerung, sodass der Angreifer sofort feststellt, dass Ihr Kennwort nicht die leere Zeichenfolge ist, wenn es tatsächlich nicht die leere Zeichenfolge ist. Da die leere Zeichenfolge wahrscheinlich nicht als Kennwort zulässig ist, wissen sie das bereits, sodass sie die leere Zeichenfolge nicht ausprobieren werden.

H2ONaCl
quelle