Befehle zum Erlernen eines unbekannten Systems [geschlossen]

19

Sie melden sich bei einem unbekannten UNIX- oder Linux-System (als root) an. Welche Befehle führen Sie aus, um sich zu orientieren und herauszufinden, auf welchem ​​System Sie sich befinden? Wie stellen Sie fest, welche Art von Hardware verwendet wird, welches Betriebssystem ausgeführt wird und wie die aktuelle Situation in Bezug auf Berechtigungen und Sicherheit ist?

Was ist der erste und zweite Befehl, den Sie eingeben?

Alexander
quelle
3
Ich würde uname -adann apropos whatever deinen Freund benutzen .
fd0
1
nmap -A -T4 localhostkönnte Ihnen auch einige nützliche Informationen geben
seumasmac
@seumasmac netstat wäre besser und effizienter als nmapping der lokalen Maschine.
André Borie
@ AndréBorie nmap und netstat ergeben ganz unterschiedliche Ergebnisse. Daher ist es wenig sinnvoll, sie in Bezug auf die Effizienz (welcher Art auch immer) zu vergleichen.
moooeeeep
@ AndréBorie Ich hatte ursprünglich geplant, am Ende ein :) zu setzen. Ich hatte die Sicherheit auf einer meiner eigenen Maschinen überprüft und während ich meinen nmapHammer hielt localhost, sah es plötzlich aus wie ein Nagel. Aber dann wurde mir klar, dass es tatsächlich einige interessante Informationen gibt, und so habe ich es als halb-ernsthaften Vorschlag hinterlassen.
Seumasmac

Antworten:

22

eine Frage mit doppeltem Verwendungszweck! Entweder ein Software-Archäologe oder ein böser Hacker könnte die Antworten auf diese Frage verwenden! Nun, welches bin ich?

Ich habe immer ps -efversus verwendet ps -augxww, um herauszufinden, worauf ich mich befand. Linux- und System V-Boxen mochten in der Regel "-ef" und Fehler auf "-augxww", umgekehrt für BSD- und alte SunOS-Maschinen. Die Ausgabe von pskann Sie auch viel wissen lassen.

Wenn Sie sich als root anmelden können und es sich um einen Linux-Computer handelt, sollten Sie dies tun lsusbund lspci- damit sind Sie zu 80% in der Lage, die Hardware-Situation zu kennen. dmesg | morekann Ihnen dabei helfen, alle aktuellen Probleme zu verstehen.

Es beginnt allmählich auszulaufen, aber dies ifconfig -akann Ihnen normalerweise viel über die Netzwerkschnittstellen und das Netzwerk erzählen. Das Ausführen von mii-toolund / oder ethtoolauf den Schnittstellen, die Sie in der ifconfigAusgabe sehen und die wie verkabeltes Ethernet aussehen, kann Ihnen auch einige Informationen geben.

Runnin ip routeoder netstat -rkann über Internet Protocol Routing, und vielleicht etwas über in bedienende Netzwerk - Schnittstellen informativ sein.

Ein mountAufruf kann Sie über die Festplatte (n) informieren und darüber, wie sie gemountet sind.

Läuft uptimeund last | morekann Ihnen dann etwas über den aktuellen Wartungszustand sagen. Uptimes von 100+ Tagen bedeuten wahrscheinlich "es ist Zeit, das Öl und die Flüssigkeiten zu wechseln", metaphorisch gesprochen. Laufen whogeht auch

Sehen Sie sich das DNS-Setup dieses Computers an /etc/resolv.confund /etc/hostserfahren Sie mehr darüber. Vielleicht tun nslookup google.comoder dig bing.comzu sehen, ob DNS meistens funktioniert.

Es lohnt sich immer zu beobachten, welche Fehler ("Befehl nicht gefunden") und welche Befehlsvarianten ("ps -ef" vs "ps augxww") funktionieren, um festzustellen, auf welcher Unix- oder Linux- oder BSD-Variante Sie gerade gelandet sind.

