<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Archivos de servidor &#187; Endless Manifesto</title>
	<atom:link href="https://kadai.com.mx/tag/servidor/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>Un blog personal sobre muchas cosas, en especial videojuegos, descubrimientos y escritos al azar.</description>
	<lastBuildDate>Sun, 26 Apr 2020 08:01:44 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://kadai.com.mx/wp-content/uploads/2017/08/new-favicon-88x88.png</url>
	<title>Archivos de servidor &#187; Endless Manifesto</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">126519727</site>	<item>
		<title>[Guía] 4 formas de bloquear por país en WordPress</title>
		<link>https://kadai.com.mx/guia-4-formas-de-bloquear-por-pais-en-wordpress/</link>
					<comments>https://kadai.com.mx/guia-4-formas-de-bloquear-por-pais-en-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[Kadai Crosshansen]]></dc:creator>
		<pubDate>Tue, 21 Apr 2020 00:29:00 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[abuseipdb]]></category>
		<category><![CDATA[código]]></category>
		<category><![CDATA[geoip2]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://kadai.com.mx/?p=1704</guid>

					<description><![CDATA[<p>A veces es necesario el bloquear por país a los visitantes que llegan a un sitio web. Si tenemos acceso a las herramientas necesarias, podemos hacerlo fácilmente. Ya sea usando un plugin o mediante código. ¿Por qué bloquear por país? Una de las razones más importantes para bloquear países es para evitar ataques de bots. [&#8230;]</p>
<p>The post <a href="https://kadai.com.mx/guia-4-formas-de-bloquear-por-pais-en-wordpress/">[Guía] 4 formas de bloquear por país en WordPress</a> appeared first on <a href="https://kadai.com.mx">Endless Manifesto</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>A veces es necesario el bloquear por país a los visitantes que llegan a un sitio web. Si tenemos acceso a las herramientas necesarias, podemos hacerlo fácilmente.</p>



<p>Ya sea usando un plugin o mediante código.</p>



<span id="more-1704"></span>



<h3 class="wp-block-heading">¿Por qué bloquear por país?</h3>



<p>Una de las razones más importantes para bloquear países es <strong>para evitar ataques de bots</strong>.</p>



<p>Los bots intentan abusar de vulnerabilidades. Buscan por software que no ha sido actualizado. Buscan de cualquier agujero que exista para poder <strong>tomar control de un sitio web</strong>. Por lo cual bloquear ciertos países puede ayudar a <a href="https://dtorrer.com/como-mejorar-la-seguridad-de-wordpress/">mejorar la seguridad</a>.</p>



<p>Pero a la vez, también se puede bloquear por país debido a <strong>cuestiones legales</strong>. O simplemente por que no queremos que <strong>nadie de dicho país pueda acceder a ciertos recursos</strong>, como la zona de administración de WordPress.</p>



<p>Todas estas son razones válidas. Pero, ¿cómo lo podemos lograr?</p>



<h3 class="wp-block-heading">1. Mediante un plugin</h3>



<p>Una de las formas mas sencillas de bloquear por país en WordPress es usando una solución ya desarrollada como un plugin.</p>



<p>Existen multiples soluciones como <a href="http://wordpress.org/plugins/iq-block-country/">iQ Block Country</a> o <a href="https://wordpress.org/plugins/ip2location-country-blocker/">IP2Location Country Blocker</a>. En ambos casos, usan bases de datos que provienen de servicios y que hay que descargar.</p>



<p>Con ambas soluciones, solo necesitas obtener una cuenta en los servicios que usan y descargar la base de datos apropiada. O en su defecto pagar para acceder a los servicios en línea.</p>



<p>Ambos son muy útiles si no existe inconveniente económico. O si no se desea hacer muchos cambios.</p>



<p>Sin embargo, existen otras formas de bloquear por país en WordPress.</p>



<h3 class="wp-block-heading">2. Con un CDN como Cloudflare</h3>



<p>Si el sitio web en WordPress se encuentra detrás de un CDN como CloudFlare, puedes <strong>fácilmente limitar el acceso a ciertos países</strong> solo agregando un pequeño código al archivo<code> functions.php</code> que usa tu tema o con un plugin a medida.</p>



<p>Así, por ejemplo, se puede usar esa característica usando el siguiente código:</p>



			<div class="github-gist-container">
				<script type="text/javascript" class="script-github-gist" src="https://gist.github.com/kadai/bb3b77c7322a1ab37debfdc7e4cf7d1c.js?file=block_with_cloudflare.php"></script>
			</div>
		


<p>Con ese pequeño código, se bloquearán todos los clientes que visiten páginas dinámicas y que sean de los<strong> países en la lista «negra»</strong>.</p>



<p>Algo muy importante que hay que indicar, es que las soluciones de plugins o de código como el mostrado no funcionarán siempre si hay un <strong>plugin de cache activado</strong>.</p>



<p>Esto se debe a que los plugins de cache, en la mayoría de los casos, crean páginas estáticas para enviar en vez de las páginas dinámicas.</p>



<p>Debido a esto, el código no se ejecutará. Pero si ese mismo usuario <strong>intenta acceder a la página de login</strong>, entonces sí será bloqueado.</p>



<h3 class="wp-block-heading">3. Mediante una consulta a AbuseIPDB</h3>



<p>En una entrada anterior hablé de como agregar la<a href="https://kadai.com.mx/como-agregar-la-lista-negra-de-abuseipdb-al-firewall/"> lista negra de AbuseIPDB</a> a un servidor. Pero dicho servicio ofrece <strong>mucho más que solo la lista negra</strong>.</p>



<p>Cuando se consulta una dirección IP a su <a href="https://docs.abuseipdb.com/#check-endpoint">check endpoint</a>, nosotros obtenemos toda una <strong>serie de información del cliente</strong>.</p>



<p>Esta información incluye datos como <strong>país de origen</strong> e incluso una calificación de cual probable es que <strong>trate de abusar de algún recurso</strong>.</p>



<p>Toda esta información es útil para evitar ataques o incluso fraudes para las tiendas en línea.</p>



<p>Así, con el siguiente script, nosotros podemos bloquear a un visitante tanto por su país como por su puntuación (si esta es mayor a 50):</p>



			<div class="github-gist-container">
				<script type="text/javascript" class="script-github-gist" src="https://gist.github.com/kadai/bb3b77c7322a1ab37debfdc7e4cf7d1c.js?file=block_with_abuseipdb.php"></script>
			</div>
		


<p>Igualmente, para evitar realizar consultas de forma constante, guarda los resultados en un <a href="https://kadai.com.mx/hooks-y-transients-en-wordpress/">transient de WordPress</a>. Así le generamos la menor molestia a los usuarios legitimos.</p>



<p>Pero, como se menciono antes, esto <strong>solo funciona en las páginas dinámicas</strong>. Aquellas que se encuentran servidas por el caché aún pueden ser visitadas por personas de los países bloqueados.</p>



<h3 class="wp-block-heading">4. Bloquear por país usando la base de datos de GeoIP2</h3>



<p>MaxMind ofrece la base de datos GeoIP2 Lite de forma gratuita. La cual se puede <a href="https://dev.maxmind.com/geoip/geoip2/geolite2/">descargar desde su sitio web</a> con tan solo registrarse.</p>



<p>Igualmente, ellos proporcionan un paquete con el cual se puede acceder a su <a href="https://github.com/maxmind/GeoIP2-php">base de datos usando PHP</a>. Con la cual se vuelve muy sencillo el acceder a los datos.</p>



<p>Solo hace falta descargar el <a href="https://github.com/maxmind/GeoIP2-php/releases">archivo phar</a> o usar composer para agregar el proyecto a un plugin. Tras lo cual se puede agregar y usar de la siguiente manera:</p>



			<div class="github-gist-container">
				<script type="text/javascript" class="script-github-gist" src="https://gist.github.com/kadai/bb3b77c7322a1ab37debfdc7e4cf7d1c.js?file=block_with_geoip2.php"></script>
			</div>
		


<p>De esta forma, estaríamos usando entonces ya usando la base de datos para bloquear a los visitantes de los países deseados.</p>



<h3 class="wp-block-heading">Plugin de WordPress con GeoIP2</h3>



<p>He desarrollado un plugin sencillo, el cual usa la base de datos de GeoIP2 para bloquear a los visitantes de los países seleccionados:</p>



<div class="wp-block-file"><a href="https://kadai.com.mx/wp-content/uploads/2020/04/simple-country-block.zip">simple-country-block</a><a href="https://kadai.com.mx/wp-content/uploads/2020/04/simple-country-block.zip" class="wp-block-file__button" download>Download</a></div>



<p>Su uso es extremadamente sencillo y viene tanto en español (España y México) como en ingles.</p>



<p>Para usarlo, solo hace falta instalarlo e ir a <strong>Herramientas > Bloquear por país</strong>. Solo debes de tener cuidado de no seleccionar el país en el cual te encuentras, o el sistema podría evitar que ingreses.</p>



<p>En caso de encuentres algún problema, puedes ponerte conmigo en contacto.</p>



<h3 class="wp-block-heading">Conclusiones sobre como bloquear por país</h3>



<p>Bloquear por país a un visitantes es relativamente sencillo. Aunque se <strong>necesita de herramientas adicionales</strong> para poder obtener la información necesaria para hacerlo.</p>



<p>La dirección IP por si misma no aporta esa información. Pero es fácil obtener detalles adicionales si se <strong>cuenta con los recursos necesarios</strong>.</p>



<p>Hoy en día prácticamente todo está a un API o Base de Datos de distancia.</p>
<p>The post <a href="https://kadai.com.mx/guia-4-formas-de-bloquear-por-pais-en-wordpress/">[Guía] 4 formas de bloquear por país en WordPress</a> appeared first on <a href="https://kadai.com.mx">Endless Manifesto</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://kadai.com.mx/guia-4-formas-de-bloquear-por-pais-en-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1704</post-id>	</item>
		<item>
		<title>[Tutorial] Como agregar la lista negra de AbuseIPDB al Firewall</title>
		<link>https://kadai.com.mx/como-agregar-la-lista-negra-de-abuseipdb-al-firewall/</link>
					<comments>https://kadai.com.mx/como-agregar-la-lista-negra-de-abuseipdb-al-firewall/#comments</comments>
		
		<dc:creator><![CDATA[Kadai Crosshansen]]></dc:creator>
		<pubDate>Mon, 21 Oct 2019 13:35:45 +0000</pubDate>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[abuseipdb]]></category>
		<category><![CDATA[ipset.]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[seguridad]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://kadai.com.mx/?p=1547</guid>

					<description><![CDATA[<p>La lista negra de AbuseIPDB es una gran herramienta que nos permite conocer cuales son los clientes con más reportes de abuso reciente. Si usamos esto a nuestro favor, podemos evitar toda clase de ataques. En esta pequeña entrada, hablaré de como hacer uso de dicha base de datos para proteger un servidor corriendo Linux. [&#8230;]</p>
<p>The post <a href="https://kadai.com.mx/como-agregar-la-lista-negra-de-abuseipdb-al-firewall/">[Tutorial] Como agregar la lista negra de AbuseIPDB al Firewall</a> appeared first on <a href="https://kadai.com.mx">Endless Manifesto</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>La lista negra de AbuseIPDB es una gran herramienta que nos permite conocer cuales son los clientes con más reportes de abuso reciente. Si usamos esto a nuestro favor, podemos evitar toda clase de ataques.</p>



<p><em>En esta pequeña entrada, hablaré de como hacer uso de dicha base de datos para proteger un servidor corriendo Linux. Y en mi caso Ubuntu.</em></p>



<span id="more-1547"></span>



<p>La base de datos que ofrece <a rel="noreferrer noopener" aria-label="AbuseIPDB (opens in a new tab)" href="https://www.abuseipdb.com/" target="_blank">AbuseIPDB</a> nos permite saber todo un historial sobre una dirección IP. Cuantas veces ha sido reportada, por quien e incluso que tipos de ataques ha realizado.</p>



<p>Esta información es especialmente útil si contamos con otras herramientas como <em>fail2ban</em>. Esto para proteger de forma eficiente un servidor.</p>



<p>Pero a veces, no queremos consumir una dirección a la vez. Tampoco queremos solo reportar quienes están intentando vulnerar un recurso.</p>



<p>Es ahí en donde la lista negra de AbuseIPDB entra en acción.</p>



<h3 class="wp-block-heading">¿Qué información contiene la lista negra de AbuseIPDB?</h3>



<p>La <a rel="noreferrer noopener" aria-label="lista negra (opens in a new tab)" href="https://docs.abuseipdb.com/#blacklist-endpoint" target="_blank">lista negra</a>, en pocas palabras, solamente contiene una lista de los clientes con mayor actividad. De los clientes con el mayor número de reportes desde múltiples fuentes.</p>



<p>Por lo cual se vuelve una gran herramienta a la hora de detener cualquier dirección que intente vulnerar un servidor. Ya que al saber su historial, es fácil de deducir que seguramente que lo harán.</p>



<p>Dicho recurso, al ser consultado, nos regresa una lista de hasta 10,000 direcciones altamente peligrosas para la versión gratuita.</p>



<p>Si bien no son todos los clientes mal intencionados, si son una cantidad importante. Nada despreciable considerando el tipo de actividad que realizan.</p>



<h3 class="wp-block-heading">¿Cómo aprovechar esta lista?</h3>



<p>Gracias a que AbuseIPDB ofrece puntos de acceso fáciles de usar, nosotros podemos acceder a la lista negra usando el siguiente endpoint: <code>https://api.abuseipdb.com/api/v2/blacklist</code></p>



<p>Sin embargo, para poder consultarla debemos de estar registrados y obtener una llave API. Si no la tienes, puedes <a href="https://www.abuseipdb.com/register">crearte una cuenta en minutos</a>. Así puedes obtener to llave API.</p>



<p>Pero el truco real está en implementar directamente la lista en el firewall de cualquier servidor. Eso se puede lograr usando scripts y cron jobs. De esta forma, es posible actualizar la lista en el servidor una vez al día.</p>



<p>Para no sobrecargar el servidor, debemos usar las herramientas <em>iptables</em> e <em>ipset</em>. Ya que soluciones como fail2ban son simplemente muy lentas a la hora de agregar gran número de direcciones.</p>



<p>El programa ipset nos permite agregar cantidad de direcciones IP y <a rel="noreferrer noopener" aria-label="manejarlas fácilmente (opens in a new tab)" href="https://confluence.jaytaala.com/display/TKB/Using+ipset+to+block+IP+addresses+-+firewall" target="_blank">manejarlas fácilmente</a> mediante colecciones. Todo esto utilizando pocos recursos.</p>



<h2 class="wp-block-heading">Un ejemplo práctico de la implementación</h2>



<p>El agregar las direcciones conflictivas al cortafuegos es sencillo. En mi caso, he creado un script en python3 que lo hace.</p>



<p>Para ello, utilizo también una colección creada con ipset. La cual se limpia antes de cualquier actualización.</p>



<p>De esa forma, los clientes que ya no se encuentran en la lista negra de AbuseIPDB son descartados. Aunque es posible mantenerlos, para fines prácticos de esta ejemplo, no se explora esa posibilidad.</p>



<p>Así, este es el script que se corre cada día y que actualiza los datos desde AbuseIPDB:</p>



			<div class="github-gist-container">
				<script type="text/javascript" class="script-github-gist" src="https://gist.github.com/kadai/5ea16e3a49a4f47613336fff7593074e.js?file=abuseipdb_firewall.py"></script>
			</div>
		


<h3 class="wp-block-heading">Explicación del script de la lista negra</h3>



<p>El script de python3 anterior realiza una serie de acciones antes de consultar a AbuseIPDB para agregar las direcciones. Se explican los puntos más importantes del programa:</p>



<pre class="wp-block-code"><code>#ejecuta: ipset flush blacklist
run(&#91;ipset_bin, 'flush', set_name])</code></pre>



<p>Esta línea corre un subproceso, un comando, invocando a <code>/sbin/ipset</code> para indicarle que limpie la lista negra local de todos los ips que tiene en ella.</p>



<pre class="wp-block-code"><code>#ejecuta: ipset create blacklist iphash -exist
run(&#91;ipset_bin, 'create', set_name, 'iphash', '-exist'])</code></pre>



<p>Si no existe una colección creada por ipset, esta será crea. Esta <a rel="noreferrer noopener" aria-label="usará un metodo de hash (opens in a new tab)" href="https://people.netfilter.org/kadlec/ipset/ipset.man.html#lbAL" target="_blank">usará un método de hash</a> ideal para direcciones aleatorias. Si la colección ya existe, no pasa nada.</p>



<pre class="wp-block-code"><code>#Consulta el API mandando las credenciales en las cabeceras
response = requests.get(blacklist_url, headers=request_headers)</code></pre>



<p>Entonces, realizamos la consulta y obtenemos el grupo de direcciones que queremos agregar al cortafuegos. En este caso, los datos están en formato json y más adelante son convertidos para ser usados por el script.</p>



<pre class="wp-block-code"><code>#ejecuta: ipset add blacklist &lt;direccion_ip> -exist
run(&#91;ipset_bin, 'add', set_name, client_data&#91;'ipAddress'], '-exist'])</code></pre>



<p>Finalmente, procedemos a agregar las direcciones de la lista de AbuseIPDB en la colección. Con la opción <code>-exist</code> nos aseguramos de que, en el remoto caso de que exista un duplicado, no nos muestre algún error.</p>



<pre class="wp-block-code"><code>#ejecuta: iptables -I INPUT -m set --match-set blacklist src -j DROP
run(&#91;iptables_bin, '-I', 'INPUT', '-m', 'set', '--match-set', set_name, 'src', '-j', 'DROP'])</code></pre>



<p>Esto es entonces lo que hace la magia. Con este comando le decimos al cortafuegos que <em>use la colección que hemos creado para las conexiones entrantes</em>. Si la IP que se intenta conectar está en la lista negra, simplemente será ignorada de forma silenciosa.</p>



<p>Recuerda, solo usa este comando la primera vez que ejecutes el script en la máquina o servidor. O solo cuando esta se haya reiniciado.</p>



<h3 class="wp-block-heading">Agregando soporte para IPv6</h3>



<p>La versión que se ha mostrado antes funciona bien cuando solo hay direcciones <a href="https://en.wikipedia.org/wiki/IPv4">IP de la versión 4</a>. Sin embargo, hay ocasiones en las cuales la lista negra de AbuseIPDB contiene direcciones <a href="https://en.wikipedia.org/wiki/IPv6">IP de la versión 6</a>.</p>



<p>Si bien el script no detecta el tipo de IP, esto no afecta el funcionamiento ya que simplemente esas direcciones no son agregadas y continua la ejecución.</p>



<p>¿Pero que pasa si también quiero bloquear esas direcciones?</p>



<p>Por fortuna, esto se puede solucionar fácilmente. Ya que tanto ipset como iptables tienen soluciones para estas direcciones. Junto con python3.</p>



<p>Para aceptar las direcciones IPv6, primero debemos de crear un set con la opción <em>family </em>definida en <em>inet6</em>. Esto, se vería así en la consola:</p>



<pre class="wp-block-code"><code>ipset create set_name iphash -exist family inet6</code></pre>



<p>Con esto creamos el set para agregar direcciones de la versión 6 al cortafuegos. Traduciendo la instrucción a python, quedaría de la siguiente manera:</p>



<pre class="wp-block-code"><code>run(&#91;ipset_bin, 'create', set_name, 'iphash', '-exist', 'family', 'inet6'])</code></pre>



<p>Pero aún queda un paso importante: ¿Cómo saber si una IP es IPv4 o IPv6? Eso lo debemos de saber antes de saber a cual lista se va a agregar la dirección.</p>



<p>Por fortuna, python3 tiene una librería llamada <a href="https://docs.python.org/3/library/ipaddress.html">ipaddress</a> que sirve para esos casos.</p>



<p>Usando esa librería, es fácil saber datos de una dirección IP. Solo hace falta hacer lo siguiente:</p>



<pre class="wp-block-code"><code>import ipaddress
ip_version = ipaddress.ip_address(remore_ip_address).version</code></pre>



<p>Con esa librería, nosotros tenemos acceso a diversa información de una dirección. Esto en forma de un objeto.</p>



<p>Otro uso que le podemos dar a esta librería es para saber si una dirección es pública o no. Esto lo logramos usando el atributo <em>is_global</em>.</p>



<h3 class="wp-block-heading">Agregando la detección IPv6 al script de lista negra de AbuseIPDB</h3>



<p>Una vez que hemos resuelto este par de problemas, entonces nosotros podemos ponerlo todo junto en el script.</p>



<p>Con lo cual, nos debería quedar algo similar a esto:</p>



			<div class="github-gist-container">
				<script type="text/javascript" class="script-github-gist" src="https://gist.github.com/kadai/5ea16e3a49a4f47613336fff7593074e.js?file=abuseipdb_firewall_ipv6_support.py"></script>
			</div>
		


<p>Con este script, nosotros creamos los sets que necesitamos además de que se agregan de forma correcta a iptables.</p>



<p>Ojo, hay que recordar que un set de IPs de versión 6 requiere que se vincule usando el binario ip6tables en vez de iptables.</p>



<p>Igualmente, como está en el ejemplo, solo nos aseguramos de agregar al set todos los IPs que sean públicos. Esto usando el atributo <a href="https://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.is_global">is_global</a> que da TRUE o FALSE dependiendo cada caso.</p>



<p>De esta forma evitamos que, por cualquier razón, se agreguen IPs privadas a la lista de elementos bloqueados del firewall.</p>



<p>Si bien AbuseIPDB.com tiene mucho cuidado en no agregar a su lista negra IPs que sean de carácter privado, siempre es bueno verificarlos.</p>



<h3 class="wp-block-heading">Paso final: Crear un cron job para la lista negra</h3>



<p>Hasta ahora todo bien. Ya tenemos un script que puede agregar al firewall direcciones IPv4 o IPv6, pero hasta este momento hay que correrlo manualmente.</p>



<p>Algo que ciertamente no es ideal en muchos de los casos. Lo mejor siempre va a ser que el mismo se ejecute de forma constante cada cierto tiempo.</p>



<p>Para eso, debemos de adaptarlo y agregarlo como parte de los trabajos del cron del sistema.</p>



<p>Pero para ello hay que tener en consideración algo: <em>Los sets creados no son persistentes</em>.</p>



<p>Esto significa que cada vez que se reinicie el equipo, estos van a desaparecer, por lo cual hay que volverlos a crear.</p>



<p>Este problema lo podemos solucionar de múltiples formas y una de ellas es el agregar un trabajo que se encargue de recuperar nuestra lista con cada inicio.</p>



<p>Con lo cual tendríamos dos scripts. Uno ejecutándose diario y otro solo al iniciar el servidor. Así podemos hacer algo tan sencillo como esto:</p>



			<div class="github-gist-container">
				<script type="text/javascript" class="script-github-gist" src="https://gist.github.com/kadai/5ea16e3a49a4f47613336fff7593074e.js?file=loadabuseipdbonboot.py"></script>
			</div>
		


			<div class="github-gist-container">
				<script type="text/javascript" class="script-github-gist" src="https://gist.github.com/kadai/5ea16e3a49a4f47613336fff7593074e.js?file=importabuseipdbblacklist.py"></script>
			</div>
		


<p>Puedes descargar estos archivos aquí:</p>



<div class="wp-block-file"><a href="https://kadai.com.mx/wp-content/uploads/2019/10/abuseipdb_python.zip">abuseipdb_python</a><a href="https://kadai.com.mx/wp-content/uploads/2019/10/abuseipdb_python.zip" class="wp-block-file__button" download>Download</a></div>



<p>Si has prestado atención, puedes ver que solamente se ha movido el código a una función (def) y que importamos en el primer script lo que necesitamos para llenar el set de ips.</p>



<p>De esta forma no necesitamos escribir de nueva cuenta el programa para ambos casos. Y así podemos <a href="https://www.tecmint.com/create-and-manage-cron-jobs-on-linux/">agregarlo al cron</a> usando el siguiente comando:</p>



<pre class="wp-block-code"><code>sudo crontab -e</code></pre>



<p>Estando ya en el editor, deberemos de agregar las siguientes líneas:</p>



<pre class="wp-block-code"><code>0 3 * * * /full/path/to/importabuseipdbblacklist.py
@reboot python3 /full/path/to/loadabuseipdbonboot.py</code></pre>



<p>Una vez hecho, ya estarán las tareas listas a ejecutarse cada vez que se reinicie el servidor, o una vez todos los días a las 3 de la mañana.</p>



<p>De esta forma, la lista negra siempre estará al día y cargada.</p>



<p><strong>Nota:</strong> Ambos archivos, tanto <code>importabuseipdbblacklist.py</code> como <code>loadabuseipdbonboot.py</code> deben de estar en el mismo directorio.</p>



<h3 class="wp-block-heading">Conclusiones sobre agregar la lista negra de AbuseIPDB</h3>



<p>Agregar la lista negra de AbuseIPDB es relativamente sencillo. En especial si cuentas con las herramientas correctas.</p>



<p>Hay muchas formas de prevenir que clientes con mal comportamiento encuentren un servidor. Pero bloqueándolos antes de que tengan oportunidad es una de las mejores.</p>



<p>El usar herramientas como <em>firewalld</em> no siempre es lo mejor, por limitaciones que tiene la misma. A veces hay que hacer las cosas con comandos más cercanos al núcleo.</p>



<p>Finalmente, hay que recordar que esta solución no es realmente «persistente», ya que la lista desaparecerá cada vez que se reinicie el sistema.</p>



<p>Aunque se soluciona fácilmente, como lo es creando cron jobs, existen diversas formas de solucionarlo. Pero en cada caso, todo depende de las propias necesidades que tengamos.</p>



<p>Sin embargo, hay que preguntarse: <em>¿Qué tan seguido se reinicia un servidor?</em> En mi experiencia, no mucho.</p>



<p>Pero quizá podamos dejar para otro día la implementación de un mecanismo persistente.</p>
<p>The post <a href="https://kadai.com.mx/como-agregar-la-lista-negra-de-abuseipdb-al-firewall/">[Tutorial] Como agregar la lista negra de AbuseIPDB al Firewall</a> appeared first on <a href="https://kadai.com.mx">Endless Manifesto</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://kadai.com.mx/como-agregar-la-lista-negra-de-abuseipdb-al-firewall/feed/</wfw:commentRss>
			<slash:comments>16</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1547</post-id>	</item>
		<item>
		<title>Problemas con Rocket Loader de Cloudflare</title>
		<link>https://kadai.com.mx/problemas-rocket-loader-cloudflare/</link>
					<comments>https://kadai.com.mx/problemas-rocket-loader-cloudflare/#comments</comments>
		
		<dc:creator><![CDATA[Kadai Crosshansen]]></dc:creator>
		<pubDate>Sun, 27 May 2018 23:39:10 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[cloudflare]]></category>
		<category><![CDATA[problemas]]></category>
		<category><![CDATA[rocket loader]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[sitio web]]></category>
		<category><![CDATA[wordfence]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://kadai.com.mx/?p=1368</guid>

					<description><![CDATA[<p>Recientemente he detectado problemas con Rocket Loader en uno de mis sitios web. Y es que se supone que Cloudflare debe de protegerlo, pero en ciertos casos, esto puede causar problemas. En pocas palabras, Cloudflare puede causar un ataque DDoS. ¿Qué sucede con Rocket Loader? Rocket Loader es una característica en estado beta de Cloudflare. [&#8230;]</p>
<p>The post <a href="https://kadai.com.mx/problemas-rocket-loader-cloudflare/">Problemas con Rocket Loader de Cloudflare</a> appeared first on <a href="https://kadai.com.mx">Endless Manifesto</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Recientemente he detectado problemas con Rocket Loader en uno de mis sitios web. Y es que se supone que Cloudflare debe de protegerlo, pero en ciertos casos, esto puede causar problemas.</p>
<p>En pocas palabras, Cloudflare puede causar un ataque DDoS.</p>
<p><span id="more-1368"></span></p>
<h3>¿Qué sucede con Rocket Loader?</h3>
<p>Rocket Loader es una característica en estado beta de <a href="https://dtorrer.com/cloudflare-con-wordpress/" target="_blank" rel="noopener">Cloudflare</a>. Su principal objetivo es mejorar la velocidad de un sitio web. Eso lo hace bien.</p>
<p>Sin embargo, recientemente he estado observando problemas con este.</p>
<p>Por ejemplo, cada vez que he enviado datos de formulario, he observado un número inusual de conexiones. Al principio pensé que se trataba de un ataque.</p>
<p>Pero mientras más busque, es que me fui percatando de que había un problema entre el plugin Wordfence y este servicio de Cloudflare.</p>
<h3>¿Qué es lo que sucedía con WordFence?</h3>
<p>Haciendo la historia corta, empece a ver que mis sitios web generaban errores y que el servidor en el cual estoy «colapsara». Al punto de que necesitaba el reiniciarlo a mano.</p>
<p>Algo que no debería de suceder.</p>
<p>Cuando finalmente comencé a ver los registros de apache, comencé a observar un alto número de llamados a un mismo URL con lo siguiente:</p>
<p><code>/?wordfence_lh=1&amp;hid=...</code></p>
<p>Observé que se hacían estos llamados en oleadas de 20 a 50 conexiones por segundo. Algo que este servidor no podía aguantar.</p>
<p>Al menos no con la configuración presente.</p>
<p>Pero al estar indagando es que fui encontrando de que <a href="https://wordpress.org/support/topic/apparent-attacks-and-why-wordfence-is-mention-in-the-logs/" target="_blank" rel="noopener nofollow">no era el único</a> el cual estaba sufriendo de este problema de WordPress con Wordfence y Cloudflare.</p>
<h3>¿Qué fue lo que pasó entre Rocket Loader y WordPress?</h3>
<p>En un <a href="https://community.cloudflare.com/t/rocket-loader-update-is-active-in-wp-admin/17900/3" target="_blank" rel="noopener nofollow">hilo de la comunidad de Cloudflare</a>, se habla de cambios que se están haciendo a Rocket Loader.</p>
<p>Después de todo, se entiende debido a que es software en estado beta.</p>
<p>Sin embargo, en este caso esto significó problemas que causaron la caída de un servidor. Mientras no es grave, si implica que el riesgo existía todavía.</p>
<p>En su momento se menciono que el problema había sido resuelto. Eso era cierto, ya que desde la semana pasado no volví a ver el problema&#8230; hasta ayer.</p>
<h3>¿Como soluciono la caída de WordPress por Rocket Loader?</h3>
<p>La forma más sencilla de evitar este problema es <em>desactivando por completo Rocket Loader</em>. Como característica beta, no debería de ser usada indiscriminadamente.</p>
<p>Menos en entornos de producción.</p>
<p>La ventaja es que esta característica viene desactivada por defecto. Sin embargo, si la han activado por ti, puedes desactivarla así:</p>
<p><em>Ingresa a Cloudflare &gt; Elige el Dominio &gt; Speed &gt; Rocket Loader</em></p>
<p>Ahí podrás apagar esta característica. De esta forma quizá ya no veas problemas en tu servidor.</p>
<h3>Conclusiones sobre Rocket Loader</h3>
<p>Cloudflare no me había dado <a href="https://kadai.com.mx/2017/05/03/connectivity-issues/" target="_blank" rel="noopener">grandes problemas</a> desde que lo uso hace ya más de 5 años, si no es que más.</p>
<p>Sin embargo, esta característica, que promete mucho, me ha hecho tener que vigilar un poco mejor las opciones que tengo activadas en dicho servicio.</p>
<p>Todos queremos que nuestros sitios web sean rápidos&#8230; sin embargo, a veces eso nos hace el usar software en estado beta, como Rocket Loader, cuando no están listos para producción.</p>
<p>Yo ya sentí en carne propia algunos de sus problemas. Quizá la vuelva a activar cuando este más madura o con Page Rules.</p>
<p>Pero ya veremos.</p>
<h4>Actualización sobre Rocket Loader<em><br />
</em></h4>
<p>Recientemente volví a activar Rocket Loader tratar de obtener más datos sobre este problema. Y así poder reportarlo de forma correcta.</p>
<p>Y es que, tras mirar los registros del servidor, ya no encontré las referencias a Wordfence como antes. Pero a <code>admin-ajax.php</code>. Lo cual cambia un poco el panorama.</p>
<p>La última vez que sufrí el problema fue el pasado 27 de mayo.</p>
<p>Mi problema ahora es que no he podido <em>duplicar</em> este bug. No me ha vuelto a suceder. Es plausible de que necesite esperar un tiempo ante de poder reproducirlo. Aunque igualmente es plausible de que haya sido corregido correctamente.</p>
<p>Pero eso lo veremos en los próximos días.</p>
<p>The post <a href="https://kadai.com.mx/problemas-rocket-loader-cloudflare/">Problemas con Rocket Loader de Cloudflare</a> appeared first on <a href="https://kadai.com.mx">Endless Manifesto</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://kadai.com.mx/problemas-rocket-loader-cloudflare/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1368</post-id>	</item>
	</channel>
</rss>
