Seguridad de nuestro WordPress – Consejos y ayuda

En esta nueva entrada os ayudaremos con una serie de consejos para asegurar nuestro WordPress, los cuales son atacados con bastante regularidad debido a ser el CMS más expandido a nivel mundial, esto les hace que más gente quiera encontrar vulnerabilidades, las encuentre, y las explote consiguiendo finalmente un problema para el cliente o la empresa de hosting. La seguridad en sistemas WordPress, no elimina el problema al 100%, pero si que disminuye considerablemente el riesgo de sufrir un ataque, y por consiguiente, deberíais echar un vistazo a este post para mejorar la seguridad de vuestro blog.

En primer lugar, el que debe ser seguro es tu hosting, si este no lo es, ya podemos tener el WordPress más seguro del universo que si el hosting tiene fallos, el resultado será el mismo, un wordpress hackeado.

¿Qué requisitos le pediría a tu hosting?

  • A menudo mantiene tu sistema con protecciones de seguridad y se preocupa por mantenerse a la última.
  • Proporciona las versiones más estables y últimas de las aplicaciones.
  • Proporciona sistemas de copias de seguridad y una rápida respuesta para solventar tus problemas.

Si tu empresa de hosting mantiene eso al día, el resto de la seguridad, te corresponde a tí como dueño de un wordpress, y por consiguiente, debe prestar atención a las siguientes cosas.

Seguridad en WordPress

Limitar el acceso
Reduce la cantidad de gente que puede acceder a tu wordpress, por conocimiento de clave, restringiendo por IP, etc…
Es el punto más obvio y el primero de todos.

Copias de seguridad
Mantener copias de seguridad y conocer el estado de tu instalación de WordPress en intervalos regulares. Tener un plan de copia de seguridad y recuperación de tu instalación en el caso de una catástrofe puede ayudarte a recuperar más rápido en el caso de un problema.

Fuentes de Confianza
No instales plugins / temas de fuentes no confiables. Restringirse al repositorio WordPress.org o empresas conocidas. Tratar de conseguir plugins / temas del exterior pueden provocar problemas ya que no son garantizados por WordPress y no sabemos si tras ese plugin se esconde un fallo, una puerta trasera, o algunas otras cosas.

Vulnerabilidades en el ordenador
Asegúrate de que los equipos que utilizas estén libres de infecciones de spyware, malware y virus. Nada de seguridad en tu WordPress valdrá de algo si tu equipo está infectado con un keylogger por ejemplo y ese keylogger le envía al hacker la info de tu blog.

Siempre mantén tu sistema operativo y el software al día, sobre todo el navegador web para protegerse de las vulnerabilidades de seguridad.

Vulnerabilidades en WordPress
Al igual que muchos paquetes de software modernas, WordPress se actualiza regularmente para hacer frente a los nuevos problemas de seguridad que puedan surgir. La mejora de la seguridad del software es siempre una preocupación constante, y para ello siempre se debe estar al día con la última versión de WordPress. Las versiones anteriores de WordPress no se mantienen con las actualizaciones de seguridad.

Actualizando WordPress
La última versión de WordPress está siempre disponible en el sitio web principal de WordPress en https://wordpress.org. No confíes en instalar WordPress de otro sitio que no sea el oficial.

Contraseñas
Muchas vulnerabilidades potenciales se pueden evitar con buenos hábitos de seguridad. Una contraseña segura es un aspecto esencial.
El objetivo con tu contraseña es hacer que sea difícil de adivinar y robusta para evitar un ataque por fuerza bruta. Muchos generadores de contraseña automáticos están disponibles que se puede utilizar para crear contraseñas seguras.
WordPress también cuenta con un medidor de intensidad de la contraseña que se muestra cuando se cambia la contraseña en WordPress. Utilice esta opción cuando cambies la contraseña para asegurar que es segura.

Cosas a evitar al elegir una contraseña:

  1. Cualquier permutación de tu nombre real, nombre de usuario, nombre de la empresa, o el nombre de tu sitio web.
  2. Una palabra de un diccionario, en cualquier idioma.
  3. Una contraseña corta.
  4. Cualquier contraseña sólo numérico o de sólo alfabética (una mezcla de ambos es el mejor).

Una contraseña segura es necesario no sólo para proteger tu contenido del blog. Un hacker que obtiene acceso a tu cuenta de administrador es capaz de instalar scripts maliciosos que potencialmente pueden comprometer todo el servidor y tu WordPress.

Permisos de archivo
Algunas interesantes características de WordPress vienen permitiendo a varios archivos para ser escribible por el servidor web.
Sin embargo, lo que permite el acceso de escritura a los archivos es potencialmente peligroso, sobre todo en un entorno de alojamiento compartido.

Lo mejor es bloquear sus permisos de archivo tanto como sea posible para evitar que si alguien accede, tenga acceso a cualquier fichero y pueda modificarlo e introducir información maliciosa.

Este es el esquema de permisos que tu WordPress debería tener:

