主に暗号化の面で。
OpenVPN > 2.4
man→ https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
GCMがサポートされた。ECDHもサポートされた。
ので、以下がとりあえず2.4系の最強設定。2.3系のクライアントはつなげないかも。
cipher
のかわりにncp-ciphers
をつかいましょう。
cipher AES-256-GCM
ncp-ciphers AES-256-GCM
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384
reneg-sec 60
; compress lz4
compress lz4-v2
おまけとしてlz4対応も!comp-lzo
はもう古い。
ログがこのようになっていればPFS対応です。(ECDHEのEがついている)
Control Channel: TLSv1.2, cipher TLSv1/SSLv3 ECDHE-RSA-AES256-GCM-SHA384, 2048 bit RSA
おまけ
- cipher や ncp-ciphers は
openvpn --show-ciphers
で出てくる中から選べます - tls-cipher は
openvpn --show-tls
コマンドの実行結果中から選べます - 楕円曲線の曲線の種類を選びたいなら
openvpn --show-curves
から選んでecdh-curve
に設定しましょう
OpenVPN < 2.3
TLSバージョンと暗号化アルゴリズムを強化
https://gist.github.com/pwnsdx/8fc14ee1e9f561a0a5b8#file-openvpn-conf
ここでは、以下のような設定が推奨されている。
こちらは、サーバ側に書く。
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384
reneg-sec 60
以下はクライアントとサーバーに書く。
cipher AES-256-CBC
auth SHA512
- 参考にしたURLに記載されていた以下の行は、試しても接続ができなかった。ECDHは未対応か?
;tls-cipher TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384
全バージョン共通
TLS Auth (Static PSK)
https://community.openvpn.net/openvpn/wiki/Hardening
また公式ドキュメントでは、tls authを使うことが推奨されている。これは事前共有の全クライアント・サーバーの共通鍵で、DoSなどにより強くなる。