Me apasiona la tecnología y disfruto de los retos informáticos. Me gusta la música; rock, jazz, blues, bossa y disfruto además de la comida y de viajar. Soy Gerente de Mantareys S. A. y soy un adicto a la Internet y el conocimiento.

Hace un tiempo atrás tuve la necesidad de proteger una central IP asterisk de ataques de fuerza bruza. Googleando un poco encontré varias aplicaciones que permiten cumplir con esta tarea a la perfección, pero en mis ganas de aprender algo nuevo opte por desarrollar algo propio, simple y eficiente que cumpla con este objetivo.

El problema era simple, debía leer un registro de eventos (log file), verificar los eventos que requería analizar cómo “password incorrecto”, “usuario fallido”, etc. y posteriormente identificar la IP que generó el evento y bloquearla con un comando via consola hacia el firewall.

Para esto mis recursos eran:

  • Servidor Asterisk
  • Registro de eventos (log file) de Asterisk
  • Firewall iptables instalado en el servidor
  • Servidor Apache+PHP 5
  • Tareas programadas en Linux (crontab)

Mi solución fue crear un script en php que pueda ejecutar por tarea programada y que lea el log de asterisk, identifique los eventos de password incorrectos, errores de inicio de sesión entre otros; y que al encontrar una coincidencia extraiga la “ip del agresor” y bloquee su acceso por iptables.

Para evitar que se bloquee los propios usuarios de la red interna del cliente, lo que hice fue crear una lista blanca (whitelist).

El script quedó bastante simple, pesa solo 4.25KB y posee 127 líneas bastante documentadas.

Si deseas conocer y descargar el script lo puedes encontrar en mi cuenta de GitHub.

Comments

  1. Hola amigo buen día
    Espero te encuentres bien

    Te cuento tengo una planta PBX con * pero ultimamente esta sufriendo múltiples ataques por fuerza bruta tengo configurado f2b que hace lo mismo que tu scrip, según entendi el f2b no puede bloquear dichos ataques por que sin super masivos crees que ese scrip me solucione?

Deja un comentario

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