Guía para asegurar tu wordpress(parte-2)

1 Ocultar la versión de WordPress

La encargada de mostrar la versión de tu WordPress en tu web es la función wp_head(), que incluye una llamada a la función wp_generator().

Para ocultar esa información, tienes que incluir la siguiente línea en el archivo functions.php de tu WordPress:

 remove_action(‘wp_head’, ‘wp_generator’);

El archivo funtions.php se encuentra dentro de la carpeta de la plantilla. Dentro de la carpeta wp-content encontrarás el contenido de tu web que no está relacionado con el núcleo de WordPress entre ellas una carpeta llamada themes. La carpeta theemes aloja a su vez diferentes carpetas correspondiente a cada uno de los temas que tienes instalados. Debes buscar la carpeta del tema activo y dentro encontrarás el famoso archivo functions.php Para acceder a él puedes realizarlo a través de FTP o FTP Web en el caso de que dispongas de un hosting con navegador de archivos tipo Plesk o CPanel

Para acceder a él puedes realizarlo a través de FTP o FTP Web en el caso de que dispongas de un hosting con navegador de archivos tipo Plesk o CPanel.

Donde esta funcion php en WordPress

Dentro de la carpeta themes encontrarás una carpeta correspondiente a cada plantilla. Debes localizar la plantilla que estés usando en ese momento.

Una vez hayas localizado el tema, debes buscar el archivo functions.php dentro de la carpeta. Este es el archivo que deberás modificar. 

¿Cómo modificar el archivo functions.php en WordPress a través de CPANEL o FTP?

Antes de lamentarnos recuerda, debes hacer una copia de seguridad del archivo, para ello descargalo mediante FTP o tu Administrador del Archivos del hosting. Para modificar le archivo tienes dos opciones:

Si usas FTP debes descargarlo y abrirlo con un editor de código como por ejemplo Notepad++. Guardar el archivo en tu ordenador, borrar el original y volver a subirlo modificado.

En el caso de que dispongas de Plesk o CPanel podrás modificarlo mediante el Administrador de Archivos. Como truco te recomendamos que hagas los cambios pero no cierres el archivo en tu navegador. De esta maneras podrás usar las teclas de deshacer en tu sistema operativo para devolver al origen el archivo. 

Archivo functions.php editado con algunas funciones para WooCommerce

Por supuesto la función que quieras añadir al archivo functions.php de WordPress debes añadirla al final del código. Si lo añades en otro lugar puede que tu plantilla no funcione. Nunca jamás debes acabar el código con la etiqueta de cierre de PHP ?> o tu sitio web fallará. 

Generalmente un archivo funtions.php que no es correcto suele general un error 500. En este caso tendrás que reponer el código a su estado original, subiendo la copia de seguridad o eliminando el código que hayas añadido. 

Editar functions.php desde el escritorio de WordPress

Un método alternativo para añadir código al archivo funtions.php, el editor de temas de WordPress.

WordPress dispone de sus propios editores de temas y de plugins. Aunque un desarrollador normalmente modifica los archivo como hemos visto en el punto anterior es interesante que conozcas que existe este método alternativo que es sobre todo útil cuando tenemos que hacer pequeños cambios como pegar un código que ya tenemos la certeza que funciona correctamente en nuestro WordPress.

¡Ojo! debes tener mucho cuidado con modificar functions.pho mediante esta técnica ya que desde el editor de WordPress no podrás descargar copia de seguridad ni volver atrás. Es muy raro que algo que peguemos en funtions.php genere un error en el Escritorio de WP, por tanto en caso de que falle tu WP, debes volver al editor y borrar lo que pegaste, así de simple. 

Para editarlo entra en Apariencia > Editor y selecciona el archivo functions.php de la lista de la derecha. Tu archivo cargará y ya podrás editarlo. Si te da fallo al guardar, es normal, muchos hostings compartidos impiden por seguridad que se puedan modificar archivos directamente desde WordPress en este caso deberás hacer mediante CPanel o FTP. Sobre el Autor

2. Activa la actualización automática en tu WordPress

Puedes configurar las actualizaciones automáticas del núcleo de WordPress desde el fichero wp-config.php. Tan solo debes añadir las siguientes líneas para cada una de las configuraciones:

 //Todas las actualizaciones del núcleo desactivadas define( ‘WP_AUTO_UPDATE_CORE’, false ); //Todas las actualizaciones del núcleo activadas define( ‘WP_AUTO_UPDATE_CORE’, true ); //Sólo actualizaciones menores del núcleo activadas define( ‘WP_AUTO_UPDATE_CORE’, ‘minor’ );

Las actualizaciones de plugins y plantillas es mejor hacerlas de forma manual, ya que pueden ser más sensibles y podrían provocar errores en la web si no se verifica bien la compatibilidad con la versión de WordPress.

