Ver puertos abiertos con NMap y medidas para protegernos

Buen día.  Hoy les traigo unos pequeños tips,  vamos a ver los puertos abiertos que tengamos.  Para ello haremos uso de NMap por lo que procedemos a instalarlo.

En Debian/Ubuntu:

# apt-get install nmap

luego para ver los puertos abiertos en tu pc.  (En local)

#nmap localhost

Estos son los puertos que están abiertos en local, o sea que no necesariamente salen a internet.. En mi caso están abiertos el 22 que es de ssh y el 25 de smtp.

Para ver los puertos abiertos en mi pc pero en internet hago el mismo nmap pero con mi dirección ip

En mi caso sale que el host esta prendido pero no ve ningún puerto abierto (solo escanea 1000). Esto se debe a que aunque el puerto está en mi pc abierto, el Router lo está filtrando.

Pero si abro el puerto respectivo en el router…

El hecho de que puedan ver que puertos están abiertos en mi pc supone algún riesgo en mi máquina. Asi que voy asegurar un poco mi servidor ssh. Para ello voy a cambiar el puerto por defecto (22) por otro cualquiera…

Voy como root a el archivo /etc/ssh_config:

# nano /etc/ssh/ssh_config

vamos donde dice  # port 22 .. le borramos el # y cambiamos el puerto por el que queramos..

buscamos con CTRL-W.  Guardamos con CTRL-O  y ceramos con CTRL-C o CTRL-X

En mi caso voy a usar el 2222

Hacemos lo mismo buscando la palabra «port» en el archivo /etc/ssh/sshd_config  cambiándolo por el mismo puerto que vamos a usar. Ahora editamos /etc/services

Buscamos ssh y cambiamos los dos puertos por el que cambiamos antes.

Ahora reseteamos el servicio..

Y hacemos nmap de nuevo.

Como ven.  No sale nada referente e nuestro puerto y/o a el servicio ssh.

Pero el ssh funciona?

CLARO QUE SI.

Importante es que si vas a entrar desde otro ordenador tienes que indicar obviamente el puerto que estés usando..

ssh -p 2222 IP   (Por ejemplo)

Probablemente al usar el puerto 2222 salga con el nmap algo con Ethernet-PC .  Solo busquen otro puerto mayor a 1000 que no sea muy usado
Para ver listado de puertos y los servicios que corren, pueden ir aqui
Para más información acerca de nmap http://nmap.org/

Así puedes cambiar los puertos de otro servicios cualquiera..

Saludos.!


22 comentarios, deja el tuyo

