Unixクライアントとサーバー間のtty / pts sshセッションを比較する


1

クライアントのtty / pts情報とログインおよびログアウトの日付を使用してsshセッションをリストすることは可能ですか?サーバー上の最後のコマンドに相当します。

ユーザーはプロキシsshを使用してサーバーに接続しますが、プロキシサーバーからは汎用アカウントを使用してサーバーに接続します。クライアントとサーバー間でtty / pts idを比較します。サーバーでこのスクリプトを使用して、当日のこの情報を取得します。

#!/bin/bash
today="$(date '+%a %b %e')"
last | awk -v pattern="$today" '$0 ~ pattern && /pts/ {print $0 "#line#"}'
exit 0

ありがとう


この場合のクライアントをよく理解していれば、プロキシサーバーです。そして、あなたはそれにアクセスできます。確認できますか?(その場合、クライアントで同じスクリプトを実行できます)。ところで、クライアントはすべてプロキシ上の同じアカウントにログを記録するので、クライアントのアクティビティを何らかの形で制御したいようです。その場合は、直接お問い合わせください。Ps> SuperUserにようこそ。
ハスター

おかげで、はい私のプロキシは私のクライアントであり、私はそれにアクセスできます。プロキシ(クライアント)で同じスクリプトを実行すると、ユーザーコンピューターからプロキシサーバーへの接続の履歴があります。しかし、私は何かを見逃しているかもしれません。ユーザーのコンピューターからプロキシへは独自のSSHアカウントを使用しますが、プロキシからサーバーへは一般的なアカウント(例:oracle)を使用します。
ニコラス

どういたしまして。繰り返しますが、あなたの本当の(最終的な)質問は何ですか?;)?サーバー上のプログラムへのアクセスを制御する場合は、プログラムに別のユーザーを作成します。不可能な場合は、サーバー上に別のユーザーを作成し、許可されたユーザーにIDを変更するか、そのユーザーとしてそのプログラムを実行することを許可します(聖なる章を 参照sudo)。イメージングするパスでは、2つのリストを一致させるか、sshロギングを有効にして2つのリストを一致させる必要があります。ただし、100%の一意の一致はありません。
ハスター

コンテキストは次のとおりです。私は顧客がDBサーバーへのアクセスを監査するために働いています。データベースアクティビティ監視ソリューションを使用していますが、さらにOSレベルでユーザーをログに記録します。現在、この顧客はsshプロキシを使用して、汎用アカウントでDBサーバーに接続しています。彼らの作業プロセスを変更することはできません。セキュリティの観点からは非常に悪い習慣であることに同意します。私の本当の質問は、クライアント側からのtty / ptsとサーバー側を比較し、タイムスタンプを相関させることです。
ニコラス

あなたは答えを持っています...あなたが好きになるかどうかはわかりませんが、それは答えです:
Hastur

回答:


0

短い言葉で

両方のマシンでsshのログを使用します。生成されたシェルのPIDを提供します。これにより、シェルのPIDをプログラムの実行に接続し、ttyと特定の一致を得ることができます。より詳細な監査を行うには、監査ツールを使用できます。

より多くの言葉で

last

シンプルlastでは、使用されているttyに関連する接続のリストを持つことができます。プロキシマシン(ゲートウェイ、GWと呼び
ます)からの2つのリストと、サーバーからのもう1つのリストを作成できます。このコマンドはデフォルトでユーザー名、pts / tty、IP / hostnameを提供します。ログイン日時、ログアウト日時。フォーマットなどを変更できます。last

次に、期間のオーバーレイを作成し、誰が推測したかを確認する必要があります。

私が見ている問題は、この方法では、可能なすべての一致を提供するツール(スクリプト)を作成し、良い一致を見つけるまでそれらを削除する必要があるということです。それにもかかわらず、奇妙な状況に陥ることがあります。

ケーススタディをしましょう。最初のユーザー、Nicolasと言うと、GWにログオンできます。それから彼はコーヒーを取るか、電話に出ます。一方、2番目のユーザーは、我々はハスターは、GWに-ログインして1その後、より速くましょう番目のサーバーにログインします。この瞬間、二重ログは複雑です。ハスターはコーヒーの必要性を感じ、ニコラスはサーバーにログインします。コーヒーを終了し、プログラムに最初に接続する最初の人は誰ですか?

/var/log/auth(またはsshの他のログファイル)[ 1 ] ..

各システムのログインとログアウトを監視するために使用されるログファイルがあります。caシステムに依存する正しいパスと名前を検索します。と

sudo grep TheUsername /var/log/auth.log

次のような行を取得します

May  1 16:17:43 owl sshd[9024]: Accepted publickey for root from 192.168.0.101 port 37384 ssh2
May  1 16:17:43 owl sshd[9024]: pam_unix(sshd:session): session opened for user root by (uid=0)

適切なログイン時間、さらにはPID([9024])、およびIPがあります。今回は、このファイルのデータをlastttyを知るためのコマンドの1つと一致させるか、プログラム自体を呼び出したシェルのPIDを何らかの方法でプログラム内に記録することができます(システムコールで行うことができます)シェル)。

これらのファイルを操作すると、セッションごとに一意の一致を取得できます。ゲートウェイ上の類似のログファイルには、元のIPとユーザー名があります。

audit tools[ 2 ]、[ 3 ]

実行する権限があり、それが合法である場合、監査ツールを使用して、ホストマシンでシェルの完全なログを実行できます。

参照資料

  • [ 1 ] SSHアクセス試行のロギング
  • [ 2 ]シェル/ ssh / ttyセッションロガー
  • [ 3 ]リモートホストでのBASHシェルセッションロギング
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.