viernes, 2 de noviembre de 2007

Log conexiones terminal server


Una de las mayores preocupaciones que tenemos cuando habilitamos servicios de escritorio remoto en una maquina, es quien y cuando accede a estos recursos. Esta claro que existen gran cantidad de modos para realizar nuestros logs de las conexiones.

Normalmente tenemos nuestro firewall por el cual quedan registradas todas las conexiones que se realicen a nuestras maquinas.

Otras veces es la aplicación la que tiene su propio sistema de logs, en la cual queda reflejada el uso de ella misma.

A veces se nos ocurren ciertas ideas, que posiblemente no sea la solución mas políticamente correcta, pero que no por ello dejan de ser funcionales. Y precisamente este es el caso que os voy a comentar.

Escenario
Nos encontramos ante un servicio de terminal server, claro esta que disponemos de nuestro firewall y todo este rollo, pero nos encontramos en la situación que es el cliente, el que quier leer y controlar esos accesos. Y claro ponle tu a explicar como debe acceder a los logs, ¡y peor aun!, dile, que descifre los logs, y que entienda algo. Si no tenemos la suerte, que toque algo y nos fastidie cualquier cosa.
Ya sabéis terminantemente prohibido que el usuario final enrede en cualquier cosa por muy jefe que sea, y muy pesado que se ponga.

La solución
Puede ser que sea una solución rancia, pero no se, estaba en un momento de creatividad, y se me ocurrió hacer lo siguiente para poderle loguear las sesiones de terminal server de una manera sencilla para el.
-En la maquina terminal server me cree, una carpeta la cual llame log_term
c:\log_term
-Me hice con el ya mítico fichero de ms-dos "sleep.exe" el cual lo que hace es parar el tiempo que nosotros le digamos en segundos, de la forma sleep 20
-Me cree un fichero log.bat el cual constaba de las siguientes lineas:

@ECHO OFF
ECHO TERMINAL LOG...
QUERY USER >> LOG.TXT
SLEEP 60
CLS
CALL TERM.BAT

Explicacion del fichero .bat
-echo terminal log -> escribo una linea en la que pone "terminal log
-query user -> recoge los usuarios que estan conectados a la consola terminal
->> log.txt -> añade la linea resultante al fichero log.txt
-sleep 60 -> espera 60 segundos para volver a ejecutar el codigo (se puede poner el tiempo que uno quiera)
-cls-> limpia la pantalla
-call term.bat -> Vuelve a ejecutar el fichero

Cada linea resultante del fichero log, va a ser una cosa parecida a esto
administrador         console             0  Activo            .  2/10/2007 10:25
usuario rdp-tcp#1 1 Activo 7 2/10/2007 10:42
usuario2 rdp-tcp#1 2 Activo 7 2/10/2007 15:11

Esto adornándolo un poco mas, con una tarea programada, por si se nos mata el proceso, y un pequeño programa que recoja la información del fichero log resultante, tenemos un perfecto método para ver y analizar las conexiones realizadas a través del terminal server.

Este caso mas que nada le cuento, por que a veces, aunque la aplicación en si, no nos traigan herramientas de logs podemos desarrollar con un poco de imaginación para conseguir nuestro objetivo

Saludos.

4 comentarios:

RSI Sistemas dijo...

Muy útil el post!!

David dijo...

Gracias , me alegro de que te parezca util.
Saludos

Gonzalo dijo...

Valiosa informacion, David habra forma de registrar el ip desde el cual se realiza la conexion remota?

David dijo...

Gonzalo:Si no quieres recurrir a un firewall en el que quedan registrados las conexiones, quizas puedas conseguir registrar las conexiones activas con el comando C:\netstat -an . Con este comando veras las conexiones y que puertos estan usando.
Saludos