#author("2023-11-05T13:54:31+00:00","default:sysosa","sysosa") #author("2023-11-05T13:55:25+00:00","default:sysosa","sysosa") 先方に穴を掘って頂き、その穴を使って相手方にアクセスする. まだあんまり分かっていなのだが...大抵はfirewallで守られている組織のネットワーク. 外部から内部に入るには vpn とか組織が用意した経路を使って中の特定のマシンにアクセスします(ポリシーで定められているでしょう) っで、Teamviewer/AnyDeskもそうですが、外部に内と外との仲立ちをしてくれるものがあって複雑なことをされて内部に入れるツールがまぁーある. (使えるかはその組織のポリシーですよ) 今回のreverse ssh tunnelingを使うと、まぁーTeamviewer/AnyDeskのように外部から内部にアクセスできるそうな. 手順は -内部から中継してくれる組織外のマシンにsshを張る(reverse ssh tunneling). -そうすると中継のマシンを介して組織内のPCに入れる. ってな感じ. &ref(2023y11m05d_225109071.png,nolink,noborder); ここではreverse ssh tunnelingを使ってどうゆう風にして外部から内部に入れるかを示す まずは、組織内のマシンから中継のマシンにパスフレーズなしでのssh接続できるように設定します. まぁー公開鍵の配布ですね. |BGCOLOR(YELLOW):場所|BGCOLOR(YELLOW):ホスト名|BGCOLOR(YELLOW):役目| |組織内のマシン|centos7|「reverse ssh tunneling」を中継マシンに張る| |組織外のマシン|rockylinux9|中継マシン| |組織外のPC|cc|組織外から中継マシンを経て内部に入る| ***組織内のマシン [#te0f5700] #code(nonumber){{ [saber@centos7 ~]$ ssh-keygen -t ed25519 [saber@centos7 ~]$ ls -la .ssh/ total 8 drwx------. 2 saber saber 46 Nov 5 12:50 . drwx------. 3 saber saber 95 Nov 5 12:50 .. -rw-------. 1 saber saber 399 Nov 5 12:50 id_ed25519 -rw-r--r--. 1 saber saber 95 Nov 5 12:50 id_ed25519.pub [saber@centos7 ~]$ cat ,ss/id_ed25519.pub ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN/OGTsKP6kV/ZEVyWzIQOi3FbXDWhO+OvuQDebWm9V+ saber@centos7 [saber@centos7 ~]$ }} この「.ssh/id_ed25519.pub」の内容を「中継マシン」に組み込む ***中継マシン [#fdd6a918] 「組織内のマシン」で作った公開鍵(id_ed25519.pub)の中身を「中継マシン」の「~/.ssh/authorized_keys」に書き込む #code(nonumber){{ [saber@ik1-yyy-xxxxx ~]$ mkdir .ssh [saber@ik1-yyy-xxxxx ~]$ echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN/OGTsKP6kV/ZEVyWzIQOi3FbXDWhO+OvuQDebWm9V+ saber@centos7" >> ~/.ssh/authorized_keys [saber@ik1-yyy-xxxxx ~]$ [saber@ik1-yyy-xxxxx ~]$ chmod 700 .ssh [saber@ik1-yyy-xxxxx ~]$ chmod 600 .ssh/authorized_keys }} っで「組織内のマシン」---ssh---> 「中継マシン」へのパスワードなしssh接続が出来るかを確認します. #code(nonumber){{ [saber@centos7 ~]$ ssh -i .ssh/id_ed25519 saber@ik1-yyy-xxxxx.vs.sakura.ne.jp : : SAKURA internet [Virtual Private Server SERVICE] Last login: Sun Nov 5 13:02:17 2023 from xxx.xxx.xxx.xxx [saber@ik1-yyy-xxxxx ~]$ }} っと行けた. 中継マシンにはbashなアカウントなら「TMOUT=0」を入れて勝手にセッションが切れないようにした方がいいかも. #code(nonumber){{ [saber@ik1-yyy-xxxxx ~]$ echo "export TMOUT=0" >> ~/.bashrc [saber@ik1-yyy-xxxxx ~]$ exit logout Connection to ik1-yyy-xxxxx.vs.sakura.ne.jp closed. [saber@centos7 ~]$ [saber@centos7 ~]$ ssh -i .ssh/id_ed25519 saber@ik1-yyy-xxxxx.vs.sakura.ne.jp [saber@ik1-yyy-xxxxx ~]$ echo $TMOUT 0 [saber@ik1-yyy-xxxxx ~]$ }} ***reverse ssh tunnelingを張る [#g326244d] 「組織内のマシン」から「中継マシン」に「reverse ssh tunneling」を張る. ここでは「中継マシン」に「reverse ssh tunneling」で「2222/tcp」を開けるようにします. 「中継マシン」の「2222/tcp」が「組織内のマシン」の「22/tcp」に繋がる感じ. #code(nonumber){{ [saber@centos7 ~]$ ssh -N -R 2222:localhost:22 -i .ssh/id_ed25519 saber@ik1-yyy-xxxxx.vs.sakura.ne.jp : : }} 「-N」は接続した後は何もコマンドを実行しない. 「-fN」とするとバックグランドジョブとなってプロンプトが戻ってきます. バックグランドでは相手方にログインした状態にはなってます. 「-R」は「reverse ssh tunneling」を張って相手先(「中継マシン」)の2222ポートをlocalhost(「組織内のマシン」)の22に繋げている. 要方向留意 「-i」は秘密鍵のありか. っでこれを行って「本当に有効なの?」って思うのだが、その場合は別ターミナルで中継マシンに入ってroot権限で「lsof -i」を実行すればよかろう. ***組織外のPC [#a48aa875] っで最後に組織外のPCからアクセス. 組織外のPCってまぁ出先のカフェエリアとかとかから. まずは、公開鍵を作ってそれを「中継マシン」「組織内のマシン」に加えておく #code(nonumber){{ [saber@cc ~]$ ssh-keygen -t ed25519 [saber@cc ~]$ ls -la .ssh/ total 8 drwx------. 2 saber saber 46 Nov 5 22:25 . drwx------. 3 saber saber 74 Nov 5 22:25 .. -rw-------. 1 saber saber 399 Nov 5 22:25 id_ed25519 -rw-r--r--. 1 saber saber 90 Nov 5 22:25 id_ed25519.pub [saber@cc ~]$ [saber@cc ~]$ cat .ssh/id_ed25519.pub ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICTPxQL3+D3TiEFMFFn+BCOSX7Jr81QO55loLKu2PjEg saber@cc [saber@cc ~]$ }} 「中継マシン」 #code(nonumber){{ [saber@ik1-yyy-xxxxx ~]$ echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICTPxQL3+D3TiEFMFFn+BCOSX7Jr81QO55loLKu2PjEg saber@cc" >> .ssh/authorized_keys [saber@ik1-yyy-xxxxx ~]$ cat .ssh/authorized_keys ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN/OGTsKP6kV/ZEVyWzIQOi3FbXDWhO+OvuQDebWm9V+ saber@centos7 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICTPxQL3+D3TiEFMFFn+BCOSX7Jr81QO55loLKu2PjEg saber@cc [saber@ik1-yyy-xxxxx ~]$ }} 「組織内のマシン」 #code(nonumber){{ [saber@centos7 ~]$ echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICTPxQL3+D3TiEFMFFn+BCOSX7Jr81QO55loLKu2PjEg saber@cc" >> .ssh/authorized_keys [saber@centos7 ~]$ chmod 600 .ssh/authorized_keys [saber@centos7 ~]$ cat .ssh/authorized_keys ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICTPxQL3+D3TiEFMFFn+BCOSX7Jr81QO55loLKu2PjEg saber@cc [saber@centos7 ~]$ }} っと準備を完了させていざアクセス #code(nonumber){{ [saber@cc ~]$ ip a (略 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:54:00:8a:0a:f4 brd ff:ff:ff:ff:ff:ff inet 192.168.10.10/24 brd 192.168.10.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever [saber@cc ~]$ [saber@cc ~]$ ssh -i .ssh/id_ed25519 -J ik1-yyy-xxxxx.vs.sakura.ne.jp -l saber localhost -p 2222 : [saber@centos7 ~]$ hostname centos7 [saber@centos7 ~]$ ip a (略 2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:f6:a0:09 brd ff:ff:ff:ff:ff:ff inet 192.168.0.107/24 brd 192.168.0.255 scope global noprefixroute dynamic ens192 valid_lft 39068sec preferred_lft 39068sec inet6 fe80::1acb:fbfe:aadd:c51d/64 scope link noprefixroute valid_lft forever preferred_lft forever [saber@centos7 ~]$ }} ***めも [#l6e698d4] fail2banを入れているならignoreipを定義した方がいい. 繰り返しますが、組織のポリシーに従ってください. 闇で掘るのやめましょう. &size(10){Teamviewer/Anydeskもそうですが}; 途中途切れることがあったが、TMOUT=0を入れたら大丈夫っぽい.