Cómo monitorizar la actividad de red en un sistema Linux

Hay muchas razones por las que puede querer monitorizar la actividad de red en su sistema Linux. Puede que esté solucionando un problema de red, puede que quiera comprobar que no hay aplicaciones maliciosas creando una actividad de red sospechosa, o puede que simplemente quiera saber si algún proceso está llamando a casa. Cualquiera que sea la razón, aquí hay algunos métodos para ver qué procesos en su sistema están involucrados en la actividad de la red y con quién se están comunicando.

En este tutorial aprenderá:

  • Cómo supervisar las conexiones de red y los servicios de escucha con netstat
  • Cómo supervisar las conexiones de red y los servicios de escucha con lsof
  • Cómo supervisar las conexiones de red y los servicios de escucha con ifconfig
  • Qué herramientas puede utilizar para examinar los datos que se enviados por la red

Cómo supervisar la actividad de la red en un sistema Linux

Requisitos de software y convenciones utilizadas

Requisitos de software y convenciones de la línea de comandos de Linux
Categoría Requisitos, Convenciones o versión de software utilizada
Sistema Independiente de la distribución
Software netstat, lsof, ifconfig, wireshark, tcpdump
Otros Acceso privilegiado a su sistema Linux como root o mediante el comando sudo.
Convenciones # – requiere que los comandos de linux dados se ejecuten con privilegios de root, ya sea directamente como usuario root o mediante el uso del comando sudo
$ – requiere que los comandos de linux dados se ejecuten como un usuario normal sin privilegios

Netstat

Netstat es una potente utilidad que puede imprimir las conexiones de red, tablas de enrutamiento, estadísticas de interfaz, conexiones de enmascaramiento y membresías de multidifusión. Lo usaremos para lograr lo primero.

Instalación de Netstat

En Debian y sistemas basados en Debian como Ubuntu, use apt.

# apt install net-tools

En Red Hat Enterprise Linux y sistemas basados en Red Hat, use yum,

# yum install net-tools

En sistemas basados en Arch, use pacman.

# pacman -S net-tools
Buscando Analista de Sistemas Linux!
El Instituto Geofísico de la UAF, está buscando un Analista de Sistemas Linux con experiencia para unirse a su equipo de analistas e ingenieros de infraestructura cibernética de investigación. UBICACIÓN: Fairbanks, Alaska, USA
APPLY NOW
NOTA
En los siguientes ejemplos estamos usando una instalación fresca de RHEL 8 corriendo en VirtualBox con guest additions instaladas

Ver procesos de escucha

Primero, vamos a ver los procesos que están escuchando conexiones. Para ello introducimos el siguiente comando.

$ sudo netstat -tulpen

En este comando t muestra las conexiones TCP, u muestra las conexiones UDP, l muestra sólo los sockets de escucha, p muestra el programa al que pertenece la conexión,e muestra la información extendida, y n representa numéricamente las direcciones, usuarios y puertos.

netstat -tulpen output

Cuando se considera el modelo cliente-servidor en el que se basa la mayoría del software de red, los procesos de escucha pueden considerarse como software que está en modo «servidor». No hay nada sorprendente en la salida dada nuestra configuración. Estos son todos los procesos que se espera que estén escuchando conexiones de red en una instalación fresca de RHEL 8 que se ejecuta enVirtualBox.
Para cada proceso de escucha se puede ver el protocolo que se está utilizando, la dirección local y el puerto en el que está escuchando, el usuario bajo el que se está ejecutando, y el PID/nombre del programa. Hay una distinción importante a tener en cuenta aquí. Para las conexionestcp4/udp4(simplemente listadas comotcpyudp) donde elLocal Addressestá listado como0.0.0.0el proceso está escuchando conexiones desde cualquier máquina que sea capaz de conectarse a él a través de la red, mientras que cuando está listado como127.0.0.1sólo está escuchando conexiones en el localhost (la máquina en la que se está ejecutando o él mismo) y no puede ser conectado por otros ordenadores en la red. La misma distinción es cierta paratcp6/udp6cuando se compara unLocal Addressde::(frente a la red) y::1(sólo localhost).

Ver todas las conexiones de red

Ahora vamos a echar un vistazo a todas las conexiones de red actuales. Para ello introducimos el siguiente comando, que es similar al anterior salvo que utilizamos -a para ver todos los sockets en lugar de -l para ver sólo los sockets que están escuchando.

$ sudo netstat -atupen

Además de mostrarnos qué software tenemos escuchando conexiones como «servidores», este comando también nos muestra las conexiones actualmente establecidas con ese software y cualquier conexión de red establecida que tengamos utilizando un software que actúe como «cliente» como un navegador web.

netstat -atupen output

En la captura de pantalla se observan 2 conexiones en estadoESTABLISHED. Una vez más, no hay sorpresas aquí. Una de ellas pertenece a NetworkManager y funciona como cliente DHCP para habilitar la red desde el servidor de la puerta de enlace (en este caso, la máquina anfitriona). El otro es una conexión SSH a la máquina que hicimos después de reenviar el servicio ssh con VirtualBox. Si hubiéramos visto algo inesperado aquí, podría ser motivo de una investigación más profunda.

