Polecenia do nauki o nieznanym systemie [zamknięte]

19

Logujesz się do nieznanego systemu UNIX lub Linux (jako root). Jakie polecenia uruchamiasz, aby się zorientować i dowiedzieć się, na jakim systemie jesteś? Jak dowiedzieć się, jaki typ sprzętu jest używany, jaki system operacyjny działa i jaka jest obecna sytuacja, jeśli chodzi o uprawnienia i bezpieczeństwo?

Jakie jest pierwsze i drugie polecenie, które wpisujesz?

Alexander
źródło
3
Użyłbym uname -awtedy apropos whatever twojego przyjaciela.
fd0
1
nmap -A -T4 localhostmoże również dać ci przydatne informacje
seumasmac
@seumasmac netstat byłby lepszy i bardziej wydajny niż nmapping lokalnej maszyny.
André Borie
@ AndréBorie nmap i netstat dają całkiem inne wyniki. Dlatego porównywanie ich pod względem wydajności (bez względu na rodzaj) nie ma większego sensu.
moooeeeep
@ AndréBorie Pierwotnie planowałem umieścić :) na końcu tego. Sprawdzałem zabezpieczenia na jednej z moich maszyn i trzymając nmapmłotek localhostnagle wyglądałem jak gwóźdź. Ale potem zdałem sobie sprawę, że to naprawdę daje ciekawe informacje, więc zostawiłem to jako półpoważną sugestię.
seumasmac

Odpowiedzi:

22

pytanie podwójnego zastosowania! Albo archeolog oprogramowania albo zły haker mógłby skorzystać z odpowiedzi na to pytanie! Teraz kim jestem?

Zawsze używałem ps -efversus, ps -augxwwaby dowiedzieć się, na czym byłem. Linux i System V zwykle lubiły „-ef” i błąd na „-augxww”, i odwrotnie dla BSD i starych maszyn SunOS. Wydajność psmoże również dać ci wiele do zrozumienia.

Jeśli możesz zalogować się jako root, a jest to komputer z systemem Linux, powinieneś to zrobić - lsusbi lspcito pozwoli ci w 80% dowiedzieć się, jaka jest sytuacja sprzętowa. dmesg | moremoże pomóc Ci zrozumieć wszelkie bieżące problemy na dowolny temat.

Zaczyna się stopniowo wycofywać, ale ifconfig -azazwyczaj może wiele powiedzieć o interfejsach sieciowych i sieci. Uruchamianie mii-tooli / lub ethtoolna interfejsach, które widzisz w ifconfigdanych wyjściowych, które wyglądają jak okablowany ethernet, może dać ci trochę informacji.

Uruchomiony ip routelub netstat -rmoże zawierać informacje na temat routingu protokołu internetowego, a może coś na temat używanych interfejsów sieciowych.

mountInwokacja można powiedzieć o dysku (ów) i jak są one zamontowane.

Uruchomiony uptime, a następnie last | moremoże ci powiedzieć coś o bieżącym stanie konserwacji. Okresy ponad 100 dni prawdopodobnie oznaczają „czas na wymianę oleju i płynów”, mówiąc metaforycznie. Bieganie whoteż jest

Patrząc /etc/resolv.confi /etc/hostsmogę powiedzieć o konfiguracji DNS tego komputera. Może zrób nslookup google.comlub dig bing.comsprawdź, czy DNS działa głównie.

Zawsze warto obserwować, jakie błędy („polecenie nie znaleziono”) i jakie warianty poleceń („ps -ef” vs „ps augxww”) działają, aby ustalić, na którym wariancie Uniksa, Linuksa lub BSD właśnie skończyłeś.

Istotna jest obecność lub brak kompilatora C oraz miejsce jego zamieszkania. Zrób which cclub lepiej, which -a ccaby je znaleźć.

Bruce Ediger
źródło
Wolę netstat -tulpanwwiększą wydajność, ale tak naprawdę to kwestia gustu.
Ned64
Jest także lshwpod Linuksem.
Shahbaz
mountjest niechlujny, findmntzamiast tego jest bardzo czysty.
edmz
10

