Cómo Identificar y Bloquear Conexiones No Deseadas en Linux

Artículos Guías Manuales Sistemas Linux Windows Binario 0

tcp 0 0 192.168.1.251:443 45.190.255.114:59758 SYN_RECV - on (16.35/5/0)

El comando netstat -ptonau combina varias opciones para mostrar información detallada sobre las conexiones de red en tu sistema Linux.

  1. Protocolo (tcp): Indica el protocolo de red utilizado. En este caso, es TCP (Protocolo de Control de Transmisión).
  2. Columna de Recibidos/Enviados (0 0): Representa el número de bytes recibidos y enviados en esta conexión (ahora mismo ambos están en cero).
  3. Dirección local (192.168.1.251:443): Es la dirección IP y el puerto de tu máquina.
    • 192.168.1.251 es la dirección IP local.
    • 443 es el puerto que normalmente se usa para HTTPS.
  4. Dirección remota (45.190.255.114:59758): Es la dirección IP y puerto del cliente o servidor remoto con el que se está intentando establecer una conexión.
    • 45.190.255.114 es la IP del destino remoto.
    • 59758 es el puerto en el que el destino escucha o desde donde envía la solicitud.
  5. Estado de la conexión (SYN_RECV): Muestra que esta conexión está en el estado SYN_RECV, que significa "SYN recibido". Esto ocurre cuando tu servidor ha recibido una solicitud de conexión TCP (el paquete SYN), pero aún no ha completado el proceso de enlace (handshake de tres pasos). Es posible que el cliente no esté respondiendo correctamente o haya un problema de red.
  6. PID/Programa (-): Normalmente, esta columna muestra el identificador del proceso (PID) y el programa asociado. En este caso, aparece un guion (-), lo que puede indicar que no se pudo determinar el proceso que está manejando la conexión.
  7. Opciones avanzadas (on (16.35/5/0)): Estas cifras se refieren a estadísticas internas del kernel de Linux relacionadas con la retransmisión y los tiempos de espera de la conexión:
    • 16.35: El tiempo promedio de retransmisión en segundos.
    • 5: El número de retransmisiones realizadas.
    • 0: Probablemente, el tiempo en espera de la retransmisión o la cantidad de retransmisiones pendientes.

¿Qué significa todo esto?

Tu servidor (en la IP 192.168.1.251 y el puerto 443) está intentando completar una conexión TCP con un cliente remoto (45.190.255.114:59758). Sin embargo, parece que la conexión no está progresando debido a que está atascada en el estado SYN_RECV. Esto puede ocurrir por varias razones, como:

  • Problemas de red o alta latencia entre tu servidor y el cliente remoto.
  • Configuraciones de firewall o reglas de bloqueo en el cliente.
  • Ataques o intentos de conexión maliciosos (como un SYN flood).

Si sospechas de actividad maliciosa, podrías considerar revisar tus registros del firewall y herramientas como iptables o fail2ban para mitigar estos problemas.

1. Usar iptables para bloquear la IP remota

Si detectas que una IP específica (por ejemplo, 45.190.255.114) está realizando conexiones no deseadas, puedes bloquearla con este comando:

sudo iptables -A INPUT -s 45.190.255.114 -j DROP

Esto evitará que esa IP pueda establecer nuevas conexiones con tu servidor.

Para ver las reglas de iptables aplicadas:

sudo iptables -L -v

Si deseas eliminar la regla más adelante:

sudo iptables -D INPUT -s 45.190.255.114 -j DROP

2. Matar conexiones activas con tcpkill

Si tienes el paquete dsniff instalado, puedes usar tcpkill para cerrar conexiones activas:

sudo tcpkill -i eth0 host 45.190.255.114

Reemplaza eth0 con el nombre de tu interfaz de red (puedes obtenerla con ip a).

También puedes cerrar conexiones en un puerto específico:

sudo tcpkill -i eth0 port 443

3. Usar ss y kill para eliminar conexiones específicas

Primero, identifica las conexiones activas usando ss:

sudo ss -tanp

Busca el puerto o la IP que deseas cerrar y toma nota del PID asociado. Luego, mata el proceso responsable de esa conexión:

sudo kill -9 <PID>

4. Usar netstat con kill

Si prefieres seguir usando netstat, ejecuta:

sudo netstat -tunp

Esto te dará una lista de conexiones activas junto con el PID del proceso. Mátalo con:

sudo kill -9 <PID>

5. Automatizar el cierre con conntrack

Si tu sistema usa conntrack (para conexiones netfilter), puedes eliminar conexiones específicas de forma directa:

sudo conntrack -D -s 45.190.255.114

Esto cerrará todas las conexiones provenientes de la IP 45.190.255.114.

Nota de precaución

  • Usa estas herramientas con cuidado, ya que pueden interrumpir servicios legítimos.
  • Considera configurar un límite en la cantidad de conexiones permitidas por IP para evitar abusos en el futuro. Esto puede lograrse con reglas de iptables o mediante un firewall avanzado como ufw.

Si estás experimentando un ataque como un SYN flood, herramientas como fail2ban o sistemas de detección de intrusos (IDS) pueden ayudarte a mitigar estos problemas automáticamente.