方法:LinuxでAladdin eTokenを使用してCisco VPNに接続する(Ubuntu)

最近、自宅のコンピューターをWindowsからLinuxに移行することにしました。 つまり、そのようなアイデアはしばらくの間さまよっていました.Windows 10の自発的な強制インストールに対する闘争の前線からのニュースと、XPの後の「7」の差し迫った陳腐化に関する反省に支えられましたが、ビジネスを開始する理由は次のUbuntu LTSリリースのリリースでした。 この場合、この移行の主な動機は、単純な好奇心です。ホームコンピューターは主にエンターテイメントに使用されますが、新しいOSの知識はエンターテイメントに劣りません。 さらに、エンターテインメントは、視野を広げるという点で有用だと思われます。 Canonicalのディストリビューションは、最も人気のあるものとして選ばれただけです。これは、このシステムを初めて知ったときに非常に役立つと思います。



Ubuntuが猫や映画に非常に適していると自分の経験から確信しました。 ただし、Windowsから拒否するためにコンピューターはリモート作業にも使用されるため、eToken認証を使用して設定されたCisco VPNへの接続では不十分でした。



プログラムセット



接続するには、少なくともトークンドライバーとVPNクライアントが必要であることは明らかでした。 ネット上で検索した結果、次のリストがあります。



  1. OpenConnectは、Cisco AnyConnectサーバーと互換性のある「完全にランダムな」VPNクライアントです。
  2. GnuTLSは、TLSおよびSSLプロトコルの無料実装です。 重要なのは、このライブラリにはスマートカードを操作するためのp11toolユーティリティが含まれていることです。
  3. SafeNet認証クライアント-eToken電子キーを操作するためのドライバーと追加ユーティリティのセット


OpenConnect接続には、p11toolユーティリティを使用して見つけることができるクライアント証明書URLが必要であり、両方のプログラムがスマートカードを操作するためのドライバーを必要とするため、このドライバーをインストールすることから始めます。



eTokenクライアントのインストール



Ubuntu 12.04でのeTokenのセットアップに関する記事で合理的に指摘されているように、SafeNet認証クライアントへのリンクはほとんど秘密です。 しかし、同時に、インターネット上で、タンバリンと14.04の早い時期に、そしてSafeNetブラジル支店のどこかにあるディストリビューションへのライブリンクを使用した同様のダンスに関する最新のメモがありました。 さらに興味深いのは、同じサーバー上にクライアントの現在のバージョンのファイルがあります-9.1、それは古いライブラリを必要としません。 クライアントを獲得する正しい方法は、もちろん、主要なサプライヤーに連絡することです。



現在、SafenetAuthenticationClient-9.1.7-0_amd64.debパッケージ(または32ビットシステムの場合はSafenetAuthenticationClient-9.1.7-0_i386.debパッケージ)は、ファイルマネージャーでダブルクリックすることで基本的に配置されます。 しかし、この資料の作業の開始中、Ubuntuソフトウェアのバグ修正されませんでした。そのため、サードパーティパッケージのインストールは機能しませんでした。 したがって書かれた



コンソールからクライアントをダウンロードしてインストールする手順
wget --user-agent="Mozilla" http://www.proteq.com.br/download/sac/sac9.1_linux.zip #  user-agent     unzip sac9.1_linux.zip -d sac #   ,     mkdir sacmnt #  ,    iso sudo mount -o loop sac/SAC_9_1_Linux.iso sacmnt # sudo -     # mount -o loop      sudo dpkg -i sacmnt/Installation/Standard/DEB/SafenetAuthenticationClient-9.1.7-0_amd64.deb #   sudo apt install --fix-broken #    # sudo umount ./sacmnt #  rm -d sacmnt #    rm -r sac #  ,  
      
      







インストールが正常に完了すると、SafeNet Authentication Client Toolsアプリケーションが[アプリケーション]メニューに表示されます。



GnuTLSをインストールして構成する



言及された記事の最初の記事は、全体として非常に有用でしたが、ある行については著者に特に感謝しています。 ここにあります:

pkcs11-tool --module /usr/lib64/libeTPkcs11.so -L



事実、特定の瞬間に完全に行き詰まり、ネイティブクライアントからのトークンが表示される理由を理解できず、p11toolを介してではありません。 そして、ここからドライバー自身がどこにいるのかがわかりました。 ドライバーへのパスを把握し、 指示に従ってGnuTLSをインストールおよび構成します。



 sudo apt install gnutls-bin sudo mkdir /etc/pkcs11 sudo mkdir /etc/pkcs11/modules echo 'module: /usr/lib/libeTPkcs11.so' > eToken.module #       eToken.module sudo mv eToken.module /etc/pkcs11/modules #    ,    GnuTLS
      
      





これで、GnuTLSを使用するすべてのアプリケーションがトークンを操作できるようになります。 また、p11toolユーティリティを使用して、証明書のURLを確認できます。



トークンデータの読み取り



次のコマンドを使用して、トークンで使用可能な証明書を一覧表示できます。



 p11tool --login --list-certs 'pkcs11:model=eToken'
      
      





