Seguridad

En general, no es necesario instalar un plugin para mejorar la seguridad de wordpress. Basta actualizar con frecuencia, tener utilizar algo de sentido común y hacer algunas modificaciones en los ficheros .htaccess y wp-config.php

  • El nombre del usuario administrador no debe ser "admin", que es el valor por defecto y creado en las instalaciones automáticas.
  • La contraseña de los usuarios debe ser segura.
  • Debemos eliminar los plugins que no usemos (no sólo desactivarlos), puesto que están subidos al ftp y pueden contener vulnerabilidades.
  • Instalar plugins fiables (en principio, que se actualicen con frecuencia, que tengan buena valoración proveniente de varios usuarios, etc.).
  • El prefijo de las bases de datos debe ser diferente de wp_, que es el prefijo estandar de todas tablas de wordpress del mundo, y esto permite al hacker tener una información valiosa sobre nuestra web.
  • Modificaciones en el .htaccess ubicado en la raíz de wordpress
    # Bloqueamos acceso al directorio includes
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^wp-admin/includes/ - [F,L]
    RewriteRule !^wp-includes/ - [S=3]
    RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
    RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
    RewriteRule ^wp-includes/theme-compat/ - [F,L]
    </IfModule>
    
    # Bloqueamos acceso a WP-CONFIG
    <Files wp-config.php>
        Order Allow,Deny
        Deny from all
    </Files>
    
    #Sólo nuestra IP en el login
    <Files wp-login.php>
        Order Allow,Deny
        Deny from all
        Allow from 127.0.0.1
    </Files>
    
    # Protegemos nuestros HTACCESS
    <Files ~ “^.*\.([Hh][Tt][Aa])”>
        Order allow,deny
        Deny from all
        Satisfy all
    </Files>
    
    
    # Cerramos acceso a directorios de themes y plugins
    RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php
    RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/
    RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L]
    RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php
    RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/
    RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]
    
    # No permitir ver los directorios
    Options -Indexes
    
    # Bloquear a los listillos que intentan descubrir vuestro author
    RewriteCond %{QUERY_STRING} ^author=([0-9]*)
    RewriteRule .* http://example.com/? [L,R=302]
    
    
    # Deshabilitar el fichero xmlrpc.php. Ese fichero nos permite publicar remotamente a través de Microsoft Word, Textmate, Thunderbird, smartphones, entre otros clientes. También se encarga de pingbacks (enlaces de otros blogs a nuestros artículos) y enviar los trackbacks (enlaces de nuestro blog hacia artículos de otros blogs). Actualmente no se conocen vulnerabilidades de este fichero, pero hay muchos servicios que siguen atacando wordpress a través de él, lo cual puede derivar en una ralentización de la web. En principio, lo podemos borrar sin problemas ni remordimientos, o deshabilitar desde el .htaccess.
    <Files xmlrpc.php>
     order allow,deny 
     deny from all 
    </Files>
  • Permitir el acceso al admin de wordpress, pero sólo desde cierta IP (colocar un fichero .htaccess con este código en la raíz de la carpeta wp-admin):
    AuthUserFile /dev/null
    AuthGroupFile /dev/null
    AuthName "Access Control"
    AuthType Basic
    order deny,allow
    Deny from all
    allow from 127.0.0.1
    allow from 127.0.0.2
    ...
    
  • Modificaciones en el fichero wp-config.php ubicado en la raíz.
    
    /*Deshabilitamos la posibilidad de editar el código fuente
    de Wordpress desde el panel de administración de Wordpress*/
    define('DISALLOW_FILE_EDIT', true);
    /*No queremos mostrar información de errores a ningún hacker*/
    define('WP_DEBUG', false);
    /*En caso de que el servidor tenga certificado de seguridad,
    nos interesa utilizarlo para el login*/
    define('FORCE_SSL_LOGIN', true);
    define('FORCE_SSL_ADMIN', true);

Plugins de seguridad (compatibles con las modificaciones en el .htaccess)

  • All In One WP Security & Firewall
    • Escritorio
      1. Firewall básico. Bajo este menú hay varias pestañas de configuración. Iremos marcándolas todas. Tener en cuenta que en la pestaña "Reglas adicionales de cortafuegos", la check "Filtro de cadena de caracteres avanzado", al estar marcada imposibilita acceder a url's que no sean gestionadas desde el panel de administración de wordpress.
      2. Permiso del archivo
      3. Login lockdown
      4. Tiene una opción para habilitar/deshabilitar el modo mantenimiento de la web.
    • Brute force
  • Meta generator and version info remover

Plugins para resolver problemas en una página ya hackeada

  • Wordfence Security -> Plugin que cuenta de una opción genérica de seguridad que debería bastar para la mayoría de las webs.
  • Sucuri Security - Auditing, Malware Scanner and Security Hardening
icono de mandar un mailPreguntame lo que quieras!
Pablo Monteserín
contacta conmigoPablo Monteserín

El servicio de resolución de dudas técnicas es sólo para los usuarios premium. Si tienes cualquier otra duda, usa el formulario de contacto. ¡Gracias!