ipset (Español)
ipset es una aplicación complementaria para el cortafuegos de Linux iptables. Le permite configurar reglas para bloquear rápida y fácilmente un conjunto de direcciones IP, entre otras cosas.
Instalación
Instale ipset de los repositorios oficiales.
Configuración
Bloquear una lista de conexiones de red
Comience 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ñada 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, configure 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ñada 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, configure 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, guarde el ipset en /etc/ipset.conf:
# ipset save > /etc/ipset.conf
Luego active 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 Bluetack.
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
Consulte la página de manual de ipset para obtener más información.
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 paises tienen espacios de direcciones IP muy grandes, lo que hará que el bloqueo geográfico sea ineficiente.