3.Modifica la url de login de tu WordPress

En webs realizadas con WordPress el acceso a la administración se realiza por defecto en la url http://midominio.com/wp-admin o http://midominio.com/wp-login.php

Una forma es, mediante .htaccess de impedir que wp-login.php pueda ser accesible si no gestionamos usuarios en WordPress y no se hace necesario disponer de formulario de acceso para los usuarios (muy recomendado) pues servicios como los comentarios se pueden externalizar para no depender del formulario nativo de comentarios de WordPress.

<Files wp-login.php>    ErrorDocument 401 default      AuthUserFile /home/<user>/.htpasswds/.htpasswd_user     AuthName «Acceso restringido»      AuthType Basic    Require valid-user </Files

 Es el de aprender a implementar mediante plugin la opción de desplazar mediante cambio de nombre el acceso de wp-admin de forma que se eviten que ataques de fuerza bruta contra el formulario de login tengan éxito, por oscuridad.

Haremos uso del plugin Move Login, con el cual cerraremos el acceso a /wp-login.php y crearemos nuevas url de acceso

Instalación de Move Login:

1.    Accedemos al dashboard de WordPress y realizamos una copia de seguridad.

2.    Verificamos que el archivo .htaccess tenga permisos de escritura 644.

3.    Vamos a Plugins, Añadir nuevo y buscamos “Move Login”.

4.    Instalamos el plugin y lo activamos.

5.    Accedemos a Ajustes, Move Login y lo configuramos.

Podemos establecer los nombres sustitutivos para el formulario “login”“logout”“register”“lostpassword” y “resetpass”. Deben ser nombres cortos, sin espacios, sin caracteres especiales o acentos que puedan luego dificultar su uso.

También es posible redireccionar a “Página no encontrada” (404) en caso de que se comentan errores de acceso (recomendado).

Si el plugin no puede escribir el archivo .htaccess de nuestra instalación, por problemas de permisos, deberemos editarlo desde el cPanel, Administrador de Archivos, Editor de Código o vía FTP para insertar manualmente el código propuesto por el plugin tras guardar los cambios en la configuración.

Lo normal es que dicho archivo tenga los permisos correctos (644) y que el plugin pueda añadir de forma automática el código, no obstante es bueno siempre verificarlo editando el archivo tras guardar los cambios en el plugin.

4. Protege los archivos que pueden comprometer la seguridad de tu web.

Existen diversos archivos que pueden comprometer la seguridad de WordPress.

Hay algunos archivos que se añaden con la instalación de WordPress, que son meramente informativos, pero cuya información puede ser útil para los atacantes

Existen diversos archivos que pueden comprometer la seguridad de WordPress. Por un lado, hay algunos archivos que se añaden con la instalación de WordPress, que son meramente informativos
Por otro lado, existen algunos archivos necesarios para el funcionamiento de WordPress, que no podemos eliminar, y que contienen información sensible. Es conveniente proteger estos archivos

En la raíz de la web solo deberíamos tener archivos con extensión php y el archivo .htaccess. El resto de archivos, con extensiones txt o html deberían ser eliminados, a menos que los hayamos añadido nosotros para algún cometido en particular, o se hayan instalado con algún plugin (normalmente ningún plugin debería dejar archivos en la raíz, pero puede que haya excepciones).

Los archivos que deberíamos eliminar son los siguientes (puede que no lo tengas todos):

  • license.txt
  • licencia.txt
  • readme.html


Para añadir una capa de seguridad adicional.debemos editar el archivo .htaccess y añadir al principio del mismo el siguiente código:

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

# proteger htaccess
<files .htaccess>
order allow,deny
deny from all
</files>

De esta manera, indicamos que se bloquee el acceso a ambos archivos de forma externa, solo siendo accesibles desde el propio servidor, que es justo lo que necesitamos.

5. Protege tu base de datos cambiando el prefijo de las tablas por defecto

Por defecto de las tablas de la base de datos que es: wp_ .

Lo recomendable es que cambies el prefijo por defecto al instalar el WordPress.

Si ya lo tienes instalado, puedes cambiar el prefijo fácilmente con el plugin Change DB Prefix

6. Protege el archivo wp-login.php

Esto solo debes hacerlo si los visitantes de tu web no necesitan identificarse como usuario.

Por ejemplo, en una tienda online no deberás proteger el archivo wp-login.php.

Este caso no lo he probado En este caso, deberemos editar el archivo .htaccess que tenemos en la raíz de nuestro sitio web, y añadir al comienzo del mismo un código como el siguiente (el archivo ya puede contener otro código que no hay que cambiar):

<files wp-login.php>
AuthType Basic
AuthName "Acceso restringido"
AuthUserFile "/home/NOMBRECUENTA/.htpasswds/public_html/passwd"
require valid-user
</files>

