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.
Odpowiedzi:
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.
źródło
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:
Upewnij się, że więzienie dla sshd jest włączone w /etc/fail2ban/jail.local , na przykład:
źródło