Securización básica en WordPress

En este post te recomendamos aplicar las siguientes medidas de seguridad básicas en toda instalación WordPress. Estos consejos no son todos los posibles, pero sí son útiles para proteger WordPress de malware y otros peligros.

Si no tienes conocimientos para implementar las medidas indicadas le recomendamos contrate los servicios de un programador o de un desarrollador experto en wordpress. Puede consultarnos al respecto escribiéndonos a comercial@adw.es o abriéndonos un ticket en el siguiente enlace.

La primera medida a adoptar es utilizar una password que no sea fácil de averiguar. Por ejemplo, la peor de todas es “1234” porque, aunque es muy fácil de recordar, será la primera que pruebe cualquier intruso. Se denomina contraseña “fuerte” a aquella que posee un número alto de caracteres (más de 8) con letras, números y signos de puntuación.

Si eres de los que no te gusta pensar mucho, existen páginas que te ayudan a crear contraseñas fuertes.

A dicha contraseña, siempre es recomendable, añadirle algún caracter adicional.

Por ejemplo, visita la siguiente web: Generador de Contraseñas

Crea tu contraseña:

Copia la contraseña:

Agregale un caracter adicional. Es decir, cogiendo el ejemplo anterior, si te ha generado la contraseña:

K2$p0DDXHDeB

Agregale un caracter adicional, por ejemplo un número o un signo especial:

K2$p0DDXHDeB!

¡Y listo!

No solo la de WordPress sino también las de acceso FTP, PHPmyAdmin e incluso la de acceso al panel de control.

¿Por qué?

Cambiar la contraseña evita una serie de peligros, incluidos algunos que son menos obvios, como lo que ocurre con las contraseñas que ha guardado en equipos que ya no son de tu propiedad.

El segundo punto obligatorio es eliminar el usuario “Admin” que es el que asigna WordPress por defecto. Ten en cuenta que para lograr un acceso no autorizado, el intruso (quizás un programa informático) lo primero que pruebe es el usuario “Admin”. Esto se puede llevar a cabo creando un nuevo usuario haciendo uso del panel de administración de WordPress y borrando el “Admin”. Al nuevo usuario no se le debe denominar con el nombre del dominio del blog porque eso será lo segundo que pruebe un hacker.

Puedes cambiar tu nombre de usuario de WordPress de la siguiente manera:

  • Manualmente mediante la creación de un nuevo usuario con derechos de administrador

La forma más fácil de cambiar tu nombre de usuario es mediante la creación de un nuevo usuario con derechos de administrador. Para ello, inicia sesión en tu panel de administración, y ve a Usuarios > Añadir nuevo.

usuarios, anadir nuevo

panel usuario

    • Introduce los datos indicados.
    • Haz clic en Perfil> (y elige la opción) Administrador
    • Haz clic en “Añadir nuevo usuario”

 

usuario administrador

Después de que cierre la sesión, ingresa con tu nuevo nombre de usuario. Dirígete a Usuarios, y simplemente elimina el antiguo usuario con el nombre “admin”. Te preguntará qué hacer con el contenido del usuario, sigue adelante y asígnalo al nuevo usuario que acabas de crear.

  • Cambiando el nombre de usuario en phpMyAdmin

Para aquellos que se sienten un poco más aventureros, pueden cambiar su nombre de usuario en cPanel y phpMyAdmin.En primer lugar tendrás que acceder a tu cPanel y desplazarte hacia abajo hasta encontrar phpMyAdmin.phpmyadminA continuación, selecciona la base de datos del blog que queremos cambiar el nombre de usuario.En el lado izquierdo deberías ver una lista de todas las tablas de la base de datos. Pulsa en la que dice wp_users. Luego pulsa en el nombre de usuario que deseas editar.

Cambia el valor user_login a lo que quieras, pulsa el botón “Continuar” y ya está. Ahora vuelve a tu sitio y recuerda iniciar sesión con tu nuevo nombre de usuario.

  • Con la ayuda de un plugin

