Ubuntu 16.04に2.4系の最新なOpenVPNを導入する
先日、UbuntuにOpenVPNを入れてみたが、入っているバージョンはかなり古いもので、なんと2.3.10であった。
# openvpn--versionOpenVPN 2.3.10x86_64-pc-linux-gnu[SSL (OpenSSL)][LZO][EPOLL][PKCS11][MH][IPv6]builtonJun 22 2017
2.4系になると、圧縮アルゴリズムや暗号化アルゴリズムが新しくなっているとのことで、最新版であるOpenVPN 2.4.5のインストールを行う。
リポジトリの登録
OpenVPNの公式サイトが、最新版のOpenVPN用リポジトリを提供している。
次の方法で、これをaptに加える。
$ curl -s https://swupdate.openvpn.net/repos/repo-public.gpg | apt-key add
$ sudo echo"deb http://build.openvpn.net/debian/openvpn/stable xenial main" > /etc/apt/sources.list.d/openvpn-aptrepo.list
その後、apt-get update && apt-get upgradeをすると、openvpnがupgradeされる。
openvpn--versionOpenVPN 2.4.5x86_64-pc-linux-gnu[SSL (OpenSSL)][LZO][LZ4][EPOLL][PKCS11][MH/PKTINFO][AEAD]builtonMar 1 2018
無事、2.4.5になった。
OpenVPNの設定ファイルを変更する
2.3系用に作っていた設定ファイルの一部を変更する。具体的には次の通りだ。
圧縮アルゴリズムの変更
comp-lzoは段階的に廃止され、今後はlz4-v2というものがメジャーになっていくとのこと。
従って、comp-lzoは外してしまい、代わりに以下を記入。
compress lz4-v2
push "compress lz4-v2"
暗号化方式をGCMに変更
OpenVPNは2.4系からGCMに対応した。これを明示的に記載する。
cipher AES-256-GCM
ncp-ciphers AES-256-GCM
TLSバージョンの変更と強度の変更
TLSについても、1.2以上を原則とし、さらにECDHという方式を利用することにする。これによって、非常に強い強度で通信を守ることが出来る。
tls-version-min 1.2tls-cipherTLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384reneg-sec 60
ここまで行ったら、サーバーの再起動をする。
$ sudo service openvpn@server restart
正常に稼働していることを確認しよう。
$sudosystemctlstatusopenvpn@server●openvpn@server.service-OpenVPNconnectiontoserver Loaded:loaded(/lib/systemd/system/openvpn@.service;enabled;vendorpreset:enabled)
クライアント側の.ovpnファイルの変更
サーバー側の変更に伴い、クライアント側の.ovpnファイルも変更する必要がある。
次のような形にした。
client
dev tun
proto udp
remote addr port
remote-cert-tls server
cipher AES-256-GCM
ncp-ciphers AES-256-GCM
auth SHA512
compress lz4-v2
<ca>
-----BEGIN CERTIFICATE-----
</ca><cert>
-----BEGIN CERTIFICATE-----
</cert><key>
-----BEGIN PRIVATE KEY-----
</key>
key-direction 1
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
</tls-auth>
つなげてみる
実際につなげてみると、正直2.3系のときとの違いはさほど分からない(ちょっと早い気もするが、インターネットへのアクセスなので、他の要因に左右されている可能性がたぶんにある)。
しかし、暗号強度が増したことによって、中国からのアクセスはより行いやすくなっているだろう……ということで、Ubuntuに最新版のOpenVPNを入れる話であった。