Frage Wie können Sie erkennen, was ein Server tatsächlich macht? [geschlossen]


Ich habe 3 Linux-Boxen bekommen, davon 1 mit Apache und 2 weitere, die, soweit ich das beurteilen kann, nicht viel tun. Alles läuft auf Redhat.

Die Frage ist einfach: Wie kann ich sagen, was der Server tatsächlich macht? Eine Nulldokumentation ist vom Ersteller verfügbar.


42
2018-06-09 13:23


Ursprung


Die Prozessliste, Netzwerk-Listener (vielleicht im Vergleich zu würde sollte auf Init-Skripten ausgeführt haben) ... - HBruijn
Verdammt! weiß doch jemand, wofür sie sind? Sie wollen, dass Sie sie unterstützen, aber wissen Sie nicht, was sie tun ?! - Digital Lightcraft
Schalte sie aus. Jemand wird dich wissen lassen, fast sofort, was nicht funktioniert. - jscott
SCHALTEN SIE ES NICHT AUS. Ziehen Sie das Ethernet-Kabel ab, wenn Sie einen Schrei-Test durchführen möchten. Wenn Sie noch nie eine Box mit einer zweijährigen Betriebszeit haben, scheitern Sie an einem Neustart. Dies ist nicht die Zeit, um dieser Mischung Frust hinzuzufügen. - Aaron Copley
Was alle anderen gesagt haben, aber auch: Lasse nmap gegen sie laufen. - Katherine Villyard


Antworten:


Ziehen Sie das Ethernetkabel ab und sehen Sie, wer sich aufregt.

Im Ernst: Mysteriöse Maschinen wie diese verursachen viel Kopfarbeit für ein Team und bieten oft absolut keinen geschäftlichen Nutzen. Sprechen Sie mit Ihrem Chef, wenn niemand weiß, was es tut, interessiert sich vielleicht niemand dafür.


42
2018-06-09 17:49



SCHALTEN SIE ES NICHT AUS. Ziehen Sie das Ethernet-Kabel ab, wenn Sie einen Schrei-Test durchführen möchten. Wenn Sie noch nie eine Box mit einer zweijährigen Betriebszeit haben, scheitern Sie an einem Neustart. Dies ist nicht die Zeit, um dieser Mischung Frust hinzuzufügen. (Kopieren Sie das hier, weil es gelesen werden muss.) - Aaron Copley
Du hast 100% Recht, ich habe den Beitrag bearbeitet, um das zu reflektieren. Ich war ein wenig witzig, aber ich kann immer noch witzig sein, ohne ein Desaster zu verbreiten. - Josh Rumbut
Bevor das Netzwerk getrennt wird, ist es eine gute Idee, eine Liste laufender Prozesse zu speichern und Sockets auf jedem Server zu öffnen - nur für den Fall, dass etwas auf eine TCP-Verbindung zwischen den Servern angewiesen ist, die für viele Monate ESTABLISHED geblieben ist automatisieren, welche Schritte notwendig waren, um sie im ersten Fall zu öffnen. (Zum Beispiel, wenn jemand eine SSH-Port-Weiterleitung vorübergehend benötigt und dann vergessen hat.) - kasperd
Tu das nicht. Was für ein lächerlicher Ratschlag. Dummes, gedankenloses IT-Personal kostet mich so viel Zeit und Arbeit. FRAG ZUERST. Wenn du nicht weißt, wen du fragen sollst, FRAGEN SIE JEDER. - Lightness Races in Orbit
Stellen Sie sicher, dass Sie genug Zeit für jemanden zum Schreien lassen - das eine Mal mit einem staubigen oder Desktop-Computer auf einem Serverrack - niemand wusste, was es tat, es dauerte einen ganzen Monat, bis jemand es bemerkte, als wir es aussteckten . Es stellte sich heraus, dass es Teil des Gehaltsabrechnungssystems war. Ohne diesen Server konnte das Accounting keine monatliche Gehaltsabrechnung generieren. Es lief seit mindestens 3 Jahren unbeaufsichtigt und niemand kümmerte sich darum - so war der "Schrei-Test" ein Erfolg, wenn wir es nicht getan hätten, wäre der Server schließlich selbst gestorben. Am Ende haben wir es in unseren VMware-Cluster aufgenommen. - Johnny


Dies ist eine ziemlich große 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 die laufende Konfiguration von jedem.
    • Untersuchen Sie alle definierten Datenverzeichnisse. (Vielleicht hat jemand MySQL installiert und aktiviert, aber es gibt keine Datenbanken.)
  • Nach geplanten Aufgaben suchen
  • Ü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 gerade läuft.

Du hast die Version nicht erwähnt, also habe ich die Besonderheiten weggelassen.


30
2018-06-09 14:02



