Linux en español
Ayuda

Netstat: Obtener IPs únicas y conexiones activas en servidor web

netstat

En computación, netstatnet work stat istics) es una herramienta de línea de comandos que muestra las conexiones de red (tanto entrantes como salientes), tablas de enrutamiento y varias interfaces de red (controlador de interfaz de red o interfaz de red definida por software) y estadísticas de protocolo de red. . Está disponible en sistemas operativos similares a Unix que incluyen OS X, Linux, Solaris y BSD, y está disponible en sistemas operativos basados ​​en Windows NT que incluyen Windows XP, Windows Vista, Windows 7 y Windows 8.

Se utiliza para encontrar problemas en la red y para determinar la cantidad de tráfico en la red como una medida de rendimiento.

más frecuente utilizada para monitorear las conexiones de red en servidores Linux. netstatdevuelve una variedad de información sobre conexiones activas, como su estado actual, qué hosts están involucrados y qué programas están involucrados. También puede ver información sobre la tabla de enrutamiento e incluso obtener estadísticas sobre sus interfaces de red. netstates una buena utilidad versátil y es una herramienta esencial para los administradores de Linux.

Si solo escribe netstat, mostraría una larga lista de información que generalmente es más de la que desea revisar en un momento dado. El truco es que la forma de mantener la información útil y lo que está buscando y cómo contar netstatsolo muestra esa información.

Los usuarios también pueden usar el man netstatcomando para obtener netstatayuda detallada y un manual donde hay muchas opciones configurables y marcas para obtener listas y resultados significativos.

El Santo Grial de netstat – Mi camino

Mis requerimientos son simples:

  1. Quiero ver a todos los usuarios conectados a mi servidor
  2. Solo quiero ver usuarios en el puerto 80 (http)
  3. Quiero ver el número total de conexiones por IP
  4. No quiero ver la IP de mi propio servidor en la salida
  5. Quiero ordenarlos de Max a Min.

Los siguientes comandos harán justamente eso. Estoy usando las cosas habituales de netstatty. Voy a romper cada comando a medida que avanzo:

Mostrar conexiones activas – TCP y UDP Internet (sin servidores)

En primer lugar, solo verificamos las conexiones TCP y UDP activas.

-ntu = Conexiones TCP y UDP en orden numérico (sin servidores).

Mostrar todas las conexiones activas – (/ w servidores y establecidos)

Bueno, eso es bueno. Pero, ¿cómo sé qué puertos estoy escuchando? Necesito esa causa. Quiero verificar que mi servidor no esté escuchando ningún puerto funky. Si lo hace, entonces tengo servicios mal configurados o mi servidor está comprometido.

Así que solo añadiré ‘ -a ‘ flag en este comando.

-antu = Todas las conexiones TCP y UDP en orden numérico (con servidores y establecidos)

He visto demasiadas guías donde la gente usa un plan «indicador». -a «Ya incluye todo» -l , no es obligatorio.

Mostrar todas las conexiones activas al servidor web

Ahora que tengo un rendimiento decente, puedo empezar a trabajar en ello. En esta salida en particular, obtuve todas las clases de conexiones de Internet activas TCP y UDP en cada puerto abierto. Quiero restringirlo solo al puerto 80 (puerto HTTP). Usaré grep para reducir eso.

Bien, ahora veo conexiones de Internet TCP y UDP activas solo en el puerto 80. (De hecho, será todo TCP, ya que HTTP es un servicio TCP). Puede utilizar netstat -anu para enumerar las conexiones UDP.

Mostrar todas las conexiones activas al servidor web excluyendo las IP propias

Hasta ahora he logrado enumerar todas las conexiones TCP y UDP activas y filtrar mis resultados para el puerto 80. Pero puedo ver algunas entradas como las siguientes:

No quiero excluir eso ya que es solo una loopbackdirección. Estoy más interesado en ver IPs extranjeras conectadas a mi sitio web. Así que solo usaré grep -vpara excluir estas conexiones.

>> Salida de muestra

Mostrar todas las conexiones activas al servidor web – IP: solo puerto

Ahora quiero hacer más. Quiero excluir todo y solo listar direcciones IP extranjeras. Necesito algún tipo de filtro. awkEs exactamente la herramienta que necesito usar aquí. ¿Pero cómo sé qué campo filtrar?

Veamos una salida de muestra del comando anterior.

En la línea anterior, solo me interesa la IP extranjera 202.28.177.61. awkTiene la capacidad de hacer extracción de datos. Contemos los campos.

Tenga en cuenta que, 127.0.0.1:80 202.28.177.61:59818 se cuenta como un campo, ya que no tienen espacios.

