Rutoken EDSを使用したOpenVPNでの認証

画像

OpenVPNは、VPNを整理するためのクロスプラットフォームで柔軟かつ便利なソリューションです。 OpenVPNに基づいて構築された仮想ネットワークへの入場には、クライアントがログインする必要があります。 OpenVPNでは、これは3つの方法で実行できます。 後者の方法が最も安全です。 このトピックでは、暗号化USBトークンRutoken EDSを使用したOpenVPNでの承認について説明します。 Rutoken EDSは、PINコードによって不正アクセスから確実に保護され、PINコードの入力試行がすべて使い果たされるとブロックされるため、トークンが盗まれても攻撃者はVPNに侵入しません。 さらに、GOSTおよびRSAアルゴリズムはRutoken EDSに実装されたハードウェアであるため、認証はトークンの「オンボード」で実行されます。 これにより、秘密鍵がトークンから離れることはなく、トロイの木馬を使用してコンピューターのRAMから秘密鍵を盗むことはできません。



このトピックでは、テストVPNと、オープンソースXCAアプリケーションに基づく企業CAを展開する方法を示します。 CAを使用して、OpenVPNサーバーのキーと証明書が作成され、クライアントトークンが初期化されます。 次に、ユーザーがRootoken EDSを使用してOpenVPNにログインできるようにOpenVPNクライアントを構成します。





Ubuntu 11.10でOpenVPNサーバーとXCAを上げます。



CAセットアップ



最初に、Rutoken EDSの操作に必要なシステムコンポーネントをインストールします。

XCAをインストールします。

 sudo apt-get install xca
      
      





XCAを実行します。

 sudo xca
      
      





新しいデータベースファイル->新しいデータベースを作成する必要があります。



CAキーを作成します。秘密キー->新しいキー、newcakey、RSA、1024。

CA証明書を作成します。

画像



画像



画像



OpenVPNサーバーキーを作成します。秘密キー->新しいキー、newserver、RSA、1024。

OpenVPNサーバー証明書を作成します。



画像

画像



重要! OpenVPNサーバー証明書には特別な拡張子(extendedKeyUsage-serverAuth)が必要です

画像



CA証明書をca.crtファイルに、サーバーキーをserver.keyファイルに、サーバー証明書をserver.crtファイルにエクスポートして、OpenVPNサーバーにスリップできるようにします(プライベートキー->エクスポート、証明書->エクスポート)。



OpenVPNサーバーの構成



openvpnをインストールします。

 sudo apt-get install openvpn
      
      





パラメーターDXを使用してファイルを作成します。

  openssl dhparam -out dh1024.pem 1024
      
      





OpenVPNサーバー設定をテストします(注意!サーバー設定はデモンストレーションのみを目的としており、サーバーのベースとして使用しないでください)。

 port 1194 proto tcp dev tap ca /home/vic/Desktop/ca.crt cert /home/vic/Desktop/server.crt key /home/vic/Desktop/server.key dh /home/vic/Desktop/dh1024.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt keepalive 10 120 cipher BF-CBC comp-lzo persist-key persist-tun status openvpn-status.log verb 3
      
      





OpenVPNサーバーを実行する

 sudo openvpn --config /home/vic/Desktop/demo.ovpn
      
      





戦闘構成では、サーバーがデーモンとして起動し、キー/証明書が自宅にないことは明らかです。



クライアントのRootoken EDSの初期化



これで、VPN内のクライアントを認証するためのRootokenデジタル署名の初期化-すべてが何であるかを始めることができます。



XCAがトークンを操作する方法を学習するには、このトークンのPKCS#11ライブラリを提供する必要があります。 Rootoken EDSのRSAサポートを備えたLinux用PKCS#11ライブラリは、 ここからダウンロードできます。



ファイル->オプション

画像



注意! OpenSCユーティリティなどを使用してRootoken EDSをフォーマットした場合、Rutoken EDSを開始する前に、Windowsの[コントロールパネル]-> [Rutokenコントロールパネル]でフォーマットする必要があります。



最初に、PINを変更できます。トークン-> PINの変更。



RSAキーを「オンボード」ルートケンEDSで作成しましょう。

秘密鍵->新しい鍵

画像

Namに、newclientkeyと入力します。 要求に応じて、正しいPINを入力します。



クライアントにOpenVPNにログインし、この証明書をRootoken EDSに書き込むことができる証明書を発行します。



画像



画像



重要! OpenVPNクライアント証明書には特別な拡張子(extendedKeyUsage-clientAuth)が必要です

画像



XCAは、トークンの証明書を保持することを提案します。同意する必要があります。



OpenVPNクライアントの構成



ユーザーワークステーション-Windows 7があります。RutokenEDSは標準のCCIDドライバーを介して動作するため、Windows 7にドライバーをインストールする必要はありません(XPで必要です)。



Windows OpenVPNをインストールし、中断しました。 openvpn.exeは、PKCS#11を介してトークンを接続するメカニズムのサポートなしで、Windowsの下で収集されることがわかります。 しかし、正しいopenvpn.exeが見つかりました。 OpenSCプロジェクトのWebサイトwww.opensc-project.org/downloads/users/alonbl/buildからダウンロードできます。これは、執筆時点で上から3番目のアーカイブです。 アーカイブを解凍し、openvpnインストールフォルダー内のファイルを置き換えます。



クライアント構成:

 client dev tap proto tcp remote xxx.xxx.xxx.xxx 1194 resolv-retry infinite nobind persist-key persist-tun ca c:/Users/vic/Desktop/openvpn/ca.crt pkcs11-providers c:/Users/vic/Desktop/openvpn/rtPKCS11ECP.dll pkcs11-id 'Aktiv\x20Co\x2E/Rutoken\x20ECP/2ab17cca/Rutoken\x20ECP\x20\x3Cno\x20label\x3E/2C84962D1AF5792A' pkcs11-pin-cache 300 comp-lzo verb 3
      
      







pkcs11-providersパラメーターで、PKCS#11ライブラリーRutoken EDSへのパスを指定します(RSAサポート付きのWindows用ライブラリーはダウンロード可能です )。



pkcs11-idパラメーターでは、キーとユーザー証明書がRutoken EDSに保存されているコンテナーIDの値を指定する必要があります。 このIDは、次のコマンドを使用して取得できます。

 openvpn --show-pkcs11-ids [   PKCS#11  ]
      
      





トークンの初期化中にこれを行う方が便利です。ユーザーには、既成の構成、CA証明書、トークン、およびトークンPINを提供する必要があります。



VPN接続を確立します。 これを行うには、Rootoken EDSを接続し、コマンドラインで管理者権限で実行ます。

 openvpn --config [   ]
      
      





リクエストに応じてPINを入力します。



接続が確立された後、仮想ネットワークの10.8.0.1でサーバーにpingを実行できました。



All Articles