Cómo evitar un ataque de escaneo de puertos con PortScanDetector

A diario estamos a merced de individuos o máquinas que quieren acceder a nuestra información, ordenadores o simplemente quieren conocer nuestros pasos por internet, es por esto que debemos tener siempre en cuenta los riesgos tecnológicos a los que estamos expuestos. Una de la más popular vulnerabilidad que afrontamos en la actualidad es el ataque de escaneo de puertos, por lo que es conveniente aprender a protegernos del mismo y esto se puede hacerse fácilmente gracias a un script llamado PortScanDetector.

¿Qué es el ataque de escaneo de puertos?

El ataque de escaneo de puertos (portscan) es el proceso en el que se analiza automáticamente los puertos de una máquina conectada a la red con la finalidad de verificar cuáles puertos están abiertos, cerrados o cuenta con algún protocolo de seguridad, el resultado de este análisis permitirá que los intrusos puedan saber información como la composición de nuestra arquitectura, el sistema operativo de nuestros ordenadores y los posibles agujeros de seguridad que luego serán explotados por los atacantes.

Es importante destacar que los administradores de redes también utilizan el escaneo de puertos con la finalidad de crear mapas de vulnerabilidades que luego deben ser corregidas, entre las muchas herramientas para el escaneo de puertos destacan arp-scanNmap y Angry IP Scanner.

En el pasado se escribieron par de artículos muy interesante que nos permiten protegernos del ataque de escaneo de puertos, dichos artículos son Pasos para asegurar nuestro VPS y Consejos de seguridad para tu Linux (Servidor) en los que se dan consejos prácticos para asegurar nuestros servidores. En está ocasión queremos enseñar a realizar estos procesos de una manera más automática.

¿Qué es PortScanDetector?

Es un script de código abierto, desarrollado en python por Jacob Rickerd que permite detectar el escaneo de puertos en Linux, esto es posible gracias a que el script agrega reglas a nuestro iptables o firewalld que van registrando los paquetes TCP que se transmiten y los bloquean automáticamente en aquellos casos donde se han consultados más de 10 puertos, de esta sencilla manera nos aseguramos que nadie intente hacer un rastreo de todos nuestros puertos.

¿Cómo usar PortScanDetector?

PortScanDetector necesita python 2.7 para poder funcionar, luego simplemente debemos clonar el repositorio oficial de la herramienta y ejecutar el script python, automáticamente este estará analizando la red constantemente y bloqueando todos los posibles ataques. Los comandos para realizar los pasos mencionados anteriormente son los siguientes:

git clone https://github.com/Rickerd0613/PortScanDetector.git
cd PortScanDetector/
sudo python scanDetector.py

 



Lic. en Computación, Programador, Consultor ERP, Webmaster, Community Manager y apasionado por el Internet, tengo 8 años sumergido en el mundo del software libre, especializándome en el uso del software libre n las Empresas. La Libertad del Código es directamente proporcional al Crecimiento de una Organización

11 comentarios

  1.   Juan dijo

    PortScanDetector   master  sudo python scanDetector.py
    Traceback (most recent call last):
    File “scanDetector.py”, line 48, in
    firewalld()
    File “scanDetector.py”, line 20, in firewalld
    [“firewall-cmd”, “–list-all-zones”]):
    File “/usr/lib/python2.7/subprocess.py”, line 566, in check_output
    process = Popen(stdout=PIPE, *popenargs, **kwargs)
    File “/usr/lib/python2.7/subprocess.py”, line 710, in __init__
    errread, errwrite)
    File “/usr/lib/python2.7/subprocess.py”, line 1335, in _execute_child
    raise child_exception
    OSError: [Errno 2] No such file or directory

    Alguna Idea?

    1.    Cristian Abarzua dijo

      https://github.com/Rickerd0613/PortScanDetector/issues/2

  2.   Jorge Alvarez dijo

    Buenas tardes, al clonar y ejecutar me dio estos errores:
    python scanDetector.py
    Traceback (most recent call last):
    File “scanDetector.py”, line 48, in
    firewalld()
    File “scanDetector.py”, line 20, in firewalld
    [“firewall-cmd”, “–list-all-zones”]):
    File “/usr/lib/python2.7/subprocess.py”, line 566, in check_output
    process = Popen(stdout=PIPE, *popenargs, **kwargs)
    File “/usr/lib/python2.7/subprocess.py”, line 710, in __init__
    errread, errwrite)
    File “/usr/lib/python2.7/subprocess.py”, line 1335, in _execute_child
    raise child_exception
    OSError: [Errno 2] No such file or directory

    1.    Cristian Abarzua dijo

      Debes instalar firewalld

  3.   Jumi dijo

    hola, mi error en este caso es:
    File “scanDetector.py”, line 12
    print “Rule not there”
    ^
    SyntaxError: Missing parentheses in call to ‘print’. Did you mean print(int “Rule not there”)?

    1.    Anónimo dijo

      Jumi creo k el error k te da esta relacionado con la version de python que estas usando, el script esta basado en python 2.7 y por lo ke reportas parece k tienes instalada la version python 3.0(+).

    2.    cristian abarzua dijo

      Primero que nada tienes que crear las reglas en Firewalld – http://www.firewalld.org/documentation/ , este script solo trabaja cuando Firewalld está configurado y corriendo en tu equipo o servidor.

  4.   Yoan dijo

    Una pregunta Lagarto, una ves ejecutado el script, los cambios al firewall(en mi caso firewalld) kedan permanentemente configurados? Sabes de alguna manera de alguna manera de revertirlo en caso ke asi sea?

  5.   ice dijo

    Digo, no es mejor usar iptables, leer un poco, crear las reglas y listo?

  6.   nob1234 dijo

    hola, soy medio nob pero este script solo toma acciones en el caso que el escaneo de puertos sea tcp, o se me paso alguna parte importante de codigo del script donde toma acciones para una escaneo udp?

  7.   Jazz Escobedo dijo

    Se puede usar tambien para routers? Por ejemplo, un router mikrotik? (Digo, estaria genial ;D ), si saben como me pueden mandar un mensaje a jazz21103@gmail.com si es que pueden pasarme algun recurso o algo.

Deja un 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.