Por lo tanto, intentemos enumerar el 5thcampo que contiene todas las direcciones IP extranjeras.

>> Salida de muestra

Mostrar todas las conexiones activas al servidor web – solo IP

La última salida me queda bien. Me las arreglé para enumerar sólo las direcciones extranjeras. Pero si observa detenidamente, verá que la misma IP extranjera aparece más de una vez en diferentes puertos. Es esencialmente el mismo usuario (o grupos de usuarios detrás del mismo proxy).

Vayamos un paso más allá, ahora quiero ver IPs extranjeras solo sin sus puertos de origen. Estaré usando cutpara eso. cutme permitirá cortar cada línea en el primer carácter de espacio y tomar la primera pieza.

Estoy usando -d: para avisar cutque estoy usando el (:)carácter de dos puntos como delimitador de campo.

Al usar -f1 Estoy diciendo corte para darme el primer campo (que es la dirección IP antes del carácter de dos puntos).

>> Salida de muestra

Mostrar todas las conexiones activas al servidor web – ordenadas y únicas

Ahora la salida contiene solo direcciones IP extranjeras. Ahora los necesitamos sort, y luego lo canalizamos al uniqcomando para que nos quedemos con una IP extranjera única de manera ordenada. También quiero que el uniqcomando cuente el número de conexiones por IP.

uniq -c contará el número total de conexiones por IP.

>> Salida de muestra

Mostrar todas las conexiones activas al servidor web – recuento de conexiones

Pero espera, uniq -ccontó y clasificó según las direcciones IP. Vamos a reorganizar esta lista para mostrar el número máximo a mínimo de conexiones por IP única (solo IPs extranjeras).

>> Salida de muestra

Mostrar todas las conexiones activas al servidor web – excluir las IP propias

Está todo bien hasta ahora. Pero puedo ver la IP de mi propio servidor en esa lista. (ie 127.0.0.1). Si solo puedo excluir eso, solo me quedarán las IPs extranjeras. Voy a utilizar grep -vpara excluir esa línea.

>> Salida de muestra

Recuento final de todas las IP activas al servidor web

Esto ahora está funcionando como yo quería. Hagamos un recuento final del número total de IP únicas conectadas a mi servidor.

>> Salida de muestra

wc -l ¿una línea cuenta?

Significa que tengo 768 IP únicas conectadas ahora mismo.

Recuento final de todas las conexiones activas al servidor web

Por último, pero no menos importante, quiero un recuento total de conexiones al puerto 80 de todas las direcciones IP extranjeras.

>> Salida de muestra

Eso significa que tengo 1847 conexiones abiertas ahora desde todas las IP externas al puerto 80 en mi servidor.

Conclusión

netstat es la herramienta más útil para detectar y determinar si un servidor está bajo DoS o DDoS attack (Distributed Denial of Service). Cada vez que un cliente se conecta a un servidor a través de la red, se establece y abre una conexión en el sistema. En un servidor ocupado de alta carga, la cantidad de conexiones conectadas al servidor se puede ejecutar en una gran cantidad hasta cientos, si no miles. Descubrir y obtener una lista de conexiones en el servidor por cada nodo, cliente o dirección IP es útil para la planificación del escalado del sistema y, en la mayoría de los casos, detectar y determinar si un servidor web está bajo ataque DoS o DDoS (Denegación de Servicio Distribuida) , donde una IP envía gran cantidad de conexiones al servidor. Para verificar los números de conexión en el servidor, los administradores y los webmasters pueden hacer uso del netstatcomando.

¿Creo que mi forma de usar netstates la mejor? ¡Absolutamente! ¿Por qué? Porque siempre me funcionó.

No sé si su servidor se está ejecutando en el puerto 80 o si está obteniendo DDoS en un puerto diferente (es decir, el puerto 25 o 443), pero el comando anterior cumple mi propósito en todo momento. Hay 10 formas diferentes de despellejar a un gato y a mi me gusta. He desglosado mi forma de usar el netstatcomando hasta el último trago y una vez que lo sigues de arriba abajo, te acostumbrarás y con el tiempo encontrarás tu propio comando perfecto.

Entradas relaccionadas

¿Qué se espera de Ubuntu en 2019?

Linux en Español

Pingüino Tux: ¿Por qué es la mascota oficial de Linux?

Diego García Cuesta

Apps para consultar el tiempo en Linux

Linux en Español

5 Libros sobre linux que debes leer

Diego García Cuesta

¿Qué es HTTP/2? Beneficios de su uso

Diego García Cuesta

¿Donde guardar las copias de seguridad de mis datos?

Diego García Cuesta