LoginSignup
3
3

More than 5 years have passed since last update.

openvpn v2.3からv2.4への更新

Last updated at Posted at 2018-03-28

経緯

Amazon Linuxのパッケージアップデート

以前、以下の記事を参考にVPNサーバを構築していた

しばらくこれで動いていたのだが、パッケージを以下のように更新したところVPNクライアントでエラーが出るようになった。

(旧)openvpn-2.3.12-1.16.amzn1.x86_64
(新)openvpn-2.4.4-1.21.amzn1.x86_64

原因はおそらくopenvpn2.4からtls-auth認証を必須とするようになったからです。OpenVPN側のリリースノートの和訳がありました↓

2017/5/11にOpenVPN 2.4.2がリリースされました。

このバージョンはいくつかのバグフィックスに加えて、以下の2つのDOS攻撃対策が行われています。

  • 巨大なサイズのコントロールパケットを送り込むことにより、ASSERT() が発生して OpenVPN プロセスが停止させられる可能性があります(CVE-2017-7478)。対象となるバージョンは OpenVPN 2.3.12以降 です。なお、 --tls-auth か --tls-crypt が設定されている場合、攻撃を成功させるには攻撃側が正しいTLS鍵を>保持している必要があるため、危険性は大幅に低下します。
  • 認証済みクライアントがサーバーのパケットIDカウンタをロールオーバーを引き起こし、ASSERT() が発生して OpenVPN プロセスが停止させられる可能性があります(CVE-2017-7479)。この攻撃を成功させるには、クライアントはサーバーに対して最低でも 196GB のデータを送り付ける必要があります。

設定変更作業

サーバサイドの変更

tls-authの有効化, 暗号化アルゴリズムの設定

  • そもそもtls-authを有効化してないので有効化する
/etc/openvpn/server.conf
- ;tls-auth ta.key 0 # This file is secret
+ tls-auth ta.key 0 # This file is secret
  • サーバサイドで使う暗号化方法を設定
/etc/openvpn/server.conf
- ;cipher AES-256-CBC
+ cipher AES-256-CBC

アップデート時のopenvpn不具合(?)への対応

なぜか更新時にCRL(Certificate Revocation Lists);作成した証明書の失効リストが原因でエラーが出るので、以下のサイトの方法でCRLを再作成します(※サーバサイドを更新しただけでCRLが失効するのはなんかおかしいので、たぶんopenvpnの不具合だと思う…自信なし:sweat:)。

とりあえずここまでで、openvpnを再起動すればサーバサイドの設定は終わりです。

クライアントサイドの変更

サーバサイドで設定したtls-auth用に, vpnux Client - OpenVPN client for Windowsの設定を追加します。

ここに関してはクラスメソッドさんのブログ記事が詳しいため、それを見ていただきたい。OpenVPN 2.4によるVPN接続環境をAWSで構築する, 記事の"クライアント設定", 以降を参照せよ:point_up:

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3