seguridad-wordpress

Cómo asegurar WordPress de manera correcta

La seguridad en WordPress es igual que la seguridad del hogar. Cuando sales de tu hogar u oficina, cierras las puertas,ventanas y todo acceso abierto que veas ¿verdad? ¿Por qué no harías lo mismo con tu sitio web?

Y es que, así como los lugares donde hacemos vida, también representa una inversión considerable en tiempo, esfuerzo y, a menudo dinero. Es probable que su presencia en la web esté directamente relacionada con el hecho de ganarse la vida. Será una fuente directa de ingresos (como una tienda online) o para anunciar nuestros servicios al resto del mundo.

Por ese motivo, en esta entrada, quiero ahondar en cómo mantener seguro nuestro sitio web realizado con WordPress. La primera parte de esta publicación tratará sobre los riesgos involucrados en la ejecución de un sitio web. La segunda parte será sobre cómo aumentar la seguridad de WordPress para evitar que su sitio se vea comprometido.

Este es un post muy detallado (y por lo tanto largo). ¡Así que tómate un café y comencemos!

hacker-seguridad-wordpress

¿Cómo se comprometen los sitios web de WordPress?

Para adoptar un enfoque proactivo, primero debe saber cómo se piratean los sitios. Solo cuando conoces los puntos débiles puedes tomar medidas para protegerlos.

Un estudio de 2017 mostró las siguientes avenidas principales de intentos exitosos de pirateo:

  • El 43% llegó a través de una vulnerabilidad en la plataforma de alojamiento.
  • 32% a través de temas vulnerables de WordPress
  • El 19% se enfocó en los problemas de seguridad de los complementos de WordPress.
  • El 6% de la piratería fue a través de una información de acceso débil

Saber esto nos da mucha información sobre cómo aumentar la seguridad de WordPress. En este artículo, aprenderá cómo protegerse de que su sitio se vea comprometido de todas las formas mencionadas anteriormente.

29 consejos para asegurar su WordPress

Poner en marcha medidas de seguridad básicas puede hacer mucho para protegerse de la mayoría de los ataques. A las personas que atacan los sitios web no les gusta trabajar duro e ir por las frutas que cuelgan. Por esa razón, abordar los problemas más comunes se hará cargo de gran parte de los intentos de piratería.

1. Mantenga su computadora segura

La seguridad de su sitio comienza con la máquina que está utilizando para cuidarla. Si su PC está comprometida, puede extenderse fácilmente a su presencia en la web. En consecuencia, es importante seguir las pautas básicas de seguridad.

  • Instale un escáner de virus y malware en su máquina y ejecute escaneos regularmente.
  • Configurar un servidor de seguridad de la computadora.
  • Descargue uno o use el que viene con su sistema operativo.
  • No inicie sesión en su sitio de WordPress a través de wifi pública o una conexión no segura. Si lo hace, sus credenciales podrían ser rastreadas. Además, tenga mucho cuidado de que nadie vea su pantalla al iniciar sesión.
  • Al acceder a su servidor, use FTPS (File Transfer Protocol Secure) en lugar del FTP no seguro para evitar que su conexión sea monitoreada.

2. Utilice una buena empresa de alojamiento – hosting

Otra medida básica es elegir un hosting de calidad. Como se vio anteriormente, la mayoría de los ataques exitosos provienen de la plataforma de alojamiento (hosting). Es tu primera línea de defensa y harías bien en buscar una que tome en serio la seguridad.

¿Cómo encuentras uno de esos?

Por lo general las empresas de hosting detallan en sus planes lo que ofrecen a sus clientes en sus páginas web, busque un hosting que:

  • Soporte las últimas versiones de tecnología web básica como PHP y MySQL.
  • Ofrece hosting optimizado para WordPress.
  • Tiene un firewall en su lugar que también está orientado hacia WordPress.
  • Ofrece escaneo de malware y detección de intrusiones.
  • Además, viene con un CDN que puede solucionar los ataques y el spam antes de que lleguen a su sitio web.
  • Ofrece Certificados SSL.

También vale la pena tomarse el tiempo para leer sobre los diferentes tipos de alojamiento para que entiendas mejor en qué te estás metiendo.

3. Cambie el prefijo de la tabla de WordPress durante la instalación

Además de alojar su sitio con un host de calidad, también hay cosas que puede hacer durante la instalación para hacer que WordPress sea más seguro. Uno de ellos es establecer un prefijo de tabla personalizado.

Si observa la base de datos de WordPress de una instalación estándar, verá que todas las tablas comienzan con wp_.