Algunos de estos fueron creados específicamente para ese propósito, y algunos ofrecen muchas más características para asegurar aún más tu sitio.

Uno de los plugins más simples para este trabajo es el Admin Renamer Extended.

Este plugin hace lo que dice: te permite cambiar el nombre de usuario admin, así como todos los otros nombres de usuario de administrador (en el caso de blogs con varios autores) y es compatible con multi-sitio.

Otro sencillo plugin que puede servir es Username Changer que hace lo mismo que Admin Renamer Extended pero también actualiza los nombres para mostrar si coincide con el nombre de usuario.

Better WP Security va un paso mas allá con varias características que ayudan a proteger tu sitio con la prevención de ataques de fuerza bruta de inicio de sesión, escaneos periódicos de tu sitio para los intentos de conexión sospechosos, cambiar el nombre de la cuenta de usuario administrador, generar contraseñas seguras y eliminar el por defecto ID en el usuario con ID

Sucuri Security es otro plugin más complejo que vigila tu sitio en busca de malware y ayuda a prevenir ataques de fuerza bruta por el endurecimiento de partes vitales de tu sitio web. Una de las opciones incluye la comprobación de si tienes o no el nombre de usuario admin en uso y opciones para cambiarlo.

La tercera medida imprescindible que debes adoptar es evitar que los intentos fallidos de acceso a tu cuenta sean más de tres. Debes dejar uno o dos intentos por si tú mismo te equivocas al intentar entrar al panel de administración de WordPress pero no más. Cualquier hacker que emplee la fuerza bruta para acceder a tu cuenta debe ser bloqueado si prueba más de dos o tres combinaciones de usuario y contraseña erróneas. Existen plugins para controlarlo, como Limit Login Attempts.

Si lo haces mediante este plugin:

  • Una vez instalado sus opciones se encuentran en Ajustes > Limit Login Attempts
  • Nos permite limitar los intentos de sesión a través del login de WordPress ya sea por IP o mediante cookies, y si se excede el número de intentos muestra un mensaje de aviso.
  • Podemos configurar el número de intentos permitidos y los minutos que tendrá que esperar el usuario para volver a introducir los datos si ha fallado estos intentos.
  • Otros Plugins:
    • Login LockDown 

      • Login LockDown es similar al anterior y nos permite limitar los intentos de inicio de sesión ademas tiene muchas instalaciones activas y la ventaja de que es actualizado con frecuencia.
      • Una vez instalado sus opciones se encuentran en Ajustes > Login LockDown, también es muy fácil de configurar y como el anterior hace únicamente lo que promete.
    • Limitar los intentos de inicio de sesión con Wordfence

      • Wordfence es uno de los mejores plugin de seguridad web, contiene cientos de opciones como escáner de datos, firewall verificación en dos pasos y por supuesto con Wordfence podemos limitar los intentos de sesión.Las opciones para configurar el límite de intentos de sesión en Wordfence se encuentran en Wordfence > Options en el apartado Login Security Options.
    • Limitar los intentos de inicio de sesión con iThemes Security

      • IThemes Security es otro de los grandes plugin de seguridad para WordPress, es similar en características a Wordfence y también incluye la opción de limitar los intentos de acceso en el login de WordPress.Las opciones se encuentran en Seguridad > Ajustes > Activar protección por fuerza bruta

Cada plugin que instalas en WordPress es un paso más hacia la posibilidad de que tengas un problema en tu instalación. Antes de instalar un plugin debes probarlo en un entorno distinto al de producción. Esto es debido a que no todos los desarrolladores emplean código seguro, pero no solo ocurre esto en WordPress. Aún así, como estamos hablando de securizar WordPress, mi consejo es que solo instales los plugins imprescindibles y borres los que no vayas a usar, en vez de dejarlos “inactivos”.

Una buena forma de averiguar si el daño ya está hecho es escanear los archivos de tu theme con el fin de encontrar agujeros de seguridad.