Es ist wichtig, ob ein C-Compiler vorhanden ist oder nicht und wo er sich befindet. Tun which ccoder besser, which -a ccum sie zu finden.

Bruce Ediger
quelle
Ich bevorzuge netstat -tulpanwmehr Output, aber das ist wirklich Geschmackssache.
Ned64
Es gibt auch lshwunter Linux.
Shahbaz
mountist chaotisch, findmntist stattdessen sehr sauber.
Edmz
10

cat /etc/*release* ist ein netter Befehl, um sich einen Überblick darüber zu verschaffen, welche Distribution läuft.

Alexander
quelle
9

http://bhami.com/rosetta.html kann nützlich sein, um nachzusehen, andernfalls stöbere ich normalerweise unter /etc(Accounts, Init-Inhalte, Hinweise zur Betriebssystemversion usw.) crontab -lund schaue in der psListe nach Informationen.

Auch "als root" ist super beängstigend, da ich Systeme reparieren musste, auf denen ein Linux-Administrator, der eine solche Untersuchung durchführt, alle Solaris-Hostnamen auf "" gesetzt hat -f.

Es dfist auch ein gefährlicher Befehl, eine großartige Möglichkeit, E / A zu blockieren. Führen Sie das also niemals aus, bis Sie zumindest die Reittiere untersucht haben oder wissen, dass Sie eine weitere Sitzung irgendwie eröffnen können.

Verwenden Sie sehr einfache Befehle ( uname, cd /etc; ls, cat, $PAGER) , bis Sie herausfinden , was der Wirt, und wenn Sie nicht vertraut mit ihm, überprüfen rosetta oder immer die man - Seite lesen , bevor Sie einen Befehl oder Flag auf einen Befehl unter der Annahme , das tut , was er tut , auf populärere Systeme.

Thrig
quelle
Ich frage mich, ob es eine robuste Möglichkeit gibt, (vorübergehend) in eine Umgebung mit geringeren Rechten zu gelangen. Oder ist das nicht machbar oder irgendwie keine gute Idee?
Oliphaunt - wieder Monica
1
Warum ist dfgefährlich? Gibt es Systeme, auf denen etwas anderes als die Verwendung des Dateisystems angezeigt wird?
Terdon
1
@terdon Kernel-E / A-Blockierung, z. B. auf einem ausgefallenen harten NFS-Mount; Bestenfalls können Sie eine neue Sitzung oder ein neues Terminal eröffnen (Zeitverschwendung während eines Ausfalls), oder schlimmstenfalls war dies Ihre einzige Konsole auf diesem alten Solaris-System, und äh ja ... vielleicht wird es gebootet, vielleicht wird es nicht. Schade, dass die Mount-Informationen nicht zuerst
überprüft wurden
1
Wenn es dfhängt, drücken Sie einfach STRG-Z und kill -9es. Ich bin auch auf dieses Problem gestoßen und das hat bei mir immer funktioniert. Idealerweise sollten Ihre Reittiere auch nicht aufgehängt werden. Ich denke auch nicht, dass viele Leute Programme für "gefährlich" halten, weshalb ich denke, dass Terdon verwirrt war.
Bratchley
3
@Bratchley oh, hattest du noch nie eine Konsolenverbindung, über die du keine Steuerzeichen senden kannst? Ähm, wo war das Zmodem-Handbuch, oder wie haben wir sie durch das fehlerhafte Java-Ding zu dem anderen fehlerhaften Ding geschickt, oh mein Gott, der physischen Zugriff hat?
Thrig
5

dmidecodeIn lspcider Regel erhalten Sie eine gute Vorstellung davon, welche Hardware auf dem System ausgeführt wird. Wenn dies ein Server ist, der normalerweise ausgeführt netstat -tlpnwird, wird der Zweck des Servers verraten. df -hPist ein guter Befehl zum Überprüfen des aktuellen Speichers im System. lsb_release -asolltest du wissen, in welcher Distribution du bist:

[root@vle02 ~]# lsb_release -a
LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: RedHatEnterpriseServer
Description:    Red Hat Enterprise Linux Server release 6.7 (Santiago)
Release:        6.7
Codename:       Santiago

Beim Ausführen lastsollten Sie wissen, wer das System verwendet. Vorausgesetzt, Sie haben zu Recht auf diesen Server zugegriffen, können Sie häufig nur eine der Personen, die sich anmelden, um weitere Informationen dazu bitten.

Für herstellerneutrale Sicherheitsüberprüfungen: Häufig verfügt die Firewall über eindeutige Konfigurationsdaten, sodass das Ausführen von a iptables -nvLnützlich ist. Sie sollten auch die Pam-Konfigurationsdateien Ihrer Distribution überprüfen, um festzustellen, ob Sie nur lokale Benutzer verwenden oder ob Sie für die Verwendung von ldap / kerberos / winbind / sssd / whatever konfiguriert sind.

Sie können auch die Konfiguration der Dienste überprüfen, die in Ihrem System ausgeführt werden netstat -tlpn. Wenn Sie beispielsweise Apache sehen, können Sie nachsehen /etc/http/conf/httpd.conf(unter RHEL, /etc/apache2unter Ubuntu), welche Websites ausgeführt werden. Alternativ können Sie a ausführen apachectl -S, um eine Liste aller konfigurierten virtuellen Hosts abzurufen. Es ist eine Art Fan von dort, also kann ich wirklich nur Apache als Beispiel anbieten und nur sagen, um die Konfiguration des Daemons zu überprüfen, wenn es etwas anderes ist.

Auf RHEL würde ich auch nachsehen rpm -qa --last | head, wann sie das letzte Mal Systemaktualisierungen durchgeführt haben. Ich würde auch prüfen, ob SELinux über aktiviert istgetenforce

Bratchley
quelle
0

Ein paar andere Ideen:

  • Das Vorhandensein oder Fehlen eines /procDateisystems kann darauf hinweisen, ob Sie auf Mac , FreeBSD oder Linux arbeiten.
  • Die Paketverwaltung unterscheidet sich von Linux-Distribution zu Distribution. Debian-basierte Programme wie Deepin, Ubuntu, Mint; Red Hat und Fedora hatten bis zu einem gewissen Punkt Mühe, aber jetzt hat Fedora DNF ; Arch benutzt Pacman. Also könnten wir so etwas machen:ls /usr/bin | grep 'apt\|yum\|pacman'
  • Vorhandensein bestimmter Dienste an bestimmten Ports beim Anzeigen netstat -tulpan. Das könnte sein sshd, Webserver, ftp;
Sergiy Kolodyazhnyy
quelle
Beachten Sie, dass das Vorhandensein einer bestimmten ausführbaren Datei auf dem System eigentlich nichts bedeutet. Debian hat zum Beispiel ein yumPaket. Wie würde das Vorhandensein eines SSH-Servers das System anzeigen? AFAIK finden Sie sshdauf so ziemlich alles.
terdon
@terdon Richtig. Ich nähere mich dem aus der Sicht eines neuen Systemadministrators, in dem Ihnen gesagt wird: "Wir haben irgendwo eine Linux-Box, machen Sie etwas dagegen". Dann fragen Sie sich vielleicht: Hat es einen Fernzugriff? Ist der Fernzugriff gehärtet? Verfügt es über eine mir vertraute Paketverwaltung oder muss ich eine neue Paketverwaltung erlernen? Das Ziel ist nicht unbedingt zu bestimmen, welches Betriebssystem Sie erhalten, Bruce Ediger hat dies bereits behandelt, aber ich konzentriere mich mehr auf die Untersuchung des Systems selbst
Sergiy Kolodyazhnyy