Comandos para aprender sobre un sistema desconocido [cerrado]

19

Inicia sesión en un sistema UNIX o Linux desconocido (como root). ¿Qué comandos ejecutas para orientarte y descubrir en qué tipo de sistema estás? ¿Cómo saber qué tipo de hardware está en uso, qué tipo de sistema operativo se está ejecutando y cuál es la situación actual en lo que respecta a permisos y seguridad?

¿Cuál es el primer y segundo comando que escribe?

Alejandro
fuente
3
Lo usaría uname -aentonces apropos whatever es tu amigo.
fd0
1
nmap -A -T4 localhosttambién podría darle información útil
seumasmac
@seumasmac netstat sería mejor y más eficiente que nmapping la máquina local.
André Borie
@ AndréBorie nmap y netstat producen resultados bastante diferentes. Por lo tanto, no tiene mucho sentido compararlos con respecto a la eficiencia (cualquier tipo de).
moooeeeep
@ AndréBorie Originalmente había planeado poner un :) al final de eso. Había estado revisando la seguridad en una de mis propias máquinas, y mientras sostenía mi nmapmartillo de localhostrepente parecía un clavo. Pero luego me di cuenta de que en realidad da información interesante, así que lo dejé como una sugerencia semi-seria.
seumasmac

Respuestas:

22

¡Una pregunta de doble uso! ¡Un arqueólogo de software o un hacker malvado podrían usar las respuestas a esta pregunta! Ahora, que soy yo?

Siempre solía usar ps -efversus ps -augxwwpara descubrir en qué estaba. Los cuadros de Linux y System V solían gustar "-ef" y error en "-augxww", viceversa para BSD y máquinas SunOS antiguas. La salida de pspuede hacerle saber mucho también.

Si puede iniciar sesión como root, y es una máquina Linux, debe hacerlo lsusby lspci, eso le dará el 80% del camino para saber cuál es la situación del hardware. dmesg | morepuede ayudarlo a comprender cualquier problema actual en casi cualquier cosa.

Está comenzando a eliminarse gradualmente, pero hacerlo ifconfig -ageneralmente puede informarle mucho sobre las interfaces de red y las redes. Ejecutar mii-tooly / o ethtoolen las interfaces que ve en la ifconfigsalida que se parece a Ethernet cableada también puede brindarle información.

Runnin ip routeo netstat -rpuede ser informativo sobre el enrutamiento del Protocolo de Internet, y tal vez algo sobre las interfaces de red en uso.

Una mountinvocación puede informarle sobre los discos y cómo están montados.

En ejecución uptime, y luego last | morepuede decirle algo sobre el estado actual de mantenimiento. Los tiempos de funcionamiento de más de 100 días probablemente significan "es hora de cambiar el aceite y los fluidos", metafóricamente hablando. Correr whoes también

Mirando /etc/resolv.confy /etc/hostspodemos informarle sobre la configuración de DNS de esa máquina. Tal vez haga nslookup google.como dig bing.compara ver si DNS es principalmente funcional.

Siempre vale la pena ver qué errores ("comando no encontrado") y qué variantes de comandos ("ps -ef" vs "ps augxww") funcionan para determinar qué variante de Unix, Linux o BSD acaba de terminar.

La presencia o ausencia de un compilador de C, y dónde vive es importante. Hazlo which cco mejor, which -a ccpara encontrarlos.

Bruce Ediger
fuente
Prefiero netstat -tulpanwuna mayor producción, pero en realidad es cuestión de gustos.
Ned64
También hay lshwbajo Linux.
Shahbaz
mountes desordenado, findmntestá muy limpio en su lugar.
edmz
10