¿Cómo puedes escanear los archivos?

  • Con plugins:
    • 1. Theme Authenticity Checker (TAC)Theme Authenticity Checker (TAC) es un plugin de WordPress que escanea los archivos de cada theme que tengamos instalado en busca de códigos maliciosos, como enlaces ocultos en el footer y códigos Base64.
    • Exploit Scanner. Exploit Scanner es capaz de escanear los archivos del FTP y las bases de datos de tu sitio web, y detectar si algo sospechoso está presente. El hecho de utilizar Exploit Scanner, no impedirá que tu proyecto sufra el ataque de un hacker, y, por supuesto, no eliminará los archivos sospechosos desde tu WordPress. Ten esto claro. Está ahí para ayudar a detectar virus o malware subidos por hackers.
    • Sucuri Security. Sucuri Security sirve para el escaneo de malware. Este plugin cuenta con bastante reputación y es garantía de éxito. Las principales características que ofrece Sucuri son el monitorización de los archivos que subas a tu proyecto desarrollado con WordPress, monitorización de listas negras, notificaciones de seguridad, entre otras novedades.
  • Con plugins: UpdraftPlus WordPress Backup Plugin Una vez instalado y activado el plugin, accede a él a través del menú de administración Ajustes -> Respaldos UpdraftPlus. Ve directamente a la pestaña de Ajustes:
    copia-de-seguridad-de-wordpress
    • Aquí puedes elegir hacerla tú manualmente siempre que quieras, o bien programar una copia automática:desde cada 4 horas hasta mensualmente.
    • ¿Cada cuánto debes hacer una copia de seguridad? Dependerá dependiendo de la cantidad de información que actualices. Si no actualizas mucho el contenido de tu sitio, programa una copia de seguridad mensual.
  • Desde tu Panel de Control de Plesk.
    • Entra a tu Panel de Control de Plesk. (te dejamos los pasos aquí).
    • Ve al panel de navegación que lo encontrarás a tu izquierda. Haz clic en “Sitios web y dominios”
    • panel navegacion plesk
    • En la parte derecha superior del panel tendrás la opción “Administrador de backups”. Haz clic.
    • administrador de backups plesk
    • backup en plesk
    • Desde el Administrador de backups puedes elegir si deseas programar los backups o hacerlos tu manualmente.
    • En este post te enseñaremos ha realizar uno (muy simple) manualmente.
    • Haz clic en el botón “Copiar” que veras justo debajo de las letras “Administrador de backups”
    • copiar contenido
    • Una vez hecho clic te aparecerá este contenido:
    • creacion backup suscripcion
    • En Contenido del backup tienes una opción denominada “tipo” aquí podrás elegir cómo deseas realizar el backup.
    • NOTA: si es el primer backup que realizas pon la opción “Completo”
    • NOTA 2: Si no es el primer backup que realizar puedes optar entre “Incremental” que sirve (como la propia palabra  dice) para incrementar “el backup anterior” o completo (realiza una copia completa del servidor).
    • backup incremental plesk
    • NOTA 3: El backup completo no elimina los backups anteriores pero ocupa más espacio que un incremental.
    • backup completo plesk
    • (Una vez elegido el que más te interesa) Haz clic en el botón Aceptar” que lo puedes encontrar en la parte inferior centrada de tu panel.
    • aceptar plesk

Como en cualquier CMS o aplicación es vital tener las cosas actualizadas. Actualizar WordPress es primordial y básico para evitar posibles fallos de seguridad e intentos de hackeos a causa de vulnerabilidades.

  • Para ello, únicamente debemos ir al escritorio de WordPress.
  • Hacer clic en “Actualizaciones”
  • actualizaciones de wordpress
  • Ver la opción de versión, plugins, temas y traducciones disponibles para actualizar y hacer clic en “Actualizar ahora”
  • NOTA: puedes elegir si deseas actualizar, por ejemplo, varios Plugins a la vez.
  • Seleccionar todos plugins
  • actualizar plugins boton