Mantenerlo de esa manera hace que su sitio sea más vulnerable a las inyecciones de SQL. Eso es porque, para este tipo de ataque, los piratas informáticos necesitan conocer el prefijo de la tabla. Por supuesto, la configuración estándar de WordPress es de conocimiento general.

Una forma sencilla de aumentar la seguridad de WordPress es cambiarlo a algo aleatorio como 7hg7zgokm_. Puede hacer esto durante la instalación o, si tiene un sitio web existente, cambiando la configuración a continuación en wp-config.php.

4. Usar themes y plugins de calidad

Los siguientes en línea para las avenidas de ataque más comunes son themes y plugins. Juntos, representaron más de la mitad de todos los sitios web pirateados. A continuación, se explica cómo eliminarlos como puertas de enlace o backdoors para hackers:

Solo tenga lo que necesita: tener docenas de plugins activos en su sitio no solo disminuye el rendimiento de su sitio web, sino que también lo hace menos seguro. Cuantos más componentes tenga, mayor será el riesgo. Por lo tanto, compruebe regularmente si puede desactivar y eliminar plugins y themes. Aquí tienen un artículo que escribí hace un par de días atrás sobre este tema: Plugins en WordPress ¿Afecta la velocidad un sitio web?

Busque complementos y temas compatibles: si un tema o complemento no se ha actualizado en mucho tiempo, hay muchas posibilidades de que contenga agujeros de seguridad sin parches o simplemente algún código incorrecto que haga que su sitio sea más vulnerable. Por esa razón, preste atención al nivel de soporte antes de instalar.

Aparte de eso, es absolutamente crucial que no descargues de fuentes desconocidas. No todos tienen tu mejor interés en mente.

En el mejor de los casos, obtienes un plugin o tema mal programado que hace que tu sitio sea inseguro. En el peor de los casos, el fabricante ha incluido deliberadamente un código malicioso para comprometer su sitio. Esto es especialmente cierto si descarga plugins premium «gratis«. Por lo tanto, es mejor atenerse a fuentes de calidad como el directorio de WordPress y los proveedores comprobados.

5. Mantener actualizado WordPress y sus componentes (plugins y themes)

Las nuevas versiones de WordPress no solo traen nuevas características y mejoras, sino que también solucionan los agujeros de seguridad identificados en las iteraciones anteriores. Esto es especialmente cierto para actualizaciones menores (que puede identificar por el tercer dígito en su número de versión, por ejemplo, 5.2.1). Ellos salen específicamente para ese propósito.

En consecuencia, es de suma importancia que aplique nuevas versiones a su sitio tan pronto como sea posible.

Las actualizaciones menores de WordPress 3.7 se aplican automáticamente. Esto se agregó para garantizar que los sitios web estén actualizados en términos de seguridad. Sin embargo, las actualizaciones importantes siguen siendo su responsabilidad. Haga un punto para realizar una copia de seguridad y actualizar su sitio una vez que vea la advertencia en su back-end. Haz lo mismo con los themes y plugins.

Tenga en cuenta que es posible que WordPress aplique automáticamente actualizaciones importantes, así como actualizaciones para plugins y themes. Hablaremos de esto a continuación. Sin embargo, el riesgo de que algo salga mal sin que te des cuenta es demasiado grande. Por lo tanto, no es muy recomendable.

6. Solo da acceso a las personas en las que confías

La primera forma es dar acceso al sitio únicamente a personas con las que está seguro de que no lo utilizarán para fines incorrectos. Cualquiera que no necesite absolutamente acceso no debería estar allí. Demasiados cocineros y todo eso.

Incluso con aquellos que usted considera confiables, es importante otorgarles solo los roles y capacidades que absolutamente necesitan. De esta manera, la posibilidad de accidentes (o actos malintencionados a propósito) disminuye considerablemente.

Por cierto, se debe aplicar la misma discreción para acceder a su cuenta de alojamiento, servidor FTP y otra información confidencial.

7. Fortalecer su información de inicio de sesión

Una forma muy básica de aumentar la seguridad de WordPress es usar información de inicio de sesión segura. Corre un largo camino para frustrar los ataques de fuerza bruta, en los que los piratas informáticos prueban automáticamente cientos de combinaciones diferentes de nombre de usuario / contraseña a través de un script hasta que uno funciona.

¡WordFence solo registró alrededor de 35 millones de este tipo de ataques en julio de 2017 por día! Y eso es solo en los sitios que ejecutan su plugin.

