だから私はこれに関連する多くの投稿を読んだことがあり、以前よりも混乱しているところです。 ttyrec、snoopy、acct、rootsh、sudosh、ttyrpld、unix監査などのさまざまなツールに関する推奨事項があります。
私の場合、システムで実行されたすべてのコマンド(タイムスタンプが有効になっている履歴など)をログに記録できるようにしたいのですが、誰が何をしたのかも知りたいですか?ただし、私たちは全員、sshを介してユーザーアカウントの同じ小さなサブセットにログインします(実行している内容によって異なります)。 「接続」に関して「誰」が私に提供する情報を含むコマンドのログを取得して、一般的な「ユーザー」だけに提起されたものとして特定の人までのアクションを追跡することができますか?
auditd
パッケージはこのために設計されています。PAMを使用して各ログインにセッションIDを割り当てることができるため、アカウントのアクティビティを元のログインに追跡できます(そして、ログインログを確認して、その人がどこにログインしたかを特定しますin from)で、ausearch
コマンドを使用して、関心のあるイベントを見つけます。かなり包括的なガイドを読むことができます ここ ただし、詳細の一部を変更する必要があります。あなたの分布に一致するように。 Redhatには、FAQおよびその他のドキュメント ここ )のサイトがあります。
これは、シェルに入力されたコマンドをログに記録したり、ユーザーのコマンド履歴を記録したりすることに依存しないため、viを開く(X経由またはscreen
で実行できる)、スクリプトの記述などのログを記録する必要があります(viのcut/pasteコマンドと:.!/usr/games/fortune
を数回実行して、一度に1文字ずつ、ログに記録できない可能性のあるソースデータを取得します)次に、:%!/bin/bash
コマンドを実行します。
すでに自由に使えるさまざまなツールがあり、あなたの質問(およびこれらの回答)は、履歴、スヌーピー、監査済み、Sudoログなどを示唆しています...しかし、人々が使用している「アカウントのサブセット」がある場合は、サーバーで誰が何をしたかを知る方法はありません。誰がそれをしたかを具体的に知る唯一の方法は、ユーザーが自分のコンピューターを持っていて、キーロガーを使用して、そのキーボードで物理的に何を入力しているかを知ることです。
アカウントを共有するときはいつでも、実際に何が起こっているのかを知ることはできません。なぜなら、rootアカウントやbobアカウントなど、ユーザーが何をしていたのかをさらに証明する必要があるからです。特定のインシデントで何が起こったかを調査しようとしている場合は、アクセスポリシーと手順、復旧手順を確認し、必要に応じて従業員を評価したり、必要に応じて再トレーニング(または機密性の高いアカウントとの信頼性)を行ったりする必要があります。何かをした人を探すのに直接焦点を合わせるよりも、あなたがそれをした人を見つけるためにあなたが得るよりも多くのリソースを消費するかもしれないので。
それ以外の場合は、何が起こったかを追跡するためのフォレンジック調査手法(ドライブイメージング、ログトレースなど)を調べることをお勧めします。インシデントを調査していない場合は、ポリシーを確認し、より適切な追跡とアカウント検証を実施することを検討してください( root、ボブだけがSudoを使用して自分のアカウントを使用してより高い特権へのアクセス権を取得し、auditdをインストールおよび監視するなど)。信頼できるサークルが顕微鏡下で保持されているように感じたり、試みている人々を疎外したりしないように注意してください彼らの仕事を成し遂げる(または彼らが彼らの仕事を成し遂げるのを妨げる)ため。
Linux auditd( http://people.redhat.com/sgrubb/audit/ )は、誰が何をしたかを監視する上で最も強力です。あなたはDerfKの答えでそれについてもっと持っています。
ただし、webadminアカウントにアクセスできるユーザーがn人いる場合、webadminとしてログインしたユーザーには何も通知されません。ユーザーごとに名前付きアカウントを使用してから、su-またはSudoを使用して「function」アカウントからコマンドを実行することをお勧めします。