Leer un registro de acceso tras un ataque El registro ya contiene la historia completa. Seis órdenes de una línea convierten un millón de filas en: quién, desde dónde y si entró. 5 min read Las copias de seguridad son una medida de seguridad Una copia en el mismo servidor, con las mismas credenciales, no es una copia de seguridad. Es una segunda copia esperando el mismo suceso. 4 min read CSRF: un formulario enviado desde otro sitio Tu visitante ha iniciado sesión, y otro sitio hace que su navegador envíe una petición al tuyo. Un token por formulario lo detiene. 4 min read Cómo saber si un sitio está comprometido La mayoría de los sitios comprometidos le parecen perfectamente normales a su dueño. Las señales que merece la pena comprobar, y las cuatro órdenes que las encuentran. 5 min read fail2ban: qué detiene y qué no Lee registros y bloquea direcciones que repiten un patrón. Útil, limitado y muy fácil de configurar de modo que bloquee tu propia oficina. 5 min read Permisos correctos, no solo permisos que funcionan 777 hace desaparecer el error y abre el sitio a cualquiera que pueda escribir un archivo. Qué significan los números y qué necesita de verdad un sitio web. 5 min read Limpiar un sitio comprometido El orden que deja limpio un sitio hackeado y lo mantiene limpio, y el paso que casi todo el mundo se salta. 8 min read Endurecer SSH Seis líneas de configuración convierten el servicio más atacado de tu servidor en uno que no se puede adivinar en absoluto. 4 min read Código malicioso en la base de datos, no en los archivos Reinstalaste el núcleo, sustituiste todos los complementos, y la redirección sigue ahí. Está en una fila, no en un archivo. 4 min read La propiedad, umask y la trampa del grupo chmod 777 cura el síntoma y abre la puerta. La propiedad y el bit de grupo curan la causa, y mantienen correctos los archivos nuevos. 5 min read Fuerza bruta contra el panel de control Miles de intentos de acceso al día son ruido de fondo normal. Solo se convierten en una brecha cuando una contraseña es débil y nadie está contando. 4 min read Mantener PHP parcheado sin romper el sitio Quedarse en una versión de PHP sin soporte es un fallo de seguridad a cámara lenta. Las versiones de parche son seguras; las versiones mayores piden veinte minutos de preparación. 4 min read Por qué una copia no es una copia de seguridad El ransomware busca primero las copias, y encuentra las que el servidor puede alcanzar. La regla 3-2-1 existe justo por eso. 4 min read Limitar la tasa de una página de acceso Adivinar contraseñas son miles de intentos por hora. Un límite lo vuelve inútil, y cuesta un bloque en la configuración del servidor. 4 min read La inyección SQL, en términos llanos El dato se leyó como parte de la pregunta. Una sola costumbre elimina toda esa familia, y no es el escapado. 5 min read Claves SSH en vez de contraseñas Una clave acaba por completo con los intentos por fuerza bruta. Genérela, instálela, pruébela en una segunda ventana y solo entonces apague las contraseñas. 5 min read El doble factor, y dónde guardar los códigos de recuperación Hace que una contraseña robada deje de bastar. Ponerlo cuesta dos minutos; la parte que la gente hace mal es qué pasa cuando se pierde el móvil. 4 min read El directorio de subidas no debe ejecutar nunca Comprobar la extensión del archivo no basta. Si el servidor web va a ejecutar PHP desde su carpeta de subidas, una sola subida mala es un shell. 4 min read Las cuatro cosas por las que piratean los sitios WordPress No son exploits oscuros. Cuatro descuidos corrientes explican casi todos los sitios comprometidos, y cada uno se cierra en minutos. 6 min read El cross-site scripting, en palabras llanas El código de otro ejecutándose en su página, dentro de la sesión de su visitante. Una sola costumbre lo evita casi por completo. 5 min read