Blockieren von SSH Brute Force-Angriffen auf IPv6

10

Ich musste kürzlich mit einigen Servern arbeiten, die eine IPv6-Verbindung haben, und ich war überrascht, dass fail2ban keine IPv6-Unterstützung bietet und Denhosts auch nicht. Bei der Suche auf Google habe ich festgestellt, dass die Leute im Allgemeinen empfehlen:

  • Deaktivieren der SSH-Anmeldung über IPv6 (für mich keine Lösung)
  • Verwenden Sie nur die Authentifizierung mit privatem / öffentlichem Schlüssel auf dem Server ohne Kennwortauthentifizierung (funktioniert, aber viele Angriffe können den Server viel Rechenleistung kosten oder ihn sogar durch DDoS-Verfügbarkeit nicht verfügbar machen).
  • Verwenden von ip6tables, um aufeinanderfolgende Angriffe von derselben IP zu blockieren
  • Verwenden von sshguard mit IPv6-Unterstützung

Nach dem, was ich bisher gesammelt habe, unterscheidet sich das Verbot von Adressen in IPv6 etwas von IPv4, da ISPs einem Benutzer keine einzige Adresse (/ 128), sondern ein ganzes Subnetz (ich habe derzeit eine / 48) geben. Ein Verbot einzelner IPv6-Adressen wäre daher gegen Angriffe unwirksam. Ich habe hoch und niedrig zum Thema ip6tables und sshguard gesucht, die Subnetze bei der Angriffserkennung blockieren, aber ich habe keine Informationen gefunden.

Weiß jemand, ob sshguard Subnetze für IPv6-Angriffe verbietet?
Weiß jemand, wie man eine ip6tables-Konfiguration zum Verbot von Subnetzen bei IPv6-Angriffen erstellt?
Oder kennt jemand einen besseren Weg, um die Angriffe abzuschwächen, als den, den ich bereits gefunden habe?

PS: Ich verwende CentOS 7 auf dem System.

DarthRevan13
quelle
3
Weitere Informationen zum Hinzufügen von IPv6-Unterstützung durch fail2ban finden Sie unter: github.com/fail2ban/fail2ban/issues/39 . Es scheint, dass sie mit einem Problem mit der Blockierung von Subnetzen konfrontiert sind , das die weitere Implementierung verzögert (es scheint sich tatsächlich immer weiter von uns zu entfernen ...).
John WH Smith
Ratenbegrenzungs- / Verbotsregeln in iptables. Ändern Sie Ihre Frage dafür und ein paar Rep-Huren sollten genau antworten.
Ist das ein hypothetisches Problem? Ich habe Protokolle von Brute-Force-Versuchen von einigen Servern durchsucht, und jeder von ihnen wurde über IPv4 versucht. Und ich habe nicht gesehen, dass ein Server aufgrund solcher Versuche zu stark ausgelastet ist, wenn die Kennwortauthentifizierung auf der Serverseite deaktiviert ist.
Kasperd
1
@kasperd Ich habe ein paar tausend Versuche pro Tag mit IPv6 gemacht, also nein, es ist kein hypothetisches Problem. Die Serveradresse ist öffentlich, da sie eine Site hostet. Dies ist also ein echtes Problem.
DarthRevan13
@ user123418 Ich werde den Titel der Frage so lassen, wie er ist. Ich würde wirklich so etwas wie sshguard bevorzugen, da ich die Kontrolle darüber habe und keine Regel in ip6tables habe. Wenn in der folgenden Woche niemand antworten wird, werde ich meine Frage ändern.
DarthRevan13

Antworten:

4

Um einen Server anzugreifen, muss der Angreifer zuerst seine IP-Adresse kennen. Mit IPv6 haben Sie so viele Adressen zur Auswahl, dass es nicht möglich ist, die richtige Adresse durch Scannen des IP-Bereichs zu finden.

Dies bedeutet, dass Sie der Schnittstelle einfach zwei verschiedene IPv6-Adressen zuweisen können. Sie lassen den Domainnamen Ihrer Site wie immer auf dieselbe IP-Adresse verweisen und lassen sshd nur die neu zugewiesene IP-Adresse abhören.

Nach dieser Änderung erhält ein Angreifer keinen Zugriff auf Ihre SSHD, wenn er den Domainnamen und die IP-Adresse Ihrer Site kennt.

Sie benötigen natürlich einen sekundären Hostnamen, um eine Verbindung mit ssh herstellen zu können. Dieser Hostname kann viel mehr Entropie haben als eine IPv6-Adresse. Jemand, der den Hostnamen für ssh errät, ist unvorstellbar, wenn Sie 63 alphanumerische Zeichen verwenden.

Sollte jemand die für sshd verwendete IPv6-Adresse herausfinden, verschieben Sie sshd einfach auf eine neue IPv6-Adresse und aktualisieren den AAAA-Eintrag. Dann müssen sie von vorne anfangen.

Wenn Sie befürchten, dass ein legitimer SSH-Benutzer den Hostnamen und / oder die IP-Adressen verlieren könnte, können Sie für jeden Benutzer einen anderen Hostnamen erstellen, auf den er mit SSH zugreifen kann. Anfangs würde ich alle auf einen einzigen Hostnamen CNAME, so dass nur ein einziger AAAA-Datensatz aktualisiert werden muss.

Kasperd
quelle
Klingt besser als das, was ich derzeit habe, aber nicht ganz das, wonach ich gesucht habe. Danke trotzdem.
DarthRevan13
0

Gute Nachrichten sind, dass fail2ban kürzlich die Unterstützung für IPv6 veröffentlicht hat.

Für Debian IPv6-Server würde ich empfehlen, dieses Tutorial zu befolgen .

Für CentOS IPv6-Server würde ich empfehlen, es hier herunterzuladen und dann diese Befehle auszuführen, wobei die Versionsnummer entsprechend ersetzt wird:

tar xvfj fail2ban-0.11.0.tar.bz2
cd fail2ban-0.11.0
python setup.py install

Stellen Sie sicher, dass in /etc/fail2ban/jail.local ein Gefängnis für sshd aktiviert ist , zum Beispiel:

[sshd]
enabled=1
ncomputer
quelle
1
Obwohl ich bewundere, was die Jungs von fail2ban getan haben, ist es immer noch nicht genug! Nicht alle Funktionen werden durch das IPv6 - Protokoll unterstützen nach ihrem Changelog github.com/fail2ban/fail2ban/blob/0.10/ChangeLog und es gibt immer noch keine Unterstützung für Subnetze Verbot github.com/fail2ban/fail2ban/issues/927 der für entscheidend IPv6, da jeder ISP einem Kunden nicht nur eine IPv6-Adresse anbietet, sondern ein gesamtes Subnetz. Solange dies zutrifft, sollte jetzt keine Produktionsmaschine fail2ban verwenden! Bitte ändern Sie Ihre Antwort, um dies widerzuspiegeln, da diese Seite von vielen Personen besucht wird.
DarthRevan13