Ir al contenido


Foto

IP Blacklist en linux


  • Por favor identifícate para responder
5 respuestas en este tema

#1 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 06 septiembre 2014 - 04:44

Recientemente he alquilado un servidor dedicado (Atom™ N2800 1.86 GHz+ 4 GB 1 TB) y le he instalado debian. La primera preocupación que tuve es proteger mi pequeño servidor en esta jungla que es internet  y así es como descubrí esta maravillosa herramienta UncomplicatedFirewall (ufw) que basicamente es un "frontend" que permite manejar el firewall integrado en el kernel de linux usando comandos realmente simples.

Por ejemplo:


delphi
  1. ufw deny 22
  2. ufw allow 22
  3. ufw deny from 220.60.90.55 to any por 22



Así de sencillo es bloquear un puerto, una ip, etc ...

El siguiente paso es añadir reglas a nuestro firewall, para esto recomiendo el programa fail2ban que monitoriza los ficheros de logs en busca de ataques y añadirá las "malas" IPs a la lista de baneados de nuestro firewall, pudiendo programar la duración del "castigo" para que les saque el baneo después de un tiempo prudencial.

Hasta aquí es una instalación típica (ufw + fail2ban) que podéis encontrar en cientos de tutoriales de internet.

Mi pequeña contribución es la siguiente.

En la pagina https://www.badips.com/get/list/ssh/1 podemos descargarnos una lista actualizada de IPs que han tenido un "mal comportamiento", así que podemos hacer un script que las añada a nuestro firewall:


delphi
  1. curl https://www.badips.com/get/list/ssh/2 > blacklist.txt
  2. ufw status > status.txt
  3. ./badip status.txt blacklist.txt > add.sh
  4. sh add.sh



La primera linea descarga la lista actualizada de internet, luego guardamos una lista con las reglas que se aplican actualmente en el firewall, comprobamos que nuevas IPs hay en la lista y las añadimos. De la ultima parte, la de comprobar que IPs se han añadido y generar los comandos necesarios se encarga el siguiente programa en freepascal:



delphi
  1. program badip;
  2.  
  3. uses Sysutils, Classes;
  4.  
  5. var
  6.   Str: String;
  7.   Blacklist: Text;
  8. begin
  9.   if ParamCount <> 2 then
  10.     Halt;
  11.  
  12.   with TStringList.Create do
  13.   try
  14.     Sorted:= TRUE;
  15.     Duplicates:= dupIgnore;
  16.     if FileExists(ParamStr(1)) then
  17.     begin
  18.       AssignFile(BlackList,ParamStr(1));
  19.       {$i-}
  20.         Reset(BlackList);
  21.       {$i+}
  22.       if IOResult = 0 then
  23.       try
  24.         while not EOF(BlackList) do
  25.         begin
  26.           Readln(BlackList,Str);
  27.           if Copy(Str,1,39) = 'Anywhere                  DENY        ' then
  28.             Add(Copy(Str,40,MAXINT));
  29.         end;
  30.       finally
  31.         CloseFile(BlackList);
  32.       end;
  33.     end;
  34.  
  35.     AssignFile(BlackList,ParamStr(2));
  36.     {$i-}
  37.       Reset(Blacklist);
  38.     {$i+}
  39.     if IOResult = 0 then
  40.     try
  41.       while not EOF(BlackList) do
  42.       begin
  43.         Readln(BlackList,Str);
  44.         if IndexOf(Str) < 0 then
  45.           Writeln('ufw insert 1 deny from  ' + Str);
  46.       end;
  47.     finally
  48.       CloseFile(BlackList);
  49.     end;
  50.   finally
  51.     Free;
  52.   end;
  53.  
  54. end.



En resumen tenemos el servidor fortificado usando ufw + fails2ban + badips  (h)

Solo tenemos que tener el cuidado de ejecutar el script peridicamente para mantener a los malos a raya.

Saludos
  • 0

#2 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 17 septiembre 2014 - 10:07

Ya veo que no tuvo mucho exito este tema  :)

Pero de todas formas dejo por aqui lo que finalmente monte, ya que el uso de ufw se hacia demaisado lento para esta tarea (no esta pensado para eso).

Al final monte "ipset" que si que es la herramienta adecuada para hacer "blacklists"



delphi
  1. apt-get ipset
  2.  
  3. Creamos el set
  4. ipset create badips hash:ip family inet hashsize 8192 maxelem 65536
  5.  
  6. Añadimos la regla a las iptables
  7. iptables -I INPUT -m set --match-set badips src -j DROP
  8.  
  9. Añadimos ips a la lista negra
  10. ipset add badips 69.164.195.172



