#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を入れたら大丈夫っぽい.
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS