Ver la Versión Completa : [Duda] Archivar información de la conexión (Usuario, IP)
Fito
31 de mayo de 2019, 16:03
Hola Amigos:
Necesito armar un sistema de auditoria, les comento el escenario.
Tengo un servidor con Windows Server 2016, salvo una máquina que trabaja en red (esa ingresa así, porque tiene conectada un escaner de cheques, y los tecnicos no lograron comunicarla por escritorio remoto), todas las demás trabajan con escritorio remoto.
Lo que necesito hacer es grabar un archivo de auditoria con toda la mayor información posible (usuario de windows que accedió, ip desde donde accedió, etc, etc) para agregarle a la ya auditoria que realizo cada vez que dan de baja o modifican algun dato desde el sistema (clientes, remitos, facturas, etc).
El desarrollo está hecho en PowerCobol 8, si alguien tiene alguna "soga" que me tire, lo agradeceré.
Saludos.
Fito...
Kuk
31 de mayo de 2019, 19:06
Fito, hay utilidades gratuitas, como PC Info etc. que te registran información en un fichero de texto plano. ¿Has googleado un poco en este sentido?
Lascu
24 de junio de 2019, 22:25
Hola Amigos:
Necesito armar un sistema de auditoria, les comento el escenario.
Tengo un servidor con Windows Server 2016, salvo una máquina que trabaja en red (esa ingresa así, porque tiene conectada un escaner de cheques, y los tecnicos no lograron comunicarla por escritorio remoto), todas las demás trabajan con escritorio remoto.
Lo que necesito hacer es grabar un archivo de auditoria con toda la mayor información posible (usuario de windows que accedió, ip desde donde accedió, etc, etc) para agregarle a la ya auditoria que realizo cada vez que dan de baja o modifican algun dato desde el sistema (clientes, remitos, facturas, etc).
El desarrollo está hecho en PowerCobol 8, si alguien tiene alguna "soga" que me tire, lo agradeceré.
Saludos.
Fito...
Hola Fito
En un sistema de facturación estoy intentando implementar algo similar. En mi caso particular, cree un archivo llamado Eventos, donde guardo Usuario, Host, Fecha, Hora, tipo de evento, descripción. De momento tengo una rutina donde que copio y pego en cada situación que deseo que quede registrada (registro de pagos, emisión de factura, anulación de un recibo, etc).
Por ejemplo, al final del algoritmo donde guardo la generación de una orden de pago, pego esto
REGISTRA-EVENTO.
OPEN I-O EVENTOS.
INITIALIZE REG-EVENTOS.
MOVE WX-ID-USR TO EV-USUARIO.
MOVE WX-HOST-USR TO EV-HOST.
MOVE FUNCTION CURRENT-DATE TO WK-FECHA-ENTRADA.
MOVE WK-FECHA TO EV-FECHA.
ACCEPT EV-HORA FROM TIME.
IF REGISTRO-NUEVO THEN
MOVE "ALTA" TO EV-EVENTO
STRING "Nueva orden de pago N° " ID-OPAGO DELIMITED BY SIZE
INTO EV-DESCRIBE
END-STRING
ELSE
MOVE "EDIT" TO EV-EVENTO
STRING "Edita orden de pago N° " ID-OPAGO DELIMITED BY SIZE
INTO EV-DESCRIBE
END-STRING
END-IF.
WRITE REG-EVENTOS INVALID KEY
CONTINUE
END-WRITE.
CLOSE EVENTOS.
En algún momento quiero desarrollarlo en una DLL, por el momento no me resulta tan incómodo copiar, pegar y editar la descripción.
De esa manera puedo ver que acciones llevaron a cabo los usuarios.
Saludos
Lascu
Fito
24 de junio de 2019, 23:23
Hola Marcelo:
Gracias por contestar.
Yo tambien estoy haciendo eso, la rutina la tengo en un cbl que llamo con un call con parámetros desde donde quiera controlar. La pregunta en realidad era cómo obtengo el usuario de windows, la ip de la máquina donde está trabajando, etc.
Un abrazo.
Fito...
Lascu
25 de junio de 2019, 00:42
Fito
Cuando un usuario se loguea a la aplicación, guardo el nombre de la pc desde donde se conecta mediante la función WINAPI "GetComputerNameA", tendría que revisar mejor si alguna de las funciones no devuelve el valor de la IP.
He visto que programadores de fox utilizan WMI para obtener la IP, pero desconozco como implementarlo en powercobol.
Un abrazo
Lascu
Saludos
JCantero
26 de junio de 2019, 17:23
El Usuario lo tienes fácil.
En RM/Cobol existe una rutina C$getsysinfo que en el registro, aparte de numerosa información devuelve el nombre de usuario. Debe de haber algo parecido en Powercobol.
Si asi no fuera, en rmcobol tambien hay una rutina que devuelve el valor de una variable de entorno donde esta el usuario que esta ejecutando. Esa variable es USERNAME
Y si no pues, a pelo.....
Call "system" using "cmd /c echo %username% > fichero.log " y a leer el .log
Para hacer esto último mas completo en vez de fichero.log que sea un numero aleatorio para que no tengas conflicto.
Para saber la IP yo utilizo netstat -n que nos dice todas las conexiones abiertas. Si os conectais con el puerto estandard 3389
Call "system" using "cmd /c netstat -n | find ":3389 " y a leer el .log
TCP 192.168.17.22:3389 192.168.64.01:64683 ESTABLISHED
TCP 192.168.17.22:3389 192.168.64.22:64603 ESTABLISHED
aparecerá una linea para cada conexión, en este ejemplo hay dos usuarios desde las IPs 192.168.64.01 y 192.168.64.22 conectados con terminal server al 192.168.17.22
---------- Post añadido : 17:23 ---------- Post anterior : 17:05 ----------
-----------------------
Dependiendo de la version windows server que tengas instalado puedes activar la auditoria del sistema y se hace sola.
Windows Server 2008 Terminal Services Log (https://social.technet.microsoft.com/Forums/Azure/en-US/31b6cb01-c85b-4daf-afb7-dee89c0343e5/windows-server-2008-terminal-services-log?forum=winserverTS)
vBulletin v3.8.7, Derechos ©2000-2026, Jelsoft Enterprises Ltd.