OpenVPN&セキュリティ情報
2014-04-10
OpenVPN TLS-Auth とは?
OpenSSLのHeartbeat Extensionの脆弱性がOpenVPNに与える影響についてはTwitterでも取り上げましたが、TLS-Authが有効になっていればこの脆弱性による影響を回避できます。それで、今回はOpenVPNのマニュアルから、TLS-Authオプションに関する部分の日本語訳を掲載します。--tls-auth file [direction]
Dos攻撃対策のため、TLSコントロールチャンネルの最上位にHMAC認証の追加レイヤーを追加します。簡単に言うと、--tls-authはOpenVPNのTCP/UDPポートの「HMACファイアウォール」の一種で、正しくないHMAC署名に基づくTLSコントロールチャネルのパケットが届いた場合は、応答することなく、すぐに破棄します。
file(必須)は以下のいずれかのキーファイルを指定します。
(1) OpenVPNのスタティックキーファイル。--genkey オプションで生成できます(directionパラメータを使用する場合は必須です)。
(2) 任意の形式のパスフレーズファイル。この場合、HMACキーは指定されたファイルのハッシュ(md5sum(1) や sha1sum(1) と同様です)が利用されます。
OpenVPNはまず (1) のスタティックキーが利用できるか試した上で、利用できない場合は (2) を使用します。
オプションの direction パラメータについての詳細は --secret オプションの説明を参照してください。
OpenVPNが任意のアドレスからの接続を受け付ける場合(--remote が指定されていない場合)、また --remote が指定されていても --float が利用されている場合は、--tls-auth を利用することをお勧めします。
この機能の基本的な概念について説明しましょう。TLSでは、通信相手先の認証の前に複数のパケット交換を行う必要があり、認証前のこのタイミングで、OpenVPNはメモリやCPUなどのリソースを確保することになります。通信相手側も送信されるパケットに対してOpenVPN、OpenSSLライブラリの一部を開示することになります。近年成功しているネットワーク経由の攻撃は、プログラム上のバグを見つけて攻撃する(バッファオーバーフロー攻撃など)か、プログラムに大量にリソースを消費させてサービスを提供できなくなるようにする、というものです。もちろん、これらの攻撃に対する最初の防御策は、質の高いプログラムを作成することです。OpenVPNの開発においても、バッファオーバーフロー攻撃対策を最重要事項として開発されています。しかし、事実が示しているように、ネットワーク上で使用されている多くのプログラムがこの脆弱性を持っており、実際に攻撃されています。
そこで2番目の防御策として、OpenVPNではTLSコントロールチャンネルの最上位に認証用の特殊なレイヤーを設け、コントロール上のすべてのパケットをHMAC署名とユニークIDで認証することでリプレイ攻撃対策を行うことができるようにしています。この署名はDoS攻撃に対する対策としても有効です。DoS攻撃の脆弱性を最小限に抑えるには、攻撃可能な立場にあるクライアントのうち、正しく認証されていないクライアントのために割り当てるリソースを最小化することが大切です。
--tls-auth により、TLSコントロールチャンネル上のパケットすべて(TLSレベルでの認証が行われる前のパケットも含む)に対してHMAC署名で署名することができます。その結果、正しい署名が行われていないパケットはすべて破棄されることにより、TLSハンドシェイクの初期化時などに不正なアクセスによってシステムリソースを消費されることを防ぐことができます。--tls-auth オプションに加えて --replay-persist を使用することにより、リプレイ防御状態をファイルに保存し、OpenVPNを再起動したときにもその状態を維持できるようにすることもでき、よりセキュリティを強化できます。
この機能はオプションであり、--tls-auth で指定されたパスフレーズ/キーファイルはピアに対するTLSハンドシェイクの初期化時に使用されるものです。トンネルデータの暗号化や認証には使用されません。
Image courtesy of Stuart Miles / FreeDigitalPhotos.net
登録:
コメントの投稿
(
Atom
)
Profile
- 山崎 太郎 (Taro Yamazaki)
- プラムシステムズ株式会社所属。 主にVPN(OpenVPN)やセキュリティ関連技術、Webアプリケーションを手がけています。
Page Views
Popular Posts
-
「VPNっていろいろあるけど、OpenVPNのメリットって何?」 という疑問は多くの方が持たれますよね。この点は公式サイトなどにもいろいろ書かれているのですが、実際に使ってきたユーザー側としてメリットと思う部分をまとめてみました。
-
現在ダウンロードできるOpenVPNでは、今まで認証局の構築で使用していたeasy-rsaが含まれなくなっています。 OpenVPN.netのダウンロードページ にも Note that easy-rsa is no longer bundled with OpenVPN...
-
Jan Just Keijser氏の記事「 Optimizing performance on gigabit networks 」については こちら でも概要を取り上げましたが、記事全体にいろいろなヒントが含まれていますので、全文の日本語訳を掲載しています。意訳している部分も...
-
OpenVPNでは、接続してきたクライアントのVPNアドレスは動的に割り振られます(その際に割り振られる際のアドレス範囲はOpenVPNサーバー側設定ファイルに基づきます)。特定のVPNクライアントに特定のVPNアドレスを割り振りたい場合、OpenVPNでは以下の2つの方法で設定...
-
では、いよいよiPhone構成ユーティリティでVoDの設定をしてみましょう。あ、 前の記事 での準備はきちんとやっておいてくださいね!
-
前回 は2つのワンタイムパスワードの生成方法について取り上げました。今回はいよいよ実際の生成アルゴリズムを取り上げましょう。TOTPをベースに説明します(ただ、前回も解説したように、基本的なロジックはTOTPとHOTPで同じです)。 参考としてpythonのコードも併記してみま...
-
現時点においてはマニュアルやHowToにも記載されていない(ChangeLogにちょっとだけ出てきます)あまり知られていない機能なのですが、「設定ファイルで鍵ファイルや証明書ファイルのパスを記載する」という通常の方法とは別に、「鍵ファイルや証明書ファイル内のデータをそのまま設定フ...
-
OpenVPNはLinuxをはじめとした幅広いプラットフォームで動作実績があるのが特徴の一つです。 今回は、最近の電子工作ブームでも話題のシングルボードPC 3機種をOpenVPNサーバーとしてセットアップし、OpenVPNのVPNパフォーマンスを測定してみましょう。
-
前回 はワンタイムパスワードの基本的な仕組みについて説明しました。サーバー側とクライアント側で、それぞれ共通のルールに基づいてパスワードを生成させる必要があることを取り上げましたが、今回は OATH が規定しているその生成ルールについて具体的に説明します。 ワンタ...
-
OpenVPNを使用している方ならよくご存知だと思いますが、通常OpenVPNでは証明書認証を使用します。証明書認証はID/パスワード認証に比較すると安全性が高いとされます(もちろん、秘密鍵の管理方法に大きく依存します)が、証明書認証の概念を理解しにくいユーザーが秘密鍵や証明...
© yamata::memo 2013 . Powered by Bootstrap , WebLyb
0 件のコメント :
コメントを投稿