Jak ustalić, czy moje urządzenie Linux zostało infiltrowane?

11

Niedawno przeczytałem artykuł na temat analizy złośliwych prób logowania SSH. To sprawiło, że pomyślałem, czy nazwa użytkownika SSH, kombinacje haseł na moim Debianie są tak rzadkie? Czy zostałem zaatakowany przez brutalny atak słownikowy? Rzućmy okiem na /var/log/auth.log.0 :

Sep 23 07:42:04 SLUG sshd[8303]: Invalid user tyjuan from 210.168.200.190
Sep 23 07:42:09 SLUG sshd[8305]: Invalid user tykeedra from 210.168.200.190
Sep 23 07:42:14 SLUG sshd[8307]: Invalid user tykeem from 210.168.200.190
Sep 23 07:42:19 SLUG sshd[8309]: Invalid user tykeshia from 210.168.200.190
Sep 23 07:42:25 SLUG sshd[8311]: Invalid user tyla from 210.168.200.190
Sep 23 07:42:30 SLUG sshd[8313]: Invalid user tylan from 210.168.200.190
Sep 23 07:42:35 SLUG sshd[8315]: Invalid user tylar from 210.168.200.190
Sep 23 07:42:40 SLUG sshd[8317]: Invalid user tyler from 210.168.200.190
Sep 23 07:42:45 SLUG sshd[8319]: Invalid user tylerfrank from 210.168.200.190
Sep 23 07:42:50 SLUG sshd[8321]: Invalid user tyliah from 210.168.200.190
Sep 23 07:42:55 SLUG sshd[8323]: Invalid user tylor from 210.168.200.190

Więc to nie wygląda dobrze. Teraz, gdy wiem, że zostałem zaatakowany przez atak i że niektóre moje nazwy użytkownika, kombinacje haseł są słabe, chciałbym wiedzieć, jak mogę ...

  • ... ustalić, czy mój system Linux został infiltrowany?
  • ... cofnąć jakiekolwiek szkody pozostawione przez sprawców?
  • ... zapobiec temu w przyszłości?

AKTUALIZACJA

Wszelkie porady na temat cofnięcia jakichkolwiek szkód pozostawionych przez sprawców?

Jake McGraw
źródło
ten dziennik nie sugeruje, że zostałeś zagrożony. czy masz dodatkowe informacje, które Cię niepokoją?
możliwy duplikat Jak postępować z zainfekowanym serwerem?
Dennis Nolte,

Odpowiedzi:

15

Wiele osób sugeruje DenyHosts, ale widziałem wiele sukcesów z Fail2Ban na moich systemach. Sprawdza (konfigurowalną) liczbę awarii, a następnie wykonuje akcję - na moich serwerach ta akcja polega na użyciu iptables do usunięcia całego ruchu z hosta. Po 10 błędach logowania zostają zbanowani i to już koniec.

Używam tego w połączeniu z Logcheck, dzięki czemu zawsze wiem, co się dzieje na moich serwerach.

Jeśli masz jakiekolwiek dowody na to, że ktoś włamał się do twojego systemu (opublikowane przez ciebie logi nie są tego dowodem), to jedynym rozwiązaniem jest utworzenie kopii zapasowej wszystkich danych, które musisz przechowywać, wyczyść maszynę, zainstaluj ponownie i przywróć z kopii zapasowych. W przeciwnym razie nie ma pewności.

Dan Udey
źródło
1
Używam także logcheck i fail2ban. Bardzo dobra kombinacja.
Po drugie używam fail2ban.
Malfist
Przełączyłem się również na fail2ban z denyhosts, ponieważ fail2ban monitoruje więcej usług (poczta, sieć, ftp, ...) i jest bardziej konfigurowalny
Jure1873,
10

Prawidłowe próby logowania są również logowane, więc jeśli zobaczysz próbę brutalnej siły, po której nastąpi sukces, to dobra wskazówka, że ​​stało się coś złego.

Korzystam z DenyHosts do monitorowania moich dzienników pod kątem podejrzanego ruchu SSH, i mam skonfigurowane do automatycznego zapory ogniowej od hostów w pewnym momencie.

Zauważ, że istnieje wiele innych sposobów monitorowania komputera, aby sprawdzić, czy nie jest zagrożony, w tym wzorce obciążenia, aktywność logowania, okresowe wąchanie ruchu, monitorowanie uruchomionych procesów i otwartych portów oraz zapewnienie integralności plików za pomocą narzędzia takiego jak tripwire.

