Notre petite entreprise gère un serveur Ubuntu 11.10, auquel deux personnes ont accès SSH. Les terminaux réels sont parfois également utilisés. Comment pouvons-nous enregistrer localement toutes les commandes Bash exécutées, ainsi que l'utilisateur et l'horodatage?
Nous pouvons supposer que personne n'est néfaste et essaie activement d'éviter la journalisation, mais nous préférons toujours que les utilisateurs n'aient pas d'accès direct en écriture à leurs fichiers journaux. Les sessions simultanées doivent être gérées correctement.
PROMPT_COMMAND
ou en exécutant simplement un shell non bash.Un système de comptabilité des processus peut être utile à cet égard, en particulier le package acct qui fournit les commandes lastcomm et ac.
Les commandes ac impriment des statistiques sur le temps de connexion des utilisateurs, en heures. Il s'agit de la durée pendant laquelle l'utilisateur a été connecté au système, soit à distance via SSH ou un terminal série, soit sur la console.
La commande lastcomm affiche des informations sur les commandes précédemment exécutées. Les entrées les plus récentes sont données en haut de la liste. La quantité totale de temps processeur utilisée par chaque processus est également affichée.
Un ancien tutoriel qui peut être utile est ici:
http://www.linuxjournal.com/article/6144?page=0,1
D'autres commandes de comptabilité comme last et ainsi de suite peuvent être trouvées dans ce tutoriel:
http://www.techrepublic.com/article/system-accounting-in-linux/1053377
la source
Vous pouvez utiliser snoopy .
L'enregistreur Snoopy peut convenir à votre objectif. Il n'est pas destiné à être une solution de journalisation inévitable, mais plutôt un outil utile pour les administrateurs diligents qui préfèrent suivre leurs propres actions.
Divulgation: Je suis le mainteneur snoopy.
la source
Vous pouvez trouver ici un script pour consigner toutes les commandes / commandes bash dans un fichier texte ou un serveur syslog sans utiliser de correctif ou un outil exécutable spécial.
Très facile à déployer, car il s'agit d'un simple script shell qui doit être appelé une fois lors de l'initialisation du bash .
C'est gratuit et j'espère qu'il répond à vos besoins.
la source
Pour prendre soin de plusieurs sessions sans écraser le fichier d'historique, vous devrez mettre "shopt -s histappend" dans un fichier de démarrage Bash. Voir aussi cette question sur le même problème.
la source
essayez ceci (les solutions ci-dessus ne fonctionneront pas à 100% avec bash 4.3):
cela fait la journalisation ET il empêche la journalisation des horodatages utilisés pour le fichier d'historique bash. le piège est nécessaire, car bash enverra les signaux au "sous-emploi" après avoir appuyé plusieurs fois sur strg + c (testé avec bash 4.3). cela forcera la déconnexion de l'utilisateur actuel (par exemple connecté avec sudo)
la source
Vous pouvez également essayer d'installer acct. Acct conserve une piste d'audit détaillée de ce qui se fait sur vos systèmes Linux.
la source