Cómo verificar si una interfaz de red está en modo promiscuo en Linux

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo verificar si una interfaz de red en Linux está funcionando en modo promiscuo. El modo promiscuo permite a una interfaz de red capturar todo el tráfico de red que recibe, independientemente de la dirección de destino, lo cual es esencial para la monitorización y el análisis de redes.

Explorará tres métodos diferentes para determinar el estado del modo promiscuo: utilizando el comando ip link show para inspeccionar las banderas de la interfaz, empleando el comando tcpdump para observar el comportamiento de captura de paquetes y examinando la configuración de la interfaz dentro del sistema de archivos /sys/class/net. Al completar estos pasos, adquirirá habilidades prácticas para verificar las configuraciones de las interfaces de red en un entorno Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/RemoteAccessandNetworkingGroup -.-> linux/ifconfig("Network Configuring") linux/RemoteAccessandNetworkingGroup -.-> linux/ping("Network Testing") linux/RemoteAccessandNetworkingGroup -.-> linux/ip("IP Managing") linux/PackagesandSoftwaresGroup -.-> linux/curl("URL Data Transferring") linux/PackagesandSoftwaresGroup -.-> linux/apt("Package Handling") subgraph Lab Skills linux/ls -.-> lab-558736{{"Cómo verificar si una interfaz de red está en modo promiscuo en Linux"}} linux/cat -.-> lab-558736{{"Cómo verificar si una interfaz de red está en modo promiscuo en Linux"}} linux/cd -.-> lab-558736{{"Cómo verificar si una interfaz de red está en modo promiscuo en Linux"}} linux/ifconfig -.-> lab-558736{{"Cómo verificar si una interfaz de red está en modo promiscuo en Linux"}} linux/ping -.-> lab-558736{{"Cómo verificar si una interfaz de red está en modo promiscuo en Linux"}} linux/ip -.-> lab-558736{{"Cómo verificar si una interfaz de red está en modo promiscuo en Linux"}} linux/curl -.-> lab-558736{{"Cómo verificar si una interfaz de red está en modo promiscuo en Linux"}} linux/apt -.-> lab-558736{{"Cómo verificar si una interfaz de red está en modo promiscuo en Linux"}} end

En este paso, aprenderá cómo verificar el estado del modo promiscuo de una interfaz de red utilizando el comando ip link show. El modo promiscuo es una configuración para un controlador de interfaz de red (NIC, por sus siglas en inglés) que le permite pasar todo el tráfico que recibe a la unidad central de procesamiento (CPU, por sus siglas en inglés), en lugar de solo los marcos (frames) a los que el controlador está específicamente destinado. Esto se utiliza a menudo para la monitorización y el análisis de redes.

Primero, abra la terminal si aún no lo ha hecho. Puede hacerlo haciendo clic en el icono de Xfce Terminal en el lado izquierdo del escritorio.

Ahora, usemos el comando ip link show para ver el estado de sus interfaces de red. Escriba el siguiente comando y presione Enter:

ip link show

Verá una salida similar a esta:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff

Busque la línea correspondiente a su interfaz de red principal, que generalmente se llama eth0 en este entorno. Examine las banderas (flags) dentro de los corchetes angulares (<>). Si PROMISC está presente en estas banderas, la interfaz está en modo promiscuo. En la salida de ejemplo anterior, PROMISC no está presente, lo que indica que eth0 no está en modo promiscuo.

El comando ip link show es una herramienta fundamental para inspeccionar las configuraciones de las interfaces de red en Linux. Comprender su salida, incluyendo las diversas banderas y estados, es crucial para la resolución de problemas y la administración de redes.

Haga clic en Continuar para pasar al siguiente paso.

Verificar con tcpdump -i

En este paso, utilizará el comando tcpdump para verificar el estado del modo promiscuo de una interfaz de red. tcpdump es un potente analizador de paquetes de línea de comandos. Puede capturar y mostrar los paquetes que se transmiten o reciben a través de una red. Cuando una interfaz está en modo promiscuo, tcpdump puede capturar todos los paquetes en el segmento de red, independientemente de su dirección de destino.

Primero, debe instalar tcpdump. Utilice el comando sudo apt install, de manera similar a como instaló htop en el laboratorio anterior.

sudo apt update
sudo apt install tcpdump -y

La bandera -y responde automáticamente "sí" a cualquier solicitud durante la instalación.

Ahora, usemos tcpdump para escuchar en la interfaz eth0. Utilizaremos la opción -i para especificar la interfaz y la opción -n para evitar las consultas DNS, lo que hace que la salida sea más limpia.

sudo tcpdump -i eth0 -n

Verá una salida que indica que tcpdump está escuchando en eth0.

tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type ETHERNET (100Mbps), snapshot length 262144 bytes

Si la interfaz está en modo promiscuo, tcpdump capturará todo el tráfico que detecte. Si no está en modo promiscuo, solo capturará el tráfico dirigido a su dirección MAC o el tráfico de difusión (broadcast) o multidifusión (multicast).

