Cómo detectar los puertos abiertos en nuestra computadora o router

El oficio del hacker incluye, entre una de sus tareas más comunes, el aprovechamiento (o la generación) de fallos en los servicios que las distintas aplicaciones abren con el “exterior”. Estos servicios abren puertos a través de los cuales es teóricamente posible obtener acceso al sistema.

En este mini-tuto aprenderemos un poco más sobre los puertos, cómo funcionan y cómo detectar qué puertos (lógicos) tenemos abiertos.


Un puerto es una forma genérica de denominar a una interfaz a través de la cual los diferentes tipos de datos se pueden enviar y recibir. Dicha interfaz puede ser de tipo físico, o puede ser a nivel de software (por ejemplo, los puertos que permiten la transmisión de datos entre diferentes compus) (ver más abajo para más detalles), en cuyo caso se usa frecuentemente el término puerto lógico.

Puertos físicos

Un puerto físico, es aquella interfaz, o conexión entre dispositivos, que permite conectar físicamente distintos tipos de dispositivos como monitores, impresoras, escáneres, discos duros externos, cámaras digitales, memorias pendrive, etc… Estas conexiones tienen denominaciones particulares.

Puerto serie y puerto paralelo

Un puerto serie es una interfaz de comunicaciones entre computadoras y periféricos en donde la información es transmitida bit a bit de manera secuencial, es decir, enviando un solo bit a la vez (en contraste con el puerto paralelo3 que envía varios bits a la vez).

Puerto PCI

Los puertos PCI (Peripheral Component Interconnect) son ranuras de expansión de la placa madre de una computadora en las que se pueden conectar tarjetas de sonido, de vídeo, de red, etc… El slot PCI se sigue usando hoy en día y podemos encontrar bastantes componentes (la mayoría) en el formato PCI.

Puerto PCI Express

El puerto PCI Express incorpora nuevas mejoras para la especificación PCIe 3.0 que incluye una cantidad de optimizaciones para aumentar la señal y la integridad de los datos, incluyendo control de transmisión y recepción de archivos, PLL improvements, recuperacion de datos de reloj, y mejoras en los canales, lo que asegura la compatibilidad con las topolgias actuales.

Puerto de memoria

A estos puertos se conectan las tarjetas de memoria RAM. Los puertos de memoria son aquellos puertos, o bahías, donde se pueden insertar nuevas tarjetas de memoria, con la finalidad de extender la capacidad de la misma.

Puerto inalámbrico

Las conexiones en este tipo de puertos se hacen, sin necesidad de cables, a través de la conexión entre un emisor y un receptor utilizando ondas electromagnéticas. Si la frecuencia de la onda, usada en la conexión, se encuentra en el espectro de infrarrojos se denomina puerto infrarrojo. Si la frecuencia usada en la conexión es la usual en las radio frecuencias entonces sería un puerto Bluetooth.

La ventaja de esta última conexión es que el emisor y el receptor no tienen porque estar orientados el uno con respecto al otro para que se establezca la conexión. Esto no ocurre con el puerto de infrarrojos. En este caso los dispositivos tienen que “verse” mutuamente, y no se debe interponer ningún objeto entre ambos ya que se interrumpiría la conexión.

Puerto USB

Es totalmente Plug & Play, es decir, con sólo conectar el dispositivo y “en caliente” (con la compu prendida), el dispositivo es reconocido, e instalado, de manera inmediata. Sólo es necesario que el Sistema Operativo lleve incluido el correspondiente controlador o driver. Presenta una alta velocidad de transferencia en comparación con otro tipo de puertos. A través del cable USB no sólo se transfieren datos; además es posible alimentar dispositivos externos. El consumo maximo de este controlador es de 2.5 Watts.

Puertos lógicos

Se denomina así a una zona, o localización, de la memoria de una computadora que se asocia con un puerto físico o con un canal de comunicación, y que proporciona un espacio para el almacenamiento temporal de la información que se va a transferir entre la localización de memoria y el canal de comunicación.

En el ámbito de Internet, un puerto es el valor que se usa, en el modelo de la capa de transporte, para distinguir entre las múltiples aplicaciones que se pueden conectar al mismo host, o puesto.

