Configura una lista negra con iptables para banear determinadas IP públicas

Escrito por Sergio De Luz

Cualquier administrador de redes y sistemas siempre va a tener que banear determinadas direcciones IP públicas. Si por ejemplo a nuestro negocio no tiene por qué acceder nadie de China, podemos banearlo directamente en el cortafuegos. El principal problema a la hora de banear una gran cantidad de IP es la eficiencia, y también saber qué IP públicas en concreto banear.

En Redeszone hemos encontrado un script que toma la base de datos de direcciones IP a banear de diferentes fuentes, gracias a estas fuentes (que están en continua actualización), podremos fácilmente con un script automatizar el proceso de baneo utilizando iptables.

La parte negativa de iptables es que si incorporamos un gran número de reglas, el sistema es ineficiente y consume una gran cantidad de recursos. Por este motivo, el script utiliza ipset que es una extensión de iptables creada específicamente para este tipo de usos. Gracias a ipset, se crea una tabla hash con la regla en cuestión, y a la hora de comprobar si una determinada dirección IP de origen está baneada, lo hará rápidamente. Un detalle muy importante es que la tabla hash de ipset tiene una limitación a 65536 entradas como máximo.

El script lo tenéis a continuación:

#!/bin/bash
IP_TMP=/tmp/ip.tmp
IP_BLACKLIST=/etc/ip-blacklist.conf
IP_BLACKLIST_TMP=/tmp/ip-blacklist.tmp
IP_BLACKLIST_CUSTOM=/etc/ip-blacklist-custom.conf # optional
list="chinese nigerian russian lacnic exploited-servers"
BLACKLISTS=(
"http://www.projecthoneypot.org/list_of_ips.php?t=d&rss=1" # Project Honey Pot Directory of Dictionary Attacker IPs
"http://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=1.1.1.1"  # TOR Exit Nodes
"http://www.maxmind.com/en/anonymous_proxies" # MaxMind GeoIP Anonymous Proxies
"http://danger.rulez.sk/projects/bruteforceblocker/blist.php" # BruteForceBlocker IP List
"http://rules.emergingthreats.net/blockrules/rbn-ips.txt" # Emerging Threats - Russian Business Networks List
"http://www.spamhaus.org/drop/drop.lasso" # Spamhaus Don't Route Or Peer List (DROP)
"http://cinsscore.com/list/ci-badguys.txt" # C.I. Army Malicious IP List
"http://www.openbl.org/lists/base.txt"  # OpenBL.org 30 day List
"http://www.autoshun.org/files/shunlist.csv" # Autoshun Shun List
"http://lists.blocklist.de/lists/all.txt" # blocklist.de attackers
)
for i in "${BLACKLISTS[@]}"
do
    curl "$i" > $IP_TMP
    grep -Po '(?:\d{1,3}\.){3}\d{1,3}(?:/\d{1,2})?' $IP_TMP >> $IP_BLACKLIST_TMP
done
for i in `echo $list`; do
        # Download
        wget --quiet http://www.wizcrafts.net/$i-iptables-blocklist.html
        # Grep out all but ip blocks
        cat $i-iptables-blocklist.html | grep -v \< | grep -v \: | grep -v \; | grep -v \# | grep [0-9] > $i.txt
        # Consolidate blocks into master list
        cat $i.txt >> $IP_BLACKLIST_TMP
done

sort $IP_BLACKLIST_TMP -n | uniq > $IP_BLACKLIST
rm $IP_BLACKLIST_TMP
wc -l $IP_BLACKLIST

ipset flush blacklist
egrep -v "^#|^$" $IP_BLACKLIST | while IFS= read -r ip
do
        ipset add blacklist $ip
done

Instalación del script en nuestro sistema operativo

Simplemente debemos copiar todo el código anterior a nuestro equipo en un archivo con extensión .sh y darle permisos de ejecución (chmod +x archivo.sh). En la parte superior del script donde están las variables podemos modificar la ruta donde se almacena toda la información. Si en vuestro sistema operativo no tenéis instalado ipset, deberéis instalarlo ya que el script lo utiliza para ser mucho más eficiente.

Crear la lista con ipset y la regla iptables

Para que el script funciona correctamente, antes debemos crear la tabla de ipset y actualizar nuestras iptables para que la tenga en cuenta.


ipset create blacklist hash:net
iptables -I INPUT -m set --match-set blacklist src -j DROP

Hemos dicho anteriormente que las diferentes webs donde el script recoge toda la información, está en continua actualización. Por este motivo, podemos utilizar la herramienta cron para programar que cada día de madrugada se actualice la base de datos de direcciones IP baneadas.

Os recomendamos visitar nuestra sección de seguridad informática donde encontraréis un gran número de tutoriales para asegurar vuestros equipos y vuestra red. Asimismo también podéis visitar nuestra sección Linux donde tenéis más tutoriales de este sistema operativo.

Fuente > n0wwhere

Continúa leyendo

Últimos análisis

Valoración RZ
7
Valoración RZ
9
Valoración RZ
8
Valoración RZ
8
Valoración RZ
8
Valoración RZ
8
Valoración RZ
10