Commandes pour en savoir plus sur un système inconnu [fermé]

19

Vous vous connectez à un système UNIX ou Linux inconnu (en tant que root). Quelles commandes exécutez-vous pour vous orienter et déterminer sur quel type de système vous vous trouvez? Comment déterminez-vous quel type de matériel est utilisé, quel type de système d'exploitation est en cours d'exécution et quelle est la situation actuelle en matière d'autorisations et de sécurité?

Quelle est la première et la deuxième commande que vous tapez?

Alexandre
la source
3
J'utiliserais uname -aalors apropos whatever est votre ami.
fd0
1
nmap -A -T4 localhostpourrait également vous donner des informations utiles
seumasmac
@seumasmac netstat serait mieux et plus efficace que de cartographier la machine locale.
André Borie
@ AndréBorie nmap et netstat produisent des résultats assez différents. Par conséquent, cela n'a pas beaucoup de sens de les comparer en termes d'efficacité (quel que soit le type).
moooeeeep du
@ AndréBorie J'avais initialement prévu de mettre un :) à la fin de cela. J'avais vérifié la sécurité sur une de mes propres machines, et tout en tenant mon nmapmarteau, j'ai localhostsoudain ressemblé à un clou. Mais j'ai réalisé que cela donnait en fait des informations intéressantes, alors je l'ai laissé comme une suggestion semi-sérieuse.
seumasmac

Réponses:

22

une question à double usage! Un archéologue logiciel ou un pirate maléfique pourrait utiliser les réponses à cette question! Maintenant, qui suis-je?

J'utilisais toujours ps -efversus ps -augxwwpour savoir sur quoi j'étais. Les boîtes Linux et System V avaient tendance à aimer "-ef" et les erreurs sur "-augxww", vice versa pour BSD et les anciennes machines SunOS. La sortie de pspeut également vous en savoir beaucoup.

Si vous pouvez vous connecter en tant que root, et que c'est une machine Linux, vous devriez le faire lsusbet lspci- cela vous permettra de connaître à 80% la situation matérielle. dmesg | morepeut vous aider à comprendre les problèmes actuels sur à peu près n'importe quoi.

Cela commence à disparaître, mais faire ifconfig -apeut généralement vous en dire beaucoup sur les interfaces réseau et la mise en réseau. L'exécution mii-toolet / ou ethtoolles interfaces que vous voyez dans les ifconfigsorties qui ressemblent à Ethernet câblé peuvent également vous donner des informations.

Runnin ip routeou netstat -rpeut être informatif sur le routage du protocole Internet, et peut-être quelque chose sur les interfaces réseau en cours d'utilisation.

Une mountinvocation peut vous renseigner sur les disques et leur montage.

En cours d'exécution uptime, puis last | morepeut vous dire quelque chose sur l'état actuel de la maintenance. Une disponibilité de plus de 100 jours signifie probablement "qu'il est temps de changer l'huile et les fluides", métaphoriquement. La course whoc'est aussi

En regardant /etc/resolv.confet /etc/hostspeut vous parler de la configuration DNS de cette machine. Peut-être faire nslookup google.comou dig bing.comvoir si le DNS est principalement fonctionnel.

Il vaut toujours la peine de regarder quelles erreurs ("commande introuvable") et quelles variantes de commandes ("ps -ef" vs "ps augxww") fonctionnent pour déterminer sur quelle variante d'Unix ou Linux ou BSD vous venez de vous retrouver.

La présence ou l'absence d'un compilateur C et son emplacement sont importants. Faites which ccou mieux, which -a ccpour les trouver.

Bruce Ediger
la source
Je préfère netstat -tulpanwpour plus de sortie mais c'est vraiment une question de goût.
Ned64
Il y a aussi lshwsous Linux.
Shahbaz
mountest en désordre, findmntest très propre à la place.
edmz
10

