Seguridad en WordPress

20
WordPress Day Marbella 2015

Transcript of Seguridad en WordPress

Page 1: Seguridad en WordPress

WordPress Day Marbella 2015

Page 2: Seguridad en WordPress

Seguridad en WordPressPedro Santos

Page 3: Seguridad en WordPress

La seguridad empieza por uno mismo

Contraseñas Seguras y diferentesS.O. y navegadores actualizadosAntivirus completos, PC y Mac

Core, plugins y themes actualizadosNUNCA UTILIZAR THEMES Y PLUGINS NULLED

BACKUPS

Page 4: Seguridad en WordPress

Instalando WordPress

Nombre de la Base de Datos, no usar wpPrefijo tablas de la BD, no usar wp

No usar admin, Admin, Administrator, administrator, nombre de dominio

Page 5: Seguridad en WordPress

robots.txtUser-agent: * Disallow: /wp-admin/Disallow: /wp-includes/Disallow: /cgi-bin/

# No indexar archivos con extensiónDisallow: /*.php$Disallow: /*.js$Disallow: /*.inc$Disallow: /*.css$Disallow: /*.gz$Disallow: /*.wmv$Disallow: /*.cgi$Disallow: /*.xhtml$Disallow: /*?*

# LIMITAR BOTS Yahoo, MSN y NoxtrumUser-agent: noxtrumbotCrawl-delay: 50User-agent: msnbotCrawl-delay: 30User-agent: SlurpCrawl-delay: 10

Page 6: Seguridad en WordPress

Ataques de fuerza en brutoDoble autenticación

Creamos dos archivos en la raíz del hosting.htaccess y .wpadmin

Contenido .htaccessErrorDocument 401 "Unauthorized Access"ErrorDocument 403 "Forbidden"<FilesMatch "wp-login.php">AuthName "Authorized Only"AuthType BasicAuthUserFile /home/usuario/.wpadminrequire valid-user</FilesMatch>

Contenido .wpadminhttp://www.htaccesstools.com/htpasswd-generator/ pepitodelospalotes:$apr1$Vo5OdtZe$irw0TeFV.ImpUFKIVDL/A

Page 7: Seguridad en WordPress

Ataques de fuerza en brutoDirección ip única

Desde el .htaccess de WordPress

<Files wp-login.php>order deny,allowallow from xxx.xxx.xxx.xxxdeny from all</Files>

Sustituir xxx.xxx.xxx.xxx por nuestra ip

Page 8: Seguridad en WordPress

Plugins Doble factor

• Clef Two-Factor Authentication

• Latch

• Two Factor Authentication

• Duo Two-Factor Authentication

Page 9: Seguridad en WordPress

Protección en .htaccess de WordPress# sin acceso a proc/self/environRewriteCond %{QUERY_STRING} proc/self/environ [OR]

# bloquear cualquier script que trate de establecer un valor mosConfig a traves de una URLRewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]

# bloquear cualquier script que trate de colocarte codigo codificado base64_encode a traves de una URLRewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]

# bloquea cualquier script que incluya la tag <script> en la URLRewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]

# bloquea cualquier script que trate de establecer la variable PHP GLOBALS a traves de una URLRewriteCond %{QUERY_STRING} GLOBALS(=|[|\%[0-9A-Z]{0,2}) [OR]

# bloquea cualquier script que trate de modificar una variable _REQUEST a traves de una URLRewriteCond %{QUERY_STRING} _REQUEST(=|[|\%[0-9A-Z]{0,2})

# proteger wp-config.php<files wp-config.php>order allow,denydeny from all</files>

Page 10: Seguridad en WordPress

Protección de los headers en .htaccess de WordPress

<IfModule mod_headers.c> Header set X-XSS-Protection "1; mode=block”</IfModule>

<IfModule mod_headers.c> Header set X-Content-Type-Options nosniff</IfModule>

<IfModule mod_headers.c>Header always append X-Frame-Options SAMEORIGIN</IfModule>

Page 11: Seguridad en WordPress

Protección de directorios con .htaccess

wp-content y wp-content/uploads<Files *.php>deny from all</Files>

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

wp-includes

Page 12: Seguridad en WordPress

Protección contra edición de plugins y themes

Incluir en wp-config.php

define('DISALLOW_FILE_EDIT', TRUE);

Page 13: Seguridad en WordPress

Archivos que se pueden borrar de WordPress

readme.htmlxmlrpc.php

Page 14: Seguridad en WordPress

Aquellos maravillosos plugins para WordPress

Page 15: Seguridad en WordPress

Wordfence antivirus, firewall-Scanner antimalware-Comparador archivos-Restauración de archivos-Firewall bloqueo bots-Bloqueo ipv4+ipv6 y rangos-Doble factor autenticación-Bloqueo países -Auditoría contraseñas-Network Wordfence-Ataques fuerza en bruto-Caché (Falcon)-Protección directorios-Aviso actualizaciones

Page 16: Seguridad en WordPress

Sucuri Security

-Scanner antimalware-Modificación archivos-Aviso login-Oculta versión WordPress-Protege directorio uploads-Protege directorio wp-content-Protege directorio wp-includes -Chequea Security Keys (salts)-Elimina readme.html-Bloquea edición themes y plugins-Chequea prefix BD-Borra archivo error_log-Herramientas post hack, reset de salts, contraseña y plugins

Page 17: Seguridad en WordPress

Ninjafirewall WAF-Estadísticas intentos hacks-Comparador archivos-Firewall múltiple opciones-Políticas de Firewall-Bloqueo bots-Bloqueo uploads de archivos -Chequeo de archivos-Doble factor autenticación-Bloqueo países -Protección headers-Firewall log + log live-Editor de reglas de seguridad-Actualización automática reglas de seguridad-Ataques fuerza en bruto-Protección directorios-Notificaciones-Doble factor de autenticación

Page 18: Seguridad en WordPress

Seguridad para paranóicos

• Servidor con ModSecurity

• Servidor con Firewall

• Servidor LMD

• Cloudflare CDN

• Ninjafirewall

• Sucuri Security

• Wordfence

Page 19: Seguridad en WordPress

Recursos para estar al día• https://wpvulndb.com/

• https://blog.sucuri.net/

• Plugin Vulnerabilities https://wordpress.org/plugins/plugin-vulnerabilities/

• No Longer in Directory https://wordpress.org/plugins/no-longer-in-directory/

Page 20: Seguridad en WordPress

GRACIASPedro Santos@hostfusion