Y ahora la parte de hacerlo automatico. Me olvide de pascal  :( y hice un pequeño script en bash


delphi
  1. #!/bin/sh
  2.  
  3. cd /root/scripts/badips
  4. curl https://www.badips.com/get/list/ssh/2 -o blacklist.txt &> /dev/null
  5. ipset list badips > temp.txt
  6. echo 213.213.213.213 >> temp.txt
  7. grep -F -x -v -f temp.txt blacklist.txt > new.txt
  8. for ip in $(grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" new.txt); do
  9. echo add: $ip
  10. ipset add badips $ip
  11. done


* 213.213.213.213 es cualquier ip que queremos impedir que se añada a la lista negra.

Y listo, mas rapido y sencillo no puede ser

Saludos
  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.459 mensajes
  • LocationMéxico

Escrito 17 septiembre 2014 - 10:28

Vaya, no habia visto éste mensaje hasta ahora que lo actualizas, yo estoy pagando un servicio de Cloud en DigitalOcean donde le instalamos ubuntu ( ^o| creo, poliburro debería saber más que yo de eso) y ahí está sin usarse y sin verificarse, es decir, en estado silvestre :D

Me parece muy interesante.

Saludos
  • 0

#4 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 17 septiembre 2014 - 03:49

Vaya, no habia visto éste mensaje hasta ahora que lo actualizas, yo estoy pagando un servicio de Cloud en DigitalOcean donde le instalamos ubuntu ( ^o| creo, poliburro debería saber más que yo de eso) y ahí está sin usarse y sin verificarse, es decir, en estado silvestre :D


No conozco DigitalOcean ¿con que proposito lo contratasteis?

Yo cogi el mas barato que encontre  :D en OVH, uno de los que ofertan bajo la marca Kimsufi. Son muy baratos, servidores dedicados desde 5 Euros al mes (llegaron a ofertarlos a 3 Euros), pero hay que pillarlos al vuelo en cuanto queda alguno disponible hay alguien que lo contrata, casi nunca hay stock. Yo lo afronte como un reto, me hice un programa que consultaba el webservices de kimsufi y me avisaba al movil cuando quedaba uno disponible  (... si me aburro mucho  :D )

Al final no cogi el mas barato, sino el siguiente, el de 10 Euros, y si digo la verdad todavia no se que hacer con el. Le he instalado un debian, le he configurado el firewall (ufw + fail2ban + ipset) y le he puesto un servidor de Subversion para alojar mis proyectos, pero lo he dejado ahi. Tembien probe a montar un servidor web (nginx + php + mysql) y sobre el montar OwnCloud (parecido a dropbox pero OpenSource), pero una vez montado no le vi utilidad y lo desmonte todo (... ya dije que me aburro mucho  :D ...)

Pues a seguir jugando ¿alguna sugerencia de que montar en mi pequeño servidor?
  • 0

#5 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 17 septiembre 2014 - 04:04

Yo espero algún día aprender a mantener un servidor en Linux.  *-)
Y que en realidad DEBO aprenderlo y más temprano que tarde.  ^o| Si bien mi equipo actual es una máquina a la que se la podría atacar con mil peticiones y aún ronronearía  *-) no me arriesgaría a tenerla por siempre como servidor. En 1ra porque es una notebook de sus kilos, y otra que... vamos, que es para lanzar mi desarrollo profesional.

Algún día esta máquina tendrá sus hijitos y formará una familia en mi emprendimiento. Y para entonces los conocimientos que nos brindas, como éste, Domingo prefiero tenerlos como lecciones antes que jugarmelas a decir bueno... que se arregle solito en server.  ;)

Saludos,


  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.459 mensajes
  • LocationMéxico

Escrito 17 septiembre 2014 - 04:58

No conozco DigitalOcean ¿con que proposito lo contratasteis?


Pues, sólo para ver que era, pago 5 dolares al mes por el servicio, algún día lo usaré en algo :D

Yo cogi el mas barato que encontre  :D en OVH, uno de los que ofertan bajo la marca Kimsufi. Son muy baratos, servidores dedicados desde 5 Euros al mes (llegaron a ofertarlos a 3 Euros), pero hay que pillarlos al vuelo en cuanto queda alguno disponible hay alguien que lo contrata, casi nunca hay stock. Yo lo afronte como un reto, me hice un programa que consultaba el webservices de kimsufi y me avisaba al movil cuando quedaba uno disponible  (... si me aburro mucho  :D )

Al final no cogi el mas barato, sino el siguiente, el de 10 Euros, y si digo la verdad todavia no se que hacer con el. Le he instalado un debian, le he configurado el firewall (ufw + fail2ban + ipset) y le he puesto un servidor de Subversion para alojar mis proyectos, pero lo he dejado ahi. Tembien probe a montar un servidor web (nginx + php + mysql) y sobre el montar OwnCloud (parecido a dropbox pero OpenSource), pero una vez montado no le vi utilidad y lo desmonte todo (... ya dije que me aburro mucho  :D ...)

Pues a seguir jugando ¿alguna sugerencia de que montar en mi pequeño servidor?


Pues si alguien da alguna sugerencia, yo me anoto para hacer uso de ese Cloud que está sin uso práctico.

Saludos
  • 0




IP.Board spam blocked by CleanTalk.