Limpia la tabla wp_options

Esta es una de las tablas de la base de datos más delicada, donde están los ajustes e información de acceso de WordPress, así que limpia esta tabla de todo lo que sobre habitualmente. A veces, hay plugins qué meten lineas de información en la base de datos.

Si tu base de datos crece y crece en tamaño, y no es por nuevas tablas ni por el crecimiento normal de las tablas wp_posts o wp_comments, es muy probable que sea precisamente la tabla wp_options que ha ido creciendo por plugins.

¿Cómo lo limpiamos? Hay diferentes opciones, tu eliges la más sencilla para ti. (te explico algunas)

  • Con Plugins:
    • Clean Options. Una de las mayores virtudes de este plugin es que detecta opciones obsoletas, e identifica las muy pesadas y habituales entradas de RSS antiguas, que suelen llenar toda tabla wp_options . También es de agradecer que antes del borrado definitivo nos ofrezca una pantalla en la que nos avisa y recuerda todo lo que se va a borrar, para dar el último suspiro antes de hacer el borrado.
    • WP Options Manager. Este plugin ofrece un navegador que te permite identificar las entradas en la tabla ‘wp_options‘ de tu base de datos e ir borrándolas selectivamente. Lo que le diferencia de hacer lo mismo desde PHPmyAdmin es que nos ofrece ocultar las entradas por defecto de WordPress, haciendo esta tarea mucho más segura. Otra funcionalidad interesante es buscar opciones obsoletas, para empezar el borrado por ahí. Muy recomendable pero hay que usarlo con precaución, como siempre que haces algo directamente con la base de datos, como es el caso.
  • En PHPmyAdmin:
    • Las entradas del tipo ‘_transient‘ son una especie de referencias a cache. Puedes automatizar el borrado de estas molestas y pesadas entradas en tu tabla wp_options de WordPress añadiendo este código al fichero functions.php o plugin de funciones:
add_action( 'wp_scheduled_delete', 'delete_expired_db_transients' );
 
function delete_expired_db_transients() {
 
    global $wpdb, $_wp_using_ext_object_cache;
 
    if( $_wp_using_ext_object_cache )
        return;
 
    $time = isset ( $_SERVER['REQUEST_TIME'] ) ? (int)$_SERVER['REQUEST_TIME'] : time() ;
    $expired = $wpdb->get_col( "SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE '_transient_timeout%' AND option_value < {$time};" );
 
    foreach( $expired as $transient ) {
 
        $key = str_replace('_transient_timeout_', '', $transient);
        delete_transient($key);
    }
}
  • Te recuerdo que siempre realices un backup de tu base de datos antes de meter la pata.
  • Y si con estos plugins no te llega, siempre puedes dejar la tabla ‘wp_options‘ al estado inicial de la instalación de WordPress con estos sencillos pero radicales pasos:
    1. Ve a ‘Herramientas -> Exportar’ y exporta todo el contenido
    2. Ve a PHPmyAdmin y borra todas las entradas de la tabla ‘wp_options‘
    3. Ve a ‘miweb.com/wp-admin/install.php’ y actualiza la base de datos

Cambia de ruta del fichero wp-config y la carpeta wp-content

Desde hace ya varias versiones que es posible cambiar la ruta del archivo wp-config.php y la carpeta wp-content. El fichero wp-config.php es uno de los más peligrosos pues contiene la información de acceso a tu base de datos. la carpeta wp-content contiene los plugins, el tema que usas y muchos ficheros de configuración de plugins y scripts, además de cachés, así que es buena idea eliminar las rutas de acceso obvias para evitar miradas indiscretas.

  • Cambiar de ubicación el fichero wp-config.php
  • NOTA: A lo largo de estas líneas voy a explicar cómo hacerlo sin ningún tipo de plugin, como recomendación: hacer una copia de seguridad del mismo.
  1. Solo tienes que mover el archivo a la carpeta superior a donde está instalado tu blog WordPress. Si por ejemplo está en la ruta ‘…/public_html/blog/ ‘lo colocas en ‘…/public_html/wp-config.php’. Ya está, no hay que hacer nada mas.
  • Cambiar de ubicación la carpeta wp-content
  1. Mueve la carpeta wp-content a la ruta que quieras de tu alojamiento
  2. Edita el fichero wp-config.php para añadirle la siguiente línea:
 define( 'WP_CONTENT_DIR', 'NUEVA RUTA A WP-CONTENT' );