Jeśli zamierzasz to zrobić tylko jeden, monitorowanie obciążenia systemu jest bardzo skutecznym sposobem wykrywania kompromisów, ponieważ większość komputerów po przejęciu jest wykorzystywana do takich zadań, jak wysyłanie ogromnych ilości spamu lub w inny sposób otrzymywanie dużego ruchu. Być może nie jest to przydatne, jeśli jesteś celem o wysokiej wartości, a ludzie mogą próbować włamać się do ciebie z powodów innych niż zamiana gospodarza w zombie, ale mimo to cenny. Dodatkowo potrzebne jest monitorowanie obciążenia w celu profilowania i ustalenia, kiedy trzeba zainwestować w więcej sprzętu lub lepszego oprogramowania.

Powinieneś także przeprowadzić kompleksową analizę dziennika, sprawdzając auth.log i inne w poszukiwaniu niespodziewanych rzeczy. Analiza pliku dziennika jest konkurencyjnym rynkiem i problem nie został jeszcze rozwiązany, ale istnieją bezpłatne narzędzia, takie jak zegarek, które można skonfigurować tak, aby codziennie wysyłały podsumowania.

Bezpieczeństwo przez warstwy!

Daniel Papasian
źródło
1
Oczywiście osoba atakująca mogła zmodyfikować dzienniki, aby usunąć dowody ich włamania, więc brak dowodów w dziennikach niekoniecznie oznacza, że ​​wszystko jest w porządku.
To prawda. Brak dowodów w zasadzie nigdy nie jest dowodem braku kompromisu w mojej książce. Logowanie do zdalnego serwera może zwiększyć wiarygodność dzienników. W tym celu używam tuneli syslog-ng i ssh.
Widziałem też absurdalną liczbę prób włamania się na mój serwer ... Zainstalowałem DenyHosts i już dodałem kilka adresów IP po zaledwie 10 minutach. Dzięki!
Aaron Brown,
4

Zapomnij o Tripwire, jest dość drogi. Zamiast tego użyj AIDE. Jest darmowy, łatwy w konfiguracji (choć zajmuje trochę czasu, aby zdecydować, które katalogi temperatur należy wykluczyć, a w inny sposób skonfigurować).

uruchamiasz go, buduje bazę danych wszystkich plików. Uruchom go ponownie, a powie ci, które pliki się zmieniły.

Inną rzeczą do zrobienia jest zainstalowanie CSF, który ma blokadę typu odmowa hosta, ponieważ ludzie często nie mogą się zalogować, doda je do reguł zapory. Możesz także wymagać, aby loginy SSH miały również klucz publiczny, dzieciaki skryptowe mogą próbować tyle logowań, ile chcą.

