¿Como no ser un centro de control de Malware?, Guía de Hardening sobre WordPress 2019

Introducción

[Actualización] Entendiendo la necesidad de comenzar a proteger de mejor manera la seguridad sobre las plataformas WordPress, y otros CMS, según lo visto con la enorme cantidad de Indicadores de compromiso (IOC), en donde la plataforma usada como centro de control para ataques, son WordPress vulnerados, estos casos los cuales he visto de cerca, puesto nos llegan miles de ataques diarios, y es una responsabilidad entre los ciberatacantes y también las empresas que descuidan sus plataformas, es por esto, que me puse manos a la obra y he creado esta guía de libre uso, para que los “amigos” que implementan WordPress tomen las medidas mínimas de Seguridad, si desea que colabore en algún emprendimiento puede contactarme en sebastian.vargas@protonmail.com.

También es bueno que revise la seguridad de su Servidor, con este sencillo paso puede revisarlo: http://shodan.io/host/IP , asi rapidamente sabra si tiene vulnerabilidades conocidas y expuestas (CVE) que un atacante podría estar interesado en tratar de explotar.

Estimado Lector, si no me cree la cantidad de sitios web vulnerables, puede investigar con fines educacionales con los siguientes google dork:

He creado una serie de recomendaciones que son la continuación de la guía de Hardening de Servidor Web que fue capitulo Nº1.

Regla nº1: No le compre sitios web cualquier persona, si tiene un bajo presupuesto utilice wordpress.com, y transfiera los riesgos.

Método de Hardening WordPress

La estructura propuesta consta de los siguientes puntos principales los cuales se debe poner énfasis en su correcto despliegue, para garantizar una menor exposición a riesgos tecnológicos.

  • Control de acceso: Pueden existir riesgos de pérdidas de datos, debido a acceso de cuentas con configuración débil.
  • Directorios: Riesgos de delito informático a través de inserción de webshell, con resultado de centros de controles, para distribución de malware con consecuencias phishing bancario.
  • Componentes: Riesgo de disponibilidad del servicio mediante ataques de DDOS, o uso de exploit.
  • Búsquedas: Riesgo reputación a través de mala configuración, con consecuencia de filtración de datos, acceso a carpetas privadas, a rutas de administración.
  • Respaldo: Riesgo de pérdida de datos
  • Ausencia de Seguridad:  La sumatoria de todos los riesgos mencionados

Recomendaciones principales de seguridad

  1. Mantén actualizada la versión de WordPress, siempre a la última versión estable.
  2. Use HTTPS en el sitio completo con TLS 1.2 mínimo.
  3. Mantén actualizado los plugins a su última versión estable.
  4. No uses la cuenta admin, para publicar contenido.
  5. Ten solo un usuario con privilegios de administrador
  6. No uses claves débiles, mínimo sobre 12 caracteres alternados y jamás palabras adivinables.
  7. Usa el privilegio mínimo con los usuarios, para las acciones que necesitan solamente.
  8. No uses templates piratas, ni nada pirata, ¡Esto es clave!
  9. No uses plugins innecesarios, los mínimos que necesite.

Cambiar prefijo de base de datos

No usar wp_ 
Reemplazar por algo aleatorio . vs31uaq3_

Permisos recomendados

wp-config.php
Deseable: 400
uploads folder
Deseable: 755
htaccess files
Deseable: 400

Plugins de seguridad recomendados

Plugins de cache recomendados

Deshabilitar edición de código de páginas

define( 'DISALLOW_FILE_EDIT', true );

Protege la navegación de directorios abiertos

Opciones -Indexes

Protege la llamada directa de archivos .php

<Files *.php>
deny from all
</Files>

Protege la subida de archivos

Order Allow,Deny
Deny from all
<FilesMatch "^[^.]+.(?i:jpe?g|png|gif)$">
Allow from all

Quitar la versión del wordpress de la cabecera