Protege el archivo .htaccess

Otro de los archivos vitales de cualquier instalación, que contiene ajustes y rutas de todo tipo, que además se carga antes que todo lo demás, es el fichero de Apache .htaccess. Así que no está de más protegerlo, cosa que además es muy fácil.

Pues se puede proteger a sí mismo, así de potente es. Solo tienes que usar una de estas dos posibilidades:

  • Evitar el acceso externo al mismo archivo .htaccess:
# protege el archivo htaccess
<files .htaccess>
order allow,deny
deny from all
</files>

Evitar el acceso externo a cualquier archivo ht:

# protección extrema de htaccess
<Files ~ "^.*\.([Hh][Tt][Aa])">
 order allow,deny
 deny from all
 satisfy all
</Files>

Usa el archivo .htaccess como protección extra

Si ya has protegido el mismo fichero .htaccess puedes proteger WordPress desde el archivo .htaccess con una buena cantidad de instrucciones que te evitarán más de un disgusto, te las dejamos todas aquí.

No des información gratuita:

Evita a toda costa etiquetas “meta” y HTML que informen de la versión de WordPress, elimina el archivo “readme.html“, borra el fichero “wp-admin/install.php” y cualquier otro que facilite información sobre tu instalación de WordPress.

  • Evitar etiquetas “meta” y HTML
    • WordPress nos genera una gran cantidad de etiquetas en la cabecera de nuestras páginas que no siempre necesitamos, de hecho algunas de ellas comprometen la seguridad de nuestro sitio web, como por ejemplo la etiqueta que nos muestra la versión de WordPress, en otros casos, los administradores del sitio web prefieren esconder estas etiquetas para no mostrar que el sitio está hecho con WordPress, o simplemente para evitar llamadas innecesarias a recursos que no vamos a utilizar.
    • Veamos un ejemplo de como eliminar la versión de WordPress en nuestro sitio web modificando el archivo functions.php:
remove_action('wp_head', 'wp_generator');
  • El primer parámetro le indica a la función que queremos eliminar una función que es dependiente de wp_head(), esta función podemos verla en el archivo general-template.php, dentro de la carpeta wp-includes de nuestro WordPress.
  • Otras etiquetas que podemos eliminar de nuestra cabecera son las siguientes:
/* Eliminar el vínculo al RSD del sitio */
remove_action('wp_head', 'rsd_link');
/* Eliminar la versión de WordPress */
remove_action('wp_head', 'wp_generator');
/* Eliminar Feeds */
remove_action('wp_head', 'feed_links, 2');
remove_action('wp_head', 'feed_links_extra', 3);
/* Eliminar el enlace al archivo manifest.xml */
remove_action('wp_head', 'wlwmanifest_link');
/* Eliminar enlace a posts relacionados */
remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0);
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
/* Eliminar el enlace corto */
remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0);
/* Eliminar emojis */
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');
/* Eliminar las etiquetas meta del plugin qtranslate */
remove_action('wp_head','qtranxf_wp_head_meta_generator');
/* Eliminar rel canonical */
remove_action('wp_head', 'rel_canonical');