Deja tu comentario

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

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   adiazc87 dijo

    Gracias por el dato, interesante.

  2.   Alf dijo

    ¿Y en castellano? jajajajajaja

    Esto es una ciencia, lo probé y ya no se conectó a internet, jaja, un amigo me ayudo a resolverlo después de leer el artículo en su lap, le gustó bastante y está instalando ubuntu en su laptop, cuando antes me decía que no era para el.

    Saludos

    1.    @Jlcmux dijo

      jaja No se que habrás movido mál.. Pero lo puse lo más explicito posible. Pero si quieres te hago un video. 🙂

  3.   Alf dijo

    Naaaaah, yo estoy negado para redes e inglés, tengo mucho tiempo queriendo aprender y realmente no he encontrado a un instructor que me tenga paciencia, imagínate.
    Enseñar a un hombre de 40 años como si tuviera 10, jajajaja

    1.    @Jlcmux dijo

      haha No es nada.. Con un hangout o algo asi.. Seguro que me entiendes.

      1.    chinoloco dijo

        Bienbenido sea ese hangout!!
        ^^

  4.   Mr.Linux dijo

    Compatriota , excelente aporte.

  5.   taregon dijo

    Me atrevo a lanzar este desafío a ver si no aparece el puerto 2222 o.O

    Ejecuten: sudo nmap -v -sS -A -p 1-65535 localhost

    PD: el escaneo sera lento… les añado la opción «-v» para que no se aburran viendo la terminal hacer nada.

    1.    @Jlcmux dijo

      Obvio si.. Pero yo estoy hablando de scanneo normal. El nmap tiene muchas opciones y características, sabiéndolo usar. ningún puerto se le escapa.

    2.    @Jlcmux dijo

      Además de que siempre hay una forma.. Sobretodo en linux, nada es totalmente seguro.. Es un pequeño tip solamente :p

      1.    taregon dijo

        Mi intención no era la de menospreciar la táctica de camuflaje pero es bueno el comando de nmap que deje para cuando uno no recuerde el puerto que se escogió como reemplazo al default (ya es dificil recordar ips y puertos…). En mi caso me ha tocado conectarme remotamente mediante VNC a pcs donde su puerto no es el típico 5900 o 5901; un escaneo normal me indicaría que no hay puerto de escucha para para vnc entonces, ¿cual es la solución? Respuesta: Usar nmap y forzarlo a indagar todos los puertos. 😉

        1.    @Jlcmux dijo

          Claro, no me senti ofendido ni mucho menos, Sabemos que todo no es totalmente seguro. Solo hay niveles de seguridad. Y siempre hay algo más allá.. siempre hay algo que vulnere la seguridad. Es un buen aporte, Podrias hacer un pequeño tuto de nmap. 🙂 Saludos.

  6.   hexborg dijo

    Un complemento perfecto para el post anterior. No sé si lo habéis hecho a propósito, pero os ha quedado genial. 🙂

  7.   javitopir dijo

    Esto es solamente seguridad por obscuridad, desgraciadamente con la opción -v del nmap te identifica que el puerto que pusiste corresponde al nmap. Para intentar protegerse del nmap hay que utilizar reglas de iptables, que tampoco pueden proteger del todo un escaneo. Pero bueno, sirve contra novatos del hacking…

  8.   jpablo dijo

    Buenas, una pregunta, no entiendo por qué nmap no saca el puerto después de haberlo cambiado, es que trae un rango de puerto a escanear por defecto?

    1.    @Jlcmux dijo

      Si, nmap por defecto scanea 1000 puertos.. Si sabemos manejarlo no basta con esto para proteger el ssh o cualquier otro servicio de las garras de nmap. Lo mejor seria un fail2ban y un psad.

  9.   martin dijo

    @Jlcmux
    Permitime hacer unas correcciones sobre lo que posteaste, voy corrigiendo por partes:

    1.
    «Estos son los puertos que están abiertos en local, o sea que no necesariamente salen a internet.. En mi caso están abiertos el 22 que es de ssh y el 25 de smtp.»
    Esto no es tan así. Esos son los puertos que están abiertos en el anfitrión que escaneás dentro del rango de los primeros 1024 puertos, que es el rango que escanea de forma predeterminada NMAP.

    «Estos son los puertos que están abiertos en local, o sea que no necesariamente salen a internet.. »
    Deberías aclarar que la única forma en que no «salgan» a la net es estando tu máquina en una red nateada (el NAT por definición propia es a su vez un firewall primitivo) y siempre y cuando los puertos no estén abiertos en el dispositivo que haga de NAT (generalmente el router) y redirigidos (FORWARDING) dichos puertos abiertos a tu máquina.
    Por supuesto que si la máquina está conectada directamente al modem entonces SI está expuesta a la net.
    Al comando que publica @taregon, que es el correcto para scannear y pinchar todos los puertos de una máquina, se le puede agregar, entre otras opciones, -sV para que nmap trate de descubrir qué servicio corre en cada puerto: sudo nmap -v -sS -sV -A -p 1-65535 localhost
    Ejemplo:
    Starting Nmap 6.25 ( http://nmap.org ) at 2012-12-06 13:39 ART
    Nmap scan report for localhost.localdomain (127.0.0.1)
    Host is up (0.00021s latency).
    Not shown: 999 closed ports
    PORT STATE SERVICE VERSION
    631/tcp open ipp CUPS 1.6
    2222/tcp open ssh OpenSSH 6.1 (protocol 2.0)

    2.
    «El hecho de que puedan ver que puertos están abiertos en mi pc supone algún riesgo en mi máquina. Asi que voy asegurar un poco mi servidor ssh. Para ello voy a cambiar el puerto por defecto (22) por otro cualquiera…

    Voy como root a el archivo /etc/ssh_config:

    # nano /etc/ssh/ssh_config

    vamos donde dice # port 22 .. le borramos el # y cambiamos el puerto por el que queramos..»

    NO! Una cosa no tiene nada que ver con la otra!
    /etc/ssh/ssh_config maneja sólamente las opciones del cliente por lo que el puerto que setees allí va a ser el que el cliente de ssh use de forma predeterminda para conectarse con servidores ssh en vez del puerto 22.

    El cambio de puerto de escucha que buscás lo hacés únicamente cambiando la opción citada en el archivo /etc/ssh/sshd_config.

    Por último, con esta herramienta web podemos testear qué puertos están o no abiertos en nuestra máquina, cuáles estan escondidos, comprobar que el echo de ping está desactivado y algunas cosas más: https://www.grc.com/x/ne.dll?bh0bkyd2

    Saludos.

  10.   Fenriz dijo

    Muy buena la reseña. me gust. thanks 😀

  11.   andres dijo

    Genial tutorial de nmap
    🙂 Saludos!!!

  12.   sera dijo

    compañeros alguien sabe como le puedo hacer para saber los puertos abiertos de otra persona??? desde mi computadora???

    1.    Adrian dijo

      Usa el comando: nmap X.X.X.X
      Donde las x’s son la ip de la computadora a escanear

  13.   Adrian dijo

    Hola, antes que nada gracias por compartir.
    Tengo un problema, ojala me puedan ayudar: Al hacer un nmap con mi ip desde la misma maquina me indica que el puerto 3306 esta abierto y con netstat veo que el pùerto esta en escucha; sin embargo al hacer hacer un scan con nmap desde otra pc no me indica el puerto 3306 abierto.
    Ademàs ya cambiè el bin-address a 0.0.0.0
    Estoy tratando de conectar una aplicacòn en java con una BD en un servidor LAMP y la aplicaciòn funciona pues ya he hecho consultas en otra pc donde montè un servidor wamp para pruebas y todo ok.
    Alguna idea? no sè que màs hacer