Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
21-08-2017, 04:35 (Lunes)
Inicio Ayuda Reglas Buscar Ingresar Registrarse
Noticias:
Liberada wifislax64-1.1 version final para descargar

Videos Downloader




+  Seguridad Wireless - Wifi
|-+  Equipos y materiales
| |-+  Puntos de acceso, routers, switchs y bridges
| | |-+  Openwrt & LEDE (Moderadores: jar229, Noltari, Pteridium, Tki2000)
| | | |-+  Script Banear direcciones IP contra ataques SSH (Openwrt BB 14.07)
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: 1 [2] 3 Ir Abajo Imprimir
Autor Tema: Script Banear direcciones IP contra ataques SSH (Openwrt BB 14.07)  (Leído 10615 veces)
arfonzo
**
Desconectado Desconectado

Mensajes: 46


Ver Perfil
« Respuesta #20 : 02-10-2014, 16:36 (Jueves) »

Una pregunta de novato total, ¿cómo se ejecuta un script?
¿Se crea el archivo en formato.sh y se ejecuta como el de la configuración de Movistar de Noltari?
Vale, creo que me voy aclarando un poco.
No se hace como lo de movistar, estoy casi seguro.
¿Donde se añade?, ¿desde luci o modificando algún archivo con vi?
Y sigo investigando:
¿Se mete en el apartado de reglas propias del cortafuegos?
En línea
Tki2000
Moderador
*
Desconectado Desconectado

Mensajes: 1704


Ver Perfil
« Respuesta #21 : 03-10-2014, 10:09 (Viernes) »

Una pregunta de novato total, ¿cómo se ejecuta un script?
¿Se crea el archivo en formato.sh y se ejecuta como el de la configuración de Movistar de Noltari?
Vale, creo que me voy aclarando un poco.
No se hace como lo de movistar, estoy casi seguro.
¿Donde se añade?, ¿desde luci o modificando algún archivo con vi?

Crea un fichero con vi y copia el contenido dentro.
Graba el fichero y házlo ejecutable con
Código:
chmod +x miscript.sh
Ejecútalo con ./miscript.sh &

Mi consejo sería ponerlo para ejecutarse en /etc/rc.local antes del exit 0 para que se ejecute inmediatamente al reiniciar el router.

Código:
/lugardondeesteelscript/miscript.sh &

exit 0

Y después hacer que se ejecute cada cierto tiempo mediante cron:

Nos vamos a System -> Scheduled Tasks y agregamos lo siguiente:

Código:
*/5 * * * * /lugardondeesteelscript/miscript.sh

Si quieres editarlo manualmente, el fichero está en /etc/contabs/root
Con lo anterior ejecutamos el script cada 5 minutos.

En línea

No habrás entendido algo, hasta que seas capaz de explicárselo a tu abuela...
Hacemos pantallas con píxeles casi invisibles, para luego ampliar la letra porque no la vemos... Bonita paradoja...
Creamos analfabetos tecnológicos con una velocidad pasmosa. Todo el mundo "maneja" tecnología, casi nadie sabe lo que tiene entre las manos, pero todo el mundo opina.
El analfabetismo, antes, pasaba desapercibido. Ahora, se transmite por Internet y las redes sociales.
arfonzo
**
Desconectado Desconectado

Mensajes: 46


Ver Perfil
« Respuesta #22 : 03-10-2014, 10:58 (Viernes) »

Una pregunta de novato total, ¿cómo se ejecuta un script?
¿Se crea el archivo en formato.sh y se ejecuta como el de la configuración de Movistar de Noltari?
Vale, creo que me voy aclarando un poco.
No se hace como lo de movistar, estoy casi seguro.
¿Donde se añade?, ¿desde luci o modificando algún archivo con vi?

Crea un fichero con vi y copia el contenido dentro.
Graba el fichero y házlo ejecutable con
Código:
chmod +x miscript.sh
Ejecútalo con ./miscript.sh &

Mi consejo sería ponerlo para ejecutarse en /etc/rc.local antes del exit 0 para que se ejecute inmediatamente al reiniciar el router.

Código:
/lugardondeesteelscript/miscript.sh &

exit 0

Y después hacer que se ejecute cada cierto tiempo mediante cron:

Nos vamos a System -> Scheduled Tasks y agregamos lo siguiente:

Código:
*/5 * * * * /lugardondeesteelscript/miscript.sh

Si quieres editarlo manualmente, el fichero está en /etc/contabs/root
Con lo anterior ejecutamos el script cada 5 minutos.



Ok, mil gracias, en cuanto llegue a casa lo pruebo.
Así da gusto hasta para un novato...

Edito, que a veces corro mucho y así tardo más.
¿cuando dices que lo grabe y luego te refieres a "/lugardondeesteelscript/", lo puedo grabar en /root/ o en algun otro sitio?
Cuando hice el escript de Noltari para imagenio copie directamente el "movistar.sh" ahí con el programa winSCP, imagino que así también valdra.
« Última modificación: 03-10-2014, 11:06 (Viernes) por arfonzo » En línea
arfonzo
**
Desconectado Desconectado

Mensajes: 46


Ver Perfil
« Respuesta #23 : 03-10-2014, 11:26 (Viernes) »

Vale, sigo intentando aprender, a ver si es algo así lo que tengo que hacer:

Abro la terminal por Putty
escribo "vi scriptbaneo.sh"
copio el contenido dentro: selecciono todo, Control+C, voy a Putty y pincho con botón derecho del raton.
escribo ":wq"

escribo "chmod +x scriptbaneo.sh
escribo "./scriptbaneo.sh

abro /etc/rc.local con el winSCP (seguro que hay otra manera, pero soy muyyy novato)
edito con winSCP es fichero añadiendo: "/lugardondeesteelscript/scriptbaneo.sh &" antes de la linea "exit 0"

¿lo he entendido bien?
Ahora solo me falta saber donde puedo colocar el script, es decir saber "/lugardondeesteelscript/", que es lo que preguntaba antes si puede ser en "/root/" o es mejor en otro sitio.

Gracias y disculpad la ignorancia.
En línea
Tki2000
Moderador
*
Desconectado Desconectado

Mensajes: 1704


Ver Perfil
« Respuesta #24 : 03-10-2014, 12:16 (Viernes) »

Vale, sigo intentando aprender, a ver si es algo así lo que tengo que hacer:

Abro la terminal por Putty
escribo "vi scriptbaneo.sh"
copio el contenido dentro: selecciono todo, Control+C, voy a Putty y pincho con botón derecho del raton.
escribo ":wq"

escribo "chmod +x scriptbaneo.sh
escribo "./scriptbaneo.sh

abro /etc/rc.local con el winSCP (seguro que hay otra manera, pero soy muyyy novato)
edito con winSCP es fichero añadiendo: "/lugardondeesteelscript/scriptbaneo.sh &" antes de la linea "exit 0"

¿lo he entendido bien?
Ahora solo me falta saber donde puedo colocar el script, es decir saber "/lugardondeesteelscript/", que es lo que preguntaba antes si puede ser en "/root/" o es mejor en otro sitio.

Gracias y disculpad la ignorancia.

Si quieres meterlo en /root/ está bien. Yo todas las configuraciones las meto en /etc/, pero cada uno tiene su sistema...
Ya que has usado el vi en el caso anterior, ¿no es casi mejor hacer vi /etc/rc.local desde la propia consola, en lugar de acceder al fichero en remoto con SCP?  Azn
En vi, si quieres "escribir y salir", puedes poner ":x" en lugar de ":wq".
En línea

No habrás entendido algo, hasta que seas capaz de explicárselo a tu abuela...
Hacemos pantallas con píxeles casi invisibles, para luego ampliar la letra porque no la vemos... Bonita paradoja...
Creamos analfabetos tecnológicos con una velocidad pasmosa. Todo el mundo "maneja" tecnología, casi nadie sabe lo que tiene entre las manos, pero todo el mundo opina.
El analfabetismo, antes, pasaba desapercibido. Ahora, se transmite por Internet y las redes sociales.
arfonzo
**
Desconectado Desconectado

Mensajes: 46


Ver Perfil
« Respuesta #25 : 03-10-2014, 12:50 (Viernes) »

Ok, pues probaré que tal.
entiendo entonces que antes de escribir "vi scriptbaneo.sh", tengo que entrar en /etc/ de este modo "cd/etc/", ¿no?
Y luego para editar desde vi, dentro de /etc/, escribo "vi rc.local", voy hasta la linea de antes de "exit 0" y pulso "a", añado "/etc/scriptbaneo.sh &" y luego despues de la linea "exto 0" pulso "enter" y escribo ":x" y ¿ya esta
lo de hacerlo desde winSCP es porque no he utilizado el vi en mi vida y no lo tenia muy claro, pero así aperndo.
Gracias majete.

Disculpa que te esté cosiendo a preguntas, pero es que en mi vida habia cacharreado con la informática más allá de rootear un android para mi hija (y para eso hay tutoriales hasta para torpes como yo) e instalar alguna cosa en windows.
« Última modificación: 03-10-2014, 12:57 (Viernes) por arfonzo » En línea
Tki2000
Moderador
*
Desconectado Desconectado

Mensajes: 1704


Ver Perfil
« Respuesta #26 : 03-10-2014, 13:26 (Viernes) »

Ok, pues probaré que tal.
entiendo entonces que antes de escribir "vi scriptbaneo.sh", tengo que entrar en /etc/ de este modo "cd/etc/", ¿no?
Y luego para editar desde vi, dentro de /etc/, escribo "vi rc.local", voy hasta la linea de antes de "exit 0" y pulso "a", añado "/etc/scriptbaneo.sh &" y luego despues de la linea "exto 0" pulso "enter" y escribo ":x" y ¿ya esta
lo de hacerlo desde winSCP es porque no he utilizado el vi en mi vida y no lo tenia muy claro, pero así aperndo.
Gracias majete.

Disculpa que te esté cosiendo a preguntas, pero es que en mi vida habia cacharreado con la informática más allá de rootear un android para mi hija (y para eso hay tutoriales hasta para torpes como yo) e instalar alguna cosa en windows.

En realidad en vi yo no utilizo la "a" de añadir, sino la "i" de insertar... las dos hacen lo mismo...  Grin
También puedes hacer vi /etc/scriptbaneo.sh y te ahorras el cambiar de directorio...
En línea

No habrás entendido algo, hasta que seas capaz de explicárselo a tu abuela...
Hacemos pantallas con píxeles casi invisibles, para luego ampliar la letra porque no la vemos... Bonita paradoja...
Creamos analfabetos tecnológicos con una velocidad pasmosa. Todo el mundo "maneja" tecnología, casi nadie sabe lo que tiene entre las manos, pero todo el mundo opina.
El analfabetismo, antes, pasaba desapercibido. Ahora, se transmite por Internet y las redes sociales.
arfonzo
**
Desconectado Desconectado

Mensajes: 46


Ver Perfil
« Respuesta #27 : 03-10-2014, 13:39 (Viernes) »

Ok, pues probaré que tal.
entiendo entonces que antes de escribir "vi scriptbaneo.sh", tengo que entrar en /etc/ de este modo "cd/etc/", ¿no?
Y luego para editar desde vi, dentro de /etc/, escribo "vi rc.local", voy hasta la linea de antes de "exit 0" y pulso "a", añado "/etc/scriptbaneo.sh &" y luego despues de la linea "exto 0" pulso "enter" y escribo ":x" y ¿ya esta
lo de hacerlo desde winSCP es porque no he utilizado el vi en mi vida y no lo tenia muy claro, pero así aperndo.
Gracias majete.

Disculpa que te esté cosiendo a preguntas, pero es que en mi vida habia cacharreado con la informática más allá de rootear un android para mi hija (y para eso hay tutoriales hasta para torpes como yo) e instalar alguna cosa en windows.

En realidad en vi yo no utilizo la "a" de añadir, sino la "i" de insertar... las dos hacen lo mismo...  Grin
También puedes hacer vi /etc/scriptbaneo.sh y te ahorras el cambiar de directorio...

Estoy buscando un emoticono de esos que hacen reverencias, pero no lo encuento, te pongo el de los aplausos:

 Angry

Mil gracias y ya posteraré como acaba el tema (si con las indicaciones que me estas dando no soy capaz, entonces habra que colgarme de las orejas en la plaza del pueblo como escarmiento)
En línea
arfonzo
**
Desconectado Desconectado

Mensajes: 46


Ver Perfil
« Respuesta #28 : 03-10-2014, 15:23 (Viernes) »

Ejecútalo con ./miscript.sh &


Cuando hago esto, Putty me contesta:
"root@OpenWrt:/etc# cat: can't open '/root/logfail2.log': No such file or directory
cat: can't open '/root/logfail2.log': No such file or directory"

Edito: ¿tengo qué crear primero el fichero logfail2.log?
« Última modificación: 03-10-2014, 16:03 (Viernes) por arfonzo » En línea
Tki2000
Moderador
*
Desconectado Desconectado

Mensajes: 1704


Ver Perfil
« Respuesta #29 : 03-10-2014, 16:26 (Viernes) »

Ejecútalo con ./miscript.sh &


Cuando hago esto, Putty me contesta:
"root@OpenWrt:/etc# cat: can't open '/root/logfail2.log': No such file or directory
cat: can't open '/root/logfail2.log': No such file or directory"

Edito: ¿tengo qué crear primero el fichero logfail2.log?

Pues eso parece.
Pon esto para crear el fichero vacío:
Código:
touch /root/logfail2.log
En línea

No habrás entendido algo, hasta que seas capaz de explicárselo a tu abuela...
Hacemos pantallas con píxeles casi invisibles, para luego ampliar la letra porque no la vemos... Bonita paradoja...
Creamos analfabetos tecnológicos con una velocidad pasmosa. Todo el mundo "maneja" tecnología, casi nadie sabe lo que tiene entre las manos, pero todo el mundo opina.
El analfabetismo, antes, pasaba desapercibido. Ahora, se transmite por Internet y las redes sociales.
arfonzo
**
Desconectado Desconectado

Mensajes: 46


Ver Perfil
« Respuesta #30 : 03-10-2014, 16:36 (Viernes) »

Hecho.
Ahora ejecuto no contesta nada, sigo adelante...
Mil gracias.
En línea
arfonzo
**
Desconectado Desconectado

Mensajes: 46


Ver Perfil
« Respuesta #31 : 03-10-2014, 16:45 (Viernes) »

 Angry pues parece que ya esta hecho...
Menos mal que Tki2000 ha estado al quite para evitar que hubiese metido la pata hasta el cuello, te debo una (o más).
Ahora ya tengo otras cosas en la cabeza para hacerle al router, pero primero leeré y después intentaré preguntar lo mínimo posible en el hilo que toque.

p.D. ¿Hay manera de comprobar que he hecho todo bien?
En línea
Tki2000
Moderador
*
Desconectado Desconectado

Mensajes: 1704


Ver Perfil
« Respuesta #32 : 03-10-2014, 21:35 (Viernes) »

Angry pues parece que ya esta hecho...
Menos mal que Tki2000 ha estado al quite para evitar que hubiese metido la pata hasta el cuello, te debo una (o más).
Ahora ya tengo otras cosas en la cabeza para hacerle al router, pero primero leeré y después intentaré preguntar lo mínimo posible en el hilo que toque.

p.D. ¿Hay manera de comprobar que he hecho todo bien?

La prueba rápida está en intentar hacer una sesión SSH y poner mal el password por lo menos dos veces. En cuanto se ejecute el script te prohibirá el acceso. Lo malo de eso es que no podrás mirar lo que ha pasado porque ya no te dejará entrar por SSH, a no ser que le cambies la IP al PC con el que intentas entrar al router...  Azn
En línea

