X

Cómo restringir el acceso al panel administrador WordPres por IP o usuario

Muchos consideran a WordPress como un gestor de contenido inseguro, sin embargo nada más alejado de la realidad, ya que es tan o incluso más seguro que los demás, el punto débil de WordPress no es WordPress mismo, sino su fama, por el hecho de ser el más usado a nivel mundial, también es el más atacado por lejos si lo comparamos con otros gestores de contenido no tan populares como WordPress.

Por esa razón es que los atacantes se concentran en buscar vulnerabilidades en los plugins de WordPress y su falta de cuidados al desarrollarlos y porque también hay que decirlo, en la falta de puntualidad de los administradores en actualizar dichos plugins y solucionar sus vulnerabilidades.

Explicaremos varios métodos para proteger el administrador WordPress, sin embargo muchos de ellos serán complementarios entre sí, esto quiere decir que podemos implementar varios al mismo tiempo de forma de proteger el administrador y no con una sola forma, sino con varias capas de seguridad al mismo tiempo.

Bloquear el acceso basado en la IP

Entre las primeras opciones y generalmente la más habitual por su facilidad de implementación, es la de limitar el acceso basado en la IP, esta solución no siempre puede ser aplicada porque en muchos casos los usuarios no cuentan con una IP fija, sino con una dinámica y en tales casos no sería una opción correcta.

Sin embargo si los usuarios tienen una IP fija ya sea porque se las da su ISP de Internet o utilizan una VPN con IP fija, este es uno de los métodos más seguros que existen, para ser implementado simplemente se debe agregar en el .htaccess dentro de wp-admin:

order deny, allow
allow from XXX.XXX.XXX.XXX
deny from all

Siendo XXX.XXX.XXX.XXX la IP a autorizar, del mismo modo podemos agregar cuantas IP se necesitan, por ejemplo:

order deny, allow
allow from XXX.XXX.XXX.XXX
allow from XXX.XXX.XXX.XXY
allow from XXX.XXX.XXX.XXZ
deny from all

El código anterior sirve tanto para Apache como para LiteSpeed, mientras que para Nginx se realiza de la siguiente manera:

location /wp-admin {
  allow XXX.XXX.XXX.XXX;
  deny all;
}

Para agregar mas IP es similar:

location /wp-admin {
  allow XXX.XXX.XXX.XXX;
  allow XXX.XXX.XXX.XXY;
  allow XXX.XXX.XXX.XXZ;
  deny all;
}

Con lo anterior se bloquea todo el acceso a la carpeta wp-admin, sin embargo en la parte pública de WordPress hay ciertos llamados que se realizan a wp-admin/admin-ajax.php que también serian bloqueadas, para evitar perder estas funcionalidades se puede agregar en el wp-admin/.htaccess lo siguiente:

  Order allow, deny
  Allow from all
  Satisfy any

En el caso de Nginx se debe agregar:

location /wp-admin/admin-ajax.php {
  allow all;
}

Cambio de dirección URL del wp-admin

El segundo método para proteger WordPress es mediante un plugin que te permita modificar la dirección URL por defecto, existen varios plugins que permiten realizar esta configuración, siendo WPS Hide Login uno de los más conocidos y sencillos.

A esto se le llama seguridad por oscuridad, porque básicamente lo que se hace es modificar la url para que no sea tan obvia, sin embargo, la url seguirá siendo pública, por lo que es bueno combinarla con algún otro método de protección, por ejemplo con el bloqueo por IP del principio si fuera posible.

Un detalle importante a tener en cuenta es que al no estar el administrador en su ruta habitual los plugins de cache (como WP Super Cache) y optimización podrían cachear la página del administrador y ocasionar algunos inconvenientes, como no mostrar cambios, para resolverlo se debe configurar el plugin de cache para excluir del cache la nueva url.

También hay que tener en cuenta que al cambiar la url del administrador se perderían algunas funciones por cambiar de lugar el archivo admin-ajax.php.

Bloquear ataques de fuerza bruta

Sino es posible implementar ningún de los dos anteriores métodos, como mínimo se debe detener y bloquear los ataques de fuerza bruta que se realizan para poder vulnerar alguna cuenta de usuario, aunque usemos contraseñas fuertes el uso de recursos de ancho de banda y CPU que consumen estos ataques no son nada despreciables.

Para estos casos existen diferentes plugins como por ejemplo Limit Login Attempt entre los más conocidos permiten configurar cuántos intentos tiene un usuario para acceder un usuario desde una dirección IP en un periodo de tiempo y bloquearlo.

También existen plugins mucho más completos como iTheme Security o Wordfence, ambos son plugins con una amplia gama de opciones de seguridad para fortificar WordPress y que va mucho más allá de solo los ataques de fuerza bruta, por eso es recomendable elegir alguno de los dos, por sobre uno que solo se limite al login o a los ataques de fuerza bruta.

