ポート転送が有効になっているSSHサーバーがあるとします。ユーザーがSSH接続を設定して、BitTorrentトラフィックやその他の違法または不正なトラフィックを転送するのは、非常に簡単です。ユーザーが行うポート転送を記録するようにログを設定するにはどうすればよいですか?
ポート転送が有効になっているSSHサーバーがあるとします。ユーザーがSSH接続を設定して、BitTorrentトラフィックやその他の違法または不正なトラフィックを転送するのは、非常に簡単です。ユーザーが行うポート転送を記録するようにログを設定するにはどうすればよいですか?
回答:
このWebページのパッチ(少し変更されています)http://blog.rootshell.be/2009/03/01/keep-an-eye-on-ssh-forwarding/を使用して、sshポート転送のログを記録しました。
ここで質問します。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
またはほとんどの場合ログインシェル)ケース)。
あなたはwiresharkを試すかもしれません。それがあなたの望んでいることを明確に実行するかどうかは正直分かりませんが、それは確かにユーザーがネットワーク上で何をしているのかを決定することができます。Spiceworksも無料のオプションです
netstat
、ps
そしていくつかの賢い切り取りと手探り。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の何か