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を実行できました。

Source: https://habr.com/ru/post/J137306/


All Articles