La contabilidad de procesos le permite mantener registros detallados de cada comando que ejecuta un usuario, incluido el tiempo de CPU y la memoria utilizada. Desde el punto de vista de la seguridad, esto significa que el administrador del sistema puede recopilar información sobre qué usuario ejecutó qué comando y en qué momento. Esto no solo es muy útil para evaluar un robo o un compromiso de raíz local, sino que también se puede usar para detectar intentos de comportamiento malicioso por parte de usuarios normales del sistema.
Para resumir la información contable, puede utilizar el comando sa. Por defecto listará todos los comandos encontrados en los registros contables e imprimirá el número de veces que cada uno ha sido ejecutado:
# sa 14 0.04re 0.03cp 0avio 1297k troff 7 0.03re 0.03cp 0avio 422k lastcomm 2 63.90re 0.01cp 0avio 983k info 14 34.02re 0.01cp 0avio 959k less 14 0.03re 0.01cp 0avio 1132k grotty 44 0.02re 0.01cp 0avio 432k gunzip
Ejemplos de comandos sa
1. Para resumir la información contable:
# sa
2. Para listar todo y no ordenar:
# sa -a # sa --list-all-names
3. Para ordenar la salida por la suma del tiempo del usuario y del sistema dividido por el número de llamadas.
# sa -b # sa --sort-sys-user-div-calls
4. Para imprimir porcentajes del tiempo total para el usuario, el sistema y los valores de tiempo real del comando:
# sa -c # sa --percentages
5. Asumir que todas las respuestas a consultas interactivas son afirmativas.
# sa -f # sa --not-interactive
6. Para no leer la información en el archivo savacct predeterminado del sistema:
# sa -i # sa --dont-read-summary-file
7. Para imprimir segundos por llamada:
# sa -j # sa --print-seconds
8. Para ordenar la salida por uso de memoria promedio de tiempo de CPU:
# sa -k # sa --sort-cpu-avmem
9. Para imprimir y ordenar la salida por la integral de almacenamiento de la CPU:
# sa -K # sa --sort-ksec
10. Para imprimir columnas separadas para el tiempo del sistema y del usuario:
# sa -l # sa --separate-times
11. Para imprimir la cantidad de procesos y la cantidad de minutos de CPU por usuario.
# sa -m # sa --user-summary
12. Para ordenar la salida por el número de llamadas:
# sa -n # sa --sort-num-calls
13. Para ordenar los elementos de salida en orden inverso:
# sa -r # sa --reverse-sort
14. Para fusionar los datos contables resumidos en los archivos de resumen savacct y usracct:
# sa -s # sa --merge
15. Para imprimir la relación de tiempo real a la suma de los tiempos del sistema y del usuario:
# sa -t # sa --print-ratio
16. Para imprimir el ID de usuario y el nombre del comando:
# sa -u # sa --print-users
17. Para imprimir comandos que se ejecutaron varias veces o menos y esperan una respuesta del terminal:
# sa -v 10 # sa --threshold 10
18. Para ver la versión:
# sa -V # sa --version
19. Para obtener ayuda:
# sa -h # sa --help
Para seguir monitoreando el sistema, primero instalamos el paquete acct en el sistema. Para algunas otras distribuciones de Linux, el paquete a utilizar sería psacct si acct no es compatible. Una vez que la herramienta está instalada y funcionando, comienza a mantener un registro de actividades en el sistema. Luego podemos ver estos registros usando los comandos discutidos en la sección anterior.