Comandi per conoscere un sistema sconosciuto [chiuso]


19

Si accede a un sistema UNIX o Linux sconosciuto (come root). Quali comandi esegui per orientarti e capire quale tipo di sistema stai utilizzando? Come capire quale tipo di hardware è in uso, quale tipo di sistema operativo è in esecuzione e qual è la situazione attuale quando si tratta di autorizzazioni e sicurezza?

Qual è il primo e il secondo comando che digiti?


3
Vorrei usare uname -aquindi apropos whatever è tuo amico.
fd0

1
nmap -A -T4 localhostpotrebbe anche darti alcune informazioni utili
seumasmac,

@seumasmac netstat sarebbe migliore e più efficiente di nmapping della macchina locale.
André Borie,

@ AndréBorie nmap e netstat producono risultati abbastanza diversi. Pertanto non ha molto senso confrontarli rispetto all'efficienza (qualunque sia il tipo di).
Moooeeeep,

@ AndréBorie inizialmente avevo programmato di mettere un :) alla fine di quello. Avevo controllato la sicurezza su una delle mie macchine e, mentre tenevo il nmapmartello, localhostimprovvisamente mi sembrava un chiodo. Ma poi ho capito che in realtà fornisce alcune informazioni interessanti, quindi l'ho lasciato come un suggerimento semi-serio.
seumasmac,

Risposte:


22

una domanda a duplice uso! O un archeologo del software o un pirata informatico potrebbero usare le risposte a questa domanda! Ora, chi sono io?

Ho sempre usato ps -efcontro contro ps -augxwwper scoprire cosa stavo facendo. Le scatole Linux e System V tendevano a gradire "-ef" e l'errore su "-augxww", viceversa per BSD e vecchie macchine SunOS. L'output di pspuò farti sapere anche molto.

Se riesci ad accedere come root, ed è una macchina Linux, dovresti farlo lsusbe lspci- questo ti consentirà di ottenere l'80% della strada verso la conoscenza della situazione hardware. dmesg | morepuò aiutarti a capire eventuali problemi attuali su qualsiasi cosa.

Sta iniziando a essere gradualmente eliminato, ma il fare di ifconfig -asolito può dirti molto sulle interfacce di rete e sulla rete. L'esecuzione mii-toole / o ethtoolle interfacce che vedi ifconfignell'output che sembrano Ethernet cablate possono darti anche alcune informazioni.

Runnin ip routeo netstat -rpuò essere informativo sul routing del protocollo Internet e forse qualcosa sulle interfacce di rete in uso.

mountUn'invocazione può raccontare il disco (s) e come vengono montati.

In esecuzione uptime, e quindi last | morepuò dirti qualcosa sullo stato corrente di manutenzione. Uptimes di oltre 100 giorni probabilmente significa "è tempo di cambiare olio e fluidi", metaforicamente parlando. Anche la corsa whoè

Guardando /etc/resolv.confe /etc/hostsposso parlarti della configurazione DNS di quella macchina. Magari fai nslookup google.como dig bing.comper vedere se il DNS è per lo più funzionale.

Vale sempre la pena guardare quali errori ("comando non trovato") e quali varianti di comandi ("ps -ef" vs "ps augxww") funzionano per determinare su quale variante di Unix, Linux o BSD hai appena finito.

La presenza o l'assenza di un compilatore C e dove vive è importante. Fai which cco meglio, which -a ccper trovarli.


Preferisco netstat -tulpanwpiù output ma è davvero una questione di gusti.
Ned64,

C'è anche lshwsotto Linux.
Shahbaz,

mountè disordinato, invece findmntè molto pulito.
edmz,

10

