8 comandos de NGINX para WordPress que debes conocer

¿Tu sitio web se ejecuta en un servidor NGINX? Si la respuesta es afirmativa, has llegado al lugar indicado porque a continuación listaremos 8 comandos de NGINX que te vendrán a las mil maravillas si cuentas con una web desarrollada con WordPress. Nos ayudarán en propósitos muy distintos, desde evitar el acceso a subdirectorios, hasta por ejemplo, esconder la versión de NGINX y PHP. Sin más dilación, vamos a echar un vistazo a dichos comandos.

Reducir el spam

Una de las mayores molestias a la hora de administrar un WordPress, sin duda alguna, es el spam. Se conoce como spam en WordPress a aquellos comentarios con enlaces publicitarios en su interior o cuyo único fin es el de vender un producto o servicio. Eliminar este tipo de comentarios para liberar espacio en la base de datos te puede llevar mucho tiempo. Tiempo que podrías estar utilizando en otros menesteres.

Si deseas reducir el spam en tu WordPress, puedes agregar estas reglas en la configuración de tu servidor NGINX. Por supuesto, lo ideal es que te ayudes también de un plugin antispam, como por ejemplo Akismet.

set $comment_flagged 0;
set $comment_request_method 0;
set $comment_request_uri 0;
set $comment_referrer 1;
 
if ($request_method ~ "POST"){
set $comment_request_method 1;
}
 
if ($request_uri ~ "/wp-comments-post\.php$"){
set $comment_request_method 1;
}
 
if ($http_referer !~ "^https?://(([^/]+\.)?tuweb\.com|jetpack\.wordpress\.com/jetpack-comment)(/|$)"){
set $comment_referrer 0;
}
 
set $comment_flagged "${comment_request_method}${comment_request_uri}${comment_referrer}";
if ($comment_flagged = "111") {
return 403;
}

Esconder la versión de NGINX y la de PHP

Hay cierta información que, por motivos de seguridad, es mejor no mostrarla. Muchos hackers pueden valerse de ella para perpetrar ataques. Ojo, con esto no digo que escondiendo dicha información evitaremos los ataques, pero se lo pondremos un poco más difícil.

Las versiones antiguas de NGINX y PHP cuentan con vulnerabilidades conocidas (de ahí que se vayan actualizando). Los atacantes pueden aprovecharse de dichas vulnerabilidades y hacernos realmente daño. Con estas reglas podemos esconder la versión que utilizamos tanto de NGINX, como de PHP.

#Esconder la versión de NGINX.
server_tokens off;
#Esconder la versión de PHP.
fastcgi_hide_header X-Powered-By;
proxy_hide_header X-Powered-By;

Evitar acceso a dotfiles

Existen ficheros que comienzan por el caracter . como el .htaccess, el .user.ini y el fichero .git, los cuales pueden contener información confidencial. Por seguridad, es mejor deshabilitar el acceso directo a este tipo de archivos.

location ~ /\.(svn|git)/* {
deny all;
access_log off;
log_not_found off;
}
location ~ /\.ht {
deny all;
access_log off;
log_not_found off;
}
location ~ /\.user.ini { 
deny all; 
access_log off;
log_not_found off;
}

Limitar acceso XMLRPC

XMLRPC es un protocolo de llamada a procedimiento remoto que usa XML para codificar los datos y HTTP como protocolo de transmisión de mensajes. Mayoritariamente, WordPress lo utiliza como API para aplicaciones externas. ¿Qué ocurre? Pues que muchos atacantes se aprovechan de esas «puertas» que se les otorga a aplicaciones externas, para colarse en nuestro proyecto.

A continuación puedes ver una regla para NGINX en el que se limita el uso del fichero xmlrpc.php (responsable de la utilización de dicho protocolo en WordPress) a una IP.

location ~* /xmlrpc.php$ {
allow 172.0.1.1;
deny all;
}

Limitar los tipos de solicitudes

En la mayoría de webs se utilizan dos tipos de solicitudes: GET y POST. GET se usa para obtener información y POST para enviarla. Por seguridad, es muy buena idea limitar los tipos de solicitudes a estas dos. ¿Cómo? Así:

if ($request_method !~ ^(GET|POST)$ ) {
return 444;
}

Bloquear el acceso a subdirectorios

Imagina que tienes tu WordPress alojado en un subdirectorio, que por ejemplo se llama «blog». Si por seguridad quieres que no se acceda a ningún subdirectorio de tu proyecto salvo a ese, puedes utilizar esta regla en la configuración de NGINX.

location ~ ^/(?!(blog)/?) { 
deny all;
access_log off;
log_not_found off;
}

Desactivar el listado de directorios

Si deseas que al navegar a un directorio, tu servidor no muestre ni las carpetas, ni los archivos que penden de él, tendrás que agregar este comando dentro de la configuración de NGINX.

autoindex off;

Cabeceras de seguridad

Los encabezados de seguridad nos proporcionan una capa adicional de seguridad al dictar el comportamiento del navegador. Las opciones de X-Frame, por ejemplo, evitarán que tu sitio pueda ser descargado desde un iframe, a menos que se llame desde el mismo dominio. Strict-Transport-Security exigirá que el navegador cargue tu web desde HTTPS.

add_header X-Frame-Options SAMEORIGIN;
add_header Strict-Transport-Security "max-age=31536000";
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";

Y hasta aquí nuestro artículo en el que te mostramos 8 comandos de NGINX para WordPress que debes conocer. Espero que te haya gustado y, si te ha resultado útil, no dudes en compartirlo en redes sociales. ¡Nos leemos!