gbjbaanb
źródło
Istnieje otwarta wersja (i darmowa) Tripwire. Zobacz tripwire.org
Dan Andreatta
4
"* ... determine if my Linux box has been infiltrated?"
  • szukaj oznak dziwnych procesów. Zwykle używam narzędzi dostarczonych z chkrootkit ( http://www.chkrootkit.org )
  • Wykonaj skanowanie portów za pomocą nmap z innej maszyny. Jeśli twoje urządzenie zostało naruszone, istnieje prawdopodobieństwo, że atakujący zainstalował backdoor

„* ... cofnąć jakiekolwiek szkody pozostawione przez sprawców?”

zapomnij o tym, jeśli wystąpił atak, najlepszą radą jest ponowna instalacja go od zera (upewnij się, że zatkałeś wszelkie dziury w nowej instalacji). Bardzo łatwo jest nie zauważyć backdoora lub procesu ukrywania się, lepiej jest zainstalować ponownie.

„* ... zapobiec temu w przyszłości?”

  • aktualizacje bezpieczeństwa

  • szczelna zapora ogniowa

  • silne hasła

  • wyłącz niepotrzebne usługi


źródło
3

spójrz na narzędzia takie jak logcheck , portsentry i tripwire . jest to bardzo powszechne w przypadku losowych prób SSH ze słownika, więc nie martwiłbym się tym zbytnio. możesz chcieć zmienić port dla przypadkowego zaciemnienia, ale od czasu do czasu będziesz widział przypadkowe próby, życie ma maszynę w Internecie.


źródło
3

Jedną rzeczą, której używam na moich serwerach, aby zapobiec tym atakom, jest DenyHosts . DenyHosts powstrzyma złośliwego użytkownika przed próbą zalogowania się. Od czasu instalacji moje pliki dziennika zawierały znacznie mniej wpisów prób logowania.

Craig
źródło
3

Dobrą praktyką jest stosowanie par kluczy publiczny / prywatny jako dodatkowego uwierzytelnienia; W ten sposób użytkownik nie może zalogować się przez SSH bez odpowiedniego klucza; co byłoby raczej niemożliwe do odgadnięcia dla brutalnego siłownika. Miły artykuł na ten temat można znaleźć tutaj .

To samo z hasłem byłoby całkiem solidne do uwierzytelnienia SSH; Ale jest więcej luk w zabezpieczeniach! Uważaj na wszystkie aplikacje korzystające z otwartego portu; Jeśli zawierają błąd, programy eksploatacyjne mogą wyprzedzić twój system. Dobrym przykładem był bot spamujący, który został zainstalowany na naszym serwerze z powodu błędu w oprogramowaniu statystyk internetowych, z którego obecnie korzystamy.


źródło
2

Fail2ban to analizator dziennika dostępu w czasie rzeczywistym. Można go skonfigurować tak, aby blokował dowolny adres IP z kilkoma nieudanymi próbami zalogowania. Pozwala to uniknąć ataków słownikowych bez konieczności przenoszenia portu ssh. chkrootkit i rootkithunter to dobre narzędzia do sprawdzania włamań. Jeśli włamanie zakończyło się powodzeniem, najlepszą praktyką jest kopiowanie danych (i tylko danych, a nie plików wykonywalnych), czyszczenie i ponowna instalacja, ponieważ naprawdę trudno być w 100% pewnym, że system jest czysty.


źródło
2

Nic nie wskazuje na to, że Twoje urządzenie zostało przejęte. Nawet jeśli twoje hasła są dość słabe, atak słownikowy, który rzuca tylko jedną próbę logowania przy każdej nazwie użytkownika, jest bardzo mało prawdopodobny.

Ale jeśli wiesz, że twoje hasła są słabe, wzmocnij je! Osobiście lubię pwgen (który jest spakowany przez Debiana). Przy każdym uruchomieniu generuje dużą liczbę silnych, ale stosunkowo wyraźnych kandydatów na hasła, które (przynajmniej dla mnie) są dość łatwe do zapamiętania, takie jak yodieCh1, Tai2daci lub Chohcah9.

Jeśli jednak istnieją inne dowody na to, że twój system został naruszony ... Nuke z orbity. To jedyny sposób, aby się upewnić.

Dane niewykonywalne są prawdopodobnie możliwe do zapisania, ale wszystko, co zawiera treść wykonywalną (potencjalnie obejmuje takie rzeczy, jak dokumenty MS Office i niektóre pliki konfiguracyjne) musi przejść, chyba że chcesz i możesz albo ręcznie to sprawdzić, aby upewnić się, że nie „ został uznany za wrogo nastawiony lub zaakceptować możliwość, że może on być wrogi i albo uszkodzić system, albo stanowić drogę do przyszłego ponownego kompromisu, jeśli się go obejmie.

Dave Sherohman
źródło
2

Jednym małym dodatkowym zabezpieczeniem, które lubię, jest ograniczenie prędkości połączeń przychodzących ssh, aby spowolnić wszelkie ataki słownikowe lub podobne. Nie oczekuj, że to samo ochroni Cię wszystkich, ale skorzystaj z tego oprócz sugestii w innych odpowiedziach, w tym wyłączenia uwierzytelniania hasła.

Korzystanie z iptables:

$ iptables        -A INPUT      -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
$ iptables        -A INPUT      -p tcp --dport 22 -m state --state NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT
$ iptables        -A INPUT      -p tcp --dport 22 -j DROP
Sherbang
źródło
2

Istnieje kilka kiepskich porad na ten temat, takich jak:

  • używanie niestandardowego portu dla ssh (źle!)
  • za pomocą narzędzia zabezpieczającego innej firmy (dodanie niepotrzebnej zależności / złożoności)
  • konfigurowanie zapory ogniowej w celu blokowania lub dodawania do białej listy (problemy z konserwacją)

Po prostu popraw swój, /etc/ssh/sshd_configaby poprawić bezpieczeństwo:

  • PermitRootLogin no
  • Skonfiguruj AllowUsers tylko dla użytkowników w systemie, którzy mają konta ssh
  • Rozważ użycie tylko fizycznych kluczy z hasłem „Uwierzytelnianie hasła nie”

Jeśli jesteś skrzynka została infiltrowana. Odbuduj pudełko.

hendry
źródło
(-1) Czasami konieczne jest skonfigurowanie reguł w zaporze ogniowej lub użycie systemu zapobiegania włamaniom. Nazywanie tego kiepską radą bez dodatkowej dyskusji na temat tego, dlaczego nie jest to dobry pomysł, nie jest bardzo pomocne.
Zoredache,
1

Stanie się to cały czas z włączonym ssh. Przenieś go do wysokiego portu.

Istnieje program o nazwie „Tripwire”, który doskonale nadaje się do wykrywania włamań, ale jest dość trudny do zainstalowania. Jeśli nic innego, przeczytaj ich dokumenty, aby zrozumieć problemy.

Bill K.
źródło
1

Przed podłączeniem urządzenia do Internetu musisz zainstalować funkcję wykrywania włamań.

Dobrym pomysłem jest tworzenie połączeń SSH z białej listy adresów IP, aby upewnić się, że cały świat nie może nawet próbować takich rzeczy.

Eric Z Beard
źródło
Dodałbym również użytkowników z białej listy, którzy mogą logować się przez SSH, a także, jeśli to możliwe, wyłączać uwierzytelnianie oparte na hasłach.
1

Jak mogę ustalić, czy mój system Linux został infiltrowany?

Uruchom nośnik tylko do odczytu (livecd) i porównaj pliki z kopią zapasową lub oryginalnym nośnikiem.

Wystarczy rozejrzeć się za dziwnym zachowaniem. Oczywiście jest to najłatwiejsze, jeśli poświęcisz trochę czasu przed włamaniem, aby dobrze poczuć, co jest „normalne”.

Błędy, które opublikowałeś, nie oznaczają kompromisu. Tylko że ktoś próbuje.

Jak mogę cofnąć wszelkie szkody pozostawione przez sprawców?

Zainstaluj ponownie i przywróć z kopii zapasowej przed naruszeniem bezpieczeństwa systemu.

Widzieć:

Jak mogę temu zapobiec w przyszłości?

Widzieć:

Zoredache
źródło
0

Psad w połączeniu z Shorewall to dobry sposób na uzupełnienie twoich zasad iptables.

Używam również Fail2ban do śledzenia moich logowań ssh

Sharjeel
źródło
0

użyj rkhunter lub chkrootkit lub obu; zeskanuj skrzynkę z zewnątrz, aby zobaczyć, które porty są otwarte

w każdym razie, jeśli wszystko, co masz, to nieprawidłowy użytkownik, nie musisz się martwić :)