Todos los archivos deben ser propiedad de tu cuenta de usuario, y deben tener permisos de escritura por ti. Cualquier archivo que necesita acceso de escritura desde WordPress debe tener permisos de escritura por el servidor web. Es decir, tus ficheros deberán ser usuario/grupo de tu FTP, si conectas con el usuario: ftp, los ficheros deberán ser propiedad de este usuario. En el servidor, es muy probable que todos los usuarios estén en el grupo del servidor web, de todas formas, si tienes dudas deberías preguntarlo con la empresa de hosting para asegurarte de eso.
A continuación repasamos los permisos de los directorio más comunes de WordPress para que puedas tener una orientación:


/  ->  El directorio raíz de WordPress: todos los archivos debe tener permisos de escritura solamente por tu cuenta de usuario, excepto .htaccess si quieres WordPress para generar automáticamente reglas de reescritura para usted.
/ wp-admin /  ->  El área de administración de WordPress: todos los archivos deben tener permisos de escritura solamente por tu cuenta de usuario.
/ wp-includes /  -> El grueso de la aplicación WordPress: todos los archivos debe tener permisos de escritura solamente por tu cuenta de usuario.
/ wp-content /  -> Adquirido por el usuario contenido: la intención de poder escribir en tu cuenta de usuario y el proceso del servidor web.

Dentro / wp-content / encontrarás:

/ wp-content / themes /  ->  Archivos de tema. Si deseas utilizar el editor de temas incorporados, todos los archivos tienen que ser escribible por el proceso del servidor web. Si no deseas utilizar el editor de temas incorporados, todos los archivos pueden ser escribible solamente por tu cuenta de usuario.
/ wp-content / plugins /  -> Archivos de plugin: todos los archivos deben tener permisos de escritura solamente por tu cuenta de usuario.

Cambiar permisos de archivos

Si tienes acceso shell a tu servidor, puede cambiar los permisos de archivos de forma recursiva con el siguiente comando. Si no, puedes decírselo a tu proveedor de hosting para que lo compruebe y lo ajuste a lo especificado.

Para directorios

find /directorio/tuwordpress/ -type d -exec chmod 755 {} \;

Para archivos

find /directorio/tuwordpress/ -type f -exec chmod 644 {} \;

 

En cuanto a las actualizaciones automáticas
Cuando le dices a WordPress para llevar a cabo una actualización automática, todas las operaciones de archivo se llevan a cabo como el usuario que posee los archivos, no como usuario del servidor web. Todos los archivos se establecen para 0644 y todos los directorios se establecen para 0755, y escritura sólo el usuario y legible por todos los demás, incluyendo el servidor web.

Seguridad de base de datos
Si ejecutas varios blogs en el mismo servidor, sería prudente considerar mantenerlos en bases de datos separadas cada gestionados por un usuario diferente. Esto es lógico, si vulneran un WordPress, no deberían vulnerar el resto, sino solo ese sin tener todos afectados.

Si administras MySQL, asegúrate de que entiendes la configuración MySQL y que las características que no sean necesarias (tales como aceptar conexiones TCP remotas) están deshabilitado.

La restricción de los privilegios de base de datos de los usuarios
Para las operaciones de WordPress normales, como la publicación de blogs, subir archivos de medios, la publicación de comentarios, crear nuevos usuarios de WordPress y la instalación de plugins de WordPress, el usuario de base de datos MySQL sólo necesita los datos de lectura y escritura de datos privilegios a la base de datos MySQL; SELECT, INSERT, UPDATE y DELETE.

Por lo tanto cualquier otra estructura y administración de base de datos de privilegios, tales como DROP, ALTER y GRANT pueden ser revocados. Al revocar los privilegios también estás mejorando la seguridad de tu WordPress.

Nota: Algunos plugins, temas y principales actualizaciones de WordPress pueden requerir para realizar cambios estructurales de base de datos, tales como agregar nuevas tablas o cambiar el esquema. En tal caso, antes de instalar el plugin o actualización de un software, tendrás que permitir temporalmente el usuario de base de los privilegios necesarios.
ADVERTENCIA: Intentar actualizaciones sin tener estos privilegios pueden causar problemas cuando se producen cambios en el esquema de base de datos. Por lo tanto, no se recomienda revocar estos privilegios.

Asegurar wp-admin
Si queremos añadir más seguridad, deberemos asegurar el directorio / wp-admin (con .htaccess y .htpasswd) también podría romper algunas funciones de WordPress, tales como el controlador de AJAX en wp-admin / admin-ajax.php.

Los ataques más comunes contra un blog de WordPress por lo general se dividen en dos categorías.

– Envío de solicitudes HTTP especialmente diseñadas para tu servidor con un exploit que daña los ficheros, plugins, themes, etc…
Intentar acceder a tu blog mediante el uso de “fuerza bruta” (probar claves una a una hasta entrar, de ahí el usar claves robustas y no basadas en cosas sencillas)

La implementación final de esta “segunda capa” protección de contraseña es requerir una conexión cifrada SSL HTTPS para la administración, de modo que se encripta todos los datos de la comunicación y sensible.