Como consecuencia, es mejor prestar atención a estas mejores prácticas:

  • No utilice el nombre de usuario del administrador: en versiones anteriores de WordPress, el administrador era el nombre de usuario predeterminado del administrador. Los hackers encontraron que este era un blanco fácil, así que fue cambiado. Sin embargo, algunas personas todavía crean este nombre de usuario manualmente. No lo hagas Es una de las primeras cosas que un hacker comprobará.
  • Tenga una cuenta de publicación separada: es importante que tenga cuentas separadas para la administración y la publicación de contenido. Si publica artículos con su cuenta de administrador, el nombre de usuario aparecerá en la URL del archivo del autor. Aparte de eso, tener cuentas separadas para el contenido y la administración también reduce las posibilidades de accidentes.
  • Elija una contraseña segura: WordPress propondrá una contraseña segura durante la instalación y siempre que desee cambiarla. Si bien es posible que desee buscar algo que pueda recordar, asegúrese de prestar mucha atención al indicador. También puedes usar un servicio como Strong Random Password Generator para crear uno para ti.

También es posible que desee utilizar un servicio para mantener seguras todas sus contraseñas, por ejemplo, LastPass. Además, si tiene otras personas con altos niveles de permisos en su sitio, es posible que desee forzarlos a que también utilicen buena información de inicio de sesión. En lugar de implorarlos por correo electrónico, hágalo a través de Forzar contraseñas seguras. En caso de que necesite cambiar su nombre de usuario de administrador, siga estas instrucciones.

8. Cambie los mensajes de error de inicio de sesión

De forma predeterminada, si alguien intenta iniciar sesión en su sitio con credenciales defectuosas, WordPress le dirá si el problema es con su nombre de usuario o contraseña.

Definitivamente es demasiada información, ya que regala la mitad de lo que alguien necesita para ingresar en su sitio. Para cambiarlo, use este fragmento de código en su functions.php para cambiar el mensaje.

function custom_wordpress_error_message(){
return 'Eso no fue del todo correcto...';
}
add_filter( 'login_errors', 'custom_wordpress_error_message' );

Cambio Eso no fue del todo correcto… a lo que quieras que diga tu mensaje. Sencillo pero efectivo.

9. Limitar los intentos de inicio de sesión

La información de inicio de sesión fuerte es solo una parte de la ecuación. Con el tiempo y los intentos suficientes, alguien todavía podría romperlo.

Por lo tanto, es una buena idea aumentar el nivel de seguridad al limitar el número de intentos. Los plugins como WP Limit Login Attempts le permiten establecer la frecuencia con la que una dirección IP determinada puede fallar en el inicio de sesión antes de que se le elimine de su sitio de forma temporal o permanente.

10. Implementar la autenticación de dos factores

La autenticación de dos factores no significa nada más que crear un paso adicional para que las personas inicien sesión en su sitio. Esto puede ser algo así como la necesidad de ingresar un código entregado en su teléfono móvil. Bloquea los ataques automáticos, aunque aumenta el esfuerzo.

Aquí hay algunos plugins que le permiten implementar la autenticación de dos factores:

11. Ocultar la página de inicio de sesión (wp-admin – wp-login.php)

Otra forma de mantener segura la página de inicio de sesión de WordPress es ocultarla. Como todos los que han trabajado con WordPress lo saben, generalmente lo alcanzas a través de sudominio.com/wp-admin o sudominio.com/wp-login.php.

Moverlo a una dirección diferente significa que los scripts automatizados apuntarán al lugar equivocado. Muchos de los plugins de seguridad anteriores pueden hacer esto por usted. Además de eso, Cerber Security & Antispam y WP Hide & Security Enhancer también tienen esa capacidad.

12. Configurar SSL y HTTPS

El uso del cifrado SSL evitará que se capture información confidencial. Si tienes una tienda de comercio electrónico u otras cosas que necesitan ser protegidas, es una necesidad.

Sin embargo, el cifrado también funciona para proteger sus datos de inicio de sesión y es cada vez más obligatorio. Consulte nuestra guía detallada sobre el tema para obtener más información sobre cómo configurarlo.

13. Mantener su sitio actualizado automáticamente

He hablado de actualizaciones automáticas antes. Además de las actualizaciones para versiones secundarias, también puede activar la misma función para actualizaciones importantes, complementos y temas. Esto funciona agregando las siguientes líneas a wp-config.php:

define('WP_AUTO_UPDATE_CORE', true);
add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_theme', '__return_true' );

Sin embargo, debo advertirle nuevamente que el riesgo de romper su sitio es mayor con el uso de plugins y las principales actualizaciones de WordPress. Por esa razón, puede ser una mejor idea aplicarlos manualmente.

14. Añadir claves de seguridad