cat /etc/*release* es un buen comando para obtener una descripción general de qué distribución se está ejecutando.

Alejandro
fuente
9

http://bhami.com/rosetta.html puede ser útil para revisar, de lo contrario, generalmente busco en /etc(cuentas, material de inicio, sugerencias de sabor del sistema operativo, etc.) crontab -ly busco en la pslista cosas para aprender.

También "as root" es muy aterrador, ya que tuve que arreglar sistemas en los que un administrador de Linux que realizaba una investigación de este tipo configuraba todos los nombres de host de Solaris -f.

También dfes un comando peligroso, una excelente manera de oh whoops colgado en el bloqueo de E / S. Así que nunca ejecute eso hasta que al menos haya investigado las monturas, o sepa que puede abrir otra sesión de alguna manera.

Utilizar comandos muy simples ( uname, cd /etc; ls, cat, $PAGER) hasta que averiguar cuál es el anfitrión, y si no está familiarizado con ella, comprobar una roseta o siempre lea la página del manual antes de asumir algún comando o una bandera a un comando hace lo que hace en Sistemas más populares.

thrig
fuente
Me hace preguntarme: ¿hay una manera sólida de caer (temporalmente) en un entorno con menos privilegios? ¿O esto no es factible o de alguna manera no es una buena idea?
Oliphaunt - reinstalar a Monica el
1
¿Por qué es dfpeligroso? ¿Hay sistemas en los que hace algo más que mostrar el uso del sistema de archivos?
terdon
1
Bloqueo de E / S del kernel @terdon, por ejemplo, en un montaje NFS duro que está inactivo; en el mejor de los casos, puede abrir una nueva sesión o terminal de alguna manera (tiempo perdido durante una interrupción), o en el peor de los casos, esa era su única consola en ese viejo sistema Solaris y uh sí ... tal vez arranque, tal vez no, vergüenza información de la montura no se parecía en un primer momento y que la línea de servidores NFS problemática reconocido ...
thrig
1
Si se dfbloquea, entonces simplemente CTRL-Z y kill -9él. También me he encontrado con ese problema y eso siempre me ha funcionado. Además, idealmente sus monturas no deben colgarse. Tampoco creo que mucha gente piense en los programas colgados como "peligrosos", por lo que creo que terdon estaba confundido.
Bratchley
3
@Bratchley oh, ¿nunca tuviste una conexión de consola a la que no puedes enviar caracteres de control? Um, ¿dónde estaba ese manual de zmodem, o oh, cielos, cómo los enviamos a través de la cosa con errores de Java a esa otra cosa con errores, ah, Dios que tiene acceso físico?
thrig
5

dmidecodey lspcigeneralmente le dará una buena idea de cuál es el hardware que se ejecuta en el sistema. Si este es un servidor que generalmente se ejecuta netstat -tlpn, revelará el propósito del servidor. df -hPes un buen comando para verificar el almacenamiento actual en el sistema. lsb_release -adebería hacerte saber en qué distribución estás:

[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 ejecución lastdebería hacerle saber quién usa el sistema. Suponiendo que haya accedido a este servidor legítimamente, a menudo puede pedirle a una de las personas que inician sesión para obtener más información al respecto.

Para verificaciones de seguridad neutrales del proveedor: a menudo el firewall tendrá datos de configuración únicos, por lo que iptables -nvLes útil ejecutar También debe consultar los archivos de configuración de pam de su distribución para ver si solo está utilizando usuarios locales o si está configurado para usar ldap / kerberos / winbind / sssd / lo que sea.

También puede inspeccionar la configuración de los servicios que aparecen en su netstat -tlpn. Por ejemplo, si ve Apache, puede mirar /etc/http/conf/httpd.conf(en RHEL, /etc/apache2en Ubuntu) e intentar ver qué sitios web se están ejecutando. Alternativamente, puede hacer una apachectl -Spara obtener una lista de todos los hosts virtuales configurados. De alguna manera se aviva, así que todo lo que puedo hacer es ofrecer apache como ejemplo y solo decir que verifique la configuración del demonio si es otra cosa.

En RHEL también verificaría rpm -qa --last | headpara ver cuándo fue la última vez que hicieron actualizaciones del sistema. También verificaría si SELinux está habilitado a través degetenforce

Bratchley
fuente
0

Algunas otras ideas:

  • La presencia o ausencia de un /procsistema de archivos puede indicar si estás en Mac , FreeBSD o Linux.
  • La gestión de paquetes difiere de la distribución de Linux a la distribución. Los basados ​​en Debian tienen apt, como Deepin, Ubuntu, Mint; Red Hat y Fedora tenían yum hasta cierto punto, pero ahora Fedora tiene DNF ; Arch usa pacman. Entonces podríamos hacer algo como esto:ls /usr/bin | grep 'apt\|yum\|pacman'
  • Presencia de ciertos servicios en ciertos puertos durante la visualización netstat -tulpan. El podría ser sshd, servidor web ftp,;
Sergiy Kolodyazhnyy
fuente
Tenga en cuenta que la presencia de un ejecutable dado en el sistema realmente no significa nada. Debian, por ejemplo, tiene un yumpaquete. ¿Cómo indicaría la presencia de un servidor ssh el sistema? AFAIK puedes encontrar sshden casi cualquier cosa.
terdon
@terdon True. Me estoy acercando a esto desde el punto de vista de un nuevo administrador de sistemas donde te dicen "Tenemos una caja de Linux allí, ve a hacer algo al respecto". En ese momento puede que se pregunte: ¿Tiene acceso remoto? ¿Se ha endurecido ese acceso remoto? ¿Tiene administración de paquetes con la que estoy familiarizado o tengo que aprender un nuevo administrador de paquetes? El objetivo no es necesariamente determinar qué sistema operativo obtienes, Bruce Ediger ya lo cubrió, pero me estoy centrando más en investigar el sistema en sí mismo
Sergiy Kolodyazhnyy