Wie können Sie feststellen, was ein Server tatsächlich tut? [geschlossen]

42

Mir wurden 3 Linux-Boxen ausgehändigt, eine mit Apache auf der Vorderseite und zwei, die, soweit ich das beurteilen kann, nicht viel bewirken. Alles läuft auf Redhat.

Die Frage ist einfach: Wie kann ich feststellen, was der Server tatsächlich tut? Eine Nulldokumentation ist beim Ersteller erhältlich.

Bizmark
quelle
7
Die Prozessliste, Netzwerk-Listener (vielleicht zu vergleichen, hätte basierend auf Init-Skripten ausgeführt werden sollen) ...
HBruijn
5
Verdammt! weiß doch bestimmt jemand wofür sie da sind? Sie möchten, dass Sie sie unterstützen, wissen aber nicht, was sie tun ?!
Digital Lightcraft
11
Schalte sie aus. Jemand wird Sie fast sofort informieren , was nicht funktioniert.
Jscott
58
SCHALTEN SIE ES NICHT AUS. Ziehen Sie das Ethernet-Kabel ab, wenn Sie einen Schreitest durchführen möchten. Wenn Sie noch nie eine Box mit einer zweijährigen Betriebszeit hatten, die nicht neu gestartet werden konnte, werden Sie es irgendwann tun. Dies ist nicht die Zeit, um diese Frustration in die Mischung aufzunehmen.
Aaron Copley
7
Was alle anderen gesagt haben, aber auch: nmap gegen sie ausführen.
Katherine Villyard

Antworten:

42

Ziehen Sie das Ethernet-Kabel heraus und sehen Sie, wer sich aufregt.

Im Ernst, Mystery-Maschinen wie diese verursachen für ein Team einen erheblichen mentalen Aufwand und bieten oft überhaupt keinen geschäftlichen Nutzen. Sprechen Sie mit Ihrem Chef, wenn niemand weiß, was er tut, kümmert es vielleicht niemanden, was er tut.

Josh Rumbut
quelle
43
SCHALTEN SIE ES NICHT AUS. Ziehen Sie das Ethernet-Kabel ab, wenn Sie einen Schreitest durchführen möchten. Wenn Sie noch nie eine Box mit einer zweijährigen Betriebszeit hatten, die nicht neu gestartet werden konnte, werden Sie es irgendwann tun. Dies ist nicht die Zeit, um diese Frustration in die Mischung aufzunehmen. (Kopieren Sie dies hier, weil es gelesen werden muss.)
Aaron Copley
3
Sie haben zu 100% Recht, ich habe den Beitrag bearbeitet, um dies widerzuspiegeln. Ich war ein bisschen scherzhaft, aber ich kann immer noch scherzhaft sein, ohne für eine Katastrophe zu werben.
Josh Rumbut
8
Bevor das Netzwerk getrennt wird, ist es eine gute Idee, eine Liste der laufenden Prozesse und offenen Sockets auf jedem Server zu speichern - für den Fall, dass eine TCP-Verbindung zwischen den Servern für viele Monate hergestellt bleibt, ohne dass jemand darüber nachdenkt Automatisierung aller erforderlichen Schritte, um es im ersten Fall zu öffnen. (Zum Beispiel, wenn jemand vorübergehend eine SSH-Portweiterleitung benötigte und diese dann vergaß.)
Kasperd
4
Mach das nicht. Was für ein lächerlicher Rat. Dumme, gedankenlose IT-Leute, die das machen, kosten mich so viel Zeit und Arbeit. FRAG ZUERST. Wenn Sie nicht wissen, wen Sie fragen sollen, fragen Sie jeden .
Leichtigkeit Rennen mit Monica
4
Stellen Sie sicher, dass Sie genügend Zeit lassen, damit jemand schreien kann - das eine Mal, als ich dies mit einem staubigen oder Desktop-Computer auf einem Serverraum-Rack tat -, niemand wusste, was es tat. Es dauerte einen ganzen Monat, bis jemand merkte, als wir den Stecker aus der Steckdose zogen . Es stellte sich heraus, dass es Teil des Gehaltsabrechnungssystems war. Ohne diesen Server konnte das Rechnungswesen keine monatliche Gehaltsabrechnung generieren. Es lief mindestens 3 Jahre lang unbeaufsichtigt, ohne dass jemand darauf achtete - der "Schreitest" war also ein Erfolg, wenn wir es nicht getan hätten, wäre der Server schließlich von selbst gestorben. Am Ende haben wir es in unseren VMware-Cluster gepackt.
Johnny
30

Dies ist eine ziemlich breite Frage für das Serverfault-Format, aber hier ist ein guter Anfang:

  • Überprüfen Sie, ob Prozesse ausgeführt werden und welche beim Systemstart ausgeführt werden sollen.
    • Überprüfen Sie jeweils die aktuelle Konfiguration.
    • Sehen Sie sich alle definierten Datenverzeichnisse an. (Vielleicht hat jemand MySQL installiert und aktiviert, aber es gibt keine Datenbanken.)
  • Suchen Sie nach geplanten Aufgaben.
  • Überprüfen Sie die Protokolle, um zu sehen;
    • wer hat sich kürzlich eingeloggt (und fragt sie)
    • und um eine Vorstellung davon zu bekommen, was gelaufen ist.

Sie haben die Version nicht erwähnt, daher habe ich die Details weggelassen.