cat /etc/*release* to miłe polecenie do uzyskania informacji o tym, która dystrybucja jest uruchomiona.

Alexander
źródło
9

http://bhami.com/rosetta.html może być przydatny do przejrzenia, w przeciwnym razie zwykle zagrzebuję się pod /etc(konta, rzeczy inicjacyjne, wskazówki dotyczące smaku systemu operacyjnego itp.) crontab -li przeglądam pslistę rzeczy, o których można się dowiedzieć.

Również „jako root” jest bardzo przerażające, ponieważ musiałem naprawić systemy, w których administrator Linuxa prowadzący takie dochodzenie ustawił wszystkie nazwy hostów Solaris na -f.

Również dfjest niebezpieczne polecenie, to świetny sposób na oh whoops zawieszony na blokowanie I / O. Nigdy nie uruchamiaj tego, dopóki przynajmniej nie przyjrzysz się wierzchowcom lub nie będziesz wiedział, że możesz otworzyć kolejną sesję.

Użyj bardzo proste polecenia ( uname, cd /etc; ls, cat, $PAGER) dopóki nie dowiedzieć się, co gospodarz jest, a jeśli jesteś zaznajomiony z nim, sprawdzić Rosetta lub zawsze przeczytać stronę man przed zakładając jakąś komendę lub flagi do polecenia robi to, co robi na bardziej popularne systemy.

gałązka
źródło
Zastanawiam się: czy istnieje solidny sposób (tymczasowego) wpadnięcia w środowisko o niższych uprawnieniach? Czy to nie jest wykonalne, czy też nie jest to dobry pomysł?
Oliphaunt - przywróć Monikę
1
Dlaczego jest dfniebezpieczny? Czy istnieją systemy, w których robi coś innego niż pokazuje wykorzystanie systemu plików?
terdon
1
@terdon blokowanie I / O jądra, np. na twardym zamontowanym NFS, który jest wyłączony; w najlepszym razie możesz jakoś otworzyć nową sesję lub terminal (czas zmarnowany podczas awarii), lub w najgorszym przypadku była to Twoja jedyna konsola na starym systemie Solaris i tak ... może się uruchomi, może nie, szkoda, że ​​informacje o montowaniu nie były najpierw przeglądane i ta problematyczna linia serwera NFS rozpoznała ...
thrig
1
Jeśli dfzawiesza się, po prostu CTRL-Z to i kill -9to. Wpadłem również na ten problem i to zawsze działało dla mnie. Idealnie, twoje wierzchowce nie powinny być zawieszane. Nie sądzę też, aby wiele osób uważało programy wiszące za „niebezpieczne”, dlatego uważam, że terdon był zdezorientowany.
Bratchley,
3
@Bratchley oh, nigdy nie miałeś połączenia z konsolą, nad którym nie możesz wysłać znaków kontrolnych? Um, gdzie była ta instrukcja zmodem, czy o kurwa, jak wysłaliśmy ich przez wadliwą Javę do tej innej błędnej rzeczy, o kurwa, która ma fizyczny dostęp?
thrig
5

dmidecodei lspcizazwyczaj daje dobre wyobrażenie o tym, jaki sprzęt działa w systemie. Jeśli jest to serwer, zwykle uruchomiony netstat -tlpnujawni przeznaczenie serwera. df -hPjest dobrym poleceniem do sprawdzania bieżącej pamięci w systemie. lsb_release -apowinien poinformować Cię na jakiej dystrybucji:

[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

Uruchomienie lastpowinno dać ci znać, kto korzysta z systemu. Zakładając, że uzyskałeś dostęp do tego serwera zgodnie z prawem, często możesz po prostu poprosić jedną z osób, które się na nim zalogują, o więcej informacji na jego temat.

W przypadku neutralnych kontroli bezpieczeństwa dostawcy: zapora często zawiera unikatowe dane konfiguracyjne, więc uruchomienie iptables -nvLjest przydatne. Powinieneś także sprawdzić pliki konfiguracyjne pam swojej dystrybucji, aby zobaczyć, czy używasz tylko lokalnych użytkowników, czy też skonfigurowano do korzystania z ldap / kerberos / winbind / sssd / cokolwiek.

Możesz także sprawdzić konfigurację usług, które pojawią się w twoim netstat -tlpn. Na przykład, jeśli widzisz apache, możesz spojrzeć na /etc/http/conf/httpd.conf(na RHEL, /etc/apache2na Ubuntu) i spróbować zobaczyć, jakie strony internetowe są uruchomione. Alternatywnie możesz zrobić a, apachectl -Saby uzyskać listę wszystkich skonfigurowanych hostów wirtualnych. To trochę stamtąd fani, więc wszystko, co mogę naprawdę zrobić, to zaoferować apache jako przykład i po prostu powiedzieć, aby zweryfikować konfigurację demona, jeśli jest to coś innego.

Na RHEL sprawdziłbym również, rpm -qa --last | headkiedy ostatnio aktualizowali system. Chciałbym również sprawdzić, czy SELinux jest włączony przezgetenforce

Bratchley
źródło
0

Kilka innych pomysłów:

  • Obecność lub brak /procsystemu plików może wskazywać, czy korzystasz z komputera Mac , FreeBSD lub Linux.
  • Zarządzanie pakietami różni się od dystrybucji systemu Linux do dystrybucji. Te oparte na Debianie mają apt, takie jak Deepin, Ubuntu, Mint; Red Hat i Fedora do pewnego czasu mniły , ale teraz Fedora ma DNF ; Arch używa Pacmana. Więc możemy zrobić coś takiego:ls /usr/bin | grep 'apt\|yum\|pacman'
  • Obecność niektórych usług na niektórych portach podczas przeglądania netstat -tulpan. Może to być sshdserwer WWW ftp;
Sergiy Kolodyazhnyy
źródło
Zauważ, że obecność danego pliku wykonywalnego w systemie tak naprawdę nic nie znaczy. Na przykład Debian ma yumpakiet. W jaki sposób obecność serwera ssh wskazywałaby na system? AFAIK można znaleźć sshdna prawie wszystko.
terdon
@terdon True. Podchodzę do tego z punktu widzenia nowego administratora systemu, w którym powiedziano ci: „Mamy nad sobą trochę Linux-a, zrób coś z tym”. W tym momencie możesz zapytać: czy ma dostęp zdalny? Czy ten zdalny dostęp jest wzmocniony? Czy znam zarządzanie pakietami, które znam, czy muszę nauczyć się nowego menedżera pakietów? Cel niekoniecznie określa, jaki system operacyjny otrzymujesz, Bruce Ediger już to
omówił