Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + tecnología especializada

Limitar tiempo de sesión

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la configuración segura en Unix del tiempo de sesión. Un atacante puede aprovecharse de un usuario inactivo para vulnerar una aplicación, es por ello que es importante limitar el tiempo de sesión de los usuarios.

Necesidad

Establecer el tiempo límite de sesión inactiva en un sistema Unix.

Contexto

A continuación se describen las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Disponer de un sistema operativo conforme a la especificación Unix.

  2. Se tiene acceso a la interfaz de comandos (CLI) del sistema en cuestión.

  3. El sistema debe cerrar una sesión si se presenta un tiempo de inactividad por parte del usuario.[1]

Solución

El tiempo límite de sesión o timeout[2], se refiere al periodo de tiempo determinado por el cual una sesión permanecerá activa. Lo anterior desde el momento en que el usuario deja de interactuar con determinado sistema. Este límite de tiempo es definido por el administrador del sistema, y una vez finaliza, la sesión del usuario que está interactuando con él, se cierra o elimina.

Por seguridad se recomienda fijar un tiempo límite de sesión corto, con el fin de evitar que algún atacante tome posesión de una sesión abandonada por un usuario y comprometa la integridad y/o el funcionamiento del sistema.

  1. Como se ha explicado, el tiempo de vida de la sesión es el tiempo en que esta estará activa sin que se realice actividad por parte del usuario.

  2. Este tiempo se especifica en segundos y se parametriza a través de una variable de entorno cuyo nombre varia dependiendo del shell con el cual se este trabajando.

  3. Los shells bourne y korn utilizan la variable TMOUT.

  4. Para establecer dicha variable a nivel de sistema se debe parametrizar el archivo de inicio de sesión así[3]:

    test.sh
    1
    2
    % cat /etc/profile
    typeset -xr TMOUT=300
    
  5. Con la parametrización anterior se logra que la variable sea definida como de solo lectura (-r), por tal motivo los usuarios no pueden eliminarla o establecerla en un nuevo valor. La variable será copiada (exportada, -x) a shells hijos del shell actual.

  6. Si a nivel de sistema no se define política de tiempo de vida o esta se define pero se le permite a un usuario su redefinición, el mismo podrá parametrizar nuevos valores o la anulación de la política mediante la misma sintaxis anterior pero en el archivo ~/.profile.

  7. Para verificar el valor actual del tiempo de sesión se puede realizar lo siguiente:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    %  ssh server -fluid
    fluid@server's password:
    ...
    % set | grep TMOUT
    TMOUT=300
    ...
    Shell will time out in 60 seconds.
    Connection to server closed by remote host.
    Connection to server closed.
    
  8. Es importante aclarar que a pesar de la parametrización anterior, la política puede ser evitada por un usuario, lanzando un nuevo shell que ignore la semántica asociada a la variable de entorno TMOUT:

    1
    2
    3
    4
    5
    6
    7
    8
    % typeset -rx TMOUT=5
    % csh
    % echo $TMOUT
    5
    % date
    mié jun 9 16:15:04 COT 2010
    % date
    mié jun 9 16:15:13 COT 2010
    
  9. En el ejemplo anterior vemos como un shell tipo c, a pesar de tener definida(exportada) la variable de entorno TMOUT, hace caso omiso de su comportamiento.




Haz un comentario

Estado de los servicios - Términos de Uso