Blokowanie ataków SSH Brute Force na IPv6

10

Niedawno musiałem pracować z niektórymi serwerami, które mają połączenie IPv6 i byłem zaskoczony, gdy dowiedziałem się, że fail2ban nie obsługuje IPv6, ani nie odmawia hostów. Przeszukując google, zauważyłem, że ludzie ogólnie polecają:

  • Dezaktywacja logowania ssh przez IPv6 (nie jest to dla mnie rozwiązanie)
  • przy użyciu tylko uwierzytelniania klucza prywatnego / publicznego na serwerze, bez uwierzytelniania hasłem (działa, ale wiele ataków może kosztować serwer dużo mocy obliczeniowej, a nawet może uniemożliwić jego wykonanie przez DDoS)
  • za pomocą ip6tables do blokowania kolejnych ataków z tego samego adresu IP
  • za pomocą sshguard, który ma obsługę IPv6

Z tego, co dotychczas zebrałem, banowanie adresów w IPv6 jest nieco inne niż w IPv4, ponieważ dostawcy usług internetowych nie dają użytkownikowi pojedynczego adresu (/ 128), ale całej podsieci (obecnie mam / 48). Zatem zablokowanie pojedynczych adresów IPv6 byłoby nieskuteczne przeciwko atakom. Szukałem wysoko i nisko na temat blokowania podsieci ip6tables i sshguard podczas wykrywania ataku, ale nie udało mi się znaleźć żadnych informacji.

Czy ktoś wie, czy sshguard blokuje podsieci przed atakami IPv6?
Czy ktoś wie, jak skonfigurować konfigurację ip6tables do blokowania podsieci przed atakami IPv6?
A może ktoś wie o lepszym sposobie łagodzenia ataków niż to, co już znalazłem?

PS: Używam CentOS 7 w systemie.

DarthRevan13
źródło
3
Aby uzyskać więcej informacji na temat dodawania obsługi błędów IPv6 przez fail2ban : github.com/fail2ban/fail2ban/issues/39 . Wygląda na to, że mają problem z blokowaniem podsieci , co opóźnia dalszą implementację (wydaje się, że coraz bardziej oddalają się od nas ...).
John WH Smith,
Zasady ograniczania / banowania stawek w iptables. Zmień swoje pytanie, a kilka dziwek powinno odpowiedzieć dokładnie.
Czy to jest hipotetyczny problem? Patrzyłem na dzienniki prób brutalnej siły z kilku serwerów i każdy z nich próbował za pośrednictwem IPv4. I nie widziałem, aby jakikolwiek serwer był obciążony zbyt mocno z powodu takich prób, gdy uwierzytelnianie hasła jest wyłączone po stronie serwera.
kasperd
1
@kasperd Dostałem kilka tysięcy prób dziennie na IPv6, więc nie, to nie jest hipotetyczny problem. Adres serwera jest publiczny, ponieważ hostuje witrynę, więc jest to bardzo poważny problem.
DarthRevan13,
@ user123418 Zostawię tytuł pytania, tak jak jest na razie, naprawdę wolałbym coś takiego jak sshguard ze względu na kontrolę nad nim zamiast reguły w ip6tables. Jeśli nikt nie odpowie w następnym tygodniu, zmienię pytanie.
DarthRevan13,

Odpowiedzi:

4

Aby zaatakować serwer, osoba atakująca musi najpierw znać jego adres IP. Dzięki IPv6 będziesz mieć tyle adresów do wyboru, że znalezienie właściwego adresu przez skanowanie zakresu adresów IP jest niemożliwe.

Oznacza to, że możesz po prostu przypisać dwa różne adresy IPv6 do interfejsu. Pozwalasz, aby nazwa domeny Twojej witryny nadal wskazywała na ten sam adres IP, co zawsze, i pozwalasz sshd nasłuchiwać tylko na nowo przypisanym adresie IP.

Po tej zmianie znajomość nazwy domeny i adresu IP Twojej witryny nie zapewni osobie atakującej dostępu do Twojego sshd.

Będziesz oczywiście potrzebował dodatkowej nazwy hosta, która będzie używana podczas łączenia za pomocą ssh. Ta nazwa hosta może mieć dużo więcej entropii niż adres IPv6. Zgadnięcie nazwy hosta dla ssh jest nie do pomyślenia, jeśli użyjesz 63 znaków alfanumerycznych.

Jeśli ktoś znajdzie adres IPv6 używany dla sshd, wystarczy przenieść sshd na nowy adres IPv6 i zaktualizować rekord AAAA. Potem muszą zacząć wszystko od nowa.

Jeśli obawiasz się, że prawowity użytkownik ssh może wyciec nazwę hosta i / lub adresy IP, możesz utworzyć inną nazwę hosta dla każdego użytkownika, do którego dostęp będzie uzyskiwał za pomocą ssh. Początkowo chciałbym je wszystkie NAZWAĆ pod jedną nazwą hosta, tak że istnieje tylko jeden rekord AAAA do zaktualizowania.

kasperd
źródło
Brzmi lepiej niż obecnie, ale nie do końca to, czego szukałem. W każdym razie dzięki.
DarthRevan13,
0

Dobrą wiadomością jest to, że fail2ban wydało ostatnio obsługę IPv6.

W przypadku serwerów Debian IPv6 polecam wykonać ten samouczek .

W przypadku serwerów CentOS IPv6 polecam pobrać go tutaj, a następnie wykonać następujące polecenia, zastępując odpowiednio numer wersji:

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

Upewnij się, że więzienie dla sshd jest włączone w /etc/fail2ban/jail.local , na przykład:

[sshd]
enabled=1
nkomputery
źródło
1
Chociaż podziwiam to, co zrobili faceci z fail2ban, to wciąż nie wystarczy! Nie wszystkie funkcje są obsługiwane przez protokół IPv6 zgodnie z ich dziennikiem zmian github.com/fail2ban/fail2ban/blob/0.10/ChangeLog i nadal nie ma obsługi blokowania podsieci github.com/fail2ban/fail2ban/issues/927, co jest kluczowe dla IPv6, ponieważ dowolny dostawca usług internetowych nie zaoferuje klientowi tylko jednego adresu IPv6, ale całej podsieci. Dopóki pozostaje to prawdą, żadna maszyna produkcyjna nie powinna teraz używać fail2ban! Zmień swoją odpowiedź, aby to odzwierciedlić, ponieważ tę stronę odwiedza wiele osób.
DarthRevan13