ESC

Escribe para buscar entre todos los artículos

Volver al archivo

¿Cómo no ser un centro de control de malware? Guía de Hardening sobre WordPress 2019

Guía completa de hardening para WordPress con recomendaciones de seguridad, configuraciones de servidor, plugins y cabeceras para proteger sitios web.

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, así rápidamente sabrá 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:

  • “index of” inurl:wp-content/”
  • “inurl:“/wp-content/wpclone-temp/wpclone_backup/”
  • “inurl:“/wp-content/plugins/wp-shopping-cart/” intext:DB_PASSWORD
  • intext:“MySQL hostname” ext:txt
  • inurl:“-wp13.txt”
  • inurl:“/wp-content/wpclone-temp/wpclone_backup/”
  • inurl:log -intext:log ext:log inurl:wp-
  • filetype:sql intext:wp_users phpmyadmin
  • inurl:“/wp-content/uploads/levoslideshow/
  • inurl:wp-config -intext:wp-config “‘DB_PASSWORD’”
  • inurl:/wp-content/wpbackitup_backups

He creado una serie de recomendaciones que son la continuación de la guía de Hardening de Servidor Web que fue capítulo N1.

Regla n1: No le compre sitios web a 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

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

  • Cerber Security & Antispam
  • BulletProof Security
  • All In One WP Security & Firewall
  • Sucuri Security - Auditing, Malware Scanner and Security Hardening
  • Acunetix WP Security & Acunetix Secure WordPress
  • Wordfence Security Plugin
  • All In One WP Security & Firewall

Plugins de cache recomendados

  • W3 Total Cache
  • Wp SuperCache

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 HSTS

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

Capa extra a través de CDN

https://www.cloudflare.com

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");
header("Referrer-Policy: no-referrer-when-downgrade");
header("Feature-Policy: vibrate 'self'");
SV
Autor

Sebastián Vargas

CISO & Fundador de TTPSEC SpA. Más de 15 años en ciberseguridad, governance, riesgo y compliance. Escribiendo sobre seguridad de la información desde 2018.

¿Te sirve el contenido?

Recomendarme en LinkedIn
Volver al archivo