No habrás entendido algo, hasta que seas capaz de explicárselo a tu abuela...
Hacemos pantallas con píxeles casi invisibles, para luego ampliar la letra porque no la vemos... Bonita paradoja...
Creamos analfabetos tecnológicos con una velocidad pasmosa. Todo el mundo "maneja" tecnología, casi nadie sabe lo que tiene entre las manos, pero todo el mundo opina.
El analfabetismo, antes, pasaba desapercibido. Ahora, se transmite por Internet y las redes sociales.
arfonzo
**
Desconectado Desconectado

Mensajes: 46


Ver Perfil
« Respuesta #33 : 03-10-2014, 22:30 (Viernes) »

Pues mañana pruebo cambiándole al portátil la ip a una estática sin usar y metiendo la pata dos veces y posteo el resultado.
De nuevo mil gracias (te estas inflando a ellas)
En línea
faio86
****
Desconectado Desconectado

Mensajes: 55



Ver Perfil
« Respuesta #34 : 04-10-2015, 16:26 (Domingo) »

Hola
nuestro Openwrt
1.¿seria sensible a un ataque con hydra ssh desde el exterior?  Sad Sad Sad Sad
2.¿O solo si lo configuramos abriendo puertos y tal para el exterior?
3.¿La configuración por defecto lo permite o no?
Espero que la respuesta sea que no. Lips Sealed Lips Sealed

Saludos.
« Última modificación: 05-10-2015, 12:45 (Lunes) por faio86 » En línea
mkfs
**
Desconectado Desconectado

Mensajes: 9


Ver Perfil
« Respuesta #35 : 09-01-2016, 20:14 (S?bado) »

vuenas cuando pruebo el script me da esto
cat: read error: Is a directory
lo tengo en la ruta /etc guardado cual es mi error
« Última modificación: 09-01-2016, 20:15 (S?bado) por mkfs » En línea
hardwarer
**
Desconectado Desconectado

Mensajes: 28


Ver Perfil
« Respuesta #36 : 07-03-2016, 14:49 (Lunes) »

Hola
nuestro Openwrt
1.¿seria sensible a un ataque con hydra ssh desde el exterior?  Sad Sad Sad Sad
2.¿O solo si lo configuramos abriendo puertos y tal para el exterior?
3.¿La configuración por defecto lo permite o no?
Espero que la respuesta sea que no. Lips Sealed Lips Sealed

Saludos.

Es sensible a hydra, banea la IP de la máquina que tenga hydra. Le da 2 intentos, al tercero, adios amigo.


ACTUALIZACION 07 MARZO 2016:

ACTUALIZACION 07 MARZO 2016:

Novedades:
Instalacion automatica en /root modificable desde dentro del archivo de instalacion.
Funcionamiento configurable para WAN o LAN o ambas.
Se instala automaticamente en el cron para iniciarse cada 10 minutos.

Instalacion:
Copiar al router los dos archivos instalar.pre y script fail2ban.sh a la carpeta /tmp o cualquier otra y ejecutar instalar.sh
# chmod 755 instalar.sh
#./instalar.sh
« Última modificación: 07-03-2016, 20:08 (Lunes) por hardwarer » En línea
hardwarer
**
Desconectado Desconectado

Mensajes: 28


Ver Perfil
« Respuesta #37 : 07-03-2016, 15:54 (Lunes) »

vuenas cuando pruebo el script me da esto
cat: read error: Is a directory
lo tengo en la ruta /etc guardado cual es mi error


Descarga la nueva version y editas los archivos instalar.sh y fail2ban.pre para que lo instale en /etc (si no lo instala en /root por defecto)

Archivos instalar.sh y fail2ban.pre:

https://drive.google.com/open?id=0Bw50IJmzFr-FcU9UeHNIMjNneUU
https://drive.google.com/open?id=0Bw50IJmzFr-FLWlsRzRjOEc1UTA


« Última modificación: 08-03-2016, 11:16 (Martes) por hardwarer » En línea
Tki2000
Moderador
*
Desconectado Desconectado

