Sé que puedo ver los archivos abiertos de un proceso usando lsof en ese momento en mi máquina Linux. Sin embargo, un proceso puede abrir, alterar y cerrar un archivo tan rápido que no podré verlo al monitorearlo utilizando scripts de shell estándar (por ejemplo watch) como se explica en "monitorear archivos de proceso abiertos en Linux (en tiempo real)" .
Entonces, creo que estoy buscando una forma simple de auditar un proceso y ver qué ha hecho con el tiempo. Sería genial si también es posible ver qué conexiones de red hizo (intentó) y hacer que la auditoría comience antes de que el proceso tenga tiempo de ejecutarse sin que se inicie la auditoría.
Idealmente, me gustaría hacer esto:
sh $ audit-lsof /path/to/executable
4530.848254 OPEN read /etc/myconfig
4530.848260 OPEN write /var/log/mylog.log
4540.345986 OPEN read /home/gert/.ssh/id_rsa <-- suspicious
4540.650345 OPEN socket TCP ::1:34895 -> 1.2.3.4:80 |
[...]
4541.023485 CLOSE /home/gert/.ssh/id_rsa <-- would have missed
4541.023485 CLOSE socket TCP ::1:34895 -> 1.2.3.4:80 | this when polling
¿Sería esto posible usar stracealgunas banderas para no ver todas las llamadas al sistema?