悪霊にさいなまれる世界 -The Demon-Haunted World

30代独身機械系技術者が雑記/セキュリティ/資産運用なんかを書きます/PGP・GPG Key:D1BC 2E2A 76F4 509E 525E 5A3B E409 7C46 4976 EA5A

SoftEtherサーバをOpenVPNサーバとして利用する場合に、使用されるハッシュ関数をSHA-1から変更する方法

TL;DR. "○○_openvpn_remote_access_l3.ovpn"を開いて、"auth SHA1"を"auth SHA256"に書き換えろ

 最近blogを書いてないので小ネタ。私の持ってるRaspberryPiはSoftEther Serverを入れてVPNサーバ化している。初期設定方法は以前書いた記事の下の方に、説明無しで書いてある。

SoftEther VPN プロジェクト - SoftEther VPN プロジェクト

science-as-a-candle-in-the-dark.hatenablog.com

が、スマホで使える専用クライアントソフトがないので、OpenVPNサーバを有効化して、OpenVPNクライアントソフトから繋いでる。OpenVPNサーバを有効にするには、まずSoftEtherサーバ管理マネージャを開き、下の矢印部分をクリックする。

f:id:scienceasacandleinthedark:20180726213820p:plain

そこで①にチェックを入れれば有効化される。一応、ポートはデフォルトから変更しておくと安心だろう(これは諸説あるが割愛)。OpenVPNの設定ファイルは自力で作るのが難しいので、②をクリックさせて自動で生成させることになる。

f:id:scienceasacandleinthedark:20180726213949p:plain

さて、そうすると"OpenVPN_Sample_Config~.zip"なるファイルが母艦PCにダウンロードされる。その中にある"○○_openvpn_remote_access_l3.ovpn"なるファイルが設定ファイルになる。

これをスマホにコピーして、適当なOpenVPNクライアントソフトをインストールし、この設定ファイルをインポートすれば良い。ここら辺も割愛する。問題なく設定が完了すれば繋がるはずだ。が、問題は、この設定ファイル、デフォルトでは暗号化アルゴリズムがAES-128-CBCハッシュ関数SHA-1を使用する設定となる。ログを見てみるとはっきりするだろう。

f:id:scienceasacandleinthedark:20180726215517p:plain

暗号化アルゴリズムと暗号利用モードは基本的にデフォルトのAES-128-CBCで良いだろう。しかしいまどき危殆化したSHA-1を使う理由はない。さっくりと変更してしまうべきだ。(ちなみにSoftEtherサーバ管理マネージャの「暗号化と通信関係の設定」を弄ってもOpenVPNでの設定には影響しない)

先ほど自動生成した"○○_openvpn_remote_access_l3.ovpn"、中身はテキスト形式なので適当なテキストエディタで開く。ざっと眺めていけば繋ぐサーバのアドレスやポートが書いてあることがわかるだろう。ポイントはファイルの中盤付近にある暗号化・認証アルゴリズムの設定だ。下記の文章が見つかるはずである。

###############################################################################
# The encryption and authentication algorithm.
# 
# Default setting is good. Modify it as you prefer.
# When you specify an unsupported algorithm, the error will occur.
# 
# The supported algorithms are as follows:
#  cipher: [NULL-CIPHER] NULL AES-128-CBC AES-192-CBC AES-256-CBC BF-CBC
#          CAST-CBC CAST5-CBC DES-CBC DES-EDE-CBC DES-EDE3-CBC DESX-CBC
#          RC2-40-CBC RC2-64-CBC RC2-CBC CAMELLIA-128-CBC CAMELLIA-192-CBC CAMELLIA-256-CBC
#  auth:   SHA SHA1 SHA256 SHA384 SHA512 MD5 MD4 RMD160

cipher AES-128-CBC
auth SHA1


###############################################################################

この"auth SHA1"を"auth SHA256"に変更して保存する。もちろんSHA384や512でもいい。先ほどと同様にこの設定ファイルをインポートして接続、ログを確認すればSHA-256が使用されていることが分かるはずだ。 

f:id:scienceasacandleinthedark:20180726220315p:plain

思わず暗号化アルゴリズムも国産のCamelliaなどに変更したくなるが、大抵エラーが出るので自重しよう。むしろちゃんと設定できて、エラーが出なければ環境を教えて欲しい。以上である。

 ちなみになぜIPsec/L2TPを使わないのかというと、設定が複雑すぎるために「本当にセキュアな設定に出来ているのか」が自分ではわからないからである。俺には出来らぁ!!と言う方は頑張って欲しい。