En el código anterior, /home/NOMBRECUENTA/.htpasswds/public_html/passwd sería la ruta al archivo que contiene el usuario y contraseña de acceso, en este caso llamado passwd. Es muy recomendable que este archivo se encuentre alojado fuera de la ruta donde se encuentran los archivos de la web, así evitaremos el acceso al mismo vía web.

En el archivo passwd deberemos colocar el usuario y contraseña, teniendo en cuenta que esta contraseña va encriptada. Para generar estos datos podemos utilizar una página como la siguiente: http://www.htaccesstools.com/htpasswd-generator/

Aquí veremos que después de poner el usuario y contraseña nos generará un código. Este código será el que deberemos poner dentro del archivo passwd, que deberá estar colocado en la ruta que hayamos configurado. Para el ejemplo anterior, la ruta sería /home/NOMBRECUENTA/.htpasswds/public_html

De esta forma, cuando accedamos a este archivo para iniciar sesión de usuario de WordPress, nos solicitará un usuario y contraseña adicional previo a la carga de la página.

Otra alternativa sería restringir el acceso al archivo solo a determinadas IPs (recuerda que deberías tener una IP fija para usar esta opción). Para ello, habrá que añadir un código como el siguiente al inicio del archivo .htaccess que hay en la raíz de la web:

<files wp-login.php>
order deny,allow
allow from 10.11.12.13
allow from 100.120.140.160
deny from all
</files>

En el ejemplo anterior, solo se permite el acceso al archivo wp-login.php para las IPs 10.11.12.13 y 100.120.140.160. Podemos añadir o eliminar líneas «allow from» para disponer de más o menos IPs con el acceso permitido.

7. Agrega una cabecera X-Content-Type

Con esta cabecera evitarás que haya usuarios que intenten suplantar archivos css o js por ejecutables.

Si enviamos la cabecera X-Content-Type-Options en la respuesta con el valor «nosniff», los navegadores que soportan esta cabecera (IE y Chrome), no cargan las hojas de estilos, ni los scripts (Javascript), cuyo Myme-type no sea el adecuado.

El aspecto de la cabecera es el siguiente:

X-Content-Type-Options: nosniff

La mejor forma de añadir esta cabecera sería añadiendo unas líneas de código al archivos functions.php del tema de WordPress que estemos usando.

Este archivo se encuentra en la ruta wp-content/themes/NOMBRE_TEMA, en donde NOMBRE_TEMA es el nombre del tema que tenemos activado. En primer lugar, haremos una copia de seguridad del archivo functions.php. Después lo editamos y añadimos el siguiente código al final del mismo:

add_action( 'send_headers', 'add_header_xcontenttype' );
function add_header_xcontenttype() {
header( 'X-Content-Type-Options: nosniff' );
}

Existen otras alternativas. Para implementar la cabecera en un servidor web Apache, se puede hacer usando el fichero .htaccess, añadiendo el siguiente código:

Header set X-Content-Type-Options nosniff

Con esta cabecera, se reduce el riesgo de que se produzca un ataque basado en confusión de tipos mime.

En general con la Cabecera X-Content-Type-Options evitaremos que se carguen hojas de estilo o scripts maliciosos.

Puedes leer más información en las páginas de ayuda de Microsoft MSDN.

Si queremos añadir otras cabeceras de seguridad a partir de cambios en el archivo functions.php, podemos hacerlo usando una única función, en lugar de añadir cada cabecera en una función distinta, aunque el funcionamiento sea similar. En el siguiente código de ejemplo, que habría que colocar al final del archivo functions.php, se añaden las cabeceras X-Content-Type-Options, X-Frame-Options y X-XSS-Protection:

add_action( 'send_headers', 'add_header_seguridad' );
function add_header_seguridad() {
header( 'X-Content-Type-Options: nosniff' );
header( 'X-Frame-Options: SAMEORIGIN' );
header( 'X-XSS-Protection: 1;mode=block' );
}

8. Instala algún plugin de seguridad para WordPress

Este tipo de plugins te ayudarán a aumentar la seguridad de distintas formas. te permiten desde proteger el acceso a la administración hasta revisar los archivos de tu WordPress en busca de código malicioso.

Existen multitud de opciones, como por ejemplo:

Si quieres conocer todas las características de Wordfence, te las mostramos en este artículo: Como mejorar la seguridad de WordPress con Wordfence Security.

Recuerda deshabilitar las estadísticas (tabla wfhits) para no sobrecargar tu WordPress.

Una opción interesante de Wordfence es la verificación de ficheros básicos de WordPress para comprobar si han sido modificados.

Ten precaución a la hora de configurar este tipo de plugins, ya que podrías bloquear tu propio acceso con estas herramientas.

Antes de instalar algún plugin de este tipo, haz una copia de seguridad. Así podrás volver al estado anterior en caso de problemas