Comment puis-je save les commands bash des users?

Je gère un server de gravure et de dépression où les users vont se connecter (espérons-le) à une prison de chroot via ssh. Comment puis-je avoir les commands qu'ils exécutent enregistrées d'une manière qu'ils ne peuvent pas supprimer, ni empêcher?

6 Solutions collect form web for “Comment puis-je save les commands bash des users?”

installez snoopy . Si vous souhaitez uniquement vous connecter à un user, effectuez un filtrage syslog fu.

J'ai écrit une méthode pour save toutes les commands / buildins 'bash' dans un file text ou un server 'syslog' sans utiliser un patch ou un outil exécutable spécial.

Il est très facile à déployer, car il s'agit d'un shellscript simple qui doit être appelé une fois lors de l'initialisation du 'bash'. (il suffit de «source» de .bashrc par exemple) Il est basé sur l'idée d'utiliser des pièges DEBUG Bash. Voir aussi cette publication sur superuser.com

declare -rx HISTCONTROL="" #does not ignore spaces or duplicates declare -rx HISTIGNORE="" #does not ignore patterns declare -rx AUDIT_LOGINUSER="$(who -mu | awk '{print $1}')" declare -rx AUDIT_LOGINPID="$(who -mu | awk '{print $6}')" declare -rx AUDIT_USER="$USER" #defined by pam during su/sudo declare -rx AUDIT_PID="$$" declare -rx AUDIT_TTY="$(who -mu | awk '{print $2}')" declare -rx AUDIT_SSH="$([ -n "$SSH_CONNECTION" ] && echo "$SSH_CONNECTION" | awk '{print $1":"$2"->"$3":"$4}')" declare -rx AUDIT_STR="[audit $AUDIT_LOGINUSER/$AUDIT_LOGINPID as $AUDIT_USER/$AUDIT_PID on $AUDIT_TTY/$AUDIT_SSH]" set +o functrace #disable trap DEBUG inherited in functions, command substitutions or subshells, normally the default setting already shopt -s extglob #enable extended pattern matching operators function audit_DEBUG() { if [ "$BASH_COMMAND" != "$PROMPT_COMMAND" ] #avoid logging unexecuted commands after 'ctrl-c or 'empty+enter' then local AUDIT_CMD="$(history 1)" #current history command if ! logger -p user.info -t "$AUDIT_STR $PWD" "${AUDIT_CMD##*( )?(+([0-9])[^0-9])*( )}" then echo error "$AUDIT_STR $PWD" "${AUDIT_CMD##*( )?(+([0-9])[^0-9])*( )}" fi fi } function audit_EXIT() { local AUDIT_STATUS="$?" logger -p user.info -t "$AUDIT_STR" "#=== bash session ended. ===" exit "$AUDIT_STATUS" } declare -fr +t audit_DEBUG declare -fr +t audit_EXIT logger -p user.info -t "$AUDIT_STR" "#=== New bash session started. ===" #audit the session openning #when a bash command is executed it launches first the audit_DEBUG(), #then the trap DEBUG is disabled to avoid a useless rerun of audit_DEBUG() during the execution of pipes-commands; #at the end, when the prompt is displayed, re-enable the trap DEBUG declare -rx PROMPT_COMMAND="trap 'audit_DEBUG; trap DEBUG' DEBUG" declare -rx BASH_COMMAND #current command executed by user or a trap declare -rx SHELLOPT #shell options, like functrace trap audit_EXIT EXIT 

voir la méthode expliquée en détail ici: http://blog.pointsoftware.ch/index.php/howto-bash-audit-command-logger

Salut François Scheurer

Vous pouvez essayer ttyrpld . C'est plus que vous voulez, car il savea l'set du tty.
Je ne l'ai pas utilisé moi-même, mais la façon dont il fonctionne (dans le kernel) rend cet user impossible de modifier les journaux.

Vous pouvez autoriser l'audit du système.

Utilisez un kernel patchs de security. Il existe une option de kernel exactement à cette fin.

bash conserve un historique de commands d'une taille spécifiée. L'administrateur peut définir cette taille, et écrire facilement un script qui va et récupère cet historique par user via cron.

  • Autoriser le trafic à partir d'une seule adresse IP, bloquer toutes les autres adresses
  • (D) DOS - tcpdump a établi l'parsing des connections (trop de connections établies)
  • Paramètres de privilège user MySQL LOAD DATA INFILE
  • stocker des données privées sur un site public (mais non lié) OK?
  • Sécurisation du server Erlang / Ubuntu
  • Comment puis-je utiliser fetchmail (ou un autre enregistreur de courrier électronique) avec un keychain OSX pour l'authentification?
  • La maintenance de security sur les instances de cloud créées avec docker-machine?
  • Autoriser uniquement les connections de domaine à l'aide de TeamViewer
  • Définir correctement les permissions apache2 dans /var/www/example.com
  • IIS7 ne propage pas l'autorisation aux sous-directorys
  • Comment détecter un process caché dans linux?
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.