Para generar algo de tráfico, puede abrir otra ventana de terminal (o una nueva pestaña en su terminal actual) e intentar hacer ping a un sitio web, por ejemplo:

ping -c 4 google.com

Observe la salida en la terminal de tcpdump. Debería ver paquetes siendo capturados.

Importante: Para detener tcpdump, presione Ctrl + C en la terminal donde se está ejecutando tcpdump.

Si bien tcpdump en sí no indica explícitamente "modo promiscuo" en su salida inicial, su capacidad para capturar tráfico no dirigido específicamente a la interfaz es una forma práctica de confirmar si el modo promiscuo está activo. Si ve tráfico que no está relacionado con la comunicación de su propio sistema (como solicitudes ARP de otros dispositivos en el segmento de red), es una fuerte señal de que el modo promiscuo está activado.

Haga clic en Continuar para continuar.

Inspeccionar la interfaz en /sys/class/net

En este paso, explorará el sistema de archivos /sys para encontrar información sobre sus interfaces de red, incluyendo el estado del modo promiscuo. El sistema de archivos /sys es un sistema de archivos virtual en Linux que proporciona una forma de interactuar con el kernel y los controladores de dispositivos. Expone información sobre los dispositivos de hardware y su configuración.

Navegue hasta el directorio de interfaces de red dentro de /sys. Utilice el comando cd para cambiar su directorio actual:

cd /sys/class/net/

Ahora, liste el contenido de este directorio utilizando el comando ls:

ls

Verá una lista de sus interfaces de red, similar a la salida de ip link show. Debería ver eth0 y lo.

eth0  lo

Cada directorio aquí corresponde a una interfaz de red. Echemos un vistazo al interior del directorio de eth0:

cd eth0

Ahora, liste los archivos dentro del directorio eth0:

ls

Verá muchos archivos y directorios que contienen información sobre la interfaz eth0. Estamos interesados en el archivo que indica el estado del modo promiscuo. Esta información a menudo se encuentra en un archivo relacionado con las banderas (flags) o el estado del dispositivo.

Si bien el nombre exacto del archivo puede variar ligeramente dependiendo de la versión del kernel, un lugar común para encontrar esta información es examinando el contenido de archivos que podrían contener banderas o información de estado.

Intentemos leer el contenido de un archivo que podría indicar el estado o las banderas. Utilice el comando cat para mostrar el contenido de un archivo. Por ejemplo, podría buscar archivos llamados flags o similares.

cat flags

La salida del comando cat flags será un número hexadecimal. Este número representa una máscara de bits de varias banderas de interfaz. Para interpretarlo, normalmente tendría que consultar la documentación del kernel para las banderas específicas y sus valores de bits correspondientes. Sin embargo, para verificar específicamente el modo promiscuo, a menudo hay una forma más directa dentro de /sys.

Una forma más confiable de verificar el modo promiscuo dentro de /sys es buscar un archivo que indique explícitamente el recuento de la bandera de modo promiscuo. Este archivo suele llamarse flags o similar, y su contenido, cuando se interpreta correctamente, mostrará si la bandera de modo promiscuo está activada.

Volvamos al directorio /sys/class/net/eth0 si no estamos ya allí:

cd /sys/class/net/eth0

Ahora, examine el archivo flags nuevamente. El valor hexadecimal en el archivo flags representa varios estados de interfaz. Si bien interpretar directamente el valor hexadecimal requiere conocimiento de las banderas del kernel, la presencia de la bandera PROMISC en la salida de ip link show (del Paso 1) es una forma más amigable para el usuario de confirmar el modo promiscuo. El sistema de archivos /sys proporciona los datos crudos del kernel que utilizan herramientas como ip.

Para una comprobación directa dentro de /sys, normalmente buscaría un archivo que indique específicamente el recuento o estado del modo promiscuo. Sin embargo, en este entorno, la forma más sencilla de confirmar el modo promiscuo utilizando herramientas estándar es a través de ip link show como se demostró en el Paso 1. El sistema de archivos /sys proporciona los datos subyacentes, pero interpretarlos puede ser más complejo sin la documentación específica del kernel.

Este paso demuestra cómo el sistema de archivos /sys proporciona acceso de bajo nivel a la información del dispositivo. Si bien comprobar directamente el modo promiscuo a través de un solo archivo en /sys puede ser complejo, entender este sistema de archivos es valioso para el análisis avanzado del sistema Linux.

Haga clic en Continuar para completar este paso.

Resumen

En este laboratorio, aprendiste cómo verificar si una interfaz de red está en modo promiscuo en Linux utilizando el comando ip link show. Este comando muestra las configuraciones de las interfaces de red, y la presencia de la bandera PROMISC indica el modo promiscuo. También comenzaste a explorar el uso del comando tcpdump como otro método para verificar el estado del modo promiscuo capturando el tráfico de red.