SSHトンネルを介したNATの背後にあるコンピューターへのリモートアクセス

NATを経由するというトピックの続きで、NATの背後にあるコンピューターの管理に関する私の記事を簡単に説明します。



実際、これはバックドアの説明であるため、 他人のネットワークに害を及ぼさないようにし、ローカル管理者が操作を認識していることを確認してください。



タスク:LinuxコンピューターをNATの背後のネットワークに配置し、外部からアクセスできるようにする。 たとえば、クライアントで何かのトラブルシューティングまたはサポートを行い、彼のオフィスに座っていないために、リモートアクセスをすばやく構築する必要があります。 または、たとえば、3Gネットワ​​ークでは、クライアントは通常プライベートアドレスを取得し、他の接続がないコンピューターにアクセスする必要があります。







1.グローバルIPアドレスを持つLinuxサーバーが必要です。 最小構成の安価なVPSが最適です。 サービスの新しいDNSレコードを作成し、特定のサーバーからサービスを解放します。 さらに、「callhome.example.net」という名前が例として使用されます。



2.サーバーでキープアライブをアクティブにし、/ etc / ssh / sshd_configでGatewayPortsを有効にします。

ClientAliveInterval 5 ClientAliveCountMax 3 GatewayPorts yes
      
      







3.サーバーでcomehomeユーザーを作成します。

 useradd -r -m -k /dev/null comehome cd /home/comehome/ mkdir .ssh chown comehome:comehome .ssh/ chmod 700 .ssh/
      
      







4.リモートコンピューター-原則として、Linux上の任意のデバイス。 agent01と呼びます。 ルートにまだSSHキーがない場合は、ssh-keygenコマンドを使用してキーペアを作成します。 次に、スクリプト/root/ssh_tunnel.shを作成します。

 #!/bin/sh SSHCMD="ssh -Tq -o ServerAliveInterval=5 \ -o UserKnownHostsFile=/dev/null \ -o StrictHostKeyChecking=no \ comehome@callhome.example.net" while true; do PORT=`$SSHCMD` if test 0${PORT} -gt 0; then $SSHCMD -NC -R "*:${PORT}:127.0.0.1:22" fi sleep 5 done
      
      







元の記事には、トンネルを自動的に開始する/etc/init.dのスクリプトもあります。



5.エージェントがコマンドを実行することを許可せずに、ルート公開キーをagent01でサーバー上の許可されたキーのリストに追加します。 また、エージェントに、使用可能になるポートアドレスを通知します(すべて1行で)。

 cat >>.ssh/authorized_keys <<EOT command="/bin/echo 2101",no-user-rc,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3N/skipped/ root@agent01 EOT
      
      







実際には、それだけです。 テストのためだけに残っています。 トンネルを開始すると、ポート2101のSSH接続はリモートコンピューターのポート22に到達するはずです。



エージェントがubuntu 12.04以降のubuntuの下のラップトップである場合、眠りに落ちることで蓋をグローバルに閉じることを無効にすることはできません(少なくとも最後にテストしたときは成功しませんでした)。



スクリプトのバックアップを忘れないでください。



あなた以外の誰もエージェントにアクセスできないこと、また所有者の座標がエージェントに明確に書かれていることを確認してください。他の誰かのネットワークを危険にさらしたくはありません。



スクリプトでは、ServerAliveIntervalは非常に重要です(切断が発生した場合、クライアントとサーバーの両方が前のトンネルを中断する必要があります)。また、スリープ(サーバーなしの場合、サーバーへのルートがない場合、sshはすぐに戻るため、次の開始前にスローダウンすることをお勧めします) StrictHostKeyCheckingは、callhomeサービスが別のマシンに移動し、エージェントが物理的に届かない場合に無効になります。



All Articles