OTP restringida por IP, como Autenticación de administrador web, segura o no

3

Creé un panel de administración web con la siguiente implementación de seguridad.

  1. Se encuentra en un subdirectorio de la web, lo que provocará un error 404 cuando se intente acceder (al igual que el enlace está roto o no existe).
  2. Esto (solo si se abre el subdirectorio correcto) a su vez envía un correo electrónico al administrador, con una URL, que tiene un token.
  3. El token es de 2 partes, una es un md5 aleatorio de 5 números de 5 dígitos al azar, otra es un md5(strrev(md5(IP_ADDR))) . El token se guarda en la base de datos al invalidar todas las demás sesiones.
  4. Estas fichas están separadas por un signo _.
  5. Cuando el administrador (o alguien) intenta acceder a la URL, primero se compara la señal IP si la misma IP está accediendo a la URL. Si no, se muestra la página 404.
  6. En caso afirmativo, el token aleatorio guardado en la base de datos se compara con el que se envió por correo. Si esto también tiene éxito, se abre el panel de administración.
  7. Cualquier intento no válido mostrará un error 404.
  8. Este token se invalidará automáticamente cada 20 minutos, gracias al trabajo cron.

Siempre que el administrador del sitio web pueda abrir el correo electrónico.

¿Cuáles podrían ser las fallas en esta implementación? ¿Cómo se puede mejorar esto?

    
pregunta Sibidharan 06.04.2016 - 22:39
fuente

2 respuestas

2

Es poco probable que haya una respuesta única a esta pregunta, ya que cada una puede cubrir diferentes defectos. Aquí hay algunos, solo relacionados con la derivación de token y el uso de 404 :

La segunda parte del token puede ser calculada directamente por cualquier adversario, ya que conocen su propia dirección IP. Por lo tanto, se puede eliminar sin reducir la seguridad.

El uso de un hash en la primera parte del token no agrega ningún valor de seguridad, pero aumenta la sobrecarga (aunque es probable que sea insignificante, sigue siendo inútil). El punto de la contraseña de un solo uso es que es difícil para un adversario adivinar el valor generado aleatoriamente; el valor de hashing no hace nada para aumentar la dificultad, ya que un adversario debe adivinar los 5 números originales o el hash.

El espacio de conjetura con el primero es 1e25 valores, ya que uno puede simplemente concatenar todos los números. Esto es equivalente a log (1e25) / log (2) = 83.05 bits; usted no obtiene mágicamente 128 de MD5.

¿Necesita aumentar esto? Mi conjetura sería que un ataque de fuerza bruta antes te DOS, pero hay poco daño en usar más espacio, así que adelante.

El uso de errores 404 es security by obscurity que no es seguridad.

    
respondido por el Arran Schlosberg 06.04.2016 - 23:12
fuente
1

Independientemente de la calidad de su número aleatorio de 5 dígitos, me gustaría elaborar su reclamación "Siempre que el administrador del sitio web pueda abrir el correo electrónico".

Suponemos que la cuenta de correo electrónico de los administradores está protegida solo por contraseña. De esta manera usted combina una contraseña (contraseña de correo electrónico) con probablemente la contraseña de la interfaz de administración web. Resultando en dos contraseñas que pueden ser atacadas de manera similar. El atacante puede pensar "qué incomprensible, tengo que agarrar dos contraseñas". ¡Pero él es bueno atacando contraseñas! No importa si lo hace una o dos veces.

Así que deberías pensar en agregar algo, donde el atacante no es bueno. Un segundo factor real como un token de hardware o un yubikey. Tal vez incluso un Google Authenticator de mierda (asumiendo que no es bueno para llevar malware a su teléfono inteligente). Por cierto, todos estos son compatibles con el código abierto privacyidea .

    
respondido por el cornelinux 07.04.2016 - 12:19
fuente

Lea otras preguntas en las etiquetas