UA-51298262-10
WordPress

Comandos de seguridad en Nginx para WordPress

By diciembre 19, 2019julio 28th, 2020No Comments

En esta oportunidad en Ayuda Hosting, les presentamos algunas reglas o comandos de seguridad en Nginx para WordPress que nos resultarán de mucha utilidad. Estos comandos tienen distintos propósitos, desde el prohibir el acceso a los subdirectorios, hasta ocultar la versión del Nginx y del PHP.

Comandos de seguridad en Nginx para WordPress

Regla para la reducción de spam

El spam es una de las presencias negativas a la hora de administrar un sitio en WordPress. En muchos casos veremos que en los comentarios vienen enlaces dirigidos a páginas de publicidad, con el fin de promocionar ciertos productos. Ese tipo de comentarios por lo general se denominan spam. Pretender eliminar manualmente el spam de nuestras bases de datos nos llevará mucho tiempo. Tiempo valioso que podemos empeñar en otras tareas mucho más útiles.

Para reducir el spam en nuestro sitio de WordPress, podemos añadir las siguientes reglas en la configuración de nuestro servidor Nginx:

Nota: Quienes prefieran emplear plugins para esto, lo más conveniente y recomendado es utilizar Akismet de WordPress.

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

Comandos de seguridad en Nginx para WordPress

Comando para ocultar las versiones de Nginx y PHP

Existe cierta información que por razones de seguridad no se recomienda dejar expuesta en nuestro sitio web. La mayoría de los hackers se valen de esa información para llevar a cabo sus ataques. Sin embargo, no significa que con esto vayamos a evitar dichos ataques, pero lograremos que les resulte más difícil perpetrarlos.

Como hemos recomendado en anteriores artículos, mantener actualizado el software que tenemos en nuestro sitio de WordPress, puede hacernos menos vulnerables en temas de seguridad. Mientras más actualizadas estén las versiones que tenemos de nuestro software, menor es la posibilidad de un ataque. Los hackers por lo general, revisan las versiones del software que tenemos en el Nginx y PHP y conociendo las debilidades de las versiones anteriores, pueden determinar si somos blancos de ataque o no.

Con las reglas que vamos a presentarles a continuación, podemos ocultar las versiones que empleamos de Nginx y 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;

Regla para impedir el acceso a dotfiles o archivos punto

Existen archivos del sistema de WordPress que se caracterizan por tener un punto (.) que precede al nombre del archivo. Tales son los casos de .htaccess, .user.ini y .git. Estos archivos contienen información confidencial. Lo recomendable en este caso, es prohibir el acceso a este tipo de archivos. Para ello, emplearemos la siguiente regla:

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

Comando para restringir el acceso a XMLRPC

XMLRPC es un protocolo de llamada a realizar una acción remota que emplea XML para realizar la codificación de datos y como protocolo de transmisión de mensajes HTTP. Por lo general, WordPress lo emplea como una aplicación API (Interfaz de Programación de Aplicaciones) externa. ¿Y qué tiene que ver esto? Pues que los hackers aprovechan las puertas diseñadas para las aplicaciones externas, para filtrarse en nuestro sitio.

Seguidamente, transcribimos una regla diseñada para Nginx que limita el empleo del archivo xmlrpc.php a una IP ficticia (172.0.1.1), la cual arrojará un error 403. El archivo xmlrpc.php es el responsable del empleo de este protocolo en WordPress.

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

Regla para limitar el tipo de solicitud

En muchos webs se emplean dos tipos de solicitud: GET y POST. Para obtener o solicitar información se emplea la solicitud GET y para enviarla se usa POST. Por cuestiones de seguridad resulta una buena práctica, restringir las solicitudes GET y POST. A continuación, transcribimos una regla diseñada para restringir ambas solicitudes:

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

Comando para detener el acceso a los subdirectorios

Supongamos que nuestro WordPress está alojado en un subdirectorio llamado blog, por ejemplo. Y por razones de seguridad no deseamos que se pueda acceder a cualquier otro subdirectorio, podemos emplear la siguiente regla en la configuración Nginx:

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

Regla para desconectar la lista de directorios

Si necesitamos que al navegar por los directorios de nuestro sitio de WordPress, nuestro servidor no muestre las carpetas y archivos dependientes de él, necesitaremos agregar la siguiente regla dentro Nginx.

autoindex off;

Comando para encabezados de seguridad

Si queremos agregar una capa adicional de seguridad en nuestro sitio web, es buena idea añadir encabezados de seguridad. El encabezado X-Frame evita que nuestro sitio sea descargado desde un iframe en el caso que no se llame desde el mismo dominio. Por otra parte, el encabezado Strict-Transport-Security exige que el navegador cargue nuestra web desde un HTTPS. A continuación, escribimos una regla que creará estos encabezados de seguridad en Nginx.

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

Esperamos que este artículo sobre reglas y comandos de seguridad en Nginx para WordPress, les haya resultado útil. También le puedes echar un vistazo a nuestra guía para activar con Nginx las reglas de reescritura para Plesk Onyx 17.

Carlos Rodriguez

About Carlos Rodriguez

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies