Tutoriales y Manuales
Entradas Mensuales
-
▼
2024
(Total:
1019
)
- ► septiembre (Total: 50 )
-
▼
febrero
(Total:
102
)
- El DJ serbio que se ha forrado recuperando dominio...
- La plaga de anuncios trampa con imágenes de famoso...
- Con una Raspberry Pi y un algoritmo de IA bloquea ...
- Hackean remotamente las impresoras 3D de Anycubic
- Disponible Kali Linux 2024.1 con 4 nuevas herramie...
- El ransomware Rhysida pide 3,6 millones de dólares...
- Browser In The Browser (BitB) sin marcos
- Botnet con Ubiquity EdgeRouter infectados
- Epic Games ha sido hackeada por Mogilevich: han ro...
- Amazon Prime Video incluirá anuncios en España a p...
- Samsung presenta una tarjeta microSD capaz de alca...
- El Bitcoin alcanza su valor más alto de los último...
- PlayStation despide a cientos de empleados y cance...
- Universal Music retira más canciones de TikTok e i...
- Novedades Tails 6.0
- Configurar una VPN con WireGuard y WireGuard-UI en...
- Configurar una VPN Site-to-Site con IPsec
- Influencers "Los Petazetaz" detenidos por violar y...
- Filtración datos personales titulares de las tarje...
- Energizer P28K: el móvil con la batería más grande...
- Lenovo presenta un prototipo de portátil con una p...
- Oppo presenta las Air Glass 3, sus gafas de realid...
- ¿Puede un malware ocultarse en una foto?
- Vulnerabilidades más aprovechadas para realizar at...
- Microsoft se une al club de Apple: diseñará sus pr...
- Nvidia supera las expectativas y sus ventas para c...
- Vuelve el grupo de ransomware LockBit
- Windows 11 aún no es compatible ni con Wi-Fi 7 ni ...
- Avast antivirus multada con 16,5 millones por alma...
- El cristal de las Apple Vision Pro se agrieta sin ...
- Consiguen hackear PlayStation Portal y ejecutar un...
- Google usará Reddit para entrenar su inteligencia ...
- Gemma, la nueva IA de código abierto de Google
- Menores de edad “venden” sus datos biométricos a W...
- Un pasajero en pleno vuelo publica en Reddit una i...
- Filtración programa integral de vigilancia global ...
- Un error en las cámaras domóticas Wyze permitió qu...
- Condenan a prisión en EE.UU. a una popular youtube...
- Más de 28.500 servidores correo Microsoft Exchange...
- Europol confisca los sitios del mayor grupo de ran...
- Microsoft anuncia su mayor inversión en España: 1....
- La Comisión Europea abre una investigación a TikTok
- Comisiones Obreras de España sufre un hackeo con l...
- La UE multará a Apple Music con 500 millones de eu...
- GhostTask: crea tareas programadas de forma sigilo...
- Acusan a X (Twitter) de recibir dinero de grupos t...
- LineageOS 21, la mejor ROM alternativa llega actua...
- KeyTrap: Vulnerabilidad crítica de diseño en DNS
- Europa dictamina que las puertas traseras en siste...
- Nothing Phone 2a: especificaciones, precio y diseño
- Se casa la pareja que solo se podía comunicar medi...
- Microsoft presenta su aplicación PC Manager para m...
- NVIDIA Chat with RTX, un chatbot de IA que se ejec...
- OpenAI presenta Sora, su nueva herramienta para ge...
- El ‘boom’ de los influencers de 10 años: el reto d...
- Suplantación del CEO utilizando la técnica de inte...
- Cuidado con enamorarte de una IA: son una trampa p...
- ChatGPT es el nuevo aliado de los grupos cibercrim...
- Las empresas empiezan a usar una herramienta de IA...
- Vuelve la fiebre por el Bitcoin: alcanza su máximo...
- Google, Meta y OpenAI anuncian medidas para identi...
- Vulnerabilidad crítica en Docker permite escapar d...
- Vulnerabilidad en el software Magician de Samsung SSD
- IA, pérdidas de trabajo y los despidos
- Filtrados los datos de 33 millones de pacientes fr...
- OnlyFake: identidades falsas de cualquier país
- Ovrdrive USB, el pendrive que se autodestruye
- Amazon es acusada de recomendar los productos más ...
- Descubren malware en mini-ordenadores vendidos en ...
- El cursor de tu ratón está torcido, y ha estado as...
- La telco mexicana Claro reconoce haber sufrido un ...
- Según Estados Unidos, los coches eléctricos chinos...
- Vulnerabilidad en productos Ivanti expone a miles ...
- Empresa de recuperación de datos avisa: «Pendrives...
- Rompen el cifrado BitLocker de Windows 10 y Window...
- Vulnerabilidad crítica que afecta a la mayoría de ...
- Apple presenta una IA de código abierto para edita...
- ¿Una botnet de DDoS con cepillos de dientes? No es...
- Vulnerabilidades en Cisco, Fortinet, VMware y QNAP
- Cómo ver todas las contraseñas de conexiones WiFi ...
- Google advierte por la creciente amenaza de empres...
- Operación Synergia de la Interpol arresta a 31 per...
- Roban 24 millones a una empresa suplantando al CEO...
- España gana el Ambassador World Cup 2023
- Cómo banear miles de direcciones IP's con ipset
- Facebook cumple 20 años
- Condenan a 40 años de cárcel al hacker que filtró ...
- Vulnerabilidad 0-day en el registro de eventos de ...
- Roban 15 millones de registros de Trello a través ...
- AnyDesk sufre una brecha de seguridad y recomienda...
- Importantes vulnerabilidades en el syslog() de la ...
- En España un ciberataque de ransomware deja sin si...
- Google cambiará el nombre de Bard a Gemini
- Google presenta ImageFX, su generador de imágenes ...
- Amazon anuncia el chatbot Rufus, un asistente de c...
- Demandan en España a Worldcoin, la empresa que esc...
- Binance filtra su código fuente e información conf...
- Microsoft ignoró avisos sobre un exploit de DALL-E...
- El impacto de la IA le está reportando millones de...
- Las SSD de 16 TB llegarán pronto
-
►
2023
(Total:
710
)
- ► septiembre (Total: 65 )
-
►
2022
(Total:
967
)
- ► septiembre (Total: 72 )
-
►
2021
(Total:
730
)
- ► septiembre (Total: 56 )
-
►
2020
(Total:
212
)
- ► septiembre (Total: 21 )
-
►
2019
(Total:
102
)
- ► septiembre (Total: 14 )
-
►
2017
(Total:
231
)
- ► septiembre (Total: 16 )
-
►
2016
(Total:
266
)
- ► septiembre (Total: 38 )
-
►
2015
(Total:
445
)
- ► septiembre (Total: 47 )
-
►
2014
(Total:
185
)
- ► septiembre (Total: 18 )
-
►
2013
(Total:
100
)
- ► septiembre (Total: 3 )
-
►
2011
(Total:
7
)
- ► septiembre (Total: 1 )
Blogroll
Etiquetas
Entradas populares
-
Después de ver qué es una vCPU y la diferencia entre núcleos (cores) e hilos en los procesadores, pasamos a explicar toda la nomenclatura d...
-
En el panorama en constante evolución de la seguridad de redes, OpnSense se ha convertido en una formidable solución de firewall. Nacido de...
-
Pese a que Gemini ofrece multitudes de opciones, recientemente, se ha dado a conocer una situación fuera de lo común. Hace unos días, un es...
Cómo banear miles de direcciones IP's con ipset
El firewall de Linux (IPTables) es de lo mejorcito que hay, tiene muy poca carga, es estable pero cuenta con un pequeño defecto cuando se almacenan «decenas o cientos de miles» de direcciones IP (lo que ocurre con SIPCheck, Fail2Ban o APIBan): se vuelve lento para aceptar o rechazar peticiones, algo que puede cargar bastante el sistema e incluso provocar problemas en las comunicaciones.
- ipset es una aplicación complementaria para el cortafuegos de Linux iptables. Permite configurar reglas para bloquear rápida y fácilmente un conjunto de direcciones IP, entre otras cosas.
- Permite optimizar el uso de conjuntos complejos de filtros utilizados con el cortafuegos de IPTables.
- Los IP Sets pueden mejorar significativamente el rendimiento del software IPTables de modo que sigue respondiendo incluso cuando varios miles de de entradas.
lsmod | grep ip_set
Si no se muestra ningún resultado, deberás cargar manualmente el módulo del núcleo ejecutando:
modprobe ip_set
Qué es ‘ipset’ y cómo funciona
El pequeño ‘ipset‘ es una herramienta fácil y sencilla, complementaria de IPTables que maneja una lista desordenada de direcciones IP como si fuera una única regla del firewall. Esto es (para que lo entendamos mejor), que cuando nuestro sistema recibe un paquete y tiene que comprobar si puede o no dejarlo pasar, recorre TODO el firewall, lo cual, si tenemos 100.000 direcciones IP bloqueadas, por cada paquete que reciba, tendrá que hacer 100.000 comprobaciones antes de dejarlo pasar, una carga bestial para un sistema que maneja miles de paquetes UDP por segundo como es un servidor de comunicaciones VoIP.
Por lo tanto, en lugar de una «lista ordenada» de reglas, ipset sirve para manejar un «conjunto» de IP, de manera que es 10.000 veces más rápido (utiliza una búsqueda hash) que preguntar: -«¿Está esta lista en el conjunto?» y buscar secuencialmente una IP en la lista ordenada, así que no es casualidad que cuando el número de direcciones IP a bloquear sea demasiado grande, es muchísimo mejor utilizar ipset, que IPTables.
Al final ipset debe estar conectado a IPTables para que puedan ser bloqueadas las direcciones IP guardadas en «el conjunto».
De manera que cuando un sistema nos envía un paquete, el firewall sigue
recorriendo sus líneas, pero una línea en particular dice: «Consulta el
conjunto listanegra» y esa línea pregunta al conjunto si está
la IP en él. La respuesta de ejecutar esa consulta es tan rápida como
una simple línea de IPTables, por lo que la mejora en velocidad es muy
interesante.
Instalación ipset
Ahora sí, lo primero que tenemos que hacer es instalar ipset con nuestro gestor de paquetes:
yum install ipset
o
apt-get install ipset
una vez esté instalado, ya podemos empezar a hacer pruebas:
Crear la lista
Primero creamos la lista que llamaremos ban, pudiendo trabajar tanto con rangos o como con IPs:
Rangos:
ipset create ban hash:net
IPs:
ipset create ban hash:ip
Esto quiere decir que si queremos bloquear redes usaremos el primero y si queremos bloquear IPs independientes usaremos el segundo, aunque si agregamos un rango a la lista nos agregará todas sus IPs una a una.
Nosotros usaremos la lista de tipo IP, la segunda opción de las anteriores, pero siéntete libre de usar cualquiera de las dos, teniendo en cuenta que en la segunda tendrás que indicar rangos y no IPs independientes.
1.- Creamos un conjunto de IPs al que vamos a llamar: ban
# Si queremos crear un conjunto con un timeout máximo de 1 hora
ipset create ban hash:ip timeout 3600
# Si no queremos que tenga timeout, basta con no ponérselo.
# ipset create ban hash:ip
2.- Una vez creado el «conjunto», podemos ver todos los conjuntos que tenemos:
ipset list
3.- A continuación, enlazamos el conjunto «ban» con nuestro iptables:
# Para dar de alta el conjunto 'ban' en el iptables:
iptables -I INPUT -m set --match-set ban src -j DROP
# Siempre podemos eliminar el conjunto del iptables con:
# iptables -D INPUT -m set --match-set ban src -j DROP
4.- Por último, tenemos que añadir las direcciones IP al conjunto mediante el propio comando ipset:
ipset add ban 248.248.248.247 timeout 30
ipset add ban 248.248.248.248 timeout 20
ipset add ban 248.248.248.249 timeout 10
La primera IP será eliminada en 30 segundos, la segunda en 20 y la tercera en 10.
Si no se le define un «timeout», utilizará el timeout general que se puso al crear el conjunto: 3600.
5.- Recuerda que para borrar manualmente una IP del conjunto:
ipset del ban 248.248.248.247
y de esta manera, hemos visto cómo podemos banear de forma automática a cientos de miles de direcciones IP sin preocuparnos de eliminarlas manualmente.
En nuestro firewall, tan sólo aparecerá una línea indicando que tiene que «dropear» aquellas direcciones del conjunto ‘ban’
iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0 match-set ban src
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination<code lang="bash" class="language-bash">
Bloquear una lista de rangos de red
Comienza creando un nuevo «set« (conjunto) de direcciones de conexiones de red. Esto crea un nuevo conjunto de «hash» de direcciones de red «net» llamado «myset»:
# ipset create myset hash:net
o
# ipset -N myset nethash
Añade al conjunto cualquier dirección IP que desee bloquear:
# ipset add myset 14.144.0.0/12
# ipset add myset 27.8.0.0/13
# ipset add myset 58.16.0.0/15
# ipset add myset 1.1.1.0/24
Finalmente, configura iptables para bloquear cualquier dirección de ese conjunto. Esta orden añadirá una regla en la parte superior de la cadena «INPUT» para que «-m» coincida con el conjunto llamado «myset» de ipset (--match-set) cuando es un paquete «src» y «DROP», descartándolo:
# iptables -I INPUT -m set --match-set myset src -j DROP
Bloquear una lista de direcciones IP
Comience creando un nuevo «conjunto» de direcciones IP. Esto crea un nuevo conjunto «hash» de direcciones «ip» llamado «myset-ip»:
# ipset create myset-ip hash:ip
o
# ipset -N myset-ip iphash
Añade cualquier dirección IP que desee bloquear al conjunto:
# ipset add myset-ip 1.1.1.1
# ipset add myset-ip 2.2.2.2
Finalmente, configura iptables para bloquear cualquier dirección de ese conjunto:
# iptables -I INPUT -m set --match-set myset-ip src -j DROP
Hacer que ipset sea persistente
El ipset que ha creado se almacena en la memoria y desaparecerá después del reinicio. Para que el ipset creado sea persistente, debe hacer lo que sigue.
Primero, guarda el ipset en /etc/ipset.conf:
# ipset save > /etc/ipset.conf
Luego activa ipset.service, que funciona de manera similar a iptables.service para restaurar las reglas iptables.
Bloquear con PeerGuardian y otras listas de bloqueo
La herramienta pg2ipset-gitAUR del autor de Maeyanie.com, junto con el script ipset-update.sh se pueden usar con cron para actualizar automáticamente varias listas de bloqueo. Actualmente, de manera predeterminada, se implementa el bloqueo de: país, nodo de salida tor y lista pg2 de Bluetrack.
Otras órdenes
Para ver los conjuntos:
# ipset list
o
# ipset -L
Para eliminar un conjunto llamado «myset»:
# ipset destroy myset
o
# ipset -X myset
Para eliminar todos los conjuntos:
# ipset destroy
Optimización
La herramienta iprangeAUR puede ayudar a reducir las entradas en ipset.conf fusionando rangos adyacentes o eliminando rangos superpuestos. Esto puede mejorar el rendimiento del enrutador/cortafuegos si el tamaño de la tabla es enorme. Esta herramienta también puede convertir una lista de nombres de servidores a IP.
Aunque ipset está diseñado para poder escalar bien, eso no significa que lo haga infinitamente. En particular, algunas países tienen espacios de direcciones IP muy grandes, lo que hará que el bloqueo geográfico sea ineficiente.
Características
Los conjuntos IP ofrecen diferentes tipos de estructuras de conjuntos que incluyen:
Tipos Explicación Ejemplo
- bitmap:ip utiliza un rango de memoria, donde cada bit representa una dirección IP y puede almacenar hasta 65535 entradas (red clase B). ipset add set1 192.168.0.1
- bitmap:ip,mac utiliza un intervalo de memoria en el que cada 8 bytes representan una dirección IP y una dirección MAC. Un tipo de conjunto bitmap:ip,mac puede almacenar hasta 65535 direcciones IP (red de clase B) con MAC. Sólo MAC de origen ipset add set2 192.168.1.1,00:01:23:45:67:89
- bitmap:port utiliza un rango de memoria, donde cada bit representa un puerto TCP/UDP. Un conjunto de tipo bitmap:port puede almacenar hasta 65535 puertos. ipset add set3 22
- hash:ip utiliza un hash para almacenar direcciones IP donde la coincidencia se resuelve almacenando los elementos coincidentes en una matriz y, como último recurso, haciendo crecer dinámicamente el hash. También se pueden almacenar direcciones de red del mismo tamaño en un conjunto de tipo hash:ip. ipset add set4 10.0.1.1
- hash:net utiliza un hash para almacenar bloques de red CIDR, que pueden ser de diferentes tamaños. Se utiliza la misma técnica para evitar choques que en el tipo de conjunto hash:ip. ipset add set5 192.168.1.0/24
- hash:ip,port es similar a hash:ip pero puedes almacenar en él pares de dirección IP y protocolo-puerto. Se admiten TCP, SCTP, UDP, UDPLITE, ICMP e ICMPv6 con números de puerto/tipos de ICMP(v6) y otros números de protocolo sin información de puerto. ipset add set6 192.168.1.1,icmp:ping
- hash:ip,port,ip puede almacenar direcciones IP, números de puerto y direcciones IP triples en un conjunto del tipo hash:ip,port,ip. ipset add set7 192.168.0.1,22,10.0.1.1
- hash:ip,port,net puede almacenar direcciones IP, números de puerto y direcciones de red triples en este tipo de conjunto. ipset add set8 192.168.0.1,22,10.0.1.0/24
- El tipo hash:net,port permite almacenar pares de dirección de red y número de puerto. ipset add set9 192.168.1.0/24,tcp:443
- hash:net,iface puede almacenar pares de dirección de red y nombre de interfaz. ipset add set10 192.168.1.0/24,red0
- list:set un tipo list:set puede almacenar otros conjuntos. Es como una unión ordenada de diferentes conjuntos. ipset add set1 set3 set5
Comandos
- ipset --flush {NombredelaCadena} # vacía una cadena definida
- ipset destroy {Nombre_de_la_cadena} # borra una cadena definida
- ipset destroy # borra todas las cadenas
- ipset save > /etc/ipset/ipset.conf # guarda las cadenas para que sobrevivan a un reinicio
- ipset -n list # muestra todos los conjuntos existentes
- ipset -t list # muestra más información y conjuntos
- ipset list # lista todos los conjuntos con más información
- ipset save > /tmp/ipsetbck # hace una copia de seguridad también en otros directorios
- ipset restore < /tmp/ipsetbck # restaura la copia de seguridad
- ipset -W viejo-conjunto nuevo-conjunto # renombra los conjuntos y copia el contenido del antiguo al nuevo conjunto
Ejemplos:
Agregar IP
Podemos indicar la IP concreta:
ipset add blacklist x.x.x.x
O agregar todas las IPs de un rango concreto, lo cual nos agregara cada IP independiente en a la lista:
ipset add blacklist x.x.x.x/24
La primera opción nos agrega la IP indicada:
# ipset list blacklist -t
Name: blacklist
Type: hash:ip
Revision: 4
Header: family inet hashsize 4096 maxelem 65536
Size in memory: 552
References: 2
Number of entries: 1
Y la segunda 255 IPs:
# ipset list blacklist -t
Name: blacklist
Type: hash:ip
Revision: 4
Header: family inet hashsize 4096 maxelem 65536
Size in memory: 11976
References: 2
Number of entries: 256
Error al agregar IP
Si intentamos agregar un rango en la lista que ya contiene una IP perteneciente a este se agregarán solo las IPs anteriores a esta que ya existe, descartando el resto y mostrando un error. Por ejemplo, imaginemos que ya existe la IP 87.246.7.74, si agregamos el rango 87.246.7.0/24 solo se agregarán 75 IPs, de la .0 a la que ya tenemos cargada .74, descartando el resto:
# ipset add blacklist 87.246.7.0/24
ipset v6.30: Kernel support protocol versions 6-7 while userspace supports protocol versions 6-6
Element cannot be added to the set: it's already added
# ipset list blacklist -t
Name: blacklist
Type: hash:ip
Revision: 4
Header: family inet hashsize 4096 maxelem 65536
Size in memory: 3864
References: 2
Number of entries: 75
Para evitar este tipo de problemas existe una opción en el comando -! que ignora cualquier error que se produzca, como este que indicamos. Ejecutamos de nuevo el comando con esta opción y vemos como se agregan las 256 IPs correctamente:
# ipset add blacklist 87.246.7.0/24 -!
# ipset list blacklist -t
Name: blacklist
Type: hash:ip
Revision: 4
Header: family inet hashsize 4096 maxelem 65536
Size in memory: 11976
References: 2
Number of entries: 256
Confirmar IP en listado
Podemos confirmar si una IP se encuentra en un alista con el siguiente comando:
# ipset test blacklist 87.246.7.74
87.246.7.74 is in set blacklist.
# ipset test blacklist 87.246.7.7
87.246.7.7 is NOT in set blacklist.
Información de las listas
Podemos obtener las listas que tenemos creadas y su información de capacidad, memoria utilizada, total de entradas, IPs bloqueadas, … con el comando:
# ipset list
Name: blacklist
Type: hash:ip
Revision: 4
Header: family inet hashsize 4096 maxelem 65536
Size in memory: 552
References: 2
Number of entries: 1
Members:
87.246.7.74
Abreviando la información, podemos obtener solo los nombres de las listas creadas con la opción -n:
# ipset list -n
blacklist
O la información general de cada lista con la opción -t:
# ipset list -t
Name: blacklist
Type: hash:ip
Revision: 4
Header: family inet hashsize 4096 maxelem 65536
Size in memory: 552
References: 2
Number of entries: 1
Borrar IP
Podemos borrar una IP concreta o un rango de IPs del listado con el siguiente comando:
ipset del blacklist x.x.x.x
ipset del blacklist x.x.x.x/x
Si por ejemplo tenemos un rango /30 agregado a la lista pero indicamos un /24 a la hora de borrar nos podría dar un error, pero con la opción que vimos en el apartado anterior -! lo evitaríamos:
ipset del blacklist x.x.x.x/x -!
Vaciar la lista
Para dejar la lista sin ninguna IP configurada podemos ejecutar el siguiente comando, en lugar de ir IP a IP o rango a rango, indicando el nombre de nuestra lista:
ipset flush blacklist
Eliminar lista y configuración en IPTABLES
Si queremos dar de baja la lista y la configuraicón en IPTABLES primero eliminaremos las entradas en el Firewall que habíamos creado en la primera posición de INPUT y FORWARD:
iptables -D INPUT 1
iptables -D FORWARD 1
Luego eliminaremos la lista indicando su nombre:
ipset destroy blacklist
Bloquear países con ipset
Bloquear direcciones IP de un país específico usando ipset en un sistema Linux típicamente involucra crear un conjunto IP que contenga las direcciones IP asociadas con ese país y luego usar una herramienta de firewall como iptables para dejar caer o rechazar tráfico desde esas direcciones IP. IPset es una utilidad basada en línea de comandos que se utiliza para administrar el marco denominado conjuntos IP dentro del núcleo Linux.
Este método utiliza datos de geolocalización IP para identificar direcciones IP asociadas a un país específico. Necesitarás tener las bases de datos IP instaladas en tu sistema. Sin embargo, existe otra forma más sencilla de hacerlo.
Puedes descargar los rangos de IPs de un país que quieras bloquear utilizando el bloqueador de visitas gratuito IP2Location, una herramienta online gratuita para descargar las direcciones IP de cualquier país en una amplia gama de formatos.
- https://www.ip2location.com/free/visitor-blocker
- Guarda la lista como blockcountry.sh
sed -i '/^#/d' blockcountry.shsed -i 's/^/ipset add countryblocker /g' blockcountry.shsed -i '1i ipset create countryblocker nethash' blockcountry.sh
chmod +x blockcountry.sh
bash blockcountry.sh
Fuentes:
https://blog.udpsa.com/como-proteger-tu-servidor-linux-de-miles-de-direcciones-ip-con-ipset/
0 comentarios :
Publicar un comentario
Los comentarios pueden ser revisados en cualquier momento por los moderadores.
Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.
Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.