Czy zostałem zaatakowany czy po prostu głupi?

11

Prowadzę serwer za pomocą Debian Squeeze z kilkoma kontenerami OpenVZ. Kontenery działają głównie w Squeeze, niektóre Lenny, a niektóre zostały już zaktualizowane do Wheezy. Host nie robi tak wiele poza iptables i DHCP. Serwery plików, serwery proxy, serwery poczty, Kerberos, LDAP, ... są umieszczane w kontenerach. System działał stabilnie przez wiele lat i nie miał większych zmian, z wyjątkiem niektórych reguł zapory przez ponad rok.

2 dni temu system nagle się zawiesił. Miałem wiele problemów z ponownym pojawieniem się. Na początku nie pozwalało mi się zalogować przez ssh. Logowanie do katalogu głównego zostało odrzucone przez „Nie istniejesz. Idź stąd!' Lokalne logowanie było w porządku. Jakiś czas później ssh znów zaczął działać. Przez przypadek nie użyłem ponownie wiersza z historii bash, ale napisałem nowe polecenie, które potrójnie sprawdzone było identyczne z wierszem, który nie działał wcześniej, ale działał przed awarią.

Następnie system uruchomił się, ale ruch sieciowy na większości protokołów został zablokowany po SYN ACK. DNS, Telnet i SSH były w porządku, ale reszta to bałagan. Po kilku godzinach łowienia w ciemności i kilkakrotnym przeładowywaniu zapory wszystko nagle wszystko poszło dobrze. Nie mogłem znaleźć niczego podejrzanego w dziennikach - ale nie jestem ekspertem kryminalistycznym.

Dzisiaj nscd serwera plików wyszedł z gniazd, aby skontaktować się z LDAP z powodu przydziału kontenera. Coś, co nigdy wcześniej się nie wydarzyło. Widziałem też dużo (> 30) gniazd zgłoszonych przez smbd.

/ var / log / messages wyglądały tak samo jak syslog . /var/log/kern.log miał te dodatkowe informacje dotyczące przyczyn awarii:

/var/log/kern.log:2950:Sep 19 10:46:57 asgard kernel: [6529441.320086] INFO: task sendmail:32181 blocked for more than 120 seconds.
/var/log/kern.log:2982:Sep 19 10:48:57 asgard kernel: [6529561.324525] INFO: task kdmflush:1932 blocked for more than 120 seconds.
/var/log/kern.log:3005:Sep 19 10:48:57 asgard kernel: [6529561.324694] INFO: task xfssyncd:10162 blocked for more than 120 seconds.
/var/log/kern.log:3027:Sep 19 10:48:57 asgard kernel: [6529561.324934] INFO: task postgres:16827 blocked for more than 120 seconds.
/var/log/kern.log:3060:Sep 19 10:49:51 asgard kernel: [6529561.325129] INFO: task imapd:31749 blocked for more than 120 seconds.
/var/log/kern.log:3084:Sep 19 10:49:51 asgard kernel: [6529561.325248] INFO: task cleanup:32194 blocked for more than 120 seconds.
/var/log/kern.log:3106:Sep 19 10:50:57 asgard kernel: [6529681.324028] INFO: task flush-253:3:3216 blocked for more than 120 seconds.
/var/log/kern.log:3142:Sep 19 10:50:57 asgard kernel: [6529681.324224] INFO: task kjournald:6859 blocked for more than 120 seconds.
/var/log/kern.log:3166:Sep 19 10:50:57 asgard kernel: [6529681.324366] INFO: task syslogd:11720 blocked for more than 120 seconds.
/var/log/kern.log:3198:Sep 19 10:50:57 asgard kernel: [6529681.324574] INFO: task postgres:16827 blocked for more than 120 seconds.
/var/log/kern.log:7152:Sep 19 19:29:41 asgard kernel: [ 1440.617090] INFO: task sendmail:11892 blocked for more than 120 seconds.

Ostatnia awaria programu „sendmail” miała miejsce po ponownym uruchomieniu komputera. Od tego czasu nie wystąpiły już takie zdarzenia. „imapd” i „postgres” zdecydowanie działają w różnych kontenerach.

Cóż, nie widzę palącego pistoletu, ale prawdopodobnie jestem po prostu ślepy. Ustawienie systemu ze znanych / przypuszczalnie dobrych kopii zapasowych uderzyłoby mnie zbyt mocno, aby wypróbować go bez bardzo dobrych powodów.