p11toolの出力は次のようになります。



オブジェクト0:

URL:pkcs11:model = eToken; manufacturer = SafeNet%2c%20Inc .; Serial = 99999999; token = Username; id =%XX%XX; object =%7bXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX%7d;タイプ= cert

タイプ:X.509証明書

ラベル:{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}

ID:XX:XX

オブジェクト1:...



複数の証明書が存在する場合があり、接続には特定の証明書が1つ必要です。 OpenConnectのp11toolの指示では、誰もがこれを試すことを推奨ています。 証明書とそのURLを比較するために、各証明書のURLとテキストデータの両方を表示する小さなスクリプトを作成しました。



 sudo apt install openssl # -   p11tool --login --list-certs 'pkcs11:model=eToken' | grep -P pkcs11.+id.* -o | while read -r line; do p11tool --info "$line"; p11tool --export "$line" | openssl x509 -text; done
      
      





ここで、オブジェクトp11tool --infoのURLをループするループで、プレゼンテーション内の証明書データを表示し、p11tool --exportは、pemファイル形式の証明書をテキスト表現を表示するopenssl入力に転送します。 OpenConnectに転送するには、クライアント認証行が見つかったものが必要です。URLを覚えておいてください。 さらに、サーバーが自己署名証明書を使用する場合、フラグCKA_CERTIFICATE_CATEGORY = CAを持つオブジェクトのURLも記憶します。



証明機関の証明書をファイルにエクスポートします(URL全体はオプションです-オブジェクトを一意に識別する場合のみ):



 p11tool --export 'pkcs11:model=eToken;...' > CA.pem #  URL   
      
      





最後にOpenConnect



インストール:



 sudo apt install openconnect
      
      





接続する引数の最小セットは、次のコマンドで指定されます。



 sudo openconnect --certificate 'pkcs11:model=eToken;id=%XX%XX' your.vpn.server.com #  %XX%XX -   id  
      
      





サーバーが自己署名証明書を使用している場合、このフォームで起動すると、OpenConnectはサーバーを信頼するかどうかを指定し、さらにターミナルウィンドウが表示されます。 したがって、コマンドを少し拡張します。



 sudo openconnect --certificate 'pkcs11:model=eToken;id=%XX%XX' --cafile=CA.pem --background --pid-file=connect.pid your.vpn.server.com > connect.log # UPD:     certificate
      
      





cafileを使用して、証明機関の証明書を指定しました-これで、サーバーの信頼に関する質問はありません。 バックグラウンドオプションはそれ自体を意味し、pid-fileを使用すると、バックグラウンドプロセスの識別子が保存されているファイルの名前を指定できます。 さらに、トークンのパスワードは、pin-value属性を使用してURLで直接指定できます。 しかし、これは多少安全ではありません。



次のコマンドを使用して、バックグラウンドプロセスを正しく停止します。



 sudo kill --signal SIGINT $(< connect.pid) # $() -  , .. kill   stdin
      
      





SIGINTによると、OpenConnectは接続を正しく終了します。接続を「ハード」に切断すると、次の接続中に問題が発生する可能性があります。 持っていませんでしたが



あとがき



問題は解決しました。リモートアクセスにRemminaを喜んで使用します。vpnに接続したらすぐに起動し、OpenConnectスタートアップスクリプトにコマンドを追加します。



 cd ~ remmina --connect=./.remmina/myconnection.remmina
      
      





確かに、クリップボードの同期を無効にする必要がありました。それ以外の場合、リモートマシン上の一部のアプリケーションでは機能しません。 「トレイアイコンを無効にする」設定を有効にします。それ以外の場合は、接続するたびに新しいアイコンがトレイに追加されます。 繰り返しますが、Remminaを呼び出す前にホームディレクトリに切り替えることは偶然ではありません。アプリケーションはパス〜/ .remmina / myconnection.remminaを認識せず、ユーザー名でフルパスを設定するのは間違っているようです。



自宅でのLinuxの適用可能性について結論を出すことはしません。今のところ、これで十分です。この記事はHowToと同じように設計されています。



PS:Ubuntuバージョンの最終的な選択は、この問題の解決策の影響を受けました。Ubuntu14.04に含まれる5番目のバージョンでは、OpenConnectバージョンが接続の確立を妨げるエラーを示しました。 そのエラーのないOpenConnectの7番目のバージョンのために、おそらく未加工の16.04を配信しました。



編集:Ubuntu 19.04はlibcryptoのバージョンを更新し、SafeNetのバージョン10に同梱されているドライバーでさえこのライブラリを見つけられません。 シンボリックリンクで保存

sudo ln -s /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 /usr/lib/libcrypto.so



もう一度、使用する資料へのリンク:



ハウツー:LinuxでAladdin eTokenを使用する法人向けインターネットバンキング(Ubuntu)

SafeNet eToken PROをUbuntu 14.04 LTSにインストールします

GnuTLSからp11toolを呼び出す

OpenConnectスマートカード/ PKCS#11のサポート



All Articles