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.
Antworten:
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.
quelle
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:
Stellen Sie sicher, dass in /etc/fail2ban/jail.local ein Gefängnis für sshd aktiviert ist , zum Beispiel:
quelle