Las claves de seguridad de WordPress, también llamadas SALT, cifran la información almacenada en las cookies del navegador. De esa manera, protegen las contraseñas y otra información sensible. Las claves en sí mismas son frases utilizadas para aleatorizar esa información y almacenadas dentro de wp-config.php donde dice esto:

define('AUTH_KEY',         'pon tu frase única aquí');
define('SECURE_AUTH_KEY',  'pon tu frase única aquí');
define('LOGGED_IN_KEY',    'pon tu frase única aquí');
define('NONCE_KEY',        'pon tu frase única aquí');
define('AUTH_SALT',        'pon tu frase única aquí');
define('SECURE_AUTH_SALT', 'pon tu frase única aquí');
define('LOGGED_IN_SALT',   'pon tu frase única aquí');
define('NONCE_SALT',       'pon tu frase única aquí');

Debe agregarlos manualmente. Afortunadamente, no es necesario que hagas las frases tú mismo. En su lugar, simplemente haga clic en el key generator y copie y pegue lo que encuentre allí.

15. Deshabilita el editor de themes y plugins

Para realizar cambios en su sitio, WordPress contiene un editor interno para los archivos de themes y plugins. Si bien puede ser útil en algunas situaciones, también es muy riesgoso.

La razón es que si alguien obtiene acceso al back-end de su sitio, puede usar el editor para sacar su sitio web sin tener que tener acceso a su servidor.

Para evitar esto, deshabilite el editor agregando esta línea a su confiable archivo wp-config.php:

define('DISALLOW_FILE_EDIT', true);

15. Deshabilitar el informe de errores de PHP

Cuando los plugins o themes causan un error en su sitio, WordPress mostrará un mensaje en su parte frontal. Los piratas informáticos pueden usar esta información para comprender mejor el diseño de su servidor y atacar su sitio. Aquí está cómo apagarlo dentro de wp-config.php:

error_reporting(0);
@ini_set(‘display_errors’, 0);

Si no funciona, puede deberse a la configuración del host. En ese caso, necesita hablar con ellos acerca de apagarlo.

17. Proteger archivos importantes de acceso

.htaccess es otro archivo importante que configura su servidor. Entre otras cosas, contiene el código que permite el uso de permalinks amigables en WordPress. También puede establecer redirecciones y, como has acertado, aumentar la seguridad de WordPress.

Para este último, primero debe acceder al archivo, que se encuentra en el directorio raíz de su servidor y está oculto de manera predeterminada. Por lo tanto, para editarlo, asegúrese de configurar su cliente FTP para que muestre los archivos ocultos (Servidor> Forzar la visualización de archivos ocultos en FileZilla). Después de eso, toma las siguientes medidas.

El código a continuación evitará el acceso a archivos críticos como wp-config.php, php.ini, registros de errores y .htaccess.

<FilesMatch "^.*(error_log|wp-config\.php|php.ini|\.[hH][tT][aApP].*)$">
Order deny,allow
Deny from all
</FilesMatch>

Ajuste el nombre de su archivo php.ini si es necesario (por ejemplo, php5.ini o php7.ini). Asegúrese de colocar el código fuera de los soportes #BEGIN WordPress y #END WordPress. Todo lo que se encuentra dentro de ese espacio puede ser editado por WordPress y puede hacer que pierda sus cambios.

18. Restringir el acceso a archivos PHP

Además, puede evitar que otros accedan a archivos PHP e inyectarles malware:

RewriteCond %{REQUEST_URI} !^/wp-content/plugins/archivo/a/excluir\.php
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directorio/a/excluir/
RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L]
RewriteCond %{REQUEST_URI} !^/wp-content/themes/archivo/a/excluir\.php
RewriteCond %{REQUEST_URI} !^/wp-content/themes/directorio/a/excluir/
RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]

19. Evita que los archivos PHP se ejecuten

Un lugar común para que los hackers carguen malware es en wp-content / uploads. Para evitar que ejecuten los códigos erróneos en caso de que se produzca un hackeo, use este código:

<Directory "/var/www/wp-content/uploads/">
<Files "*.php">
Order Deny,Allow
Deny from All
</Files>
</Directory>

2o. Desactivar inyecciones de script

Mientras esté en ello, use este fragmento para evitar que personas externas puedan inyectar código malicioso en sus archivos PHP existentes:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]

21. Asegura wp-includes

La carpeta wp-includes contiene los archivos principales de WordPress que nadie debería tener la necesidad de manipular. Para estar absolutamente seguro de que no suceda, use el siguiente código.

<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>

No se preocupe, esto no afectará a sus archivos de temas o complementos, ya que se colocan en una ubicación diferente.

22. Restringir el acceso de administrador a una dirección IP específica

