Wie füge ich Netzwerk- oder Benutzerquellenverbindungsdaten zu Verlaufseinträgen hinzu?

Wie füge ich Netzwerk- oder Benutzerquellenverbindungsdaten zu Verlaufseinträgen hinzu?

Ich möchte die Verlaufseinstellungen für alle Benutzer der von mir verwalteten Systeme ändern. Ich möchte, dass sie die Informationen vom Verbindungsterminal enthalten, wie vonwho

sysadmin:/ # who
sysadmin  pts/0        Mar 26 07:11 (sysadmin.doofus.local)

Ich ändere meinen Verlauf derzeit auf folgende Weise. Ich weiß, dass viele dieser Einstellungen hier schon mehrmals behandelt wurden. Ich habe diesen Code jedoch aus "Rezepte zur Linux-Systemadministration von: Juliet Kemp" vor langer Zeit.

shopt -s histappend
PROMPT_COMMAND='history -n;history -a'
HISTSIZE=100000
HISTFILESIZE=100000
HISTTIMEFORMAT="%m/%d/%y %T  "

shopt -s histappendbehebt das Problem, dass Informationen verloren gehen können, wenn Sie mehrere Terminals geöffnet haben.

PROMPT_COMMAND='history -n;history -a'wird erweitert, um das Anhängen an den Verlauf in Echtzeit über mehrere Terminals hinweg zu ermöglichen.

HISTSIZE=100000 HISTFILESIZE=100000 verlängert die historyRetentionszeit

HISTTIMEFORMAT="%m/%d/%y %T " stellt jeder Zeile der Geschichte einen Zeitstempel voran

Was Sie normalerweise erhalten mit history

835  ls
836  cd ..

Meine modifizierten aktuellen historyErgebnisse

5853  03/26/12 07:16:49  ls
5854  03/26/12 07:16:50  ll

Die Rückkehr von historyIch würde gerne sehen

5853  03/26/12 07:16:49  sysadmin.doofus.local    ls
5854  03/26/12 07:16:50  sysadmin.doofus.local    ll

001  03/26/12 05:11:29  demo_user.doofus.local    cd
002  03/26/12 05:11:30  demo_user.doofus.local    ll

Ich bin nicht darauf „verpflichtet“, den DNSNamen zu sehen. Ich möchte ihn nur dort sehen, wenn er von whooder einem anderen Ort abgerufen wird, ohne dass eine Suche oder Abfrage irgendeiner Art durchgeführt werden muss. Mit einer IP-Adresse wäre ich zufrieden.

002  03/26/12 05:11:30  192.168.0.2    ll

Warum? Ich verwalte mehrere Systeme, bei denen mehrere Benutzer derselben Gruppe eine Benutzer-ID für ihre täglichen Aufgaben verwenden. Dadurch könnte ich ihren tatsächlichen Standort und tatsächlichen Benutzer innerhalb der Organisation mit dem in der Historie Gesagten in Verbindung bringen.

Ich bin mir bewusst, dass das nicht optimal ist und würde es gerne ändern, aber wenn man auf einem Schiff von der Größe eines Kreuzfahrtschiffs ist, versucht man nicht, Haarnadelkurven zu fahren. (Hinweis: Wenn man das tut, versuchen die Passagiere, einen über Bord zu werfen.)

Bis ich sie auf eine bessere Lösung migrieren kann, möchte ich jedenfalls über diese Tracking-Funktion verfügen.

Wenn Sie Empfehlungen dazu haben, was ich derzeit für meine historyModifikationen verwende, würde ich diese gerne hören.

Danke,

Bearbeiten: 1

Ich möchte keine anderen Programme ausführen oder „im Rahmen des Zumutbaren“ zusätzliche Konfigurationen vornehmen müssen.

Ich möchte zusätzlichen Aufwand verursachen 0; wenn, dann sollte dieser gering sein.

Ich vertraue meinen Benutzern, ich möchte nur (sollte etwas passieren) sehen, welcher der sagen wir 10 Benutzer, die sich mit demselben Benutzer:Passwort beim System angemeldet haben, es getan hat. Oder es war vielleicht kein Benutzer, sondern jemand, der vergessen hat, cronauf einem System eine Verbindung als Benutzer herzustellen, um etwas zu tun. Oder eine Anwendung, z. B.: BMC Control-Mdie eine Verbindung herstellt sshund Aufgaben ausführt. Es geht nicht so sehr darum, „schlechte Benutzer“ zu finden, sondern darum, sie mit minimalem Aufwand aufspüren zu können.

Bearbeitung 2:

Die Systeme laufen unter SLES und RHEL

Antwort1

Gemäß lluas Vorschlag können wir etwas mehr mit der Historie arbeiten. Fügen Sie der systemweiten BASH-RC-Datei eine Zeile hinzu, beispielsweise /etc/bash.bashrc.

