English | Español |
BlackIP es un proyecto que recopila y unifica listas públicas de bloqueo de direcciones IPs, para hacerlas compatibles con Squid e IPSET (Iptables Netfilter).
ACL | Blocked IP | File Size |
---|---|---|
blackip.txt | 494697 | 6.9 Mb |
git clone --depth=1 https://github.com/maravento/blackip.git
blackip.txt
ya viene optimizada. Descárguela y descomprimala en la ruta de su preferencia.
wget -q -N https://raw.githubusercontent.com/maravento/blackip/master/blackip.tar.gz && cat blackip.tar.gz* | tar xzf -
wget -q -N https://raw.githubusercontent.com/maravento/blackip/master/checksum.md5
md5sum blackip.txt | awk '{print $1}' && cat checksum.md5 | awk '{print $1}'
- No debe utilizar
blackip.txt
en IPSET y en Squid al mismo tiempo (doble filtrado). blackip.txt
es una lista IPv4. No incluye CIDR.
Ipset/Iptables Rules
Edite su bash script de Iptables y agregue las siguientes líneas (ejecutar con privilegios root):
#!/bin/bash
# https://linux.die.net/man/8/ipset
# variables
ipset=/sbin/ipset
iptables=/sbin/iptables
# Replace with your path to blackip.txt
ips=/path_to_lst/blackip.txt
# ipset rules
$ipset -L blackip >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "set blackip does not exist. create set..."
$ipset -! create blackip hash:net family inet hashsize 1024 maxelem 10000000
else
echo "set blackip exist. flush set..."
$ipset -! flush blackip
fi
$ipset -! save > /tmp/ipset_blackip.txt
# read file and sort (v8.32 or later)
cat $ips | sort -V -u | while read line; do
# optional: if there are commented lines
if [ "${line:0:1}" = "#" ]; then
continue
fi
# adding IPv4 addresses to the tmp list
echo "add blackip $line" >> /tmp/ipset_blackip.txt
done
# adding the tmp list of IPv4 addresses to the blackip set of ipset
$ipset -! restore < /tmp/ipset_blackip.txt
# iptables rules
$iptables -t mangle -I PREROUTING -m set --match-set blackip src,dst -j DROP
$iptables -I INPUT -m set --match-set blackip src,dst -j DROP
$iptables -I FORWARD -m set --match-set blackip src,dst -j DROP
echo "done"
Puede agregar las siguientes líneas al bash anterior para incluir rangos de IPs completos de países con IPDeny agregando los países de su elección.
# Put these lines at the end of the "variables" section
# Replace with your path to zones folder
zones=/path_to_folder/zones
# download zones
if [ ! -d $zones ]; then mkdir -p $zones; fi
wget -q -N http://www.ipdeny.com/ipblocks/data/countries/all-zones.tar.gz
tar -C $zones -zxvf all-zones.tar.gz >/dev/null 2>&1
rm -f all-zones.tar.gz >/dev/null 2>&1
# replace the line:
cat $ips | sort -V -u | while read line; do
# with (e.g: Russia and China):
cat $zones/{cn,ru}.zone $ips | sort -V -u | while read line; do
- Ipset permite realizar filtrado masivo, a una velocidad de procesamiento muy superior a otras soluciones (consulte benchmark).
- Blackip es una lista que contiene millones de líneas IPv4 y para ser soportada por Ipset, hemos tenido que aumentar arbitrariamente el parámetro maxelem (para más información, consulte ipset's hashsize and maxelem parameters).
- Limitación de Ipset/iptables: "Cuando las entradas agregadas por el objetivo SET de iptables/ip6tables, el tamaño del hash es fijo y el conjunto no se duplicará, incluso si la nueva entrada no se puede agregar al conjunto" (para más información, consulte Man Ipset).
- El uso intensivo de estas reglas puede ralentizar su PC al punto de hacerlo colapsa. Úselas bajo su propio riesgo.
- Probado en: iptables v1.8.7, ipset v7.15, protocol version: 7.
Squid Rule
Edit:
/etc/squid/squid.conf
Y agregue las siguientes líneas:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
# Block Rule for BlackIP
acl blackip dst "/path_to/blackip.txt"
http_access deny blackip
blackip.txt
ha sido testeada en Squid v3.5.x y posteriores.
BlackIP contiene millones de direcciones IP, por tanto se recomienda:
- Use
blackcidr.txt
para agregar IP/CIDR que no están incluidas enblackip.txt
(Por defecto contiene algunos Block CIDR). - Use
allowip.txt
(una lista blanca de direcciones IPs IPv4 tales como Hotmail, Gmail, Yahoo. etc). - Use
aipextra.txt
para agregar listas blancas de IP/CIDR que no están incluidas enallowip.txt
. - Por defecto,
blackip.txt
excluye algunos rangos privados o reservados RFC1918. Use IANA (iana.txt
) para excluirlos todos. - Por defecto,
blackip.txt
excluye algunos servidores DNS incluidos endns.txt
. Puede usar esta lista y ampliarla, para denegar o permitir servidores DNS. - Para incrementar la seguridad, cierre Squid a cualquier otra petición a direcciones IP con ZTR.
### INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS ###
# Allow Rule for IP
acl allowip dst "/path_to/allowip.txt"
http_access allow allowip
# Allow Rule for IP/CIDR ACL (not included in allowip.txt)
acl aipextra dst "/path_to/aipextra.txt"
http_access allow aipextra
# Allow Rule for IANA ACL (not included in allowip.txt)
acl iana dst "/path_to/iana.txt"
http_access allow iana
# Allow Rule for DNS ACL (excluded from blackip.txt)
acl dnslst dst "/path_to/dns.txt"
http_access allow dnslst # or deny dnlst
# Block Rule for IP/CIDR ACL (not included in blackip.txt)
acl blackcidr dst "/path_to/blackcidr.txt"
http_access deny blackcidr
## Block Rule for BlackIP
acl blackip dst "/path_to/blackip.txt"
http_access deny blackip
## Zero Trust Rule (ZTR)
acl no_ip url_regex -i [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
http_access deny no_ip
Esta sección es únicamente para explicar cómo funciona el proceso de actualización y optimización. No es necesario que el usuario la ejecute. Este proceso puede tardar y consumir muchos recursos de hardware y ancho de banda, por tanto se recomienda usar equipos de pruebas.
El proceso de actualización de
blackip.txt
es ejecutado en secuencia por el scriptbipupdate.sh
. El script solicitará privilegios cuando lo requiera.
wget -q -N https://raw.githubusercontent.com/maravento/blackip/master/bipupdate/bipupdate.sh && chmod +x bipupdate.sh && ./bipupdate.sh
La actualización requiere python 3x y bash 5x
pkgs='wget git curl idn2 perl tar rar unrar unzip zip python-is-python3 ipset'
if ! dpkg -s $pkgs >/dev/null 2>&1; then
apt -y install $pkgs
fi
Asegúrese que Squid esté instalado correctamente. Si tienes algún problema, ejecute el siguiente script: (
sudo ./squid_install.sh
):
#!/bin/bash
# kill old version
while pgrep squid > /dev/null; do
echo "Waiting for Squid to stop..."
killall -s SIGTERM squid &>/dev/null
sleep 5
done
# squid remove (if exist)
apt purge -y squid- &>/dev/null
rm -rf /var/spool/squid- /var/log/squid- /etc/squid- /dev/shm/- &>/dev/null
# squid install (you can use 'squid-openssl' or 'squid')
apt install -y squid-openssl squid-langpack squid-common squidclient squid-purge
# create log
if [ ! -d /var/log/squid ]; then
mkdir -p /var/log/squid
fi &>/dev/null
if [[ ! -f /var/log/squid/{access,cache,store,deny}.log ]]; then
touch /var/log/squid/{access,cache,store,deny}.log
fi &>/dev/null
# permissions
chown -R proxy:proxy /var/log/squid
# enable service
systemctl enable squid.service
systemctl start squid.service
echo "Done"
Captura las IPv4 de las listas de bloqueo públicas descargadas (ver FUENTES) y las unifica en un solo archivo.
La mayoría de las FUENTES contienen millones de IP inválidas e inexistentes. Entonces se hace una verificación doble de cada IP (en 2 pasos) vía DNS y los inválidos e inexistentes se excluyen de Blackip. Este proceso puede tardar. Por defecto procesa en paralelo ≈ 6k a 12k x min, en dependencia del hardware y ancho de banda.
HIT 8.8.8.8
Host 8.8.8.8.in-addr.arpa domain name pointer dns.google
FAULT 0.0.9.1
Host 1.9.0.0.in-addr.arpa. not found: 3(NXDOMAIN)
Corre Squid-Cache con BlackIP y cualquier error lo envía a
SquidError.txt
en su escritorio.
BlackIP: Done 02/02/2024 15:47:14
tw.txt
contiene IPs de servidores teamviewer. Por defecto están comentadas. Para bloquearlas o autorizarlas activelas enbipupdate.sh
. Para actualizarla usetw.sh
.- Antes de utilizar
bipupdate.sh
debe activar las reglas en Squid. - Algunas listas tienen restricciones de descarga, entonces no ejecute
bipupdate.sh
más de una vez al día. - Durante la ejecución de
bipupdate.sh
solicitará privilegios cuando los necesite. - Si usa
aufs
, cámbielo temporalmente aufs
durante la actualización, para evitar:ERROR: Can't change type of existing cache_dir aufs /var/spool/squid to ufs. Restart required
. - Si alguien considera que algún dominio no debería estár en Blackip, puede crear un Issue y notificarlo para removerlo.
allowip.txt
ya esta actualizada y optimizada. El proceso de actualización deallowip.txt
es ejecutado en secuencia por el scriptaipupdate.sh
.
wget -q -N https://raw.githubusercontent.com/maravento/blackip/master/bipupdate/wlst/aipupdate.sh && chmod +x aipupdate.sh && ./aipupdate.sh
- abuse.ch - Feodo Tracker
- abuse.ch - Zeustracker blocklist
- alienvault - reputation
- BBcan177 - minerchk
- BBcan177 - pfBlockerNG Malicious Threats
- binarydefense - Artillery Threat Intelligence Feed and Banlist Feed
- blocklist.de - export-ips_all
- blocklist.de - IPs all
- Cinsscore - badguys
- CriticalPathSecurity - Public-Intelligence-Feeds
- dan.me.uk - TOR Node List
- darklist - raw
- dshield.org - block
- ellio.tech - Threat List
- Emerging Threats - compromised ips
- Emerging Threats Block
- Firehold - Forus Spam
- Firehold - level1
- Greensnow - blocklist
- IPDeny - ipblocks
- Myip - full BL
- MyIP - latest BL
- Nick Galbreath client9 - datacenters
- OpenBL - base
- opsxcq - proxy-list
- Project Honeypot - list_of_ips
- Rulez - BruteForceBlocker
- rulez.sk - bruteforceblocker
- SecOps-Institute - TOR Exit Node List
- Spamhaus - drop-lasso
- stamparm - ipsum
- StopForumSpam - 180
- StopForumSpam - Toxic CIDR
- torproject - TOR BulkExitList
- Uceprotect - backscatterer Level 1
- Uceprotect - backscatterer Level 2
- Uceprotect - backscatterer Level 3
- Ultimate Hosts IPs Blocklist - ips
- yoyo - adservers
- abuse.ch - Ransomwaretracker
- Malc0de - IP Blocklist
- Malwaredomain - IP List
- Maxmind - high-risk-ip-sample-list
- unsubscore - blacklist
- Allow IP/CIDR extra
- Allow IPs
- Allow URLs
- Amazon AWS
- Block IP/CIDR Extra
- DNS
- IANA
- Microsoft Azure Datacenter
Agradecemos a todos aquellos que han contribuido a este proyecto. Los interesados pueden contribuir, enviándonos enlaces de nuevas "Blocklist", para ser incluidas en este proyecto.
Special thanks to: Jhonatan Sneider
EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO, ENTRE OTRAS, LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGUNA RECLAMACIÓN, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN CONTRACTUAL, EXTRACONTRACTUAL O DE OTRO MODO, QUE SURJA DE, A PARTIR DE O EN CONEXIÓN CON EL SOFTWARE O EL USO U OTRAS OPERACIONES EN EL SOFTWARE.
Debido a los recientes cambios arbitrarios en la terminología informática, es necesario aclarar el significado y connotación del término blacklist, asociado a este proyecto: En informática, una lista negra, lista de denegación o lista de bloqueo es un mecanismo básico de control de acceso que permite a través de todos los elementos (direcciones de correo electrónico, usuarios, contraseñas, URL, direcciones IP, nombres de dominio, hashes de archivos, etc.), excepto los mencionados explícitamente. Esos elementos en la lista tienen acceso denegado. Lo opuesto es una lista blanca, lo que significa que solo los elementos de la lista pueden pasar por cualquier puerta que se esté utilizando.
Fuente Wikipedia
Por tanto,
blacklist, blocklist, blackweb, blackip, whitelist, etc.
son términos que no tienen ninguna relación con la discriminación racial.