Mensajes: 1704


Ver Perfil
« Respuesta #38 : 30-05-2017, 18:57 (Martes) »

Ya que últimamente yo también he estado recibiendo ataques, a una de las redes que tengo por ahí perdida, y cumpliendo los deseos de hardwarer,
Animo a todos a modificar el script y mejorarlo o lo que sea.
Me he decidido a meterle mano a este script, que llevo usando desde hace tiempo, y no sé si lo habré mejorado o no, pero a mi me está sirviendo para parar muchos ataques.

He modificado el lugar del fichero de baneos, para no machacar la flash del router, y le he añadido la opción de almacenar el fichero de baneos en flash, para continuar por donde íbamos, y un fichero de IPs manuales, para poner a mano las que queramos banear indefinidamente.

No he elaborado el fichero de instalación, como hizo hardwarer. Es simplemente el script a pelo, en el que podemos definir las rutas de los distintos ficheros que vamos a usar.
En mi caso lo he instalado todo en /etc/fail2ban, ya que de esa forma lo guardo automáticamente cuando un backup de la configuración del router. Pero podéis grabarlo donde gustéis, siempre y cuando, cambiéis las rutas de los ficheros en el script.

El código es éste:

Código:
#!/bin/sh
#============================================================================================================
# SCRIPT
#============================================================================================================

# Script realizado por hardwarer, para el foro de seguridadwireless.net
# Este script detecta los intentos de conexion fallidos al servidor SSH, ya sea por contraseña erronea
# o por usuario no valido y protege el sistema baneando la IP de origen utilizando el cortafuegos de Linux Iptables.
# Tiempo de baneo configurable y tablas de baneo de IP permanentes al reinicio del sistema.
# Probado en OpenWrt 14.04 Barrier Breaker.

# Modificaciones Tki2000 (2017-05-15)
#
# 1.- El fichero de baneos se escribe en memoria RAM para no machacar la flash del router
# 2.- Si grabamos previamente un fichero de baneos, de la RAM a la flash, lo usará al inicio.
# 3.- Posibilidad de banear manualmente ips, además de las detectadas en el script, durante un tiempo indefinido.
# 4.- Las IPs repetidas, entre ficheros, no se tienen en cuenta nada más que una vez al banear. (2017-05-30)
#
# El fichero de baneos en la RAM, se encuentra por defecto en /tmp/banned.ips
# El fichero de baneos en la flash, se encuentra por defecto en /etc/fail2ban/banned.ips
# El fichero de baneos manual, se encuentra por defecto en /etc/fail2ban/banned_static.ips
# El formato del fichero de baneos manual, es de una IP por línea.
#
#============================================================================================================
#========================================== OPCIONES ========================================================

# Tiempo de baneo (en segundos). Transcurrido ese tiempo se desactiva el baneo y se quita la IP de la lista.
# 24 horas = 86400 segundos.

#ban_time=86400
# 86400 * 14 = 1209600
ban_time=1209600

# Definición de las rutas de los ficheros que se usan en el script.
# El fichero de banfile es el fichero de baneos y se maneja en memoria, para no machacar la flash del router.
# El fichero de banfile_stored es el fichero que podemos dejar grabado en la flash del router, para volver
#    a comenzar los baneos, por donde los dejamos. Previamente, antes de reiniciar el router debemos
#    grabar el fichero de la memoria, a la flash, claro.
# El fichero de banned_static, es un fichero para añadir manualmente ips que queramos desde el principio,
#    para banearlos de manera indefinida. El formato es de una IP por línea.

banfile="/tmp/banned.ips"
banfile_stored="/etc/fail2ban/banned.ips"
banfile_static="/etc/fail2ban/banned_static.ips"
fail2ban_running="/tmp/fail2ban.run"

# Funcionamiento en internet, red local o ambas. Descomentar la opcion deseada. Por defecto solo internet.
# input_wan_rule= Solo internet (defecto), input_lan_rule= Solo red local, input_rule funcionamiento en ambas redes.
# Si cambiamos este valor debemos reiniciar el router.