cat /etc/*release* est une commande intéressante pour obtenir une vue d'ensemble de la distribution en cours d'exécution.

Alexandre
la source
9

http://bhami.com/rosetta.html pourrait être pratique à examiner, sinon je fouille généralement sous /etc(comptes, trucs d'init, conseils de saveur de système d'exploitation, etc.) et je crontab -lregarde dans la psliste des choses à apprendre.

"En tant que root" est aussi très effrayant, car j'ai dû réparer des systèmes où un administrateur Linux effectuant une telle enquête a défini tous les noms d'hôte Solaris -f.

Est également dfune commande dangereuse, un excellent moyen de oh oh whoops accroché au blocage des E / S. Alors ne lancez jamais cela avant d'avoir au moins étudié les montures, ou sachez que vous pouvez ouvrir une autre session d'une manière ou d'une autre.

Utilisez des commandes très simples ( uname, cd /etc; ls, cat, $PAGER) jusqu'à ce que vous avez compris ce que l'hôte est, et si vous ne connaissez pas, vérifiez un rosetta ou toujours lire la page de manuel avant de prendre une commande ou d'un drapeau à une commande fait ce qu'il fait sur systèmes plus populaires.

branler
la source
Cela me fait me demander: existe-t-il un moyen robuste de basculer (temporairement) dans un environnement moins privilégié? Ou n'est-ce pas faisable ou n'est-ce pas une bonne idée?
Oliphaunt - réintègre Monica
1
Pourquoi est-ce dfdangereux? Existe-t-il des systèmes où il fait autre chose que d'afficher l'utilisation du système de fichiers?
terdon
1
@terdon kernel I / O blocking, eg on a hard NFS mount that is down; au mieux, vous pouvez ouvrir une nouvelle session ou un nouveau terminal d'une manière ou d'une autre (perte de temps lors d'une panne), ou au pire, c'était votre seule console sur cet ancien système Solaris et euh oui ... peut-être qu'il démarrera, peut-être pas, Dommage que les informations de montage
n'aient
1
Si se dfbloque alors vous venez de le CTRL-Z et kill -9il. J'ai également rencontré ce problème et cela a toujours fonctionné pour moi. De plus, idéalement, vos supports ne devraient pas être suspendus. Je ne pense pas non plus que beaucoup de gens considèrent les programmes suspendus comme "dangereux", c'est pourquoi je pense que terdon était confus.
Bratchley
3
@Bratchley oh, vous n'avez jamais eu de connexion console sur laquelle vous ne pouvez pas envoyer de caractères de contrôle? Um où était ce manuel de zmodem, ou oh bon sang comment les avons-nous envoyé à travers le truc buggy Java à ce autre truc buggy ah bon sang qui a un accès physique?
thrig
5

dmidecodeet lspcivous donnera généralement une bonne idée de la nature du matériel exécuté sur le système. S'il s'agit d'un serveur en cours d'exécution netstat -tlpn, le but du serveur sera dévoilé. df -hPest une bonne commande pour vérifier le stockage actuel sur le système. lsb_release -adevrait vous faire savoir sur quelle distribution vous êtes:

[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

La course lastdevrait vous permettre de savoir qui utilise le système. En supposant que vous ayez accédé à ce serveur légitimement, vous pouvez souvent demander à l'une des personnes qui s'y connectent plus d'informations à ce sujet.

Pour les vérifications de sécurité neutres du fournisseur: il arrive souvent que le pare-feu ait des données de configuration uniques, il iptables -nvLest donc utile d' exécuter un . Vous devriez également vérifier les fichiers de configuration pam de votre distribution pour voir si vous n'utilisez que des utilisateurs locaux ou si vous êtes configuré pour utiliser ldap / kerberos / winbind / sssd / peu importe.

Vous pouvez également inspecter la configuration des services qui apparaissent dans votre netstat -tlpn. Par exemple, si vous voyez apache, vous pouvez regarder /etc/http/conf/httpd.conf(sur RHEL, /etc/apache2sur Ubuntu) et essayer de voir quels sites Web fonctionnent. Vous pouvez également effectuer une apachectl -Spour obtenir une liste de tous les hôtes virtuels configurés. Il sorte de fans à partir de là, donc tout ce que je peux vraiment faire est d'offrir apache comme exemple et juste dire de vérifier la configuration du démon si c'est autre chose.

Sur RHEL, je vérifierais également rpm -qa --last | headpour voir quand la dernière fois qu'ils ont fait des mises à jour du système. Je vérifierais également si SELinux est activé viagetenforce

Bratchley
la source
0

Quelques autres idées:

  • La présence ou l'absence de /procsystème de fichiers peut indiquer si vous êtes sur Mac , FreeBSD ou Linux.
  • La gestion des packages diffère de la distribution Linux à la distribution. Ceux basés sur Debian ont des apt, tels que Deepin, Ubuntu, Mint; Red Hat et Fedora avaient miam jusqu'à un certain point mais maintenant Fedora a DNF ; Arch utilise pacman. Nous pourrions donc faire quelque chose comme ceci:ls /usr/bin | grep 'apt\|yum\|pacman'
  • Présence de certains services sur certains ports lors de la visualisation netstat -tulpan. Le pourrait être sshd, serveur web, ftp;
Sergiy Kolodyazhnyy
la source
Notez que la présence d'un exécutable donné sur le système ne signifie vraiment rien. Debian, par exemple, a un yumpaquet. Comment la présence d'un serveur ssh indiquerait-elle le système? AFAIK, vous pouvez trouver sshdà peu près n'importe quoi.
terdon
@terdon True. J'aborde juste cela du point de vue d'un nouveau sysadmin où l'on vous dit "Nous avons une boîte Linux là-bas, allez y faire quelque chose". À ce stade, vous vous demandez peut-être: a-t-il un accès à distance? Cet accès à distance est-il renforcé? A-t-il une gestion de paquets que je connais ou dois-je apprendre un nouveau gestionnaire de paquets? L'objectif n'est pas nécessairement de déterminer quel système d'exploitation vous obtenez, Bruce Ediger a déjà couvert cela, mais je me concentre davantage sur l' enquête sur le système lui
Sergiy Kolodyazhnyy