Aaron Copley
quelle
8
Es gibt etwas Wichtigeres als die Dienste, die so konfiguriert sind, dass sie beim Systemstart gestartet werden. Welche Dienste werden gerade ausgeführt? Es ist kein schwerer Fehler, einen Dienst zu starten und zu vergessen, ihn so zu konfigurieren, dass er beim Booten startet. In diesem Zusammenhang ist es empfehlenswert, einen Blick auf andere Systemzustände zu werfen, z. B .: Mount-Punkte, Routing-Tabelle, Iptables-Regeln. All dies sind Dinge, die leicht geändert werden können, während das System ausgeführt wird, ohne daran zu denken, die während des Startvorgangs verwendeten Konfigurationsdateien zu aktualisieren.
Kasperd
Außerdem würde ich einen Port-Scanner verwenden, um festzustellen, welche Ports offen sind, und dann versuchen, mit den üblichen Tools eine Verbindung herzustellen. Für ein (einfaches) Beispiel, wenn Port 443 offen ist, können Sie versuchen, eine Verbindung mit einem Webbrowser herzustellen. Ich musste solche scheinbar verlassenen Server häufig durchsuchen und eines meiner Lieblingstools zum schnellen Durchsuchen der Konfigurationsdateien in / etc und anderen Orten ist die Verwendung von "lynx" oder "links", wenn Sie dies vorziehen. Hierbei handelt es sich um zeichenbasierte Webbrowser, die auch als Dateibrowser mit praktischer Cursortastennavigation gute Dienste leisten.
aseq
1
@kasperd Faires Spiel zwischen laufenden und dauerhaften Diensten. Aber ich dachte über Firewall-Regeln, Mount-Punkte usw. nach. Diese schienen mir als zusätzliche Komponenten, die bereits an einen der vorhandenen Aufzählungspunkte gebunden sind. YMMV.
Aaron Copley
Bitte hinzufügen - Überprüfen Sie, ob aktive Netzwerkverbindungen bestehen, und notieren Sie sich die Namen der Dienste und Portnummern. Die beste Methode hierfür ist je nach Betriebssystem unterschiedlich. EG netto stat. Legen Sie außerdem eine Art Trace auf den Computer, damit Sie sehen können, was er den ganzen Tag über tut. Möglicherweise möchten Sie auch Szenarien berücksichtigen, in denen auf den Servern ausgeführte Dinge möglicherweise böswillig sind.
IceMage
19

Es gibt einige Dinge, die Sie tun können, um festzustellen, was auf Ihrem System läuft.

Sie können überprüfen, welche Ports Ihr Server abhört, um eine Vorstellung davon zu bekommen, was dort läuft. Ein guter Befehl wäre:

 [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

Wie Sie dem obigen Beispiel entnehmen können, werden die Protokollversion (tcp oder udp), die Adresse, die abgehört wird, der offene Port und das abhörende Programm angezeigt.

Im obigen Beispiel (ein Server) sehen Sie, dass die TCP-Ports 139, 5666 und 22 empfangsbereit sind. Diese werden in samba, nrpe (Nagios-Agent) bzw. ssh aufgelöst und bestätigt, wenn Sie das Programm überprüfen, das diesen Port abhört.

Zusätzlich können Sie die Liste der Daemons überprüfen, die so konfiguriert sind, dass sie beim Booten starten. Führen Sie dazu Folgendes aus: chkconfig --list | grep "3:on"

Beispiel:

[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
.
.
.

oder :

service --status-all

Itai Ganot
quelle
5
Ich finde es netstat -pluntleichter, mich zu erinnern.
abligh
2
Auch tcpdumpkann nützlich sein , um festzustellen , wer tatsächlich jeden Dienst verwendet.
abligh
18

Eine andere Methode besteht darin, das /etcVerzeichnis zu überprüfen und die Änderungsdaten zu überprüfen . Nach einer Neuinstallation sollten alle Dateien in diesem Verzeichnis ungefähr das gleiche Datum und die gleiche Uhrzeit haben. Und da bei einer Installation in der Regel viele Dinge installiert werden, die normalerweise nicht verwendet werden, geben nur die Dateien mit einem späteren Änderungsdatum den tatsächlichen Zweck des Servers wieder . Wenn dies ext4 ist, sollten Sie auch in der Lage sein, das Geburtsdatum von Verzeichnissen zu extrahieren, so dass die Aufgabe ziemlich einfach sein könnte.

Eine weitere Methode wäre, die .bash_historyDateien zu überprüfen, um festzustellen , was die Administratoren vorhatten. Diese Datei kann eine Fülle von Kenntnissen liefern.

Konrad Gajewski
quelle
7

Überprüfen Sie die Firewall-Regeln. Mit ein bisschen Glück ist es für die Standardverweigerung konfiguriert. Das heißt, es gibt eine explizite Regel für jeden erlaubten Dienst.

Das ist dann besser, netstatweil es auch Ports anzeigen kann, die zB für nächtliche Backups offen sind.

MSalters
quelle
6

Eine Antwort habe ich noch nicht gesehen: Überprüfen Sie die zuletzt geänderten Dateien. Protokolle, Datenbankdateien, andere Ausgabedateien usw. können in Standbilder geschrieben werden, die möglicherweise Hinweise liefern:

find . -mtime -3 

Das würde modifizierte Dateien im aktuellen Verzeichnis und tiefer finden, geändert in den letzten 3 Tagen. Erhöhen Sie die Zahl 3 auf eine fundierte Schätzung, bis Sie eine Ausgabe erhalten, die Sie untersuchen können.

Nicht idiotensicher, da die Boxen möglicherweise nur einige Webservice-Aufrufe verarbeiten und einige Daten zurückgeben, ohne jemals etwas zu schreiben. Aber zu der oben erwähnten großartigen Mischung hinzugefügt, kann es nur einige Hinweise geben.

JayMcTee
quelle