cat /etc/*release* è un buon comando per avere una panoramica di quale distro è in esecuzione.


9

http://bhami.com/rosetta.html potrebbe essere utile da rivedere, altrimenti di solito mi guardo intorno /etc(account, contenuti di init, suggerimenti sul sistema operativo, ecc.) crontab -le guardo l' pselenco per le cose da imparare.

Anche "come root" è super spaventoso, poiché ho dovuto riparare i sistemi in cui un amministratore Linux che faceva una simile indagine ha impostato tutti i nomi host di Solaris -f.

Inoltre dfè un comando pericoloso, un ottimo modo per oh whoops appeso a bloccare l'I / O. Quindi non eseguirlo mai fino a quando non avrai almeno investigato i montaggi o saprai di poter aprire un'altra sessione in qualche modo.

Utilizzare i comandi molto semplici ( uname, cd /etc; ls, cat, $PAGER) fino a capire ciò che il padrone di casa è, e se non si ha familiarità con esso, il controllo di un rosetta o leggere sempre la pagina man prima di assumere qualche comando o di bandiera ad un comando fa quello che fa su sistemi più popolari.


Mi chiedo: esiste un modo robusto per (temporaneamente) cadere in un ambiente con privilegi inferiori? O non è fattibile o in qualche modo non è una buona idea?
Oliphaunt: ripristina Monica il

1
Perché è dfpericoloso? Ci sono sistemi in cui fa qualcosa di diverso dall'uso del filesystem?
terdon

1
Blocco I / O del kernel @terdon, ad es. su un mount NFS che non funziona; nella migliore delle ipotesi puoi aprire in qualche modo una nuova sessione o un terminale (tempo perso durante un'interruzione), o nel peggiore dei casi quella era la tua unica console su quel vecchio sistema Solaris e uh sì ... forse si avvierà, forse no, peccato che le informazioni sul mount non siano state esaminate per prime e che la problematica linea del server NFS sia stata riconosciuta ...
thrig

1
Se si dfblocca, basta CTRL-Z e kill -9basta. Ho riscontrato anche questo problema e ha sempre funzionato per me. Inoltre, idealmente i tuoi supporti non dovrebbero essere appesi. Inoltre, non penso che molte persone considerino i programmi sospesi "pericolosi", motivo per cui penso che Terdon fosse confuso.
Bratchley,

3
@Bratchley oh, non hai mai avuto una connessione alla console su cui non puoi inviare caratteri di controllo? Ehm dov'era quel manuale di zmodem, o oh Dio come li abbiamo inviati attraverso la cosa di Java buggy a quell'altra cosa di buggy che ha accesso fisico?
thrig

5

dmidecodee di lspcisolito ti darà una buona idea di quale sia l'hardware in esecuzione sul sistema. Se questo è un server in genere in esecuzione netstat -tlpndarà lo scopo del server. df -hPè un buon comando per controllare la memoria corrente sul sistema. lsb_release -adovrebbe farti sapere su quale distro stai facendo:

[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

L'esecuzione lastdovrebbe farti sapere chi utilizza il sistema. Supponendo che tu abbia acceduto a questo server legittimamente, spesso puoi semplicemente chiedere a una delle persone che accedono ad esso per ulteriori informazioni a riguardo.

Per i controlli di sicurezza neutrali del fornitore: spesso il firewall avrà dati di configurazione univoci, quindi iptables -nvLè utile eseguire a . Dovresti anche controllare i file di configurazione pam della tua distro per vedere se stai usando solo utenti locali o se sei configurato per usare ldap / kerberos / winbind / sssd / qualunque cosa.

Puoi anche controllare la configurazione dei servizi che compaiono nel tuo netstat -tlpn. Ad esempio, se vedi apache, puoi guardare /etc/http/conf/httpd.conf(su RHEL, /etc/apache2su Ubuntu) e provare a vedere quali siti web sono in esecuzione. In alternativa, potresti fare un apachectl -Sper ottenere un elenco di tutti gli host virtuali configurati. È un po 'fan da lì, quindi tutto quello che posso fare è offrire Apache come esempio e dire semplicemente di verificare la configurazione del demone se è qualcos'altro.

Su RHEL verificherei anche rpm -qa --last | headquando l'ultima volta hanno effettuato gli aggiornamenti di sistema. Vorrei anche verificare se SELinux è abilitato tramitegetenforce


0

Alcune altre idee:

  • La presenza o l'assenza di /procfilesystem può indicare se sei su Mac , FreeBSD o Linux.
  • La gestione dei pacchetti differisce dalla distribuzione Linux alla distribuzione. Quelli basati su Debian hanno apt, come Deepin, Ubuntu, Mint; Red Hat e Fedora hanno avuto lo yum fino a un certo punto, ma ora Fedora ha DNF ; Arch usa pacman. Quindi potremmo fare qualcosa del genere:ls /usr/bin | grep 'apt\|yum\|pacman'
  • Presenza di determinati servizi su determinate porte durante la visualizzazione netstat -tulpan. Potrebbe essere sshd, webserver ftp,;

Si noti che la presenza di un determinato eseguibile sul sistema non significa davvero nulla. Debian, ad esempio, ha un yumpacchetto. In che modo la presenza di un server SSH indica il sistema? AFAIK puoi trovare sshdpraticamente qualsiasi cosa.
terdon

@terdon True. Mi sto solo avvicinando a questo dal punto di vista di un nuovo amministratore di sistema in cui ti viene detto "Abbiamo un box Linux laggiù, vai a fare qualcosa al riguardo". A quel punto potresti chiederti, beh: ha accesso remoto? L'accesso remoto è rafforzato? Ha una gestione dei pacchetti che conosco o devo imparare il nuovo gestore di pacchetti? L'obiettivo non è necessariamente determinare quale sistema operativo ottieni, Bruce Ediger lo ha già trattato, ma mi sto concentrando maggiormente sull'indagine del sistema stesso
Sergiy Kolodyazhnyy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.