私のLinuxマシンに誰がSSHしているのかを追跡するにはどうすればよいですか?


23

Ubuntu 10.04を実行しています。誰がボックスにログオンしたか、何時、さらには(これはあまりにも多くの質問をしているかもしれない)彼らの使用したコマンドのレポートを毎日取得できる方法はありますか?これは使用率の低いボックスですので、これはどのアクティビティが行われているのかを知る良い方法だと思います。

これらの同じ行に沿って、rsyncやsshを介してリモートで単一のコマンドを実行するなど、非対話型シェルを介してボックスで処理が行われたときを追跡することは不可能だと聞きました。それは本当ですか、それともこれを記録して追跡する方法がありますか?

回答:


21

誰がいつログインしたかの情報は、/var/log/auth.log(または他のディストリビューションの他のログファイル)で利用できます。関連するように構成した情報を抽出できる複数のログ監視プログラムがあります。健全なシステムでは、すべてのユーザー認証がログに記録されます。

すべてのコマンド呼び出し(引数ではない)を記録するには、Ubuntu のパッケージで提供されるプロセスアカウンティングを使用します。アカウンティングサブシステムが稼働している場合、終了したプロセスに関する情報を表示します。acct acctをインストールするlastcomm


3
/var/log/secure.logは、他の一般的なログファイルです
エイドリアン・コーニッシュ

9

whoまたはwを使用して、SSHユーザーを含む現在システムにログインしているユーザーを確認することもできます。


10
last... OPが探していたもののためのより良い選択肢かもしれない
jasonwryan

1
確かに。「last」は、必要なコマンドです。
Sirex

1
これは、選択したものよりもはるかに良い答えです。
PaulBGD 14年

0

通常、ユーザーシステムにログインすると、/ var / log / messagesに次のように出力されます。

sshd[18468]: Accepted keyboard-interactive/pam for root from 134.64.66.666 port 49867 ssh2

したがって、メッセージを次のようにgrepするだけです。

grep -E "Accepted keyboard-interactive/pam for" /var/log/messages

0

また、bashシェルを変更してrsylogを実行することもできます。

事実上、リモートホストでrsyslogをセットアップして、特定の接続を受け入れます。次に、監視するホストシェルを変更します。バージョンをコンパイルし、次のものを有効にしてください。

vi config-top.h
#define SYSLOG_HISTORY
#if defined (SYSLOG_HISTORY)
#  define SYSLOG_FACILITY LOG_USER
#  define SYSLOG_LEVEL LOG_INFO
#endif

これを有効にしてコンパイルしたら、bashをこのバージョンに置き換えるか、ログインをリダイレクトしてユーザーをログインさせることができます。

詳細については:

https://www.pacificsimplicity.ca/blog/remote-logging-using-syslog-and-logging-shell-commands-remotely


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