別のユーザーが実行したLinuxシェルコマンドのライブビュー?


27

Linuxのrootユーザーが、ターミナルまたはSSH経由でログインしている別のユーザーによって実行されているシェルコマンドのリアルタイム(またはリアルタイムに近い)ビューを持つことは可能ですか?明らかにそれらは.bash_historyに保存されますが、ユーザーがログオフしたときにのみ保存され、無効にすることもできます。

編集:理想的には、簡単にオン/オフを切り替えることができるもの。


ttyrpld良いようです。この質問にお勧めします。serverfault.com/questions/40011/...
hayalci

回答:


16

ルートとして、実際のシェルに渡す前にコマンドを記録した単純なラッパースクリプトでシェルを置き換えることができます。これは、ログインする前にのみ機能します。


20
以前の雇用主でハッキングされたアカウントを監視するためにこれを行いました。スクリプトコマンドのラッパーである "/ bin / bash"(スペースに注意)を作成しました。チャームのように機能しました:)
キーン司令官

非常に賢い!+1
EMP

9

ユーザーのセッションに侵入したい場合、または協力している場合は、スニッフィを使用してくださいscreen -x

ただし、ユーザーのスパイ行為は、地域の法律によっては規制の対象となる場合や、まったく違法となる場合があることに注意してください。


7

シェルを変更することは回避するのは非常に簡単で、シェル自体にパッチを適用する方が良いですが、すべてのシェルにパッチを適用する必要があります。私たちのお気に入りのクラッカーはこれを使用しますが、ボーナスとしてbash_historyを無効にすることはありません。

ssh host /bin/sh -i  

Snoopyはexec関数のラッパーであり、実行されたすべての外部バイナリを記録します (シェル組み込みではありません)

@David Schmittの提案スニッフィは、より良い方法を使用し、擬似端末をタップします。

ttysnoopは同じメソッドを使用しますが、メンテナンスされていません。(おそらくssh接続をログに記録するのに問題があり、思い出せません)

sshパッチを適用してセッションをログに記録できますが、そのパッチは古いものです。

偽足rootshは正当なsudosを記録するために使用することができます。また、shwatcrはログインを監視するもう1つの要素です。


正確に何をするssh host /bin/sh -iことになっていますか?
マイクペニントン

スヌーピーの場合は+1で、完璧ではありませんが、必要なことを行いました。
12

4

協力している場合は、2人のユーザー間でGNUスクリーンを使用できます。1人がスクリーンセッションを確立し、もう1人がを使用して参加しscreen -xます。

rootが他のユーザーに気付かずに「スパイ」したい場合、最良かつ最も効率的なソリューションはキーロガーソフトウェア/ハードウェアかもしれません。


4

Sysdigはシステムレベルの探索の強力なツールです-これがあなたが望むものです;)

例:

sysdig -i spy_users

カテゴリ:セキュリティ

spy_usersインタラクティブなユーザーアクティビティを表示する

ユーザーが対話的に(たとえばbashから)起動するすべてのコマンドとユーザーがアクセスするすべてのディレクトリをリスト



1

パッチや特別な実行可能ツールを使用せずに、すべての「bash」コマンド/ビルトインをテキストファイルまたは「syslog」サーバーに記録する方法を作成しました。

「bash」の初期化時に一度呼び出す必要がある単純なシェルスクリプトであるため、デプロイは非常に簡単です。

こちらの方法をご覧ください:http : //blog.pointsoftware.ch/index.php/howto-bash-audit-command-logger


サーバー障害へようこそ!回答には、コンテンツへのポインタではなく、コンテンツが含まれることが本当に望ましいです。これにより、リンクが機能しなくなった場合でも、回答は引き続き利用可能になります。これは理論的には質問に回答するかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
user9517はGoFundMonicaを

サーバー障害へようこそ!私たちのお読みくださいよくある質問を具体的に月、私は私はここに所属していた製品やウェブサイトを宣伝?
user9517はGoFundMonicaを

1
function spy() { 
   ptsnum=`ps awfux | grep pt[s]\/"$1" | awk '/bas[h]/{print $2}'` ; 
   /usr/bin/strace -s 1000 -t -f -p $ptsnum 2>&1 3>&1 \
        | grep -Poi 'write\(...\"[[:print:]]{1,2}\"[.][.][.][,]..\)' ; 
}

[436] klikevil@epiphany ~ $ w<br>
 09:36:43 up 12:06,  6 users,  load average: 0.46, 0.29, 0.20<br>
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT<br>
klikevil pts/0    75.125.126.8     23:05    2:19m 10:33   0.18s cmd                                      <br>
klikevil pts/1    75.125.126.8     00:18    6:50m  0.06s  0.04s sshd: klikevil [priv]<br>
klikevil tty7     :0               09:02   17:07m  2:02   0.32s x-session-manager<br>
klikevil pts/2    :0.0             09:03    3:30   0.08s  0.08s bash<br>
klikevil pts/3    :0.0             09:03    0.00s  0.76s  0.00s w<br>
klikevil pts/4    :0.0             09:06    3:13   0.46s  0.00s /bin/sh /usr/bin/thunder<br>
[437] klikevil@epiphany ~ $ spy 2<br>
write(2, "e"..., 1)<br>
write(2, "c"..., 1)<br>
write(2, "h"..., 1)<br>
write(2, "o"..., 1)<br>
write(2, " "..., 1)<br>
write(2, "s"..., 1)<br>
write(2, "u"..., 1)<br>
write(2, "p"..., 1)<br>
write(2, " "..., 1)<br>
write(2, "d"..., 1)<br>
write(2, "o"..., 1)<br>
write(2, "g"..., 1)<br>
write(2, "\n"..., 1)<br>
^C<br>

たくさんの改行をソートしてもかまわないなら、かなりうまくいくようです。


1

Snoopyは、軽量のコマンドロギングを対象としています。

システム上で実行されたコマンドのライブビューが必要な場合、これが該当する場合があります。警告:スヌーピーは適切な監査ソリューションではないため、簡単に回避できます。

ただし、端末に入力されたすべての文字を表示する場合は、別のツールを使用する必要があります。

開示:私は現在のスヌーピーメンテナーです。


-3

このエクスポートを試してくださいHISTTIMEFORMAT = "%T"いくつかのコマンドと "history"を実行します...

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