Si habéis trabajado unos cuantos años en la parte de Infraestructura, Operaciones y demás, os habréis encontrado en más de una - y veinte - ocasiones con problemas a la hora de la parte de comunicaciones. Y si, es más sencillo a veces "echar la culpa" a otros pero el poder tener una visión de pájaro ayuda a poder solventar los problemas más rápidamente.
En este sentido, si conocemos dónde mirar, en muchas ocasiones podemos llegar a averiguar qué está pasando, porqué y cómo solventarlo (o, al no tener muchas veces privilegios para hacer lo que nos diera la gana, saber indicar qué debe hacer el resto).
Para un entorno *nix (Unix, Linux, AIX, HP-UX, llámalo "Pepe") hay multitud de formas de investigar y conocer los entresijos del Kernel y lo que corre por debajo y que muchas veces damos por supuesto. En esta publicación, quiero poner una serie de notas en referencia al cómo saber qué puertos, aplicaciones y servicios están usando el qué dentro de una distro Linux.
Para nuestro ejemplo, usaremos un Debian 11 virtualizado en una VirtualBox, contra el que haremos todos los distintos comandos.
Ahora bien, veamos cómo controlar los distintos puntos:
- ¿Cómo saber qué puertos están abiertos, cerrados y en uso dentro de un Linux?
Como en casi todas las cosas que se pueden hacer en Linux, hay muchas formas de buscar un mismo resultado con mayor o menor detalle. El que os pongo aquí es mi preferido a nivel personal y que como tal uso yo a diario tanto en mi lado personal como profesional, pero no significa que sea ni el mejor ni el único.
Mi preferido personalmente es el binario netstat, que si no lo tienes instalado en Debian 11 haz un:
root@debian:~# apt-get install net-tools
... y con eso deberías poder empezar a funcionar con él. Si lanzas el siguiente comando:
root@debian:~# netstat -tulpn
... podrás ver todas las conexiones a nivel numérico en vez de simbólico (-n), con el PID de los programas (-p), los que están en modo listening para los sockets (-l) y tanto a nivel de TCP (-t) como de UDP (-u), como ves más abajo:
Y de esta misma manera, como decía puedes verlo con otras utilidades como lsof o ss:
A partir de aquí, podemos derivar más comandos con "pipes" ( | ) para hacer un grep y sacar sólo los LISTEN o lo que necesitéis.
- ¿Cómo saber qué archivos están siendo usados dentro de un Linux?
Otro de los principales problemas que muchas veces nos encontramos en un entorno *nix es el que un archivo esté bloqueado por uno u otro motivo, y en ocasiones es difícil el saber qué proceso - y más si es de otro usuario - lo está utilizando.
Para ello, tenemos el omnipotente lsof, que tanto a nivel de fichero...
... como a nivel de usuario ...
... podemos saber quién está utilizando el qué, y a partir de ahí poder realizar las acciones correctivas que necesitemos.
- ¿Cómo saber qué servicios están arrancados y en uso dentro de un Linux?
Por último, los servicios - o demonios, según el día que tengan - son como esos programas de inicio que tenemos en Windows y que nos permite utilizar la impresión, digitalización de imágenes y más opciones. En linux, es más sencillo definirlo y verlo, simplemente lanzando un:
root@debian:~# service --status-all
... permitiendo ver qué servicios están en funcionamiento (+) o parados (-):
... pudiendo a posteriori lanzar un status para cada uno de los servicios y arrancar a medida que fuera necesario.
Y ya para terminar, si todavía no lo has visto, te recomiendo que eches un ojo a la Serie de "Hacking Ético" que he empezado a hacer en mi canal de YouTube, cualquier recomendación es más que agradecida! Te dejo aquí abajo el primer vídeo.
¡Nos vemos por los Bits!