Con .htaccess también puede restringir el acceso a su página de inicio de sesión de WordPress por dirección IP. De esa manera, solo tú puedes llegar allí. Para lograr esto, copia y pega el siguiente código en él:

ErrorDocument 401 default
ErrorDocument 403 default
<Files wp-login.php>
Order deny,allow
Deny from all
Allow from 198.103.133.64
</Files>

Recuerde reemplazar las direcciones IP de ejemplo con la dirección a la que desea otorgar acceso. También puede agregar más direcciones copiando y pegando la línea Allow from… Todos los demás aterrizarán en una página de error. Si no conoce su IP, simplemente eche un vistazo aquí.

Tenga en cuenta que para llegar al área de administración de WordPress desde otra dirección IP, primero debe cambiarlo o agregarlo al archivo.

23. Bloquear direcciones IP específicas

Existe una técnica similar para bloquear las direcciones IP que intentan ingresar de manera consistente en su sitio. Si nota algo así (por ejemplo, de los registros de su servidor), puede bloquearlos fuera de su sitio con esta adición a .htaccess:

order allow,deny
deny from 255.123.4.9
allow from all

24. Prevenir la navegación de directorios – Directory Browsing

De forma predeterminada, cualquiera puede ver la estructura de directorios de cualquier sitio de WordPress simplemente incluyendo la ruta completa a los directorios en la barra de su navegador.

Si bien eso no permite que los piratas informáticos realicen cambios, el conocimiento de la estructura de su sitio aún les ayudará. Ya que quiere hacer las cosas lo más difíciles posible para ellos, desactive la búsqueda de directorios dentro de .htaccess:

Options All –Indexes

25. Preste atención a los permisos de archivos

Usar los permisos de archivo correctos en su servidor es una forma de evitar que terceros no autorizados modifiquen sus archivos.

¿Cómo puedes cambiar los permisos de archivo?

Con FileZilla, es tan fácil como marcar los elementos que desea modificar, hacer clic con el botón derecho y luego elegir los permisos de archivo…

En cuanto a lo que debería cambiarlos, WordPress recomienda las siguientes configuraciones:

  • 755 o 750 para directorios
  • 644 o 640 para archivos
  • 600 para wp-config.php

26. Eliminar el número de versión de WordPress

De forma predeterminada, WordPress contiene una etiqueta meta dentro del código fuente que mostrará la versión de su sitio y también la agregará a los scripts cargados en su sección <head>.

Desafortunadamente, esta información es muy útil para cualquiera que intente piratear su sitio, especialmente si está utilizando una versión anterior de WordPress que tiene una vulnerabilidad de seguridad conocida. Afortunadamente, eliminar el número de versión es tan fácil como agregar lo siguiente a la parte superior del archivo function.php de su tema:

function remove_wordpress_version_number() {
return '';
}
add_filter('the_generator', 'remove_wordpress_version_number');
function remove_version_from_scripts( $src ) {
if ( strpos( $src, 'ver=' . get_bloginfo( 'version' ) ) )
$src = remove_query_arg( 'ver', $src );
return $src;
}
add_filter( 'style_loader_src', 'remove_version_from_scripts');
add_filter( 'script_loader_src', 'remove_version_from_scripts');

27. Deshabilitar XML-RPC

Este acrónimo es el nombre de una función que permite conectarse a WordPress de forma remota. Por ejemplo, los clientes de los blogs lo usan y también se usa para trackbacks y pingbacks. Desafortunadamente, a veces también es el objetivo de los piratas informáticos, por lo que debe protegerlo con el plugin Disable XML-RPC Pingback.

28. Hacer copias de seguridad a menudo

Las precauciones mencionadas anteriormente son todas buenas para mantener a WordPress seguro. Sin embargo, los accidentes siguen ocurriendo. Para un seguro adicional, asegúrese de tener siempre una copia de seguridad nueva a mano.

29. Evita los enlaces maliciosos

Es muy común que nuestros artículos o posts queramos enlazar ciertas páginas web a nuestros contenidos pero lo recomendable es analizar estas URLs con algún escáner de malware como lo es Sucuri SiteCheck. De igual manera debemos hacer lo mismo cuando aprobamos comentarios; debemos asegurarnos si estos comentarios traen enlaces y analizarlos.

¡Sígueme!

Carlos Represas

Programador especializado, o dedicado de forma específica, en desarrollar aplicaciones de la World Wide Web o aplicaciones distribuidas en red que se ejecutan mediante HTT / HTTPS desde un servidor web a un navegador web. Senior PHP Developer - Full Stack WordPress Developer - Growthhacker.
Carlos Represas
¡Sígueme!

Latest posts by Carlos Represas (see all)

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.