Eliminar el archivo “readme.html”. para no mostrar la versión de wordpress que se utiliza es conveniente borrar tras la instalación el archivo readme.html y recordar borrarlo cada vez que haya una actualización.

  • NOTA: No es necesario eliminar estos archivos. Para que no tengas que borrarlo constantemente, es mucho más fácil simplemente bloquear el acceso a ellos. El uso de .htaccess para bloquear los archivos es seguro y solo tiene que agregar una directiva una vez.El bloqueo de archivos se realiza agregando una directiva a .htaccess como esta:
 <files filename.file-extension>
         order allow,deny
         deny from all
    </files>

Entonces, para bloquear el archivo readme.html, debes hacer esto:

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

Haga lo mismo con el archivo de licencia o cualquier otro archivo al que desee impedir que alguien acceda. Simplemente abra .htaccess en el Bloc de notas o en cualquier otro editor de texto básico, agregue las directivas y guarde, asegurándose de que el editor de texto mantenga el nombre del archivo exactamente, sin ningún .txt al final.

  • Borrar el fichero “wp-admin/install.php”

Otro modo de entorpecer los accesos automáticos es cambiar las rutas de acceso habituales de WordPress. Por sí solo no es el guru de la seguridad pero evita, una vez infectado, acciones automáticas de scripts de malware, que normalmente actúan sobre las rutas predefinidas por WordPress.

  • Con plugins:
    • Custom Login and Admin que precisamente hace eso, cambiar las URLs por las que accedes y administras. Además, su configuración está la mar de integrada, incluso para instalaciones multi-sitio.
    • Una vez instalado solo tienes que ir a «Ajustes -> Enlaces permanentes«, y ahí, justo abajo, podrás definir las URLs personalizadas para acceder y administrar tu WordPress. Pones la ruta que quieras, guardas opciones y ya está. A partir de ese momento tu url de acceso y administración será del tipo, por ejemplo, http://misitio.com/admin/
    • Solo un detalle, úsalo con precaución pues aún está en fase “BETA”  y no se lleva bien con algunos otros plugins, y ya sabes que si te da problemas lo desactivas por FTP.

Desde WordPress 3.0 el archivo “wp-config.php” incluye una buena cantidad de “salts” de seguridad, que son una medida de proteger tu WordPress. El mismo archivo tiene rutas para elegir una nueva cadena y cambiarlos. Hazlo de vez en cuando, pues con ello forzarás el cierre de sesión de accesos permanentes, algo que usan bastantes códigos malware.

  • Con plugins: Salt Shaker. El trabajo de este plugin es cambiar claves salt que utilizas ahora en el archivo de configuración (wp-config.php) de tu sitio web y utilizar otras nuevas en su lugar, de una forma más «limpia» y automatizada.
    • Este plugin añade una sección en Herramientas ≫ Salt Shaker donde aparece una página de configuración, a partir de la cual puedes programar el cambio de claves salt de WordPress de forma periódica, o cambiarlas en ese mismo instante.Ten cuidado que, al cambiar las claves de seguridad y salt de tu WordPress, automáticamente se cerrarán todas las sesiones de los usuarios conectados, incluido el tuyo, para acceder de nuevo.

Te puedes ayudar de fantásticos plugins para vigilar cambios en los ficheros de WordPress que podrían significar una inyección de código malware.

Si usas WordPress, deberías estar usando uno de los dos plugins más famosos de seguridad: iThemes Security o WordFence Security.

Y estos plugins se encargan de detectar cambios en los ficheros de WordPress. Además por ejemplo, en el caso de Wordfence, lo hace comparándolos con los ficheros en el repositorio oficial.

.

Crea una cuenta en Google Webmaster Tools

Las herramientas para webmasters de Google, además de avisarte de las actualizaciones de WordPress te informarán de inyecciones de código y como eliminarlas, además de que es el lugar donde retirar los avisos de sitio malicioso, que espero que tras estos consejos no veas nunca en una web tuya.

¡Y esto es todo! Tened en cuenta que hay muchas formas de realizar estas configuraciones, incluso otras para securizar WordPress o cualquier CMS.

Te podría interesar...