Digamos que uno desea tener una lista de direcciones IP bloqueadas.
He visto el siguiente script de ejemplo:
BLOCKDB="/path/to/ip.blocked.file"
# omit comments lines
IPS=$(grep -Ev "^#" $BLOCKDB)
for i in $IPS
do
iptables -A INPUT -s $i -j DROP
iptables -A OUTPUT -d $i -j DROP
done
¿Son varios miles de líneas, que se transforman en varios miles de entradas de iptables, cuerdo?
¿Cuál es el límite superior, más allá del cual, la eficiencia del sistema se verá significativamente afectada?
Respuestas:
Creo que he encontrado una solución a través de este artículo y IPSet parece ser la respuesta
En suma:
Si un conjunto de direcciones IP contiene miles de elementos, el rendimiento de iptables disminuye (en realidad, el rendimiento de netfilter, tan pronto como iptables es solo una herramienta para administrar el firewall). Su carga de CPU también puede aumentar. Afortunadamente hay una solución perfecta - ipsets
IPSet es la herramienta perfecta si quieres:
Instalar ipset es sencillo
sudo apt-get install ipset
Luego ejecuta lo siguiente
Agréguelo a su cadena de iptables. Puede diferir según la configuración de su firewall. Aquí usamos la cadena de etina.
Ahora puede agregar todas las IP incorrectas a su conjunto de ip Por ejemplo, tiene un archivo de texto llamado bots.txt con una IP por línea. Para que pueda agregarlos a ipset usando un script bash simple:
Para comprobar ejecutar:
fuente