Jak rozpoznać, co faktycznie robi serwer? [Zamknięte]

42

Dostałem 3 Linux-y, 1 frontem z apache i jeszcze 2, które, o ile wiem, nie robią nic strasznego. Wszystko działa na Redhat.

Pytanie jest proste: skąd mam wiedzieć, co tak naprawdę robi serwer? Dokumentacja zerowa jest dostępna od twórcy.

Bizmark
źródło
7
Lista procesów, nasłuchiwania sieciowe (może porównać do tego, co powinno być uruchomione w oparciu o skrypty init) ...
HBruijn
5
cholera! na pewno ktoś wie po co jest? więc chcą, żebyś ich wspierał, ale nie wiesz, co robią ?!
Digital Lightcraft,
11
Wyłącz ich. Ktoś poinformuje cię, niemal natychmiast , co nie działa.
jscott,
58
NIE WYŁĄCZAJ GO. Odłącz kabel Ethernet, jeśli chcesz przetestować krzyk. Jeśli nigdy nie miałeś pudełka z dwuletnim okresem bezczynności, nie uruchomi się ono ponownie, w pewnym momencie. To nie jest czas na dodanie tej frustracji do miksu.
Aaron Copley,
7
Co wszyscy powiedzieli, ale także: uruchom nmap przeciwko nim.
Katherine Villyard,

Odpowiedzi:

42

Odłącz kabel Ethernet i zobacz, kto się denerwuje.

Poważnie, jednak takie tajemnicze maszyny powodują ogromne obciążenie umysłowe dla zespołu i często nie zapewniają absolutnie żadnej wartości biznesowej. Porozmawiaj ze swoim szefem, jeśli nikt nie wie, co robi, może nikt nie dba o to, co robi.

Josh Rumbut
źródło
43
NIE WYŁĄCZAJ GO. Odłącz kabel Ethernet, jeśli chcesz przetestować krzyk. Jeśli nigdy nie miałeś pudełka z dwuletnim okresem bezczynności, nie uruchomi się ono ponownie, w pewnym momencie. To nie jest czas na dodanie tej frustracji do miksu. (Skopiowałem to tutaj, ponieważ należy go przeczytać.)
Aaron Copley,
3
Masz 100% racji, edytowałem post, aby to odzwierciedlić. Byłem trochę żartobliwy, ale wciąż mogę być żartobliwy bez promowania katastrofy.
Josh Rumbut,
8
Przed odłączeniem sieci dobrym pomysłem jest zapisanie listy uruchomionych procesów i otwartych gniazd na każdym serwerze - na wypadek, gdyby coś polegało na połączeniu TCP między serwerami, które zdarzało się USTAWIAĆ przez wiele miesięcy, o czym nikt nie myśli zautomatyzowanie wszelkich kroków potrzebnych do otwarcia go w pierwszym przypadku. (Na przykład, jeśli ktoś potrzebował tymczasowo przekierowania portu ssh, a potem o nim zapomniał.)
kasperd
4
Nie rób tego Co za absurdalna rada. Głupie bezmyślne informatyki robiące to kosztują mnie tyle czasu i pracy. ZAPYTAJ PIERWSZY. Jeśli nie wiesz, kogo zapytać, ZADAJ WSZYSTKIM .
Lekkość ściga się z Monicą
4
Upewnij się, że masz wystarczająco dużo czasu, aby ktoś krzyknął - za jednym razem, gdy zrobiłem to z zakurzoną lub komputerową maszyną stojącą na szafie serwerowej - nikt nie wiedział, co to zrobił, zajęło to miesiąc, aby ktoś zauważył, kiedy go odłączaliśmy . Okazuje się, że był częścią systemu płac, bez tego serwera Księgowość nie byłaby w stanie wygenerować miesięcznej listy płac. Działał bez nadzoru przez co najmniej 3 lata, nikt nie zwracał na to uwagi - więc „test krzyku” zakończył się sukcesem, gdybyśmy tego nie zrobili, serwer ostatecznie by zmarł. Skończyło się na p2v'ing go do naszego klastra vmware.
Johnny
30

To dość szerokie pytanie dotyczące formatu Serverfault, ale oto dobry początek:

  • Sprawdź uruchomione procesy i procesy zaplanowane do uruchomienia podczas uruchamiania systemu.
    • Przejrzyj działającą konfigurację każdego z nich.
    • Przejrzyj dowolne zdefiniowane katalogi danych. (Być może ktoś zainstalował MySQL i włączył go, ale nie ma baz danych.)
  • Sprawdź zaplanowane zadania.
  • Sprawdź dzienniki, aby zobaczyć;
    • kto ostatnio się zalogował (i zapytał)
    • i dowiedzieć się, co się dzieje.

Nie wspomniałeś o wersji, więc pominąłem specyfikę.

