Linuxサーバーのリモートユーザーからコマンド履歴を取得する

Linuxサーバーのリモートユーザーからコマンド履歴を取得する

Linux多くのユーザーが経由してアクセスできるサーバー(CentOS)がありますssh。ユーザーからすべての履歴コマンドを受け取る必要があります。

  • 日付:実行時間
  • pwd: 実行可能ディレクトリ
  • リモートホストIP
  • ユーザー
  • 注文する

ベストアンサー1

この質問に対する答えは、あなたが探している情報と多くの情報(Linuxディストリビューション、バージョン、アプリケーション、ユースケース)を提供していないため、非常に複雑です。

この問題を解決するには、少なくとも2つのログセット(それ以上ではない)を組み合わせる必要があり、そのためにカスタムエントリを作成しない限り、システムを毎日、毎週、または毎月監査するために多くの作業が必要です。このように。事後にこの情報を見つける方法を調べるよりも、sudoersファイルに関する問題を解決し、ユーザーを管理および監査する方法を確認する方がよいでしょう。

/var/log/secure (RHEL/CentOS、Debian の場合 /var/log/auth.log、デプロイおよび設定に応じて変更) は、人々が SSH 経由で接続するときと sudo を使用してコマンドを実行するときに表示される必要があります。 IPを見つけて、そこから接続履歴を取得できます。

grep '$USER_NAME' /var/log/secure

次の出力が表示されます(もちろん修正済み)。

Nov  1 22:38:41 $HOSTNAME sshd[26732]: Accepted publickey for $USERNAME from $IP_ADDRESS port 51203 ssh2: RSA $HASH
Nov  1 22:38:41 $HOSTNAME sshd[26732]: pam_unix(sshd:session): session opened for user $USERNAME by (uid=0)
Nov  1 22:38:41 $HOSTNAME systemd-logind[471]: New session 3427 of user $USERNAME.
Nov  1 22:38:41 $HOSTNAME systemd: pam_unix(systemd-user:session): session opened for user $USERNAME by (uid=0)
Nov  1 22:46:37 $HOSTNAME sudo:     $USERNAME : TTY=pts/0 ; PWD=$HOME ; USER=root ; COMMAND=/bin/grep $USERNAME /var/log/auth.log
Nov  1 22:46:37 $HOSTNAME sudo: pam_unix(sudo:session): session opened for user root by $USERNAME(uid=0)

したがって、セキュリティ/認証ログには、IPアドレス、ユーザー名、接続タイムスタンプ、ユーザーが実行したすべての特権コマンド、およびそのタイムスタンプをすでに表示できます。

$USER_NAMEをユーザーのユーザー名に置き換えてこのコマンドを実行すると、タイムスタンプなしでユーザーコマンドの完全な履歴を表示できます。また、誤って対応するディレクトリが表示されます。

su -c "history" $USER_NAME

ユーザーが私にこれを示しました。

500  exit
501  ls
502  cd Archive
503  ls
504  rm -rf *.NOTREAL
505  cd ../

私はこの人(実際にこれの実際の例を得るために私)がSSHに最初に接続したときにコマンド501を実行したことを知っています。なぜなら、それ以前のコマンドはシャットダウンだからです(これはシャットダウンを使用する代わりにタイムアウトが発生するため悪い指標です)。ただし、一度接続すると、Archiveディレクトリに移動し、すべての.NOTREALファイルを削除してから親ディレクトリに移動します。

セキュリティ/認証ログとユーザー履歴で見つけた内容に基づいて、一般的に彼らが何をしたのかを把握できますが、相関は緩いです。ユーザーがsshを介して接続するのと同じ操作を実行し、sudo su -またはsudo -iを実行してすべてをrootとして実行すると、最終的に履歴がマージされるため、これはより困難になります。

これらを監視するには、特権ユーザーアカウント、sudoersファイル、ロギング、およびアプリケーションの設定方法を実際に確認する必要があります。この問題を解決するための非常に基本的な方法を紹介しましたが、最善の方法とは離れており、実際のシナリオでは定期的に使用されていません。

おすすめ記事