Skąd mam wiedzieć, czy mój serwer Linux został zhakowany?
36
Jakie są znamienne oznaki włamania na serwer Linux? Czy są jakieś narzędzia, które mogą generować raport z audytu i przesyłać go e-mailem zgodnie z harmonogramem?
Jeśli stan jest nieznany, naprawdę nie ma mowy. Dlatego tak ważne jest korzystanie z zaufanych źródeł instalacji i konfigurowanie narzędzi takich jak Tripwire przed narażeniem go na cokolwiek innego niż na siebie.
Masz na myśli „cracked”. Hacking to przede wszystkim sposób na Linuksa.
gbarry
Mój przyjaciel, którego serwer był u nas hostowany, poprosił mnie kiedyś, abym spojrzał na jego serwer, ponieważ wydawało się, że jest z nim coś dziwnego. Gdy tylko zobaczyłem kłody, wiedziałem, że coś jest nie tak. Próbowali zatrzeć ślady i myślę, że zainstalowali zestaw root, ale zrobili z niego trochę bałaganu. W każdym razie, krótko mówiąc, musieliśmy odbudować cały serwer od zera. Zajęło to całą noc, a następnie skonfigurowaliśmy narzędzia kontroli bezpieczeństwa.
Matt
@Matt Mind mówi nam, które narzędzia? Wciąż to samo dzisiaj?
Rodrigo,
Odpowiedzi:
34
Zachowaj gdzieś nieskazitelną kopię krytycznych plików systemowych (takich jak ls, ps, netstat, md5sum) wraz z ich md5sum i regularnie porównuj je z wersjami na żywo. Rootkity niezmiennie modyfikują te pliki. Użyj tych kopii, jeśli podejrzewasz, że oryginały zostały naruszone.
aide lub tripwire poinformuje cię o wszelkich plikach, które zostały zmodyfikowane - zakładając, że ich bazy danych nie zostały zmienione.
Syslog należy skonfigurować tak, aby wysyłał pliki dziennika do zdalnego serwera dziennika, gdzie intruz nie może ich modyfikować. Obserwuj te zdalne pliki dziennika pod kątem podejrzanej aktywności
regularnie odczytuj dzienniki - używaj Logwatch lub Logcheck, aby zsyntetyzować najważniejsze informacje.
Poznaj swoje serwery . Dowiedz się, jakie czynności i dzienniki są normalne.
md5 został poważnie osłabiony, jeśli nie został wyrzucony. Możesz przejść na sha512.
Broam
12
Ty nie.
Wiem, wiem - ale to naprawdę paranoiczna, smutna prawda;) Oczywiście istnieje wiele wskazówek, ale jeśli system byłby specjalnie ukierunkowany - może nie być w stanie powiedzieć. Dobrze jest zrozumieć, że nic nigdy nie jest całkowicie bezpieczne. Ale musimy pracować dla bardziej bezpiecznego, więc wskażę na wszystkie pozostałe odpowiedzi;)
Jeśli system został naruszony, nie można ufać żadnemu z narzędzi systemowych w celu ujawnienia prawdy.
Zakładasz, że twój atakujący ma pewne umiejętności, chce być w jakikolwiek sposób niewidzialny i nie jest całkowicie zainteresowany wyrzucaniem spamu i dodawaniem OC3 do botnetu. W dzisiejszych czasach zwykle dowiadujesz się, że z twojego serwera wydobywa się ogromna ilość spamu, zwykle w przeciążonym systemie, który nie powinien. Większość „hakerów” jest obecnie motywowana pieniędzmi.
Ernie
2
Najbardziej zaawansowane narzędzia do ataku wymagają obecnie zerowych umiejętności i są łatwo dostępne, a niektóre są wyjątkowo niewidzialne domyślnie i projektowo. Botnety / zombie mogą pozostawać bezczynne przez długi czas, zanim zostaną wykorzystane do wyrządzenia krzywdy, ale błędy w narzędziach atakujących mogą powodować niechciane awarie i dziwne zachowania itp.
Oskar Duveborn,
11
Tripwire jest często używanym narzędziem - powiadamia cię o zmianie plików systemowych, choć oczywiście musisz ją wcześniej zainstalować. W przeciwnym razie elementy, takie jak nowe konta użytkowników, o których nie wiesz, dziwne procesy i pliki, których nie rozpoznajesz, lub zwiększone wykorzystanie przepustowości bez wyraźnego powodu, są zwykle znakami.
Inne systemy monitorowania, takie jak Zabbix, można skonfigurować tak, aby ostrzegały o zmianie plików, takich jak / etc / passwd.
Wysokie obciążenie w systemie, który powinien być bezczynny
Dziwne awarie, np. ze standardowych narzędzi, takich jak ls(może się to zdarzyć przy uszkodzonych zestawach root)
Ukryte katalogi w /lub /var/(większość dzieciaków ze scenariuszy jest zbyt głupia lub leniwa, by zakrywać swoje utwory)
netstat pokazuje otwarte porty, których nie powinno tam być
Demony na liście procesów, których zwykle używasz różnych smaków (np. bind, Ale zawsze używasz djbdns)
Dodatkowo odkryłem, że istnieje jeden niezawodny znak, że skrzynka została naruszona: jeśli masz złe przeczucia co do staranności (z aktualizacjami itp.) Administratora, od którego odziedziczyłeś system, uważnie go obserwuj!
Istnieje metoda sprawdzania zhakowanych serwerów za pomocą kill-
Zasadniczo po uruchomieniu polecenia „kill -0 $ PID” wysyłasz sygnał nop do przetworzenia identyfikatora $ PID. Jeśli proces jest uruchomiony, polecenie zabicia zakończy się normalnie. (FWIW, ponieważ przekazujesz sygnał zabicia nop, nic się nie stanie z procesem). Jeśli proces nie jest uruchomiony, polecenie zabicia zakończy się niepowodzeniem (status wyjścia mniejszy niż zero).
Gdy włamujesz się do serwera / instalowany jest rootkit, jedną z pierwszych rzeczy, które robi, jest to, aby jądro ukryło wpływ procesów na tabele procesów itp. Może jednak robić różne fajne rzeczy w przestrzeni jądra, aby ominąć procesy Oznacza to, że
a) Ta kontrola nie jest rozległą kontrolą, ponieważ dobrze zakodowane / inteligentne rootkity zapewnią, że jądro odpowie odpowiedzią „proces nie istnieje”, dzięki czemu ta kontrola będzie zbędna. b) Tak czy inaczej, gdy zaatakowany serwer ma działający „zły” proces, jego PID zwykle nie wyświetla się w / proc.
Tak więc , jeśli jesteś tu do tej pory, metodą jest zabicie -0 każdego dostępnego procesu w systemie (od 1 -> / proc / sys / kernel / pid_max) i sprawdzenie, czy istnieją procesy, które są uruchomione, ale nie są zgłaszane w / proc.
Jeśli niektóre procesy są uruchamiane, ale nie są zgłaszane w / proc, prawdopodobnie masz problem z dowolnego powodu.
Oto skrypt bash, który implementuje to wszystko - https://gist.github.com/1032229 . Zapisz to w jakimś pliku i uruchom, jeśli znajdziesz proces, który pojawia się niezgłoszony w proc, powinieneś mieć trochę tropu, aby rozpocząć kopanie.
Jest to bardzo przydatne dla mojego serwera domowego, w którym nie mam czasu na utrzymanie systemu jak produktywnego systemu pracy. W każdym razie, czy mogę użyć tego w środowisku profesjonalnym i być „względnym” pewnym wyników? I żeby odpowiedź miała 3 lata: czy nadal jest to poprawna metoda sprawdzania powszechnej infekcji w 2014 roku?
hub
7
Popieram podane tu odpowiedzi i dodam jedną z moich.
find /etc /var -mtime -2
To da ci szybkie wskazanie, czy któryś z twoich głównych plików serwera zmienił się w ciągu ostatnich 2 dni.
SNORT® to system zapobiegania włamaniom i wykrywania włamań do sieci typu open source wykorzystujący język oparty na regułach, który łączy zalety metod kontroli opartych na sygnaturach, protokołach i anomaliach. Dzięki milionom pobrań do tej pory Snort jest najczęściej stosowaną technologią wykrywania i zapobiegania włamaniom na całym świecie i stał się de facto standardem w branży.
Snort odczytuje ruch sieciowy i może szukać takich rzeczy jak „testuj za pomocą pióra”, w których ktoś po prostu wykonuje cały skan metasploitów na twoich serwerach. Moim zdaniem dobrze wiedzieć tego typu rzeczy.
Użyj dzienników ...
W zależności od sposobu użycia możesz to skonfigurować, abyś wiedział, kiedy użytkownik loguje się lub loguje z nieparzystego adresu IP lub za każdym razem, gdy loguje się root lub gdy ktoś próbuje się zalogować. Właściwie mam serwer e-mail do mnie każdy komunikat dziennika wyższy niż debugowanie. Tak, nawet Zawiadomienie. Oczywiście niektóre z nich filtruję, ale każdego ranka, kiedy otrzymuję 10 e-maili na ten temat, chcę to naprawić, aby przestało się dziać.
Monitoruj swoją konfigurację - faktycznie utrzymuję cały plik / etc w subversion, aby móc śledzić poprawki.
Uruchom skanowanie. Narzędzia takie jak Lynis i Rootkit Hunter mogą ostrzegać o możliwych lukach bezpieczeństwa w aplikacjach. Istnieją programy, które utrzymują hash lub drzewo hash wszystkich twoich pojemników i mogą ostrzegać cię o zmianach.
Monitoruj serwer - tak jak wspomniałeś o przestrzeni dyskowej - wykresy mogą dać ci wskazówkę, jeśli coś jest nietypowe. Używam kaktusów, aby kontrolować procesor, ruch w sieci, miejsce na dysku, temperaturę itp. Jeśli coś wygląda dziwnie, jest dziwne i powinieneś dowiedzieć się, dlaczego jest dziwne.
Sprawdź swoją historię bashów, jeśli jest pusta, a jej nie rozbroiłeś lub opróżniłeś, istnieje duże prawdopodobieństwo, że ktoś naraził twój serwer.
Sprawdź ostatni. Albo zobaczysz nieznane adresy IP, albo będzie wyglądał na bardzo pusty.
Następnie, jak stwierdzono zaakceptowana odpowiedź, pliki systemowe są często zmieniane, sprawdź datę modyfikacji. Często jednak modyfikują datę.
Często instalują inną wersję ssh działającą na losowym porcie. Jest to często ukryte w niektórych naprawdę dziwnych miejscach. Zauważ, że zwykle zostanie przemianowana na coś innego niż ssh. Więc sprawdź netstat (może nie działać, ponieważ często go zastępuje) i użyj iptables, aby zablokować nieznane porty.
W każdym razie jest to sytuacja, w której lepiej jest zapobiegać niż leczyć. W przypadku naruszenia bezpieczeństwa najlepiej po prostu sformatować i rozpocząć od nowa. Prawie niemożliwe jest potwierdzenie, że udało Ci się wyczyścić hack.
Zapoznaj się z poniższymi informacjami, aby uniknąć naruszenia bezpieczeństwa serwera.
Zmień port ssh
Nie pozwól rootowi się zalogować
zezwalaj tylko niektórym użytkownikom
Zapobiegaj logowaniu się za pomocą hasła
Używaj kluczy ssh, najlepiej kluczy chronionych hasłem
Tam, gdzie to możliwe, umieść na czarnej liście wszystkie adresy IP i umieść na białej liście wymagane IP.
Zainstaluj i skonfiguruj fail2ban
Użyj tripwire do wykrywania włamań
Monitoruj liczbę użytkowników zalogowanych za pomocą Nagios lub zabbix. Nawet jeśli otrzymasz powiadomienie za każdym razem, gdy się logujesz, przynajmniej będziesz wiedział, kiedy gra ktoś inny.
Jeśli to możliwe, utrzymuj swój serwer w sieci VPN i zezwalaj tylko na ssh przez VPN IP. Zabezpiecz swój VPN.
Warto pamiętać, że gdy znajdą się na jednym serwerze, sprawdzą twoją historię bash i szukają innych serwerów, z którymi łączyłeś się przez ssh z tego serwera. Następnie spróbują połączyć się z tymi serwerami. Więc jeśli zostaniesz brutalnie zmuszony z powodu złego hasła, jest bardzo możliwe, że będą mogli połączyć się z innym serwerem i również je złamać.
Tam jest brzydki świat, powtarzam, że lepiej zapobiegać niż leczyć.
Powinieneś sprawdzić GuardRail. Może skanować serwer codziennie i powiedzieć ci, co się zmieniło w przyjemny wizualnie sposób. Nie wymaga agenta i może łączyć się przez SSH, dzięki czemu nie trzeba blokować komputera i zasobów za pomocą agenta.
Co najlepsze, jest bezpłatny dla maksymalnie 5 serwerów.
Czy to usługa w chmurze logująca się do komputera z prawami roota? Co się stanie, jeśli usługa zostanie naruszona?
hub
Nie musisz dać tego korzenia. Możesz także użyć agenta, co oznacza, że Twój komputer odpytuje zamiast SSH. Haseł takich jak DB są zawsze przechowywane na twoim komputerze, a nie w chmurze.
Odpowiedzi:
źródło
Ty nie.
Wiem, wiem - ale to naprawdę paranoiczna, smutna prawda;) Oczywiście istnieje wiele wskazówek, ale jeśli system byłby specjalnie ukierunkowany - może nie być w stanie powiedzieć. Dobrze jest zrozumieć, że nic nigdy nie jest całkowicie bezpieczne. Ale musimy pracować dla bardziej bezpiecznego, więc wskażę na wszystkie pozostałe odpowiedzi;)
Jeśli system został naruszony, nie można ufać żadnemu z narzędzi systemowych w celu ujawnienia prawdy.
źródło
Tripwire jest często używanym narzędziem - powiadamia cię o zmianie plików systemowych, choć oczywiście musisz ją wcześniej zainstalować. W przeciwnym razie elementy, takie jak nowe konta użytkowników, o których nie wiesz, dziwne procesy i pliki, których nie rozpoznajesz, lub zwiększone wykorzystanie przepustowości bez wyraźnego powodu, są zwykle znakami.
Inne systemy monitorowania, takie jak Zabbix, można skonfigurować tak, aby ostrzegały o zmianie plików, takich jak / etc / passwd.
źródło
Kilka rzeczy, które dawały mi do myślenia:
ls
(może się to zdarzyć przy uszkodzonych zestawach root)/
lub/var/
(większość dzieciaków ze scenariuszy jest zbyt głupia lub leniwa, by zakrywać swoje utwory)netstat
pokazuje otwarte porty, których nie powinno tam byćbind
, Ale zawsze używaszdjbdns
)Dodatkowo odkryłem, że istnieje jeden niezawodny znak, że skrzynka została naruszona: jeśli masz złe przeczucia co do staranności (z aktualizacjami itp.) Administratora, od którego odziedziczyłeś system, uważnie go obserwuj!
źródło
Istnieje metoda sprawdzania zhakowanych serwerów za pomocą
kill
-Zasadniczo po uruchomieniu polecenia „kill -0 $ PID” wysyłasz sygnał nop do przetworzenia identyfikatora $ PID. Jeśli proces jest uruchomiony, polecenie zabicia zakończy się normalnie. (FWIW, ponieważ przekazujesz sygnał zabicia nop, nic się nie stanie z procesem). Jeśli proces nie jest uruchomiony, polecenie zabicia zakończy się niepowodzeniem (status wyjścia mniejszy niż zero).
Gdy włamujesz się do serwera / instalowany jest rootkit, jedną z pierwszych rzeczy, które robi, jest to, aby jądro ukryło wpływ procesów na tabele procesów itp. Może jednak robić różne fajne rzeczy w przestrzeni jądra, aby ominąć procesy Oznacza to, że
a) Ta kontrola nie jest rozległą kontrolą, ponieważ dobrze zakodowane / inteligentne rootkity zapewnią, że jądro odpowie odpowiedzią „proces nie istnieje”, dzięki czemu ta kontrola będzie zbędna. b) Tak czy inaczej, gdy zaatakowany serwer ma działający „zły” proces, jego PID zwykle nie wyświetla się w / proc.
Tak więc , jeśli jesteś tu do tej pory, metodą jest zabicie -0 każdego dostępnego procesu w systemie (od 1 -> / proc / sys / kernel / pid_max) i sprawdzenie, czy istnieją procesy, które są uruchomione, ale nie są zgłaszane w / proc.
Jeśli niektóre procesy są uruchamiane, ale nie są zgłaszane w / proc, prawdopodobnie masz problem z dowolnego powodu.
Oto skrypt bash, który implementuje to wszystko - https://gist.github.com/1032229 . Zapisz to w jakimś pliku i uruchom, jeśli znajdziesz proces, który pojawia się niezgłoszony w proc, powinieneś mieć trochę tropu, aby rozpocząć kopanie.
HTH.
źródło
Popieram podane tu odpowiedzi i dodam jedną z moich.
To da ci szybkie wskazanie, czy któryś z twoich głównych plików serwera zmienił się w ciągu ostatnich 2 dni.
To jest z artykułu na temat wykrywania włamań Jak wykryć, czy Twój serwer został zhakowany.
źródło
Od Jak mogę wykryć niechciane wtargnięcia na moje serwery?
Użyj IDS
Snort odczytuje ruch sieciowy i może szukać takich rzeczy jak „testuj za pomocą pióra”, w których ktoś po prostu wykonuje cały skan metasploitów na twoich serwerach. Moim zdaniem dobrze wiedzieć tego typu rzeczy.
Użyj dzienników ...
W zależności od sposobu użycia możesz to skonfigurować, abyś wiedział, kiedy użytkownik loguje się lub loguje z nieparzystego adresu IP lub za każdym razem, gdy loguje się root lub gdy ktoś próbuje się zalogować. Właściwie mam serwer e-mail do mnie każdy komunikat dziennika wyższy niż debugowanie. Tak, nawet Zawiadomienie. Oczywiście niektóre z nich filtruję, ale każdego ranka, kiedy otrzymuję 10 e-maili na ten temat, chcę to naprawić, aby przestało się dziać.
Monitoruj swoją konfigurację - faktycznie utrzymuję cały plik / etc w subversion, aby móc śledzić poprawki.
Uruchom skanowanie. Narzędzia takie jak Lynis i Rootkit Hunter mogą ostrzegać o możliwych lukach bezpieczeństwa w aplikacjach. Istnieją programy, które utrzymują hash lub drzewo hash wszystkich twoich pojemników i mogą ostrzegać cię o zmianach.
Monitoruj serwer - tak jak wspomniałeś o przestrzeni dyskowej - wykresy mogą dać ci wskazówkę, jeśli coś jest nietypowe. Używam kaktusów, aby kontrolować procesor, ruch w sieci, miejsce na dysku, temperaturę itp. Jeśli coś wygląda dziwnie, jest dziwne i powinieneś dowiedzieć się, dlaczego jest dziwne.
źródło
Chciałbym tylko dodać do tego:
Sprawdź swoją historię bashów, jeśli jest pusta, a jej nie rozbroiłeś lub opróżniłeś, istnieje duże prawdopodobieństwo, że ktoś naraził twój serwer.
Sprawdź ostatni. Albo zobaczysz nieznane adresy IP, albo będzie wyglądał na bardzo pusty.
Następnie, jak stwierdzono zaakceptowana odpowiedź, pliki systemowe są często zmieniane, sprawdź datę modyfikacji. Często jednak modyfikują datę.
Często instalują inną wersję ssh działającą na losowym porcie. Jest to często ukryte w niektórych naprawdę dziwnych miejscach. Zauważ, że zwykle zostanie przemianowana na coś innego niż ssh. Więc sprawdź netstat (może nie działać, ponieważ często go zastępuje) i użyj iptables, aby zablokować nieznane porty.
W każdym razie jest to sytuacja, w której lepiej jest zapobiegać niż leczyć. W przypadku naruszenia bezpieczeństwa najlepiej po prostu sformatować i rozpocząć od nowa. Prawie niemożliwe jest potwierdzenie, że udało Ci się wyczyścić hack.
Zapoznaj się z poniższymi informacjami, aby uniknąć naruszenia bezpieczeństwa serwera.
Warto pamiętać, że gdy znajdą się na jednym serwerze, sprawdzą twoją historię bash i szukają innych serwerów, z którymi łączyłeś się przez ssh z tego serwera. Następnie spróbują połączyć się z tymi serwerami. Więc jeśli zostaniesz brutalnie zmuszony z powodu złego hasła, jest bardzo możliwe, że będą mogli połączyć się z innym serwerem i również je złamać.
Tam jest brzydki świat, powtarzam, że lepiej zapobiegać niż leczyć.
źródło
Po dokładnym przeszukaniu jest też to, co robi wyżej wymienione, między innymi: http://www.chkrootkit.org/ i http://www.rootkit.nl/projects/rootkit_hunter.html
źródło
Powinieneś sprawdzić GuardRail. Może skanować serwer codziennie i powiedzieć ci, co się zmieniło w przyjemny wizualnie sposób. Nie wymaga agenta i może łączyć się przez SSH, dzięki czemu nie trzeba blokować komputera i zasobów za pomocą agenta.
Co najlepsze, jest bezpłatny dla maksymalnie 5 serwerów.
Sprawdź tutaj:
https://www.scriptrock.com/
źródło