Aaron Copley
źródło
8
Jest coś ważniejszego niż to, które usługi są skonfigurowane do uruchamiania podczas uruchamiania systemu. Które usługi są obecnie uruchomione? Uruchomienie usługi i zapomnienie o skonfigurowaniu jej do uruchamiania przy rozruchu nie jest trudnym błędem. W powiązanej notatce warto przyjrzeć się innym stanom systemu, takim jak: punkty montowania, tabela routingu, reguły iptables. Wszystkie te rzeczy można łatwo zmienić, gdy system jest uruchomiony, nie pamiętając o aktualizacji plików konfiguracyjnych używanych podczas rozruchu.
kasperd
Ponadto użyłbym skanera portów, aby sprawdzić, które porty są otwarte, a następnie spróbowałem się z nim połączyć za pomocą zwykłych narzędzi. W przypadku (prostego) przykładu, jeśli port 443 jest otwarty, możesz spróbować użyć przeglądarki internetowej, aby się z nim połączyć. Musiałem często eksplorować takie pozornie porzucone serwery i jednym z moich ulubionych narzędzi do szybkiego przeglądania plików konfiguracyjnych w / etc i innych miejscach jest użycie „lynx” lub „links”, jeśli wolisz. Są to przeglądarki internetowe oparte na znakach, które wykonują również dobrą pracę jako przeglądarka plików, z wygodną nawigacją za pomocą klawiszy kursora.
aseq,
1
@kasperd Uczciwa gra na uruchamianiu vs. usługi trwałe. Ale myślałem o regułach zapory ogniowej, punktach montowania itp. Wydawały mi się one dodatkowymi komponentami, które będą już powiązane z jednym z istniejących punktów kul. YMMV.
Aaron Copley,
Dodaj - sprawdź, czy są aktywne połączenia sieciowe, i zapisz nazwy usług oraz numery portów. Najlepsza metoda to zależy od systemu operacyjnego. EG stat stat. Ponadto umieść jakiś ślad na komputerze, aby zobaczyć, co robi przez cały dzień. Możesz również rozważyć dodatkowe scenariusze, w których rzeczy działające na serwerach MOGĄ być złośliwe.
IceMage
19

Jest kilka rzeczy, które możesz zrobić, aby sprawdzić, co działa w twoim systemie.

Możesz sprawdzić, na których portach nasłuchuje serwer, aby dowiedzieć się, co tam jest. Dobrym poleceniem do użycia byłoby:

 [root@server ~]# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             Stat    e       PID/Program name
tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LIST    EN      1880/smbd
tcp        0      0 0.0.0.0:5666                0.0.0.0:*                   LIST    EN      1911/nrpe
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LIST    EN      1759/sshd

Jak widać z powyższego przykładu, przedstawia on wersję protokołu (tcp lub udp), adres, na którym nasłuchuje, port, który jest otwarty, i program, który nasłuchuje.

W powyższym skróconym przykładzie (serwer) widać, że porty TCP 139, 5666 i 22 nasłuchują. Rozwiązania te dotyczą odpowiednio samby, nrpe (agenta Nagios) i ssh i są potwierdzane po sprawdzeniu programu nasłuchującego na tym porcie.

Dodatkowo możesz sprawdzić listę demonów skonfigurowanych do uruchamiania przy starcie, w tym celu uruchom: chkconfig --list | grep "3:on"

Przykład:

[root@server ~]# chkconfig --list | grep "3:on"
NetworkManager  0:off   1:off   2:on    3:on    4:on    5:on    6:off
acpid           0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off
udev-post       0:off   1:on    2:on    3:on    4:on    5:on    6:off
vncserver       0:off   1:off   2:on    3:on    4:on    5:on    6:off
webmin          0:off   1:off   2:on    3:on    4:off   5:on    6:off
x2gocleansessions       0:off   1:off   2:on    3:on    4:on    5:on    6:off
.
.
.

lub:

service --status-all

Itai Ganot
źródło
5
Uważam, netstat -pluntłatwiejsze do zapamiętania.
abligh
2
Ponadto, tcpdumpmogą być przydatne do ustalenia, kto jest rzeczywiście przy każdej usługi.
abligh
18

Inna metoda polega na sprawdzeniu /etckatalogu i sprawdzeniu dat modyfikacji. Po nowej instalacji wszystkie pliki w tym katalogu powinny mieć mniej więcej tę samą datę / godzinę. A ponieważ instalacja zwykle instaluje wiele rzeczy, których ludzie zwykle nie używają, tylko pliki, które mają późniejszą datę modyfikacji, odzwierciedlają rzeczywisty cel serwera . Jeśli jest to ext4, powinieneś być w stanie wyodrębnić datę urodzenia katalogów, więc zadanie może być dość łatwe.

Jeszcze inna metoda wymagałaby sprawdzenia .bash_historyplików, aby zobaczyć, co porabiają administratorzy. Ten plik może zapewnić bogactwo wiedzy.

Konrad Gajewski
źródło
7

Sprawdź reguły zapory. Przy odrobinie szczęścia jest skonfigurowany do domyślnego odrzucania. Oznacza to, że dla każdej dozwolonej usługi istnieje wyraźna reguła.

Jest to lepsze, netstatponieważ może również wyświetlać porty, które są otwarte np. Na nocne kopie zapasowe.

MSalters
źródło
6

Jednej odpowiedzi jeszcze nie widziałem: sprawdź ostatnio zmodyfikowane pliki. Dzienniki, pliki bazy danych, inne pliki wyjściowe itp. Mogą zostać zapisane w bazie danych, co może dostarczyć wskazówek:

find . -mtime -3 

To znalazłoby zmodyfikowane pliki w bieżącym katalogu i głębiej, zmienione w ciągu ostatnich 3 dni. Zwiększ liczbę 3 do zgadywanki, aż uzyskasz wyniki, które możesz zbadać.

Nie jest to głupie, ponieważ skrzynki mogą po prostu przetwarzać niektóre połączenia z serwisem WWW, zwracając niektóre dane bez zapisywania czegokolwiek. Ale dodany do wspaniałego miksu wspomnianego powyżej, może po prostu dać pewne wskazówki.

JayMcTee
źródło