export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

Richten Sie die Protokollierung für „local6“ in Ihrem Systemlogger ein. Vielleicht so etwas:

local6.*    /var/log/commands.log

Starten Sie den Systemlogger neu. Richten Sie ggf. eine Protokolldateirotation ein. Melden Sie sich ab und wieder an. Der Verlauf wird nun in einem Format wie diesem in /var/log/commands.log geschrieben:

Datum Uhrzeit Hostname Logger: Benutzername [audit_pid]: Befehl [return_val]

Dies könnte je nach Geschmack noch weiter optimiert werden.

Antwort2

Die folgenden Absätze beschreiben die Idee im Allgemeinen und sind in einigen Aspekten veraltet, aber Sie können dann das Neueste verwenden vonDasSeite. Verwenden wir eine große Datei ~/.bash_history.archive (getrennt von HISTFILE=~/.bash_history). Und dann fügen wir beim Beenden jeder Bash-Sitzung neue Verlaufszeilen hinzu.

Das erste Problem bei diesem Ansatz war: Wie bringt man Bash dazu, dieses Skript bei jedem Beenden aufzurufen? Natürlich kann man die Funktion „exit“ auch als Alias ​​verwenden, wenn man es durch die Eingabe von „exit“ beendet, aber ich verwende dafür die Tastenkombination Strg-D und konnte keine Möglichkeit finden, es einer anderen als der integrierten Exit-Funktion zuzuweisen.

Der erste Versuch war also: Strg-D zu verbieten durch

export IGNOREEOF=10

und definieren Sie die doppelte Strg-X-Kombination, um die Exit-Funktion aufzurufen.

Der richtige Ansatz besteht jedoch darin, „exit tramp“ von Bash zu verwenden. Dies ist eine perfekte Lösung, da es unabhängig von der Art und Weise aufgerufen wird, wie Sie Bash beenden: Strg+D, beenden, Xterm-Fenster schließen.

trap 'archive_history' EXIT

Der nächste Schritt besteht darin, eine Startzeile in unserer Bash-History zu definieren, damit wir nur neue Zeilen speichern und sicherstellen können, dass wir sie an eine Verlaufsdatei anhängen.

export CURBASHSTART=`grep -v "^[ \t]*$" $HISTFILE | wc -l | awk '{print $1}'` CURBASHDATE=`date`

shopt -s cmdhist histappend

Das ist alles, was wir beim Start von Bash brauchen – jetzt wissen wir, ab welcher Verlaufszeile der aktuelle (neue) Verlauf beginnt. Um den Verlauf zu speichern, fügen Sie den nächsten Teil zu Ihrer ~/.bashrc hinzu.

archive_history()
{
    HISTORYOLD=${HISTFILE}.archive
    CURTIME=`date`
    CURTTY=`tty`
    if  [ x$HISTDUMPPED = x ]; then
      echo "#-${HOSTNAME}-- ${CURBASHDATE} - ${CURTIME} ($CURTTY) ----" >>   $HISTORYOLD

      history $(($HISTCMD-${CURBASHSTART-0})) | sed -e 's/^[ ]*[0-9][0-9]* [ ]*//g'  >> $HISTORYOLD
      export HISTDUMPPED=1
    fi
}

exit ()
{
   archive_history
   builtin exit

}

Die Datei ~/.inputrc sollte die nächsten Zeilen enthalten, um die Tastenkombination zum Beenden auf Strg-x x neu zu definieren. Beim ersten Versuch kommt es Ihnen vielleicht so vor, als wäre die Tastenkombination schrecklich, aber dann gewöhnt man sich daran – glauben Sie mir.

$if Bash
# to exit through calling exit function which will archive the history
"\C-x\C-x": "exit\n"
# to dump history we have so far
"\C-x\C-w": "archive_history\n"

$endif

Auch wenn Ihre Bash-Sitzung eine Login-Sitzung ist und Sie sie durch Aufruf von ' logout' beenden, können Sie die nächste Zeile zu Ihrer~/.bash_logout

archive_history

Nachdem alle genannten Aktionen abgeschlossen sind, können Sie Ihre ~/.bash_history.archiveDatei mit Abschnitten wie diesen finden

#-belka-- Sun Oct 12 21:52:13 EDT 2003 - Sun Oct 12 21:53:25 EDT 2003 (/dev/pts/13) ----
exit
aptitude
exit
#-washoe-- Sun Oct 12 18:03:16 EDT 2003 - Sun Oct 12 23:06:48 EDT 2003 (/dev/pts/3) ----

exit
cd progr/letters/resume/
e resume.tex

die im Allgemeinen als normale Verlaufsdatei gelesen werden kann, wenn Sie dies wünschen.

verwandte Informationen