remove_action('wp_head', 'wp_generator');

Reglas robots.txt

User-agent: *
Allow: /
# deshabilitar estos directorios, url & y tipos de archivos
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/
Disallow: /search/*/feed
Disallow: /search/*/*
Disallow: /readme.html
Disallow: /license.txt
Disallow: /*?*
Disallow: /*?
Disallow: /*.php$
Disallow: /*.js$
Disallow: /*.inc$
Disallow: /*.css$
Disallow: /*.gz$
Disallow: /*.wmv$
Disallow: /*.cgi$
Disallow: /*.xhtml$
Allow: /wp-content/uploads/
Allow: /*?page=*
User-agent: Mediapartners-Google
Allow: /
User-agent: Adsbot-Google
Allow: /
User-agent: Googlebot-Image
Allow: /
User-agent: Googlebot-Mobile
Allow: /
User-agent: ia_archiver*
Disallow: /
User-agent: duggmirror
Disallow: /
Sitemap: http://domain.com/sitemap.xml

Cabeceras de seguridad

Header set ServerSignature "Off"
Header set ServerTokens "Prod"

Cabecera X-Frame-Options

Header always append X-Frame-Options SAMEORIGIN

Habilitar HTST

Header add Strict-Transport-Security "max-age=157680000"

Cabecera X-XSS-Protection para evitar ataques XSS en IE y Chrome

Header set X-XSS-Protection "1; mode=block"

Cabecera X-Content-Type-Options

Header set X-Content-Type-Options "nosniff"

Protección contra badbots

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^.*(Baiduspider|HTTrack|Yandex).*$ [NC]
RewriteRule .* - [F,L]
SetEnvIfNoCase user-Agent ^Baiduspider [NC,OR]
SetEnvIfNoCase user-Agent ^Yandex [NC,OR]
SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
SetEnvIfNoCase user-Agent ^HTTrack [NC]
Order Allow,Deny
Allow from all
Deny from env=bad_bot

Protección contra peticiones maliciosas

RewriteCond %{REQUEST_METHOD} (HEAD|GET|POST|OPTIONS) [NC]
RewriteRule ^(.*)$ - [F,L]
RewriteCond %{HTTP_USER_AGENT} (libwww-perl|wget|python|nikto|curl|whatweb|acunetix|uniscan|scan|java|winhttp|clshttp|netsparker|wappalyzer|loader) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (<|>|'|%0A|%0D|%27|%3C|%3E|%00)

Bloquear intentos de ataques a través de Timthumb wordpress

RewriteCond %{REQUEST_URI} (timthumb.php|phpthumb.php|thumb.php|thumbs.php) [NC]
RewriteRule . - [S=1]

Bloquear readme.html

<files readme.html>
order allow,deny
deny from all
</files>

Bloquear xml-rpc

<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

Auditar seguridad de WordPress

  1. https://securityheaders.com/ Revisar cabeceras de seguridad
  2. https://www.wpdoctor.es Auditoria de seguridad del sitio
  3. https://wpscans.com/ Auditoria de seguridad
  4. https://developers.google.com/speed/pagespeed/insights/?hl=es  Auditoria de velocidad de sitio

Capa extra a través de CDN

¿Desea sacar A+ en securityheaders.io?

header('X-Frame-Options: SAMEORIGIN');

header( 'X-Content-Type-Options: nosniff' );

header( 'X-XSS-Protection: 1;mode=block' );

header("Strict-Transport-Security: max-age=31536000; includeSubDomains");

header("X-Content-Security-Policy: default-src 'self';

script-src https://apis.google.com https://platform.twitter.com; 

child-src https://plusone.google.com https://facebook.com https://platform.twitter.com"); // FF 23+ Chrome 25+ Safari 7+ Opera 19+

header("Referrer-Policy: no-referrer-when-downgrade");

header("Feature-Policy: vibrate 'self'");



Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .