リバースSSHトンネルからソースIPを取得する

リバースSSHトンネルからソースIPを取得する

クライアントを使用してSSHを介してリバーストンネルを作成し、-Rnetstatを実行すると、サーバーに次の出力が表示されます。

default@debian:~$ sudo netstat -pln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      801/sshd
tcp        0      0 127.0.0.1:39963         0.0.0.0:*               LISTEN      1074/sshd: anonymou
tcp6       0      0 :::22                   :::*                    LISTEN      801/sshd
udp        0      0 0.0.0.0:68              0.0.0.0:*                           451/dhclient

ポートでリスニングソケットを作成したクライアントのIPが何であるかを知りたいです39963

バインディングのIP:PORTだけでなく、トンネルを生成したクライアントのIPも取得するには、どのコマンドを実行できますか?

ベストアンサー1

コマンドを発行することはできませんが、クライアントを見つけるためのいくつかのコマンドがあります。問題は、OpenSSHがプロセスを生成する方法にあります。リスニングソケットを所有するプロセスは、39963SSH接続を所有するプロセスの子です。したがって、異なるPIDを持つことになります。あなたの例では、親プロセスを見つける必要があります1074。以下は、UbuntuのOpenSSHサーバーに適用されます。 すべてのディストリビューションが同じように機能することを保証することはできません。

まず、クライアント接続のPIDを見つけます。grepフィルタリングされた出力に使用されますnetstat

$ sudo netstat -ptln | grep 39963
tcp        0      0 127.0.0.1:39963         0.0.0.0:*               LISTEN      21921/sshd: philip@
tcp6       0      0 ::1:39963               :::*                    LISTEN      21921/sshd: philip@

ここで監視プロセスは次のとおりです21921。親が必要です。

$ ps -ef | grep 21921
philip   21921 21919  0 11:01 ?        00:00:00 sshd: philip@pts/1
philip   21924 21921  0 11:01 pts/1    00:00:00 -bash
philip   22844 20309  0 11:15 pts/0    00:00:00 grep --color=auto 21921

# Or try this:

$ ps -ef | awk '$2 == 21921 { print $3 }'
21919

ここの親21921はです21919。それでは、クライアントを見つけるためにnetstatをもう一度見てみましょう。

$ sudo netstat -ptn | grep 21919
tcp        0      0 192.168.1.36:22          192.168.1.10:54425   ESTABLISHED 21919/sshd: philip

これはリモートIPです192.168.1.10

おすすめ記事