<?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 linux &#187; Endless Manifesto</title>
	<atom:link href="https://kadai.com.mx/tag/linux/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 linux &#187; Endless Manifesto</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">126519727</site>	<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>Error SIGSEGV en PHP 7.3 [Solución definitiva]</title>
		<link>https://kadai.com.mx/sigsegv-en-php-7-3-soluciones-al-problema/</link>
					<comments>https://kadai.com.mx/sigsegv-en-php-7-3-soluciones-al-problema/#respond</comments>
		
		<dc:creator><![CDATA[Kadai Crosshansen]]></dc:creator>
		<pubDate>Wed, 13 Mar 2019 17:37:38 +0000</pubDate>
				<category><![CDATA[Servidor]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php-fpm]]></category>
		<category><![CDATA[php7.2]]></category>
		<category><![CDATA[php7.3]]></category>
		<category><![CDATA[prefork]]></category>
		<category><![CDATA[vps]]></category>
		<guid isPermaLink="false">https://kadai.com.mx/?p=1506</guid>

					<description><![CDATA[<p>Recientemente, a principios de Marzo, realice una actualización de PHP 7.2 a PHP 7.3. Sin embargo, lo que iba a ser una actualización sin problemas, pronto comenzó a volverse más complicado. Los errores SIGSEGV en PHP aparecen una mañana Durante unos días libres que tuve, realice una actualización de PHP desde 7.2.12 (aproximadamente) a la [&#8230;]</p>
<p>The post <a href="https://kadai.com.mx/sigsegv-en-php-7-3-soluciones-al-problema/">Error SIGSEGV en PHP 7.3 [Solución definitiva]</a> appeared first on <a href="https://kadai.com.mx">Endless Manifesto</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Recientemente, a principios de Marzo, realice una actualización de PHP 7.2 a PHP 7.3. Sin embargo, lo que iba a ser una actualización sin problemas, pronto comenzó a volverse más complicado.</p>



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



<h2 class="wp-block-heading">Los errores SIGSEGV en PHP aparecen una mañana</h2>



<p>Durante unos días libres que tuve, realice una actualización de PHP desde 7.2.12 (aproximadamente) a la ultima versión disponible de PHP: 7.3.1</p>



<p>Todo salio bien en ese momento. Incluso las cosas funcionaban sin problemas, pero eso cambiaría a la mañana siguiente.</p>



<p>Fue entonces cuando este sitio web me arrojo un error 503. Así como otros más en esta VPS corriendo ubuntu.</p>



<p>Al revisar en los archivos de errores, en busca de alguna causa, solo encontraba lo siguiente:</p>



<pre class="wp-block-preformatted">(104)Connection reset by peer: [client XX.XX.XX.XX:XXXX] AH01075: Error dispatching request to : <br><br>AH01067: Failed to read FastCGI header</pre>



<p>Al mirar más de cerca, resulto que Apache servia contenido estático sin problemas. Solo las páginas generadas por PHP mostraban el error.</p>



<p>Cuando revise en los registros de PHP, la siguiente línea aparecía múltiples veces:</p>



<pre class="wp-block-preformatted">WARNING: [pool XXXXX] child XXXX exited on signal 11 (SIGSEGV - core dumped) after 30.977656 seconds from start</pre>



<p>Este error de SIGSEGV en PHP significaba que había sucedido una <a rel="noreferrer noopener" aria-label="Violación de Acceso (opens in a new tab)" href="https://es.wikipedia.org/wiki/Violaci%C3%B3n_de_acceso" target="_blank">Violación de Acceso</a> de memoria (<em>segfault o segmentation fault</em>) por parte de PHP.</p>



<p>¿Cómo era esto posible? ¿Qué lo estaba causando?</p>



<p>Una de las soluciones temporales que encontré fue el usar el siguiente comando:</p>



<pre class="wp-block-preformatted">systemctl restart php7.3-fpm</pre>



<p>Pero esta era una solución temporal. Ya que al poco tiempo el problema volvía a suceder. En algunos casos tan pronto como a los pocos segundos.</p>



<p>Esto se estaba volviendo una pesadilla.</p>



<h2 class="wp-block-heading">Apache2, prefork y el modulo PHP7.3: ¿Origen del problema?</h2>



<p>Durante mi investigación, detecte algo que pase por alto cuando actualice PHP a su versión 7.3: Me había agregado un nuevo módulo y cambiado el modo MPM de Apache.</p>



<p>El modo lo podemos ver con el siguiente comando en ubuntu:</p>



<pre class="wp-block-preformatted">apache2ctl -V</pre>



<p>¿Eso explicaba el problema?</p>



<p>De lo primero que me percate es que ese nuevo módulo, llamado solamente «PHP7.3», necesitaba que Apache2 corriera en modo Prefork.</p>



<p>No entendí por que de este movimiento, pero no era el cual había configurado en el servidor: Event.</p>



<p>Por lo cual procedí a desactivar PHP7.3 y cambiar Prefork por Event, ejecutando lo siguiente:</p>



<pre class="wp-block-preformatted">sudo a2dismod php7.3<br>sudo a2dismod mpm_prefork<br>sudo a2enmod mpm_event<br>systemctl restart apache2<br>systemctl restart php7.3-fpm</pre>



<p>De lo primero que me pude percatar, es que los errores de SIGSEGV en PHP bajaron dramáticamente con esto.</p>



<p>Aunque pronto descubriría que estos estaban lejos de desaparecer.</p>



<h2 class="wp-block-heading">El error SIGSEGV en PHP da tregua, pero no por mucho</h2>



<p>PHP 7.3 funciono de forma normal por algunos días. Pero eventualmente el error volvió a aparecer.</p>



<p>En los registros volvía a ver la señal 11 de SIGSEGV en PHP, lo cual me indicó que el problema tenia muchas posibilidades de seguir apareciendo.</p>



<p>Aunque era menos común, esto significaba que podía suceder en cualquier momento.</p>



<p>Buscando más a fondo, encontré quizá lo más profundo del origen del problema:</p>



<pre class="wp-block-preformatted">segfault at 6c6f4320 ip b4b92b37 sp bfe93df0 error 4 in opcache.so[b4b82000+6d000]</pre>



<p>Por fortuna, comencé a notar que no era el único con este problema. Usuarios del panel Plesk también <a rel="noreferrer noopener" aria-label="reportaron este problema (opens in a new tab)" href="https://talk.plesk.com/threads/php-7-3-fpm-dies-without-a-trace.350761/" target="_blank">reportaron este problema</a>. E incluso dicha empresa <a rel="noreferrer noopener" aria-label="no recomendando PHP7.3 por el momento (opens in a new tab)" href="https://support.plesk.com/hc/en-us/articles/360014718313-Domains-on-Plesk-PHP-7-3-are-down-Service-Unavailable" target="_blank">no está recomendando PHP7.3 por el momento</a>.</p>



<p>Lo cual, parece indicar que no hay una solución definitiva por ahora.</p>



<h2 class="wp-block-heading">Entonces, ¿Cómo solucionar las caídas de PHP?</h2>



<p>Como comenté antes, PHP constantemente arroja un error segfault o SIGSEGV el cual interrumpe la ejecución de cualquier recurso dinámico.</p>



<p>Sin embargo, esto se soluciona cuando se reinicia el servicio. Hacerlo manualmente no es una solución aceptable. Y crear un cronjob no me parece una buena idea.</p>



<p>Pero hay <a rel="noreferrer noopener" aria-label="otras alternativas (opens in a new tab)" href="https://serverfault.com/questions/575457/constantly-have-to-reload-php-fpm" target="_blank">alternativas</a> que ya ofrece PHP de forma nativa.</p>



<p>Por ejemplo, nosotros podemos editar el archivo php-fpm.conf (ya que es el modo FPM el cual fallaba para mi) y configurar lo siguiente:</p>



<pre class="wp-block-preformatted">/etc/php/7.3/fpm/php-fpm.conf :<br>emergency_restart_threshold = 3<br>emergency_restart_interval = 1h<br>process_control_timeout = 10s</pre>



<p>Con esto, hacemos que PHP este al pendiente por errores. Y cuando sucedan 3 errores en una hora, se reiniciará automáticamente.</p>



<p>De esta forma, el servicio se restablecerá de forma automática sin necesitar nuestra intervención.</p>



<p>Estos valores pueden ser fácilmente cambiados de acuerdo a tus propias necesidades. Solamente recuerda reiniciar el servicio de <em>php-fpm</em> una vez hagas cambios.</p>



<h2 class="wp-block-heading">Para concluir</h2>



<p>Si bien actualmente PHP7.3 parece tener problemas con su sistema de cache interno, con las correcciones adecuadas es posible usarlo sin problemas.</p>



<p>Pero hay algo muy importante que resaltar. Por ahora es mejor el mantenerse en PHP7.2 o tener múltiples versiones instaladas si es posible.</p>



<p>Ya que, a diferencia de la versión más nueva, PHP7.2 está mucho más maduro y este tipo de problemas son mucho más raros.</p>



<p>En mi caso, todavía sigo buscando que es lo que causa el error de SIGSEGV en PHP 7.3, y aunque sospecho que puede causarlo&#8230; no tengo una solución definitiva.</p>



<p>Lo que si, espero que esta pequeña guía le sea de utilidad a alguien. Ya que encontrar una solución, aunque parcial, fue una búsqueda de varios días.</p>



<h2 class="wp-block-heading">Actualización y solución definitiva</h2>



<p>Tras haber estado sufriendo el problema de los errores SIGSEGV por mucho tiempo con PHP 7.3, estos finalmente dejaron e suceder.</p>



<p>Sin embargo, la solución puede no ser tan trivial.</p>



<p>Resulta que con PHP 7.4, los errores simplemente desaparecieron. He estado observando los registros de PHP de forma continua por este error desde la actualización, pero esta no ha vuelto a suceder.</p>



<p>Lo cual me hace pensar que <strong>el problema no esta presente en PHP 7.4</strong>.</p>



<p>Si esta dentro de tus posibilidades, actualizar hacia la versión 7.4 de PHP es lo mejor. No solo trae más características si no que es hasta más seguro.</p>



<p>En caso de que no sepas como actualizar, pregunta con quien lleva tu hospedaje, este debe de poder ayudarte.</p>
<p>The post <a href="https://kadai.com.mx/sigsegv-en-php-7-3-soluciones-al-problema/">Error SIGSEGV en PHP 7.3 [Solución definitiva]</a> appeared first on <a href="https://kadai.com.mx">Endless Manifesto</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://kadai.com.mx/sigsegv-en-php-7-3-soluciones-al-problema/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1506</post-id>	</item>
		<item>
		<title>WannaCry and stay safe from it</title>
		<link>https://kadai.com.mx/wannacry-stay-safe/</link>
					<comments>https://kadai.com.mx/wannacry-stay-safe/#respond</comments>
		
		<dc:creator><![CDATA[Kadai Crosshansen]]></dc:creator>
		<pubDate>Wed, 17 May 2017 02:51:07 +0000</pubDate>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[antivirus]]></category>
		<category><![CDATA[avast]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[freefilesync]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[keepass]]></category>
		<category><![CDATA[kubuntu]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[ransom]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[virus]]></category>
		<category><![CDATA[wannacry]]></category>
		<category><![CDATA[windows]]></category>
		<guid isPermaLink="false">https://kadai.com.mx/?p=439</guid>

					<description><![CDATA[<p>The digital world has been hit by the WannaCry ransomware. A kind of virus that basically kidnaps your data unless you pay a kind of ransom. While paying USD$300 for recovering your files sounds reasonable&#8230; do not do it. It&#8217;s very likely that the authors of the virus will just take your money and give you nothing [&#8230;]</p>
<p>The post <a href="https://kadai.com.mx/wannacry-stay-safe/">WannaCry and stay safe from it</a> appeared first on <a href="https://kadai.com.mx">Endless Manifesto</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;">The digital world has been hit by the WannaCry ransomware. A kind of virus that basically <a href="https://en.wikipedia.org/wiki/WannaCry_ransomware_attack" target="_blank" rel="noopener noreferrer">kidnaps</a> your data unless you pay a kind of ransom.</p>
<p style="text-align: justify;">While paying USD$300 for recovering your files sounds reasonable&#8230; do not do it.</p>
<p style="text-align: justify;">It&#8217;s very likely that the authors of the virus will just take your money and give you nothing back. That is the way that it usually works.</p>
<p><span id="more-439"></span></p>
<h3>What does this WannaCry?</h3>
<p style="text-align: justify;">Long history short: It will encrypt all files you use on your computer. Then, it will ask the user for a ransom in order to «decrypt» them.</p>
<p style="text-align: justify;">Basically, it will make your files garbage and ask you for money to turn them back to normal.</p>
<p style="text-align: justify;">The problem is that once encrypted, you rely on a criminal to have your files restored. And it&#8217;s very likely that they will just walk away with your money.</p>
<h3 style="text-align: justify;">What can I do then?</h3>
<p style="text-align: justify;"> There are some things you can do in order to try and <a href="http://soft2secure.com/knowledgebase/wannacry-wncry" target="_blank" rel="noopener noreferrer">recover yourself</a> from this virus. Yet, it will never beat to wipe clean your hard disk and reinstall all your stuff.</p>
<p style="text-align: justify;">In my case, I personally like a much more proactive approach. Things that I feel like common sense when you are working with computers and other&#8230; vulnerable software and hardware.</p>
<h3>1. Keep yourself up to date</h3>
<p style="text-align: justify;">WannaCry only affects Windows installations. That is why you need to keep it up to date whenever possible with the «windows update» feature.</p>
<p style="text-align: justify;">An updated system is safer and more healthy.</p>
<p style="text-align: justify;">Of course, in this very special case, even a fix was offered to Windows XP and other «retired» systems.</p>
<p style="text-align: justify;">The best option for you, in the long run, is to simply upgrade yourself to the most modern version of windows. If that is not possible, then Linux makes a fine choice to keep nasty stuff from infecting you and it is very <a href="http://www.kubuntu.org/" target="_blank" rel="noopener noreferrer">easy to use</a> nowadays.</p>
<h3>2. Make backups often</h3>
<p style="text-align: justify;">Doing backups may be a headache if you have large numbers of files, like me. But doing them should be a habit to keep yourself safe.</p>
<p style="text-align: justify;">Be that a failing hard disk, a crashing system or just the WannaCry ransomware, a backup keeps your data safe. And lessens the damage.</p>
<p style="text-align: justify;">One can make backups in many ways. For example, Dropbox, Google Drive or a Personal Cloud are fine options if you want to keep a few files safe.</p>
<p style="text-align: justify;">But when you have a large amount, like 10GB or more, having a portable hard disk is a better idea.</p>
<p style="text-align: justify;">In my case, I use a program named «<a href="https://www.freefilesync.org/" target="_blank" rel="noopener noreferrer">FreeFileSync</a>» that allows me to make «mirrors» of the folders I want. With it, I only copy into the hard disk any different and new file, saving a lot of time.</p>
<h3 style="text-align: justify;">3. Do not open strange emails</h3>
<p style="text-align: justify;"> Always check the extension of the files that other people are sending you. And more importantly, never open attached files, or click links, from people you do not know.</p>
<p style="text-align: justify;">A file ending with a «.exe» or «.vbs» can potentially be a virus. Even if sent from a person you do not know. Heck, you even should not open any file with such extensions unless you know what you are doing.</p>
<p style="text-align: justify;">Never trust what you receive in your inbox. Save for the cases where you openly asked to receive things.</p>
<p style="text-align: justify;">Sounds harsh, but you can keep away a lot of problems that way. Do not open the links or files contained in an email, from that bank where you do not have an account, or that looks quite suspicious.</p>
<h3 style="text-align: justify;">4. Keep your passwords strong</h3>
<p style="text-align: justify;">It is hard to keep track of all the accounts and its passwords as time goes by. And sometimes, we usually think that just setting our password as «password1234» is safe enough.</p>
<p style="text-align: justify;">Wrong.</p>
<p style="text-align: justify;">This is where a password manager become handy. And I personally like «<a href="http://keepass.info/" target="_blank" rel="noopener noreferrer">KeePass</a>» for such task, as the generated file is encrypted and can only be opened if you enter the correct password.</p>
<p style="text-align: justify;">Having your passwords in the cloud or in a notetaking software can work too. But I am not fond to such solutions and like an extra layer of security.</p>
<h3 style="text-align: justify;">5. Keep an antivirus up and running</h3>
<p style="text-align: justify;">Maybe should have had this one listed before. But, well&#8230; to have an antivirus, even a free one, is always a good idea. As an extra layer of defense.</p>
<p style="text-align: justify;">I personally like the «<a href="https://www.avast.com/index" target="_blank" rel="noopener noreferrer">Avast</a>» one. As it is not intrusive, seems to spend little resources and can be configured to update itself without yelling at me to do so.</p>
<h3 style="text-align: justify;">6. Other measures</h3>
<p style="text-align: justify;">Those are the most basic ways one can protect itself from a virus like the WannaCry. While no system is totally safe, even Linux has vulnerabilities&#8230; even Unix, we can do a lot of things to decrease the risk to a minimum.</p>
<p style="text-align: justify;">Other ways include being behind a firewall or deactivate SMB, heck, even making your computer not to listen to certain ports. But that is far from the scope from this post.</p>
<h3 style="text-align: justify;">Do not give up</h3>
<p style="text-align: justify;">As the years have come by, I have had my computers fall to all sorts of virus and stuff. You always recover yourself. But you need to be ready before hand.</p>
<p style="text-align: justify;">I have always loved to have a dual booting at my computers, hence the featured image.</p>
<p style="text-align: justify;">Having a separate EXT4 partition for Linux, while a sacrifice of space, can keep me safe when something goes horribly wrong at Windows. And it usually happens.</p>
<p style="text-align: justify;">Probably I should then spend more time at my Linux install if the risks of virus become more and more prominent. Just a shame that I do not have all the tools I need there&#8230; yet.</p>
<p>The post <a href="https://kadai.com.mx/wannacry-stay-safe/">WannaCry and stay safe from it</a> appeared first on <a href="https://kadai.com.mx">Endless Manifesto</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://kadai.com.mx/wannacry-stay-safe/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">439</post-id>	</item>
	</channel>
</rss>