Ver conexiones establecidas

Puede que te encuentres en una situación en la que sólo quieras ver las conexiones ESTABLISHED. Esto es tan fácil como la tubería de la salida de netstat a grep así.

$ sudo netstat -atupen | grep ESTABLISHED

sudo netstat -atupen | grep ESTABLISHED salida

Entramos en el comando anterior después de navegar a wikipedia.com en firefox y la captura de pantalla captura las conexiones establecidas por firefox al llegar al sitio. Como se puede ver hay cuatro servidores a los que firefox se conectó; 91.198.174.192, 172.217.23.100, 216.58.215.67, y 104.111.215.142. Para ver a quién pertenecen estos servidores podemos consultar las direcciones ip con whois así.

$ whois 91.198.174.192| less

Haciendo esto para cada uno de ellos se revela que pertenecen a Wikimedia, Google, Google y Akamai respectivamente. Esto tiene sentido teniendo en cuenta que Wikimedia es la propietaria y anfitriona de la wikipedia y que es muy común que los sitios carguen recursos que están alojados en servidores propiedad de Google y Akamai. De hecho, el examen del código fuente de la página de inicio de la wikipedia revela que carga la insignia de la aplicación Google Play Store de google.com y la insignia de la aplicación Apple AppStore de apple.com.
La navegación a las urls de estas dos insignias de la aplicación individualmente y la emisión del comando netstat anterior verifica efectivamente que están alojados en servidores propiedad de Google y Akamai, respectivamente.

Si esto despertó su interés en netstat entonces tenemos un artículo que puede leer para Aprender más sobre el uso del comando netstat

ss

El comando netstat ha sido durante mucho tiempo un favorito de los sysadmins, sin embargo, recientemente ha sido reemplazado por el comando ss que se jacta de ser más rápido, más fácil y más legible que netstat. Veamos cómo realizar las mismas acciones que las realizadas anteriormente utilizando ss. Ss también tiene una opción -e para ver información ampliada, pero esa opción se ha omitido en los ejemplos siguientes porque produce información adicional que puede resultar en una salida menos legible.

Ver procesos de escucha

Para ver todos los procesos de escucha introduzca lo siguiente.

$ sudo ss -tlunp

En este comando t muestra TCP conexiones, l muestra sólo sockets de escucha, u muestra conexiones UDP, n representa direcciones, usuarios y puertos numéricamente, y p muestra el programa al que pertenece la conexión.

Ver todas las conexiones de red

Para ver todas las conexiones de red introduzca lo siguiente, donde a sustituye a l y muestra todos los sockets de red no sólo los de escucha.

$ sudo ss -taunp

Ver conexiones establecidas

Si no se incluye -a o -l entonces ss sólo mostrará las conexiones establecidas. Para ver sólo las conexiones establecidas introduzca lo siguiente.

$ sudo ss -tunp

lsof

Por si netstat y ss no fueran suficientes para usted, le presentamos lsof. Lsof se utiliza para listar los archivos abiertos. GNU/Linux heredó el principio de diseño de UNIX de que todo es un archivo; esto incluye las conexiones de red. Como resultado, lsof se puede utilizar para ver la actividad de la red de una manera similar a los comandos antes mencionados.

Ver todas las conexiones de red

Para ver todas las conexiones de red introduzca lo siguiente.

$ sudo lsof -nP -i

En este comando n representa las direcciones numéricamente, P representa los puertos numéricamente, y i suprime el listado de cualquier archivo abierto que no se considere de red.

Ver conexiones establecidas

Para ver sólo las conexiones establecidas introduzca lo siguiente donde los interruptores adicionales listan todas las conexiones establecidas TCP.

$ sudo lsof -nP -iTCP -sTCP:ESTABLISHED

Ver procesos en escucha

Para ver los procesos en escucha usando lsof introduzca lo siguiente.

$ sudo lsof -nP -iTCP -sTCP:LISTEN

Esto perderá cualquier proceso que esté en escucha a través de UDP, así que puede ser deseable introducir lo siguiente para incluirlos también.

$ sudo lsof -nP -i | grep 'LISTEN\|UDP'

Monitoreo de los datos que se envían a través de la red

Hemos visto cómo netstat, ss y ifconfig pueden ser utilizados para monitorear qué conexiones de red se están haciendo y a quién, pero a menudo es deseable ver exactamente qué datos se están enviando a través de la red. Para lograr este objetivo necesitamos aplicaciones que sean capaces de olfatear paquetes. Dos programas que se especializan en esta área son tcpdump y wireshark.
Hemos escrito previamente guías sobre cómo instalar wireshark en RHEL 8, Los fundamentos del analizador de protocolos de red Wireshark en Linux, Filtrar paquetes en Wireshark en Kali Linux, y la sección Network Monitoring de Monitorización de sistemas y hardware en Linux hecha eficiente incluye una buena introducción a tcpdump.

Conclusión

Deja una respuesta

Tu dirección de correo electrónico no será publicada.