Captcha en el Login

El término conocido como CAPTCHA es una en realidad la abreviatura de Completely Automated Public Turing test to tell Computers and Humans Apart, dicho en otras palabras, no es más que una prueba conocida como Test de Turing  a la que es sometido el usuario antes de realizar alguna acción en un sitio web,la prueba consiste en que el usuario debe que demostrar al sitio que en realidad es un humano y no un robot.

Estas pruebas suelen basarse en reconocimiento de una cadena de texto que tiene alguna dificultad en su legibilidad o en el reconocimiento de imágenes, antes de completar el registro en una página web, dejar un comentario o realizar cualquier acción que sólo deban hacer humanos.

El uso más común que se le da en WordPress es en los comentarios, de modo de evitar el SPAM en los artículos o ser explotado para enviar SPAM a terceros, sin embargo otro lugar dentro de WordPress que se suele utilizar este tipo de tecnología es en los formularios de login de modo de evitar los ataques de fuerza bruta.

Algunas de las zonas críticas de WordPress en los que puede ser muy útil un captcha son:

  • Formulario de registro
  • Formulario de inicio de sesión (login)
  • Recuperación de contraseña
  • Formulario de contacto
  • Formulario de comentarios

Uno de los captchas más conocidos es sin dudas Google reCAPTCHA donde luego del registro podemos obtener una clave para utilizar en WordPress, esta estará atada al dominio por lo que si tenemos más de un WordPress debemos registrar una por cada una.

Luego de la clave se puede instalar el captcha en WordPress a través de algún plugin como por ejemplo CAPTCHA 4WP o por ejemplo reCaptcha by BestWebSoft que permitirá configurar en cada sección de la web.

Segundo factor de autenticación

El Segundo Factor de Autenticación o también llamada Autenticación en dos pasos, es simplificando, una nueva capa de seguridad que se implementa en los formularios de login de los sitios web o de cualquier tipo de aplicaciones, ya sea móviles o de escritorio.

Su funcionamiento es muy sencillo: se compone de un paso extra que se debe realizar durante el login para complementar la autenticación en una web o en una aplicación, es decir aparte del usuario y contraseña habitual de toda la vida se debe agregar un código aleatorio, similar a un PIN, que se puede obtener en cada login desde una aplicación móvil o por correo electrónico entre otros métodos.

Su implementación puede cambiar,  sin embargo en su método más común es utilizar una aplicación móvil que genera un código nuevo cada 30 segundos y que debe ser ingresado en el formulario de login luego de ingresar los datos de usuario y contraseña.

Para ponerlo en otras palabras más simples, al completar el usuario y contraseña en un formulario de login en un sitio web y pulsar en el botón de Login, el sistema solicitará el código adicional, que no es otro que el código de autenticación en dos pasos, que como ya se mencionó lo proporciona un medio externo, por ejemplo una app que tendremos en nuestro móvil.

Esta es una medida de seguridad bastante sencilla aunque extremadamente segura y difícil de hackear, debido a que el código solo se obtiene en un dispositivo, nadie más lo puede generar, por consiguiente si un atacante lograra de alguna forma robar el usuario y contraseña para un sitio web no sería suficiente porque también necesitaría acceder al teléfono móvil para obtener el código que proporciona la aplicación y que cambia cada 30 segundos.

Una segunda variante, aunque menos segura, seria en lugar de una aplicación móvil utilizar el correo electrónico, donde cada vez que se quiere hacer login en el sitio este envía un correo electrónico con el código, el problema de seguridad que genera esto es que un correo electrónico puede ser fácilmente comprometido y ser usado para obtener el código.

Por ese motivo es mucho más seguro utilizar una aplicación móvil, esta permite escanear un código QR que contiene la clave criptográfica que genera los códigos aleatorios, por ejemplo Google Authenticator, Authenticator Plus,  Authy, entre muchas otras.

La forma más sencilla de implementar el segundo factor de autenticación en WordPress es con el plugin WP 2FA que puedes ver aquí Cómo proteger WordPress con 2FA (Autenticación en Dos Pasos) y que luego de configurado en WordPress proporciona el código QR para agregar en la aplicación de tu preferencia.

Conclusión

De los cinco métodos que mencionamos tanto el primero de autorizar por IP como el segundo, de esconder la carpeta del administrador si bien son recomendables no siempre son posibles, sin embargo los últimos tres métodos: «Bloquear ataques de fuerza bruta, Captcha de login y 2FA» pasan a ser prácticamente obligatorios si queremos tener un WordPress seguro y estar tranquilos de posibles intrusiones, por ese motivo es imprescindible en cualquier web implementar los últimos tres y dentro de lo posible los primeros dos.

 

Artículos relacionados