Ataki SSH wyczerpują 4 GB w ciągu 10 godzin. Możliwy?

10

Ostrzeżono mnie, że mój serwer przekroczył limit transferu. Sądzę, że mój węzeł Tor stał się popularny, więc postanowiłem go wyłączyć w tym miesiącu (nie jest to najlepszy wybór dla społeczności, ale muszę zejść na dół). Potem zauważyłem, że serwer przesłał tej nocy około 4 GB. Sprawdziłem dzienniki Apache za pomocą Awstats, nie ma istotnego ruchu (i nie prowadzę tam tak popularnych witryn). Sprawdziłem dzienniki poczty, nikt nie próbował wysłać śmieci. Sprawdziłem messagesdzienniki i znalazłem ich mnóstwo

Apr 29 10:17:53 marcus sshd[9281]: Did not receive identification string from 85.170.189.156
Apr 29 10:18:07 marcus sshd[9283]: Did not receive identification string from 86.208.123.132
Apr 29 10:18:24 marcus sshd[9298]: Did not receive identification string from 85.170.189.156
Apr 29 10:18:39 marcus sshd[9303]: Did not receive identification string from 86.208.123.132
Apr 29 10:18:56 marcus sshd[9306]: Did not receive identification string from 85.170.189.156
Apr 29 10:19:11 marcus sshd[9309]: Did not receive identification string from 86.208.123.132
Apr 29 10:19:18 marcus sshd[9312]: Did not receive identification string from 101.98.178.92
Apr 29 10:19:27 marcus sshd[9314]: Did not receive identification string from 85.170.189.156
Apr 29 10:19:41 marcus sshd[9317]: Did not receive identification string from 86.208.123.132
Apr 29 10:20:01 marcus sshd[9321]: Did not receive identification string from 85.170.189.156
Apr 29 10:20:13 marcus sshd[9324]: Did not receive identification string from 86.208.123.132
Apr 29 10:20:32 marcus sshd[9327]: Did not receive identification string from 85.170.189.156
Apr 29 10:20:48 marcus sshd[9331]: Did not receive identification string from 86.208.123.132
Apr 29 10:21:07 marcus sshd[9336]: Did not receive identification string from 85.170.189.156
Apr 29 10:21:20 marcus sshd[9338]: Did not receive identification string from 86.208.123.132
Apr 29 10:21:35 marcus sshd[9341]: Did not receive identification string from 85.170.189.156
Apr 29 10:21:51 marcus sshd[9344]: Did not receive identification string from 86.208.123.132
Apr 29 10:22:06 marcus sshd[9349]: Did not receive identification string from 85.170.189.156
Apr 29 10:22:23 marcus sshd[9353]: Did not receive identification string from 86.208.123.132
Apr 29 10:22:39 marcus sshd[9359]: Did not receive identification string from 85.170.189.156
Apr 29 10:22:54 marcus sshd[9361]: Did not receive identification string from 86.208.123.132
Apr 29 10:23:10 marcus sshd[9367]: Did not receive identification string from 85.170.189.156
Apr 29 10:23:29 marcus sshd[9369]: Did not receive identification string from 86.208.123.132
Apr 29 10:23:45 marcus sshd[9375]: Did not receive identification string from 85.170.189.156
Apr 29 10:24:10 marcus sshd[9387]: Did not receive identification string from 86.208.123.132
Apr 29 10:24:16 marcus sshd[9388]: Did not receive identification string from 85.170.189.156

Co kilka sekund bot próbuje włamać się do mojego SSH, co jest niemożliwe, ponieważ wymagam uwierzytelnienia za pomocą klucza publicznego. Moje pytanie brzmi: czy ten ruch na tej częstotliwości może zużywać 4 GB (powiedzmy 3,5) w ciągu 10 godzin ciągłego ataku?

Zmieniłem port SSH i powstrzymałem te ataki, ale nie jestem pewien, czy mam zużycie sieci. Nie mam żadnych usług, które mogą wymknąć się spod kontroli - moja zapora sieciowa jest dość restrykcyjna - lub udostępniam serwer komuś, kto niewłaściwie robi P2P lub cokolwiek innego. Moim problemem jest, aby zejść poniżej 400 GB / miesiąc.

Jakieś wskazówki?

usr-local-ΕΨΗΕΛΩΝ
źródło

Odpowiedzi:

16

4 GB jest możliwe, ale bardzo mało prawdopodobne, biorąc pod uwagę szybkość ataku. Sugeruję instalację OSSEC, wykrywa włamania i automatycznie blokuje adres IP na określony czas.

Lucas Kauffman
źródło
1
Mam już fail2ban, pomyślnie zablokował złe loginy, ale wydaje się ignorować te wiadomości. Może to poprawię.
usr-local-ΕΨΗΕΛΩΝ
1
Przyjęty. Fail2ban potrzebował dostrajania, aby zaakceptować te komunikaty dziennika jako próby włamania. +1 do @lain też, ponieważ nie mogę zaakceptować 2 odpowiedzi
usr-local-ΕΨΗΕΛΩΝ
@djechelon: Daj nam znać, jeśli to rozwiąże problem. Jakoś wątpię, że tak się stanie, gdy pakiety zostaną upuszczone po przybyciu do twojego systemu.
user9517
@Iain większość atakujących poddaje się, gdy zostają upuszczone.
Lucas Kauffman
3
@LucasKaufman: 4 Gb / 10Hrs wynosi ~ 120 Kb / s. Nie widzę takiej przepustowości po nieudanych próbach, a powyższy fragment pokazuje znacznie niższy wskaźnik ataku (26 w ~ 7 minut).
user9517
14

Jeśli są one przyczyną wykorzystania przepustowości, oznacza to, że przepustowość jest już zużyta do czasu rozwiązania problemu w systemie. Możesz użyć narzędzia takiego jak iptraf, aby przedstawić podział tego, co dzieje się na każdym interfejsie / porcie, a następnie możesz podjąć odpowiednie działania w oparciu o fakty.

użytkownik9517
źródło
Oczywiście mogę podjąć wysiłki, aby zapobiec przyszłemu zużyciu przepustowości, poczynając od nadchodzącego miesiąca
usr-local-ΕΨΗΕΛΩΝ
1
I ... bardzo pomocna odpowiedź, ale iptraf nie działa z OpenVZ (odnośnik webhostingtalk.com/showthread.php?t=924814 ) i nie wspomniałem o tym :)
usr-local-ΕΨΗΕΛΩΝ
Podstawowa idea pozostaje ta sama. Znajdź coś, co powie ci, gdzie jest użycie, a następnie rozwiąż problem. Wszystko inne to zgadywanie.
user9517
4

Nie, same próby połączenia raz na sekundę nie zwiększą do 4 GB w ciągu dziesięciu godzin. Czy uważasz, że możesz pobrać plik 4 GB w ciągu 10 godzin, otrzymując mały pakiet raz na sekundę? Na godzinę jest 3600 sekund, więc jeśli otrzymasz dziesięć kilobajtów na sekundę przez dziesięć godzin, będzie to 36000 Kb, czyli 36 megabajtów.

Twoje pasmo jest mierzone zgodnie z tym, co idzie rurą od twojego dostawcy do zewnętrznego routera, a nie tym, co dociera do twojego serwera. Musisz spojrzeć na bzdury, które nie docierają do twojego serwera, które większość zewnętrznych urządzeń odrzuca.

Jeśli chodzi o to, co dociera do twojego serwera, nie możesz polegać na dziennikach aplikacji. Nawet pakiety, które są dyskretnie upuszczane przez lokalną zaporę, mają przepustowość. Statystyki interfejsu (pokazane przez ifconfig) pokażą bajty Tx / Rx.

Kaz
źródło
Niepewny. Z mojego punktu widzenia komunikaty dziennika pokazują, że klienci otworzyli gniazdo do portu 22, ale zostali odrzuceni, ponieważ „to, co przesłali” nie zostało rozpoznane jako właściwy uścisk dłoni SSH. Nie chciałem podsłuchiwać portu 22, aby zobaczyć rzeczywistą ładowność wysłaną przez skanery, ale teoretycznie mogliby wysyłać mnóstwo śmieci, dopóki SSH nie spadnie. Pytanie brzmi: kiedy openSSH upuszcza nieprawidłowy uścisk dłoni? Po drugie, spędziłem noc z wyłączonym Torem i ruch nadal wzrósł (Apache nie wykazywał znaczącego ruchu), kiedy ponownie skonfigurowany ruch fail2ban prawie się zatrzymał
usr-local-ΕΨΗΕΛΩΝ
1
Na wszelki wypadek pozwól mi trochę sformułować. Gdybym chciał wyczerpać 4 GB przepustowości z serwera, mógłbym stworzyć botnet, który otwiera połączenia HTTP i wysyła nieograniczoną liczbę ładunków POST dla każdego żądania. Dzienniki wykażą, że żądania zakończone niepowodzeniem przy niskich stawkach, ale każde jest bardzo ciężkie. Ale to zaczyna tracić sens. Znałem skanowanie SSH („nieudane uwierzytelnienie dla roota, administratora ...”), ponieważ ich celem jest przejęcie kontroli nad węzłem. Dlaczego atakujący miałby nic przeciwko zmniejszeniu przepustowości przez SSH? To nie ma sensu Chyba, że ​​ktoś nienawidzi węzłów Tora ...
usr-local-ΕΨΗΕΛΩΝ