Asegurar wp-includes
Una segunda capa de protección es para evitar que se vean cierto tipo de ficheros, los cuales no deberían ser visibles, esto se hace con mod_rewrite en el archivo .htaccess. Nota: para garantizar el código que exponemos, colócalo fuera de los # BEGIN WordPress y WordPress etiquetas # END en el archivo .htaccess. WordPress  no puede sobrescribir nada entre estas etiquetas.

# Block the include-only files.
<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>


# BEGIN WordPress

 

Asegurar wp-config.php
Puedes mover el archivo wp-config.php en el directorio por encima de tu instalación de WordPress. Esto significa que para un sitio instalado en la raíz de tu espacio web, puede almacenar wp-config.php fuera de la carpeta raíz

Nota: Algunas personas afirman que mover wp-config.php tiene prestaciones de seguridad mínimas y, si no se hace con cuidado, en realidad puede introducir vulnerabilidades graves. Otros están en desacuerdo.

Tenga en cuenta que wp-config.php se puede almacenar un nivel por encima del directorio de WordPress (donde wp-includes reside). Además, asegúrate de que sólo usted (y el servidor web) puede leer este archivo (por lo general significa un permiso de 400 o 440).

Si utiliza un servidor con .htaccess, puedes poner esto en ese archivo (en la parte superior) para negar el acceso a cualquier persona que navegue por ella:

<files wp-config.php>
order allow,deny
deny from all
</files>

 

Edición Desactivar Archivo
De forma predeterminada, los administradores pueden editar archivos PHP, como los archivos de plugin y temas. Esto es a menudo la primera herramienta a un atacante usará si es capaz de iniciar sesión, ya que permite la ejecución de código. WordPress tiene una constante desactivar la edición en tu panel de control. La colocación de esta línea en wp-config.php es equivalente a la eliminación de los “edit_themes ‘,’ edit_plugins ‘y capacidades de todos los usuarios’ ‘edit_files:

define('DISALLOW_FILE_EDIT', true);

 

Plugins
Mantén siempre actualizados a la última versión tus plugins, esto es clave y esencial. Si actualizan el plugin, debes actualizarlo porque es actualizado por vulnerabilidades o mejoras.

Firewall
Hay muchos plugins y servicios que pueden actuar como un servidor de seguridad para tu sitio web. Algunos de ellos trabajan modificando el archivo .htaccess y la restricción de algún tipo de acceso a nivel de Apache, antes de ser procesado por WordPress. Un buen ejemplo es iThemes Seguridad o Todo en Uno WP Seguridad. Algunos plugins cortafuegos actúan a nivel de WordPress, como WordFence y tratan de filtrar ataques como WordPress es la carga, pero antes de que esté completamente procesados.

Seguridad a través de la “oscuridad” – ocultando información sensible
Seguridad por “oscuridad” es generalmente una estrategia primaria poco sólida, sin embargo, hay áreas en WordPress donde ocultando información podría ayudar con la seguridad:

Cambiar el nombre de la cuenta administrativa: Al crear una cuenta administrativa, evitar términos fáciles de adivinar, como administrador o webmaster como nombres de usuario, ya que suelen ser objeto de ataques en primer lugar. En un WordPress existente puedes cambiar el nombre de la cuenta de admin existente con un comando como ACTUALIZACIÓN wp_users SET user_login = “newuser” WHERE user_login = ‘admin’ ;, o utilizando una interfaz MySQL como phpMyAdmin para cambiar este usuario y que no se llame “admin” sino cualquier otra cosa que solo tu conozcas.
Cambie el table_prefix: Muchos ataques de inyección SQL-WordPress específica publicados hacen la suposición de que el table_prefix es wp_, el valor predeterminado. Cambiar esta condición puede bloquear al menos algunos ataques de inyección SQL.

Inicio de sesión / Logs
Los registros son tu mejor amigo cuando se trata de entender lo que está sucediendo con tu sitio web, especialmente si  estás tratando de realizar análisis forense. Contrariamente a las creencias populares, los registros le permiten ver lo que se hizo y por quién y cuándo. Desafortunadamente los registros no le dirán que, nombre de usuario, conectado, pero le permitirá identificar el IP y el tiempo y lo más importante, las acciones que el atacante podría haber tomado. Una vez sabido la IP y lo que hizo en ese momento, podemos detectar que fallo es, como solventarlo y que no se repita en el futuro. Los logs son más importantes de lo que parece y debería echar un vistazo. Dentro de tu sitio web con total seguridad que tiene una carpeta llamada logs, ahí verás “access_log” (accesos a tu web y que hizo) “error_log” (errores de la web, si los hubiera)

Monitoreo
A veces, toda la prevención no es suficiente. Es por eso que la intrusión de detección / monitoreo es muy importante. Te permitirá reaccionar más rápido, averiguar lo sucedido y recibir alertas en cuanto algo empiece a fallar, sin necesidad que le saquen los colores un compañero diciéndole que tu web no funciona o está hackeada.
Cuando ocurre un ataque, siempre deja huellas. Ya sea en los registros o en el sistema de archivos (nuevos archivos, los archivos modificados, etc.). Si está utilizando OSSEC por ejemplo, se hará un seguimiento de tus archivos y que le avise cuando cambian y podrá ver rápidamente que ocurre.

¡Déjanos una respuesta!