2019年1月13日日曜日

RSHで使用するポート番号を調べてみた

現在ではあまり利用されることもないRSHコマンドというものがある。Remote Shellの略称となるが、近年ではほとんどの場合SSHがリモートログインに利用されることから、OSに標準でインストールすらされなくなっているようだ。

このように現在ではあまり利用機会の少ないRSHとなるが、ISA社の監視警報装置「警子ちゃん」に鳴動命令を送る際には、いまだにRSHがよく利用されている。

今回、警子ちゃんを鳴動させるためにRSHコマンドで各種テストをする機会があったのだが、その際にRSHの通信が少し変な挙動をすることがわかったため、その調査結果について記載する。

RSH通信の挙動

RSHで接続する側をクライアント、接続される側をサーバーと呼ぶことにする。結論から言うと、RSHはクライアント→サーバーの通信だけでなく、サーバー→クライアントの通信も発生する。この動作が特殊であるため、特にクライアント~サーバー間にファイアウォールが存在する環境では注意が必要となる。

もう少しRSHの接続プロセスを詳細にみていこう。

RSHでは最初にクライアントからサーバーに接続するために、サーバー側で514番ポートにて待ち受けを行う。その際に、サーバーがクライアントに接続するためのポート番号を通知する。この折り返し用のポート番号は1023番から順番に設定されるが、1023番が既に利用されている場合は、1022、1021…とポート番号を下げていく仕様となっている。なお、一番最初にクライアントがサーバーへ接続する際に、1023番ポートが使用されるので、通常は1022番ポートが利用される。


上記動作をふまえると、接続先と接続元間でファイアウォールが存在する場合は、戻り通信は許可される前提とした場合はであっても、双方向で通信許可ルールを設定する必要がある

------------------------------
接続元IP   接続先IP   512-1023 514      許可
接続先IP   接続元IP   512-1023 512-1023 許可
------------------------------

このあたりはRed Hat社のKBにも記載がある(要アカウント)。

rsh 接続が使用するポート数を確認する
https://access.redhat.com/ja/solutions/2886641

RSH通信を実際にキャプチャして確かめてみる

上記動作をTCP dumpでキャプチャして確かめてみることにする。見やすくするために、一部記載を省略している。

# tcpdump -i 9 -nn host 192.168.11.114 and host 192.168.11.117
------------------------------
192.168.11.114.1023 > 192.168.11.117.514: Flags [S], seq 3849560126, win 29200, options [mss 1460,sackOK,TS val 1636109665 ecr 0,nop,wscale 7], length 0
192.168.11.117.514 > 192.168.11.114.1023: Flags [S.], seq 3310990677, ack 3849560127, win 28960, options [mss 1460,sackOK,TS val 1383182199 ecr 1636109665,nop,wscale 7], length
192.168.11.114.1023 > 192.168.11.117.514: Flags [.], ack 1, win 229, options [nop,nop,TS val 1636109665 ecr 1383182199], length 0

↑★クライアント→サーバーへの3-WAYハンドシェイク

192.168.11.114.1023 > 192.168.11.117.514: Flags [P.], seq 1:6, ack 1, win 229, options [nop,nop,TS val 1636109665 ecr 1383182199], length 5
192.168.11.117.514 > 192.168.11.114.1023: Flags [.], ack 6, win 227, options [nop,nop,TS val 1383182199 ecr 1636109665], length 0

↑★サーバーへクライアントが待ち受けるポート番号を通知(今回は1022番)

192.168.11.117.1023 > 192.168.11.114.1022: Flags [S], seq 1011651134, win 29200, options [mss 1460,sackOK,TS val 1383182206 ecr 0,nop,wscale 7], length 0
192.168.11.114.1022 > 192.168.11.117.1023: Flags [S.], seq 923859153, ack 1011651135, win 28960, options [mss 1460,sackOK,TS val 1636109671 ecr 1383182206,nop,wscale 7], length
192.168.11.117.1023 > 192.168.11.114.1022: Flags [.], ack 1, win 229, options [nop,nop,TS val 1383182206 ecr 1636109671], length 0

↑★サーバー→クライアントへの3-WAYハンドシェイク

192.168.11.114.1023 > 192.168.11.117.514: Flags [P.], seq 6:19, ack 1, win 229, options [nop,nop,TS val 1636109672 ecr 1383182199], length 13
192.168.11.117.514 > 192.168.11.114.1023: Flags [.], ack 19, win 227, options [nop,nop,TS val 1383182206 ecr 1636109672], length 0
192.168.11.117.514 > 192.168.11.114.1023: Flags [P.], seq 1:2, ack 19, win 227, options [nop,nop,TS val 1383182213 ecr 1636109672], length 1
192.168.11.114.1023 > 192.168.11.117.514: Flags [.], ack 2, win 229, options [nop,nop,TS val 1636109679 ecr 1383182213], length 0
192.168.11.117.514 > 192.168.11.114.1023: Flags [P.], seq 2:172, ack 19, win 227, options [nop,nop,TS val 1383182222 ecr 1636109679], length 170
192.168.11.114.1023 > 192.168.11.117.514: Flags [.], ack 172, win 237, options [nop,nop,TS val 1636109687 ecr 1383182222], length 0

↑★各種通信

192.168.11.117.1023 > 192.168.11.114.1022: Flags [F.], seq 1, ack 1, win 229, options [nop,nop,TS val 1383182222 ecr 1636109671], length 0
192.168.11.114.1022 > 192.168.11.117.1023: Flags [.], ack 2, win 227, options [nop,nop,TS val 1636109688 ecr 1383182222], length 0
192.168.11.114.1022 > 192.168.11.117.1023: Flags [F.], seq 1, ack 2, win 227, options [nop,nop,TS val 1636109693 ecr 1383182222], length 0
192.168.11.117.1023 > 192.168.11.114.1022: Flags [.], ack 2, win 229, options [nop,nop,TS val 1383182228 ecr 1636109693], length 0

↑★TCP通信終了(サーバー→クライアント)

192.168.11.117.514 > 192.168.11.114.1023: Flags [F.], seq 172, ack 19, win 227, options [nop,nop,TS val 1383182227 ecr 1636109687], length 0
192.168.11.114.1023 > 192.168.11.117.514: Flags [F.], seq 19, ack 173, win 237, options [nop,nop,TS val 1636109694 ecr 1383182227], length 0
192.168.11.117.514 > 192.168.11.114.1023: Flags [.], ack 20, win 227, options [nop,nop,TS val 1383182229 ecr 1636109694], length 0

↑★TCP通信終了(クライアント→サーバー)
------------------------------

通信開始の前に、サーバー→クライアントへの3-WAYハンドシェイクが実施されていることがわかる。

0 件のコメント:

コメントを投稿

人気の投稿