Byłbym wdzięczny za każdą radę, co następnie sprawdzić.

Dzięki za pomoc.

Aktualizacja : Wkładając więcej wysiłku w szukanie jakiegoś kursora poprzedzającego awarię, znalazłem w syslog:

Sep 19 10:09:56 asgard ntop[7965]:   **WARNING** packet truncated (8754->8232)
Sep 19 10:09:56 asgard ntop[7965]:   **WARNING** packet truncated (8754->8232)
Sep 19 10:09:56 asgard ntop[7965]:   **WARNING** packet truncated (10490->8232)
Sep 19 10:09:56 asgard ntop[7965]:   **WARNING** packet truncated (8754->8232)
Sep 19 10:09:56 asgard ntop[7965]:   **WARNING** packet truncated (8754->8232)
Sep 19 10:09:56 asgard ntop[7965]:   **WARNING** packet truncated (17442->8232)
Sep 19 10:11:02 asgard ntop[7965]:   **WARNING** packet truncated (11650->8232)
Sep 19 10:11:02 asgard ntop[7965]:   **WARNING** packet truncated (10202->8232)
Sep 19 10:11:29 asgard ntop[7965]:   **WARNING** packet truncated (8754->8232)
Sep 19 10:13:27 asgard ntop[7965]:   **WARNING** packet truncated (8754->8232)
Sep 19 10:20:33 asgard ntop[7965]:   **WARNING** packet truncated (8754->8232)

Wiem, że jest to uważane za bezkrytyczne, ale wydaje się, że jest to rzadkie wydarzenie. Obcinanie pakietów istnieje tylko w dniu drugiej awarii. Nigdzie indziej we wszystkich dostępnych plikach dziennika.

Lars Hanke
źródło

Odpowiedzi:

2

Wygląda to jak DoS, najprawdopodobniej pochodzący z nework lub z wnętrza jednego z zagrożonych pojemników.

Sprawdzałbym vmstat, uruchamiał go nieprzerwanie co 5 sekund: vmstat 5 i notował, gdzie wydawane są zasoby. Możesz także użyć screena i uruchomić vmstat 60 (co minutę) w osobnym oknie - w ten sposób możesz zauważyć skoki, gdy pojawiają się one przez dłuższy czas.

W tej sytuacji wysoki / przyspieszający procesor systemowy (SY), wysoki współczynnik przełączania kontekstu (cs) i wysoki IO (pokazuje zarówno sieć, jak i dysk) wskazują DoS:

$ vmstat 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0   9584   6820 132432  23256    1    1   136    12    1    1 83  1 15  0  0
 0  0   9584   6696 132432  23256    0    0     0     0   20   32  0  0 99  0  1

Jednocześnie monitoruj ruch sieciowy na hoście, polecam ntop, tj .:

$ nload -t 10000 -u H eth0
Alec Istomin
źródło
0

Wygląda jak błąd We / Wy dysku. Uruchom fsck i sprawdź błędy.

Shain Padmajan
źródło
Spróbuję zaplanować przestoje. Jednak nigdzie nie ma żadnych dzienników związanych z awarią dysku we / wy. A może widziałeś?
Lars Hanke,
0

Być może nie masz żadnych błędów systemu plików, ale jestem pewien, że widzisz te ostrzeżenia w swoim dzienniku, ponieważ masz wiele procesów w stanie D (czekających na We / Wy), a jądro informuje Cię o długim oczekiwaniu.

c4f4t0r
źródło
Myślę, że tak właśnie było. Ale dlaczego? W normalnych warunkach nie ma procesów w stanie D. Jeśli tak naprawdę sieć ulegnie awarii, może to wyjaśnić. Ale dlaczego miałoby to spadać tylko w przypadku niektórych usług? Dlaczego ten stan przetrwał restart? I dlaczego to się powtórzyło?
Lars Hanke,
0

Błąd wskazuje, że twoje procesy czekają zbyt długo (120 sekund) na dostęp do dysków; dzieje się tak na bardzo zatłoczonych serwerach, na których dyski są zbyt zajęte, aby reagować na procesy.

Możesz to sprawdzić, zaznaczając „Oczekiwanie” w vmstat.

Armin
źródło