このように現在ではあまり利用機会の少ないRSHとなるが、ISA社の監視警報装置「警子ちゃん」に鳴動命令を送る際には、いまだにRSHがよく利用されている。
今回、警子ちゃんを鳴動させるためにRSHコマンドで各種テストをする機会があったのだが、その際にRSHの通信が少し変な挙動をすることがわかったため、その調査結果について記載する。
RSH通信の挙動
RSHで接続する側をクライアント、接続される側をサーバーと呼ぶことにする。結論から言うと、RSHはクライアント→サーバーの通信だけでなく、サーバー→クライアントの通信も発生する。この動作が特殊であるため、特にクライアント~サーバー間にファイアウォールが存在する環境では注意が必要となる。
もう少しRSHの接続プロセスを詳細にみていこう。
上記動作をふまえると、接続先と接続元間でファイアウォールが存在する場合は、戻り通信は許可される前提とした場合はであっても、双方向で通信許可ルールを設定する必要がある。
------------------------------
接続元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 件のコメント:
コメントを投稿