quaie
źródło
0

Coś zupełnie innego: spróbuj użyć Google na adres IP! Haker, który nazywa się STARTURK z Turcji, mógł spróbować włamać się do Twojej witryny.

Chociaż wygląda to na atak brute-force na twój system, równie dobrze może być tak, że ten haker tylko raz spróbował i odszedł na inną stronę.

Wim ten Brink
źródło
0

Jak wielu zauważyło, Tripwire / AIDE to najlepszy sposób na sprawdzenie zmian w systemie. Niestety, krowa jest w tej stodole, ponieważ musi być skonfigurowana w dobrze znanym systemie.

Jedną z rzeczy, które mogą pomóc ci przynajmniej zacząć, jest użycie bazy danych RPM do sprawdzenia sum md5 twoich plików. Podstawowa zasada jest następująca:

rpm -qa | xargs rpm -V

To nie jest idealne z różnych powodów. Po pierwsze, lokalna baza danych RPM mogła teoretycznie zostać zmieniona. Po drugie, większość dystrybucji używa prelinkowania, a RPM nie jest świadomy prelinkowania. Wygląda na to, że MD5 zostały zmienione w wyniku tego procesu, który jest zgodny z prawem.

Najlepsza rada jest następująca: jeśli nie masz pewności, czy zostałeś narażony na szwank, to naprawdę czas na odbudowę.

pboin
źródło
0

Aby zapobiec przyszłym problemom bezpieczeństwa, możesz spojrzeć na OSSEC , używam go do sprawdzania integralności plików i monitorowania dzienników na naszych serwerach, jest bardzo kompletny i łatwy w konfiguracji. Może wysyłać powiadomienia pocztą, możesz sprawdzać powiadomienia za pomocą wiersza polecenia lub interfejsu internetowego ...

http://www.ossec.net/

zaczerpnięte ze strony:

„OSSEC to oparty na hoście Open Source system wykrywania włamań. Przeprowadza analizę dziennika, kontrolę integralności plików, monitorowanie zasad, wykrywanie rootkitów, alarmowanie w czasie rzeczywistym i aktywne reagowanie”.

  • analiza logów Może sprawdzać plik logów na twoich serwerach i ostrzegać Cię za pomocą reguł (istnieje wiele wstępnie zdefiniowanych i możesz dodać własne)

  • integralność pliku tripwire / aide jak functionnality, dzięki czemu zobaczysz, czy jakiś plik został zmodyfikowany na twoim serwerze

  • monitorowanie zasad: sprawdź zasady bezpieczeństwa „Najlepsze praktyki”

  • Wykrywanie rootkitów: rkhunter, chkrootkit jak funkcjonalność

  • alarmowanie w czasie rzeczywistym i aktywna reakcja: Możesz skonfigurować ossec tak, aby automatycznie reagował na alerty (nie używam tego, ale możesz go użyć do blokowania dostępu ssh do hostów wykonujących zbyt wiele nieudanych połączeń)

Naprawdę dobry produkt i jest bardzo aktywny

Aby wzmocnić swoje pudełko, możesz również użyć lynis lub bastille

Guillaume
źródło