SSHポートフォワードをログに記録するにはどうすればよいですか?


8

ポート転送が有効になっているSSHサーバーがあるとします。ユーザーがSSH接続を設定して、BitTorrentトラフィックやその他の違法または不正なトラフィックを転送するのは、非常に簡単です。ユーザーが行うポート転送を記録するようにログを設定するにはどうすればよいですか?


セキュリティの妥当なレベルについては、ユーザーが自分で作成/コンパイルするプログラムを含め、トラフィックを転送するために使用されるシステム上の他のすべてのプログラムで同じレベルのログが利用できることを確認する必要があります。
Alex Holst

2
誰かを信用していない場合は、ほとんどの場合、ネットワークへのアクセスを許可しないほうがよいでしょう。
Zoredache 2010

@Zoredacheでは、答えは誰にもネットワークへのアクセスを許可しないことですか?
rox0r 2013

回答:



2

ここで質問します。SSHホストプロセスは、クライアントによって転送されたポート(-Rではなく-R)どのように検出して、これと同じことを行うよりエレガントな方法を見つけることができますか。

しかし、より良い方法があるように見えないので、私はそれをlsof次のようにしています:

sudo lsof -aPni@127.0.0.1 -Fn -p99999 | grep "^n" | grep -v '\->' | awk -F: '{print $NF}' | sort | uniq

99999は、sshd関心のある接続を処理するPIDです。

このスニペットを使用するにはいくつかの方法があります。の新しいインスタンスを監視sshdし、上記のコマンドを使用してそれらをイントロスペクトする長期実行プロセスがあるか、すべての.ssh/authorized_keysエントリにカスタムコマンドをプレフィックスして、どこかでログに記録し、次にexec元の目的のコマンド(SSH_ORIGINAL_COMMANDまたはほとんどの場合ログインシェル)ケース)。


0

あなたはwiresharkを試すかもしれません。それがあなたの望んでいることを明確に実行するかどうかは正直分かりませんが、それは確かにユーザーがネットワーク上で何をしているのかを決定することができます。Spiceworksも無料のオプションです


0

netstatpsそしていくつかの賢い切り取りと手探り。NetstatはプログラムIDを、psはユーザーを提供できます。

user@myhome:~$ ssh user@some.server -R 12345:other.server:22

一方、コンソールの反対側では

root@some.server# netstat -plnt | grep 12345
tcp        0      0 127.0.0.1:12345         0.0.0.0:*               LISTEN     12998/15            
tcp6       0      0 ::1:12345               :::*                    LISTEN     12998/15 
                                                                                 ^ PID!

もちろん、grepで指定されたポートはわかりません。grepは、出力を制限するためにここにあります。

そして

ps -aux | grep 12998 # the PID
user   12998  0.0  0.1   6624  1920 ?        S    07:57   0:00 sshd: user@pts/15

そして出来上がり!ユーザー「user」がsshdを使用してポート12345をリダイレクトしていることがわかります

これを使用してスクリプトとcronの何か

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