alcance="input_wan_rule"
#alcance="input_lan_rule"
#alcance="input_rule"

#=============================================================================================================
#===================================== COMPROBACION INICIAL ==================================================

# Comprobamos si acabamos de iniciar el router y en ese caso preelaboramos el fichero de baneos
# Modificación : Si tenemos un fichero grabado previo, lo usamos.
# Modificación : Si tenemos un fichero de ips para banear estático, preelaboramos el fichero de baneos.

if [ ! -f $fail2ban_running ]
then
   touch $fail2ban_running
  
   if [ -f $banfile_static ]
   then
      if [ -f $banfile ]
      then
         rm $banfile
      fi
      for x in `cat $banfile_static | awk '{print $1}' FS=":"`
      do
         echo 2100000000:$x >> $banfile
      done
   fi
  
   if [ -f $banfile_stored ]
   then
      for l in `cat $banfile_stored | awk '{print $2}' FS=":"`
      do
         exists=`cat $banfile | grep $l | wc -l`
         if [ "$exists" -lt 1 ]
         then
            fecha_actual=`date +%s`
            unban_date=`expr $fecha_actual + $ban_time`
            echo "$unban_date:$l" >> $banfile
         fi
      done
   fi

   # Si es la primera vez que lanzamos el script, debemos crear el fichero donde se guardan
   # las ips baneadas, si no lo hemos creado ya, en los procedimientos anteriores
   if [ ! -f $banfile ]
   then
      touch $banfile
   fi
  
   for x in `cat $banfile | awk '{print $2}' FS=":"`
   do
      iptables -I $alcance 1 -s $x -j LOG --log-prefix "--ATAQUE--FUERZA--BRUTA--";
      iptables -I $alcance 2 -s $x -j DROP;
   done
fi

#=============================================================================================
#====================== BANEO INTENTOS USUARIOS VALIDOS Y MAL PASSWORD =======================

# Comprobamos las conexiones y el numero de veces que el resultado ha sido "Bad password"

for i in `logread | grep "Child connection" | awk '{print $11}' | awk '{print $1}' FS=":"`
do
   brute=`logread | grep 'Bad password' | grep $i | wc -l`;

   # Si son mas de tres veces guardamos la IP en la variable "badip"
   if [ "$brute" -gt 3 ];
   then
      badip=`logread | grep "Bad password" | grep -m 1 $i | awk '{print $14}' | awk '{print $1}' FS=":"`

      # Comprobamos si la direccion IP ya esta en la lista de baneados:
      oldban=`cat $banfile | grep $badip | wc -l`;

      # Si la IP no aparece en la lista la anadimos a iptables.
      if [ "$oldban" -lt 1 ];
      then
         iptables -I $alcance 1 -s $badip -j LOG --log-prefix "--ATAQUE--FUERZA--BRUTA--";
         iptables -I $alcance 2 -s $badip -j DROP;

         # Por ultimo anadimos la IP al archivo de baneados "$banfile" y la hora a la
         # que terminara el baneo de esa IP en formato epoch (segundos desde 01-01-1970)
         fecha_actual=`date +%s`
         unban_date=`expr $fecha_actual + $ban_time`
         echo "$unban_date:$badip" >> $banfile;
      fi;
   fi;
done;

#================================================================================================
#============================== BANEO INTENTOS USUARIOS NO VALIDOS ==============================
# Comprobamos las conexiones y el numero de veces que el resultado ha sido "invalid shell"            

for i in `logread | grep "Child connection"|awk '{print $11}' | awk '{print $1}' FS=":"'`
do
   brute=`logread | grep -A 4 $i |grep "Login attempt for nonexistent" | wc -l`
   if [ "$brute" -gt 3 ];
   then
      badip=`logread | grep "Child connection" | grep -m 1 $i | awk '{print $11}' | awk '{print $1}' FS=":"`
      # Comprobamos si la direccion IP ya esta en la lista de baneados:
      oldban=`cat $banfile | grep $badip | wc -l`
      # Si la IP no aparece en la lista la anadimos a iptables.
      if [ "$oldban" -lt 1 ];
      then
         iptables -I $alcance 1 -s $badip -j LOG --log-prefix "--ATAQUE--FUERZA--BRUTA--";
         iptables -I $alcance 2 -s $badip -j DROP

         # Por ultimo anadimos la IP al archivo de baneados "$destino/logfail.log" y la hora a la
         # que terminara el baneo de esa IP en formato epoch(segundos desde 01-01-1970)
         fecha_actual=`date +%s`
         unban_date=`expr $fecha_actual + $ban_time`
         echo "$unban_date:$badip" >> $banfile;
      fi;
   fi;
done;


#================================================================================================
#======================== BORRADO DE BANEO TRANSCURRIDO EL TIEMPO ASIGNADO ======================

# Un bucle comprueba si alguno de los registros del fichero logfail2.log tiene una fecha anterior
# a la actual. En caso afirmativo borra las reglas de iptables y los registros del log.

fecha_actual=`date +%s`
for z in `cat $banfile`
do
   unban_time=`echo $z | awk -F ":" '{print $1}'`
   unban_ip=`echo $z | awk -F ":" '{print $2}'`
   if [ "$unban_time" -lt "$fecha_actual" ]
   then
      sed -i '/'$unban_ip'/d' $banfile
      unban_rule=`iptables -L -n --line-numbers|grep -m 1 $unban_ip|awk '{print $1}'`
      iptables -D $alcance $unban_rule
      iptables -D $alcance $unban_rule
   fi
done

Como siempre, usad estos datos, bajo vuestra propia responsabilidad.
« Última modificación: 30-05-2017, 19:02 (Martes) por Tki2000 » En línea

No habrás entendido algo, hasta que seas capaz de explicárselo a tu abuela...
Hacemos pantallas con píxeles casi invisibles, para luego ampliar la letra porque no la vemos... Bonita paradoja...
Creamos analfabetos tecnológicos con una velocidad pasmosa. Todo el mundo "maneja" tecnología, casi nadie sabe lo que tiene entre las manos, pero todo el mundo opina.
El analfabetismo, antes, pasaba desapercibido. Ahora, se transmite por Internet y las redes sociales.
eduperez
*****
Desconectado Desconectado

Mensajes: 168


Ver Perfil
« Respuesta #39 : 31-05-2017, 08:00 (Mi?rcoles) »

Dos sugerencias de mejoras:

  • A medida que se van añadiendo direcciones bloqueadas, la lista se puede hacer muy larga, y eso puede afectar al rendimiento; iptables no trabaja muy bien con grandes cantidades de reglas. Sería interesante reconvertir el script para usar ipsets (https://wiki.openwrt.org/doc/uci/firewall#ip_sets); es una manera de crear una regla "genérica" y después añadirle direcciones, y tiene mejor rendimiento con listas largas. Además, gestiona de manera automática la caducidad del bloqueo.
  • Yo también recibo ataques, y normalmente me llegan varios intentos seguidos desde una misma dirección, y después ya no me vuelve a aparecer esa dirección en los logs. Revisar los mensajes cada 5 minutos tiene el problema de que bloqueas el ataque cuando ya a acabado. Otra mejora que se podría hacer al script es recoger la salida de logread en vivo mediante una pipe, de manera que se bloqueasen las direcciones de manera inmediata.

A ver si encuentro un rato, y me pongo con esto...
En línea
Páginas: 1 [2] 3 Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Las cookies de este sitio web se usan para personalizar el contenido y los anuncios, ofrecer funciones de redes sociales y analizar el tráfico. Además, compartimos información sobre el uso que haga del sitio web con nuestros partners de redes sociales, publicidad y análisis web, quienes pueden combinarla con otra información que les haya proporcionado o que hayan recopilado a partir del uso que haya hecho de sus servicios
Si continúa navegando consideramos que acepta su uso. OK Más información | Y más
Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines
SMFAds for Free Forums