<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=1678611822423757&amp;ev=PageView&amp;noscript=1">

永続的なSSHトンネルのセットアップ

Dan Franciscus| January 22 2020

| security

たとえ SSL で保護されている場合でも、MITM 攻撃(Man-in-the-Middle, 中間者攻撃)を利用して資格情報が盗まれることがあり得ますが、資格情報を盗まれないように保護するために、クライアントとサーバー間の追加の保護層として SSH トンネルを利用することができます。

プロセスの最初のステップは、Windows Web サーバーに SSH トンネルを設定することです。このブログのために使っている環境では、Windows 2012 上で Apache Webサーバーを実行しています。Windows 2012 にはネイティブな SSH サーバーが付属していないので、トンネリングをサポートするには、サードパーティーの SSH サーバーソフトウェアをサーバーにインストールする必要があります。ここでは、OpenSSH を選択しました。

Windows サーバー上に OpenSSH をセットアップ

トンネルを設定するためには、まず、SSH 接続に使用するための専用のユーザーアカウントを作成する必要があります。ここでは、新しいユーザー、トンネルを作成して、管理者グループに追加します。

Net user tunnel password /add

Net localgroup administrators tunnel /add

open ssh 1

open ssh 1open ssh 1次に、OpenSSH をインストールする必要があります。OpenSSH をインストールするには、まず OpenSSH ディレクトリの内容全体をフォルダー C:\Program Files\OpenSSH に、コピーします。下に示すように、フォルダー C:\Program Files\OpenSSH を Windows PATH 環境変数に追加します。open ssh 2

open ssh 2

ファイルがインストールディレクトリにコピーされたら、管理者として PowerShell を開き、C:\Program Files\OpenSSH にブラウズします。./install-sshd.ps1 を実行します。コマンド net start sshd を使用して OpenSSH サービスを開始します。

Runas /user:tunnel powershell

すべてのキーを生成するために、コマンド ./ssh-keygen.exe をタイプします。

最後に、sshd_conf ファイルを少し変更する必要があります。C:\ProgramData\ssh に移動し、notepad.exe sshd_conf を開き、以下に示すように、最後の2行をコメントアウトします。

#Match Group administrators

#AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

次のラインのコメントを外します。

PasswordAuthentication yes

すべての変更が完了したら、以下のコマンドを使用して SSH サービスを再起動します。

Net stop sshd

Net start sshd

open ssh 3

open ssh 3id_rsa.pub という名前の別ファイルが同じディレクトリに作成されます。このファイルは公開キーを保持するファイルです。putty pscp.exe を使用して、id_rsa.pub ファイルを OpenSSH サーバーに SCP します。

OpenSSH サーバーで、id_rsa.pub ファイルを C:\Users\tunnel\.ssh\authorized_keysファイルにコピーします。

最後に、C:\ProgramData\ssh\sshd_conf ファイルを、ユーザー名とパスワードによるログインを禁止するよう変更します。これによって、キーを使用しないとログインできなくなります。

PasswordAuthentication no

SSH を再試行してください。

ssh tunnel@ip

今回はパスワードの入力を求められません。キーが一致しない場合、次のコマンドを使用して sha256 ハッシュ値を取得できます。

ssh-keygen –l –f .ssh/authorized_keys

ポート転送のセットアップ

次のステップは、トンネルのポート転送をテストすることです。この例では、トンネルを経由してポート8007を介してトラフィックを転送します。次のコマンドを実行してください。ip openSSH サーバーの IP アドレスに置き換えてください。-4 は、IPv4 アドレスにのみバインドするようにコマンドを制限するために必要です。

ssh -4 –N -f user@ip -L 8007:ip:8007

再起動時にトンネルを自動的に開始するよう設定

最後のステップは、トンネルを永続的なものにすることです。ブート時に実行するスクリプトを作成します。 

vim /home/tunnel/check_ssh_tunnel.sh

次のスクリプトを作成する必要があります。

createTunnel() {

   #sleep for 60 seconds to allow the networking stack to start before executing at reboot

    sleep 60

 

   #run the port forwarding command as user tunnel

 

    su tunnel –c ‘/usr/bin/ssh -4 -f -N tunnel@192.168.31.5 –L 8007:192.168.31.5:8007’

 

   #check if the tunnel is up and echo Tunnel status

    if [[ $? -eq 0 ]]; then

        echo Tunnel to hostb created successfully

    else

        echo An error occurred creating a tunnel to hostb RC was $?

    fi

}

CreateTunnel

再起動時に実行されるよう、これを crontab に追加しますが、crontab を編集するには、次のコマンドを実行します。

crontab –e

次のラインを追加して、ファイルを保存します。

@reboot /home/tunnel/create_ssh_tunnel.sh

マシンを再起動してテストします。トンネルが実行されていることを確認するには、次のコマンドを実行します。

Ps –aux | grep ssh

トンネル接続が表示されるはずです。以上ですべてです。トンネルのセットアップがうまくいきますように。Whitepaper File Transfer Encryption

Topics: security

Default HTML block

コメントをどうぞ

メールアドレスは公開されません。アスタリスクマーク*のついたフィールドは必須項目です。

THIS POST WAS WRITTEN BY Dan Franciscus

Dan Franciscus is a systems engineer and VMware Certified Professional (VCP) specializing in VMware, PowerShell, and other Microsoft-based technologies. You can reach Dan at his blog (http://www.winsysblog.com/) or Twitter at @dan_franciscus.

無料試用版

無料試用版をお気軽にお試しください。

無料試用版を試す

コンタクト

ご質問、ご意見をお寄せください。

連絡先

ブログの定期メール便

ブログを定期的にメール配信いたします。