Synology NASでSSLH OpenVPN + nginx + SSH

3ssl

この記事はこちらを参考にしています。

Link Installing SSLH onto Synology DSM6 for easy HTTPS, OpenVPN and SSH through corporate firewallMake your home smarter

複数のサービスを443番ポートで

環境によってSSHの22番ポートや、OpenVPNのポートの1194番ポートが使えない場合は443番ポートを使うことがあります。

HTTP(80)、HTTPS(443)以外ダメ!ということで許可されないときでも、443番ポートにすれば通信できるケースが多いためです。

しかし、OpenVPNサーバーをHTTPSポートである443を使おうとするとWebサーバーで利用している443ポートとバッティングしてしまうので本来は両立できません

443ポートを同時に利用不可
HTTPS443
SSH443 (デフォルト22)
OpenVPN443 (デフォルト1194)

SSLHサービスを使うことで、(HTTPS、OpenVPN、SSH)を同時に利用できるようになります。あまり使う機会のないものだと思いますが、いざというときに役に立つかもしれません。セキュリティリスクについては各自の判断でお願いします。

今回、比較的設定のしやすいNASでSSLHを導入してみました。

実行環境
Synology NAS DS216+Ⅱ DSM6.2

Synology コミュニティパッケージを追加

NASにログイン後「パッケージセンター」を開きます。

右上の「設定」を選択して、「パッケージソース」タブを見ます。

「追加」を選んで

名前」:SynoCommunity

場所」:http://packages.synocommunity.com/

を入力してください。自動的に証明書も追加されます。

sslh をインストール

パッケージセンターの左下に、「コミュニティ」が追加されました。

この中から「sslh」を探してインストールしてください。

インストール後、「実行」で動作するか確認してください。

設定項目はありません。

nginx 設定変更

Synology NASの標準 Webサーバーのnginxの設定を変更します。

DSM.mustache    WWWService.mustache    server.mustache

の3つのファイルを編集します。

設定ファイル編集にあたっては必ずバックアップを取ってください。
また、DSMのバージョンによっては動作しない場合があります。

SSHでNASにログインしてください。

nginxのディレクトリへ移動

SSH
sudo -i
cd /usr/syno/share/

ディレクトリごとバックアップ

SSH
cp -a nginx org_nginx
cd /usr/syno/share/nginx

 

3つのファイルを編集

listen 443 を
listen 127.0.0.1:443 に変更します。

vim DSM.mustache

77行目

​ listen 443 ssl{{#spdy}} http2{{/spdy}}{{#reuseport}} reusepo

​ listen 127.0.0.1:443 ssl{{#spdy}} http2{{/spdy}}{{#reuseport}} reusepo

vim WWWService.mustache

15行目

​ listen 443 default_server ssl{{#reuseport}} reuseport{{/reus

​ listen 127.0.0.1:443 default_server ssl{{#reuseport}} reuseport{{/reus

vim server.mustache

117行目

​ listen 443 ssl{{#https.http2}} http2{{/https.http2}}{{#reuse

​ listen 127.0.0.1:443 ssl{{#https.http2}} http2{{/https.http2}}{{#reuse

それぞれのファイルを保存した後にnginxを再起動します。

SSH
synoservicecfg --restart nginx

OpenVPN設定

VPN Server」を開きます。まだインストールしていない場合は、パッケージセンターからインストールします。

左のメニューから「OpenVPN」を選び設定を行います。

「OpenVPNサーバーを有効にする」にチェックをして

「ポート」を 1194 に設定してください。443ではありません

その他の設定は任意の値を選んで下さい。

右下の「適用」ボタンを押して設定完了です。

あとは「特権」でVPNを利用するユーザーにチェックするのを忘れないでください。

「.ovpn」ファイルの編集

OpenVPNの設定中の「エクスポート設定」を押すと、「openvpn.zip」というクライアントから接続するための設定ファイルがダウンロードされます。

このzipファイルを展開して、中のファイルを編集します。

VPNConfig.ovpn」ファイルをエディタで開きます。

設定するのは一箇所だけです。

4行目

remote YOURSERVERIP 1194

を以下のように変更してください。

remote xxx.synology.me 443

1「YOURSERVERIP」を自分のドメイン名かIPアドレス

2 「1194」を 443

に変更してください。

その後、保存してファイル名を分かりやすい接続名などにリネームします。
(VPNConfigのままでもOK)

MEMO
全てのトラフィックをVPN経由で接続する場合は

#redirect-gateway def1

redirect-gateway def1

にします。

SSLH 設定ファイルを編集

sslhのディレクトリに移動

cd /usr/local/sslh/var/

同様に設定ファイルをバックアップしてください。

cp sslh.cfg org_sslh.cfg

vim /usr/local/sslh/var/sslh.cfg

 

13行目

​ { host: “0.0.0.0“; port: “30000“; }

これを

「0.0.0.0」をNASのローカルIPアドレス

「port」を 443

に変更します。以下のようにしてください。

​ { host: “192.168.100.20“; port: “443“; }

設定後保存してsslhを再起動します。

SSH
synoservicecfg --restart pkgctl-sslh

パッケージセンターの「sslh」から停止、実行をしてもOKです。

なにか問題がある場合は、実行ができません。

443ポート確認

以下のコマンドで443ポートがListenしているかを確認してください。

SSH
netstat -an | grep 443
tcp 0 0 192.168.100.20:443 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:443 0.0.0.0:* LISTEN
tcp6 0 0 :::443 :::* LISTEN

このようになっていればOKだと思います。

クライアント機器でOpenVPN接続

最後にクライアント機器から接続してみます。

OpenVPNのインストールなどは割愛しますので各自インストールしてください。

参考:OpenVPN プロトコルを用いた VPN Gate への接続方法

インストール後、先ほど「VPNConfig.ovpn (名前は任意)」をOpenVPNクライアントソフトにインポートします。

スマホ (iPhone、Android)にはメールやLINEなどで添付して送るといいと思います。

Mac

iPhone

Portが 443になっています。
このように接続できればOKです。

同時に、Webサーバー (Apache)でSSL接続ができるか
SSH (DSMで22番ポート) に設定して、443番ポートで接続できるか

設定が適切であれば、接続できると思います。

メモ:

OpenVPN設定ファイル

/volume1/@appstore/VPNCenter/etc/openvpn/server.conf

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です