Aunque muchos de los puertos se asignan de manera arbitraria, ciertos puertos se asignan, por convenio, a ciertas aplicaciones particulares o servicios de carácter universal. De hecho, la IANA (Internet Assigned Numbers Authority) determina las asignaciones de todos los puertos comprendidos entre los valores [0, 1023]. Por ejemplo, el servicio de conexión remota telnet, usado en Internet se asocia al puerto 23. Por tanto, existe una tabla de puertos asignados en este rango de valores. Los servicios y las aplicaciones se encuentran incorporados en el listado denominado Selected Port Assignments.

¿Cómo detectar los puertos lógicos abiertos?

Fácil, hay que instalar el programan nmap, incorporado en los repositorios de todas las distros populares.

En Ubuntu, esto sería así:

sudo apt-get install nmap

Una vez instalado, sólo hay que ejecutarlo aclarando el IP o seudónimo de la computadora o router que queramos verificar. Así, por ejemplo, para verificar los puertos abiertos en tu compu, escribí:

nmap localhost

Para listar los puertos abiertos en tu router (en caso de que utilices uno), pasá su IP como parámetro, en vez de localhost. En mi caso, quedó así:

nmap 192.168.0.1

Nota: en caso de que detectes puertos y servicios que no necesites, es posible desactivarlos desactivarlos desinstalando el paquete correspondiente, configurando la aplicación o el router para que no usen ese puerto o, simplemente, dando de baja en los scripts de inicio aquellos servicios que desees desactivar.

Fuentes: Wikipedia


8 comentarios

  1.   alkan dijo

    Antes de usar nmap, creo que es mejor usar este comando netstat -an | grep ESCUCHAR, es más rapido porque no escanea los puertos abiertos, saludos!!

  2.   Usemos Linux dijo

    Epa! Me gustó. Lo voy a probar…
    Saludos! Pablo.

  3.   BachiTux dijo

    Muy buen tip y un poderoso comando por cierto!

  4.   gorlok dijo

    Iba a comentar lo mismo, pero quiero aclarar que hay una gran diferencia entre ambas cosas, y las dos son útiles e importantes.

    Con nmap podemos “scanear” un host remoto para ver qué puertos están abiertos, filtrados, cerrados, revisar redes/subredes completas, usar técnicas “stealth”, tratar de identificar al software y versión que implementa el servicio y el OS remoto, y muchísimo más.

    Por otro lado, con netstat podemos consultar el estado de los sockets “locales”. Ver qué sockets están escuchando, ver cuáles están conectados y con quién en ambos extremos (a qué proceso local, y a qué ip y puerto remoto), ver si hay sockets en estados especiales como TIME_WAIT o SYN_RECV (que puede indicar un ataque SYN FLOOD), y mucho más. Mi versión favorita del comando es: netstat -natp

    También podemos usar tcpdump o incluso telnet, para diagnosticar el estado de los puertos locales y remotos.

    Bueno, nada más felicitarlos otra vez por el blog. Siempre muy útil, práctico y creciendo. Saludos

  5.   Usemos Linux dijo

    Un fenómeno gorlok. Impresionante comentario y gran avatar!
    Saludos! Pablo.

  6. Gracias, no estaría mal buscar un tutorial para configurar un firewall de forma sencilla y gráfica en Linux para equipos domésticos bloqueando al estilo peerguardian los “boicoteadores” de torrents en qbittorrent yo uso http://www.bluetack.co.uk/config/level1.gz que no se si es la mejor opción. Y de momento no uso el firewall. Además de una manera detector de IPs intrusas para bloquearlas en el firewall, pues dificilmente se puede saber cuales son “buenas” y cuales las “malas” y debe de haber listas de bloqueo por ahi que desconozco.

  7.   NoSoloUnix dijo

    Muy interesante artículo, seguro que será de gran utilidad para muchas personas.

    Como me ha gustado mañana lo publicaré entre los mejores enlaces de la semana en nuestro blog (nosolounix.com).

    Un saludo!

  8.   Usemos Linux dijo

    Gracias!
    Te felicito x el blog!
    Un fuerte abrazo! Pablo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *