Saltar al contenido principal.

Uso de nginx http_referer_module para proteger el sitio de administración de la fuerza bruta



Mientras leía la documentación del servidor web nginx, encontré un módulo interesante llamado http referer module . Le permite bloquear el acceso al sitio, o sus secciones, si la solicitud no tiene el encabezado de referencia correcto.

Este módulo se puede usar para proteger al administrador de cualquier sitio de la fuerza bruta. Por ejemplo, el sitio funciona en WordPress, pero bloquear el acceso por ip será inapropiado si el sitio tiene usuarios registrados. También necesitan autenticarse, y recolectar su IP es un ejercicio sin sentido. :)



El principio de funcionamiento es simple: el sitio muestra un enlace a la página de inicio de sesión wp-login.php, y en el archivo de configuración nginx configuramos la verificación de solicitudes a wp-login.php y / wp-admin / para la presencia de la dirección de nuestro sitio en el encabezado de referencia.

En primer lugar, cree una ubicación dedicada para las páginas deseadas. Por ejemplo:


 servidor {... ubicación ~ * (wp-login \ .php | wp-admin (. *)) $ {try_files $ uri = 404;  fastcgi_pass unix: /run/php-www.sock;  location ~ \ .php $ {include fastcgi_params;  fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;  fastcgi_ignore_client_abort off;  fastcgi_param PHP_VALUE "sendmail_path = / usr / sbin / sendmail -t -i -fmail@example.com";  fastcgi_param PHP_ADMIN_VALUE "open_basedir = / var / www / example.com /: / var / save_path /: / var / tmp_dir /";  }} ...} 

Como puede ver, aquí también se especifican los parámetros para procesar scripts PHP (de lo contrario, los scripts especificados en la ubicación no funcionarán).

La configuración del módulo se puede registrar inmediatamente después de la location ~* (wp-login\.php|wp-admin(.*))$ { .

Primera linea:


  valid_referers server_names 

Indica que el referente del sitio se debe considerar como el campo de referencia correcto.

Y también registramos la condición de prueba. Si el campo de referencia es incorrecto, el servidor mostrará un error 403 (acceso denegado).

  if ($ invalid_referer) {
     vuelta 403;
 }

Como resultado, la configuración se verá así:

  servidor {
 ...
 ubicación ~ * (wp-login \ .php | wp-admin (. *)) $ {
 valid_referers server_names
 if ($ invalid_referer) {
     vuelta 403;
 }
 (parámetros de fastcgi)
 }
 ...
 }

Finalmente, en el sitio, agregue un enlace a la página de inicio de sesión (wp-login.php o algo más allí). Si un visitante hace clic en este enlace, recibe un formulario de autorización. Pero si el bot llama directamente a este archivo, recibirá un error de acceso.

Sí, vale la pena señalar que el referente del encabezado puede ser falso. Pero para mí, personalmente, los bots con un campo de referencia correctamente rellenado aparecieron muy raramente y fueron prohibidos por ip. :) Entonces este método puede ser bastante apropiado.



¿Cómo calificas el artículo?
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 ( 1 calificación, promedio: 1.00 de 5)
Cargando ...

Añadir un comentario

Su correo electrónico no será publicado.