Es gibt etwas Wichtigeres, als welche Dienste konfiguriert sind, um beim Systemstart zu starten. Welche Dienste laufen gerade? 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 eine gute Idee, einen anderen Systemzustand zu betrachten, wie zum Beispiel: mount points, routing table, iptables rules. All dies sind Dinge, die leicht geändert werden können, während das System läuft, ohne sich daran zu erinnern, die beim Booten verwendeten Konfigurationsdateien zu aktualisieren. - kasperd
Außerdem würde ich einen Portscanner verwenden, um zu sehen, welche Ports offen sind, und dann versuchen, mit den üblichen Tools eine Verbindung herzustellen. Für (ein einfaches) Beispiel, wenn Port 443 geöffnet ist, könnten Sie versuchen, einen Webbrowser zu verwenden, um eine Verbindung herzustellen. Ich musste solche scheinbar verlassenen Server häufig erforschen und eines meiner Lieblingswerkzeuge, um schnell durch die Konfigurationsdateien in / etc und anderen Orten zu blättern, ist "lynx" oder "links" zu verwenden, wenn Sie bevorzugen. Dies sind Zeichen-basierte Web-Browser, die eine gute Arbeit als Datei-Browser sowie mit bequemer Cursor-Tasten-Navigation. - aseq
@Kasperd Fair Play läuft gegen persistente Dienste. Aber ich dachte über Firewall-Regeln, Mount-Punkte, etc. Das schien mir als Nebenkomponenten, die bereits an einen der vorhandenen Aufzählungspunkte gebunden sind. YMMV. - Aaron Copley
Bitte hinzufügen - Nach aktiven Netzwerkverbindungen suchen und die Namen der Dienste und Portnummern notieren. Die beste Methode, dies zu tun, variiert je nach Betriebssystem. Z.B. Netto stat. Legen Sie auch eine Art von Ablaufverfolgung auf den Computer, so dass Sie sehen können, was es den ganzen Tag über tut. Vielleicht möchten Sie auch Überlegungen zu Szenarien anstellen, wenn Dinge, die auf den Servern laufen, schädlich sein könnten. - IceMage


Es gibt ein paar Dinge, die Sie tun könnten, um herauszufinden, was auf Ihrem System läuft.

Sie können überprüfen, welche Ports Ihr Server überwacht, um eine Vorstellung davon zu bekommen, was sich dort befindet. Ein guter Befehl zu verwenden 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 in der obigen Beispielausgabe sehen können, zeigt es Ihnen die Protokollversion (tcp oder udp), die Adresse, die gerade gehört wird, den offenen Port und das Programm, das gerade gehört.

Im obigen abgeschnittenen Beispiel (eine Server-Maschine) können Sie sehen, dass die TCP-Ports 139, 5666 und 22 zuhören. Diese werden zu Samba, nrpe (Nagios-Agent) bzw. ssh aufgelöst und bestätigt, wenn Sie das Programm überprüfen, das diesen Port überwacht.

Außerdem können Sie die Liste der Daemons überprüfen, die für den Start beim Booten konfiguriert sind. Um dies zu tun, führen Sie 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


19
2018-06-09 14:48



ich finde netstat -plunt leichter zu merken. - abligh
Ebenfalls, tcpdump kann nützlich sein, um festzustellen, wer tatsächlich jeden Dienst nutzt. - abligh


Eine andere Methode beinhaltet das Überprüfen der /etc Verzeichnis und Blick auf die Änderungsdaten. Nach einer Neuinstallation sollten alle Dateien in diesem Verzeichnis ungefähr dasselbe Datum / dieselbe Uhrzeit haben. Und da eine Installation in der Regel viele Dinge installiert, die Benutzer normalerweise nicht verwenden, nur die Dateien mit einem späteren Änderungsdatum geben den tatsächlichen Zweck des Servers wieder. Wenn dies ext4 ist, sollte es auch möglich sein, das Geburtsdatum von Verzeichnissen zu extrahieren, so dass die Aufgabe ziemlich einfach sein könnte.

Noch eine andere Methode würde beinhalten, die .bash_history Dateien, um zu sehen, was die Admins vorhatten. Diese Datei kann eine Fülle von Wissen bereitstellen.


18
2018-06-09 15:22





Überprüfen Sie die Firewall-Regeln. Mit etwas Glück ist es für default-deny konfiguriert. Das bedeutet, dass für jeden zulässigen Service eine explizite Regel existiert.

Das ist dann besser netstat weil es auch Ports anzeigen kann, die beispielsweise für nächtliche Backups geöffnet sind.


7
2018-06-09 20:41





Eine Antwort, die ich noch nicht gesehen habe: Überprüfen Sie die zuletzt geänderten Dateien. Protokolle, Datenbankdateien, andere Ausgabedateien usw. können immer noch geschrieben werden, was Hinweise geben kann:

find . -mtime -3 

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

Nicht narrensicher, da die Boxen nur einige Web-Service-Anrufe 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.


6
2018-06-11 12:39