{"id":1017,"date":"2020-06-10T17:11:33","date_gmt":"2020-06-10T15:11:33","guid":{"rendered":"https:\/\/blog.tiraquelibras.com\/?p=1017"},"modified":"2020-06-10T17:11:35","modified_gmt":"2020-06-10T15:11:35","slug":"blacklist-con-iptables-e-ipset-en-debian-9","status":"publish","type":"post","link":"https:\/\/blog.tiraquelibras.com\/?p=1017","title":{"rendered":"Blacklist con IPTABLES e IPSET en Debian 9"},"content":{"rendered":"\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_76 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Tabla de contenidos<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-69f3c5f153892\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-69f3c5f153892\"  aria-label=\"Alternar\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1017\/#Introduccion\"  rel=\"nofollow\" target=\"_blank\">Introducci\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1017\/#Instalacion\"  rel=\"nofollow\" target=\"_blank\">Instalaci\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1017\/#Crear_la_lista\"  rel=\"nofollow\" target=\"_blank\">Crear la lista<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1017\/#Configurar_la_lista_en_IPTABLES\"  rel=\"nofollow\" target=\"_blank\">Configurar la lista en IPTABLES<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1017\/#Administrar_la_lista_creada\"  rel=\"nofollow\" target=\"_blank\">Administrar la lista creada<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1017\/#Agregar_IP\"  rel=\"nofollow\" target=\"_blank\">Agregar IP<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1017\/#Error_al_agregar_IP\"  rel=\"nofollow\" target=\"_blank\">Error al agregar IP<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1017\/#Confirmar_IP_en_listado\"  rel=\"nofollow\" target=\"_blank\">Confirmar IP en listado<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1017\/#Informacion_de_las_listas\"  rel=\"nofollow\" target=\"_blank\">Informaci\u00f3n de las listas<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1017\/#Borrar_IP\"  rel=\"nofollow\" target=\"_blank\">Borrar IP<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1017\/#Vaciar_la_lista\"  rel=\"nofollow\" target=\"_blank\">Vaciar la lista<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1017\/#Eliminar_lista_y_configuracion_en_IPTABLES\"  rel=\"nofollow\" target=\"_blank\">Eliminar lista y configuraci\u00f3n en IPTABLES<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1017\/#Configuracion_persistencia_para_lista_e_IPTABLES\"  rel=\"nofollow\" target=\"_blank\">Configuraci\u00f3n persistencia para lista e IPTABLES<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1017\/#IPTABLES\"  rel=\"nofollow\" target=\"_blank\">IPTABLES<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1017\/#IPSET\"  rel=\"nofollow\" target=\"_blank\">IPSET<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1017\/#ENLACES_DE_INTERES\"  rel=\"nofollow\" target=\"_blank\">ENLACES DE INTER\u00c9S<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Introduccion\"><\/span>Introducci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Para poder unificar los bloqueos de IPs o rangos en un \u00fanico punto del Firewall <strong>IPTABLES <\/strong>podemos crear una lista en donde especificar estos or\u00edgenes no deseados.<\/p>\n\n\n\n<p>Para ello haremos uso de la heramienta <strong>IPSET<\/strong> y agregaremos la entrada correspondiente en el Firewall.<\/p>\n\n\n\n<hr class=\"wp-block-separator is-style-default\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Instalacion\"><\/span>Instalaci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>La herramienta <em>IPSET <\/em>ya viene instalada en el sistema <em>Debian<\/em>, pero si no la tuvieras puedes instalarla con el comando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">apt-get install ipset<\/code><\/pre>\n\n\n\n<p>Esta herramienta combina perfectamente con el Firewall <em>IPTABLES<\/em>, con un buen rendimiento a la hora de identificar si una IP, rango, puerto figura en la lista para bloquear.<\/p>\n\n\n\n<p>La informaci\u00f3n la almacena en memoria, de tal forma que ante un reinicio esta se perder\u00eda, por lo que si queremos tenerla de manera persistente tendremos que guardarla peri\u00f3dicamente y configurar su carga al inicio, como veremos m\u00e1s adelante.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Crear_la_lista\"><\/span>Crear la lista<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Primero creamos la lista que llamaremos <strong><em>blacklist<\/em><\/strong>, pudiendo trabajar tanto con rangos o como con IPs:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Rangos:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">ipset create blacklist hash:net<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>IPs:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">ipset create blacklist hash:ip<\/code><\/pre>\n\n\n\n<p>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\u00e1 todas sus IPs una a una.<\/p>\n\n\n\n<p>Nosotros usaremos la lista de tipo <em>IP<\/em>, la segunda opci\u00f3n de las anteriores, pero si\u00e9ntete libre de usar cualquiera de las dos, teniendo en cuenta que en la segunda tendr\u00e1s que indicar rangos y no IPs independientes.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Configurar_la_lista_en_IPTABLES\"><\/span>Configurar la lista en IPTABLES<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Una vez creada nuestra lista, llamada <strong><em>blacklist<\/em><\/strong>, configuramos el FW para que bloquee cualquier IP incluida en el listado que acabamos de crear. Aplicaremos el filtrado para cualquier comunicaci\u00f3n entrante, ejecutando los siguientes comandos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">iptables -I INPUT -m set --match-set blacklist src -j DROP\niptables -I FORWARD -m set --match-set blacklist src -j DROP<\/code><\/pre>\n\n\n\n<p>Estos comandos agregan la regla en primera posici\u00f3n para el tr\u00e1fico <em>INPUT<\/em> y <em>FORWARD<\/em> en el sistema.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"># iptables  -L -n --line-num\nChain INPUT (policy DROP)\nnum  target     prot opt source               destination\n1    DROP       all  --  0.0.0.0\/0            0.0.0.0\/0            match-set blacklist src\n...\nChain FORWARD (policy ACCEPT)\nnum  target     prot opt source               destination\n1    DROP       all  --  0.0.0.0\/0            0.0.0.0\/0            match-set blacklist src\n...<\/code><\/pre>\n\n\n\n<p>Esto nos permitir\u00e1 bloquear cualquier comunicaci\u00f3n no deseada, incluso antes de ser procesada por cualquier mecanismo de seguridad como, por ejemplo, <em>Fail2ban<\/em>.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Administrar_la_lista_creada\"><\/span>Administrar la lista creada<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Ahora solo nos queda alimentar nuestra lista de direcciones a bloquear.<\/p>\n\n\n\n<p>Podemos administrar las listas de la siguiente forma.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Agregar_IP\"><\/span>Agregar IP<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Podemos indicar la IP concreta:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">ipset add blacklist x.x.x.x<\/code><\/pre>\n\n\n\n<p>O agregar todas las IPs de un rango concreto, lo cual nos agregara cada IP independiente en a la lista:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">ipset add blacklist x.x.x.x\/24<\/code><\/pre>\n\n\n\n<p>La primera opci\u00f3n nos agrega la IP indicada:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"># ipset list blacklist -t\nName: blacklist\nType: hash:ip\nRevision: 4\nHeader: family inet hashsize 4096 maxelem 65536\nSize in memory: 552\nReferences: 2\nNumber of entries: 1<\/code><\/pre>\n\n\n\n<p>Y la segunda 255 IPs:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"># ipset list blacklist -t\nName: blacklist\nType: hash:ip\nRevision: 4\nHeader: family inet hashsize 4096 maxelem 65536\nSize in memory: 11976\nReferences: 2\nNumber of entries: 256<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Error_al_agregar_IP\"><\/span>Error al agregar IP<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Si intentamos agregar un rango en la lista que ya contiene una IP perteneciente a este se agregar\u00e1n 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\u00e1n 75 IPs, de la .0 a la que ya tenemos cargada .74, descartando el resto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"># ipset add blacklist 87.246.7.0\/24\nipset v6.30: Kernel support protocol versions 6-7 while userspace supports protocol versions 6-6\nElement cannot be added to the set: it's already added\n\n# ipset list blacklist -t\nName: blacklist\nType: hash:ip\nRevision: 4\nHeader: family inet hashsize 4096 maxelem 65536\nSize in memory: 3864\nReferences: 2\nNumber of entries: 75<\/code><\/pre>\n\n\n\n<p>Para evitar este tipo de problemas existe una opci\u00f3n en el comando <strong>-!<\/strong> que ignora cualquier error que se produzca, como este que indicamos. Ejecutamos de nuevo el comando con esta opci\u00f3n y vemos como se agregan las 256 IPs correctamente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"># ipset add blacklist 87.246.7.0\/24 -!\n\n# ipset list blacklist -t\nName: blacklist\nType: hash:ip\nRevision: 4\nHeader: family inet hashsize 4096 maxelem 65536\nSize in memory: 11976\nReferences: 2\nNumber of entries: 256<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Confirmar_IP_en_listado\"><\/span>Confirmar IP en listado<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Podemos confirmar si una IP se encuentra en un alista con el siguiente comando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"># ipset test blacklist 87.246.7.74\n87.246.7.74 is in set blacklist.\n\n# ipset test blacklist 87.246.7.7\n87.246.7.7 is NOT in set blacklist.<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Informacion_de_las_listas\"><\/span>Informaci\u00f3n de las listas<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Podemos obtener las listas que tenemos creadas y su informaci\u00f3n de capacidad, memoria utilizada, total de entradas, IPs bloqueadas, \u2026 con el comando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"># ipset list\nName: blacklist\nType: hash:ip\nRevision: 4\nHeader: family inet hashsize 4096 maxelem 65536\nSize in memory: 552\nReferences: 2\nNumber of entries: 1\nMembers:\n87.246.7.74<\/code><\/pre>\n\n\n\n<p>Abreviando la informaci\u00f3n, podemos obtener solo los nombres de las listas creadas con la opci\u00f3n <strong>-n<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"># ipset list -n\nblacklist<\/code><\/pre>\n\n\n\n<p>O la informaci\u00f3n general de cada lista con la opci\u00f3n <strong>-t<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"># ipset list -t\nName: blacklist\nType: hash:ip\nRevision: 4\nHeader: family inet hashsize 4096 maxelem 65536\nSize in memory: 552\nReferences: 2\nNumber of entries: 1<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Borrar_IP\"><\/span>Borrar IP<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Podemos borrar una IP concreta o un rango de IPs del listado con el siguiente comando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">ipset del blacklist x.x.x.x\nipset del blacklist x.x.x.x\/x<\/code><\/pre>\n\n\n\n<p>Si por ejemplo tenemos un rango \/30 agregado a la lista pero indicamos un \/24 a la hora de borrar nos podr\u00eda dar un error, pero con la opci\u00f3n que vimos en el apartado anterior <strong>-!<\/strong> lo evitar\u00edamos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">ipset del blacklist x.x.x.x\/x -!<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Vaciar_la_lista\"><\/span>Vaciar la lista<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>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:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">ipset flush blacklist<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Eliminar_lista_y_configuracion_en_IPTABLES\"><\/span>Eliminar lista y configuraci\u00f3n en IPTABLES<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Si queremos dar de baja la lista y la configuraic\u00f3n en <em>IPTABLES<\/em> primero eliminaremos las entradas en el Firewall que hab\u00edamos creado en la primera posici\u00f3n de <em>INPUT<\/em> y <em>FORWARD<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">iptables -D INPUT 1\niptables -D FORWARD 1<\/code><\/pre>\n\n\n\n<p>Luego eliminaremos la lista indicando su nombre:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">ipset destroy blacklist<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Configuracion_persistencia_para_lista_e_IPTABLES\"><\/span>Configuraci\u00f3n persistencia para lista e IPTABLES<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Ante un reinicio perder\u00edamos toda esta configuraci\u00f3n, tanto la de <em>IPTABLES <\/em>como la de la lista creada con <em>IPSET<\/em>, por lo es recomendable dejar ambos persistentes en el sistema.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"IPTABLES\"><\/span>IPTABLES<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Para hacer persistente IPTABLES te dejo un enlace de este mismo blog en donde se explica de forma muy sencilla como <a href=\"https:\/\/blog.tiraquelibras.com\/?p=609\" class=\"external external_icon\" rel=\"nofollow\" target=\"_blank\">configurar IPTABLES y carga al inicio<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"IPSET\"><\/span>IPSET<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Para hacer persistente la lista o listas con sus entradas creadas primero guardamos su configuraci\u00f3n actual en un archivo nuevo que llamaremos <strong><em>\/etc\/ipset.conf<\/em><\/strong>, con el comando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">ipset save > \/etc\/ipset.conf<\/code><\/pre>\n\n\n\n<p>Lo cual nos generar\u00e1 el archivo indicado con el contenido de nuestras listas y sus IPs en el momento de su ejecuci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"># cat \/etc\/ipset.conf\ncreate blacklist hash:ip family inet hashsize 4096 maxelem 65536\nadd blacklist 87.246.7.74<\/code><\/pre>\n\n\n\n<p>La configuramos en el <em>Cron <\/em>para que se ejecute diariamente a las 0:30, por ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"># crontab -e\n....\n# IPSET para blacklist diario\n30 0 * * * ipset save > \/etc\/ipset.conf<\/code><\/pre>\n\n\n\n<p>Cramos un archivo para que cargue al inicio los datos de la blacklist:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">touch \/etc\/network\/if-pre-up.d\/ipset\nchmod +x  \/etc\/network\/if-pre-up.d\/ipset<\/code><\/pre>\n\n\n\n<p>Y agregamos el siguiente contenido al archivo creado <em><strong>\/etc\/network\/if-pre-up.d\/ipset<\/strong><\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">#!\/bin\/sh\nipset restore -f \/etc\/ipset.conf -!<\/code><\/pre>\n\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">Precauci\u00f3n<\/span><\/strong>, si cambiamos manualmente el nombre de cualquier lista en el archivo <em>\/etc\/ipset.conf<\/em> y este es chequeado por <em>IPTABLES<\/em> no arrancar\u00e1 nuestro sistema ante un reinicio, ya que esta lista es usada por otro proceso del <em>kernel<\/em>.<\/p>\n\n\n\n<p>De esta forma tendremos nuestra <em>blacklist<\/em> persistente ante cualquier reinicio.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"ENLACES_DE_INTERES\"><\/span>ENLACES DE INTER\u00c9S<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p><a href=\"http:\/\/ipset.netfilter.org\/\" class=\"external external_icon\" rel=\"nofollow\" target=\"_blank\">Web oficial<\/a>.<br><a href=\"https:\/\/wiki.archlinux.org\/index.php\/Ipset\" class=\"external external_icon\" rel=\"nofollow\" target=\"_blank\">Wiki Archlinux sobre IPSET<\/a>.<br><a href=\"https:\/\/linux-audit.com\/blocking-ip-addresses-in-linux-with-iptables\/\" class=\"external external_icon\" rel=\"nofollow\" target=\"_blank\">Enlace relacionado<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n Para poder unificar los bloqueos de IPs o rangos en un \u00fanico punto del Firewall IPTABLES podemos crear una lista en donde especificar estos<span class=\"read-more-link\"><a class=\"read-more\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1017\">Read More<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":1019,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,10],"tags":[110,56],"class_list":["post-1017","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ciberseguridad","category-sistemas","tag-blacklist","tag-firewall"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts\/1017","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1017"}],"version-history":[{"count":0,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts\/1017\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/media\/1019"}],"wp:attachment":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1017"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1017"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1017"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}