IPSECデーモンStrongSwanの概要

はじめに



ハブにはさまざまなデバイスでIPSECを設定することに関する多くの記事がありますが、Linuxについては比較的少ないので、StrongSwanには表面的には1つの記事しかありません。

レビューでは、次の問題に対処します。





IKEv2のIPSECプロト​​コルと実装機能については、インターネット上の情報を読むことができますが、この記事では考慮しません。 悪魔の説明に関するすべての情報は、strongswan.orgで見つけることができます。 StrongSwanバージョン4.6.4を使用しましたが、説明した構成の観点からは、5番目のバージョンを含む以降のバージョンとの違いはありません。

スタンドのオペレーティングシステムとして、Debian 6.0(2.6.32-5-686)を使用しました

StrongSwanデーモンの概要





StrongSwanは、IKEv1およびIKEv2をサポートするIPSECデーモンです。 現在、これは開発製品です。 StrongSwanのインストールは、ソースまたはリポジトリから実行できます。 ソースからのインストールについては、StrongSwan Webサイトで説明されています。

リポジトリからのインストールは、コマンドに問題なく発生します。
apt-get install strongswan
      
      





デフォルトの構成ファイルは/ etc /ディレクトリに保存され、次の名前が付けられています。



さらに、plutoおよびcharonデーモンが使用する証明書およびCRLファイルを保存するためのソフトウェアのインストール中に、次のディレクトリを含む/etc/ipsec.dディレクトリが作成されます。



/etc/ipsec.secretsファイルには、次の種類のキー(パスワード)が無制限に含まれています。



したがって、すべての認証タイプがサポートされます。

StrongSwan接続を管理するipsecコマンドの主要パラメーター:



ログは/var/log/auth.logおよび/var/log/daemon.logに保存されます。



証明書にリモートアクセスVPNを構成する




証明書の生成


証明書の生成は最も重要な部分であり、最も困難な部分です。それに依存するのは、IPSEC =トンネルの機能です。

証明書はOPENSSLを使用して生成されました。

まず、OPENSSLを構成します。

 nano -w /usr/lib/ssl/openssl.cnf [ CA_default ] dir = /etc/ipsec.d #  ,       certificate = $dir/cacerts/strongswanCert.pem #      CA  private_key = $dir/private/strongswanKey.pem #     CA 
      
      





新しい証明書のディレクトリと、OPENSSLのシリアルを含むファイルを作成します

 cd /etc/ipsec.d mkdir newcerts touch index.txt echo “00” > serial
      
      





CA証明書を生成します。

 openssl req -x509 -days 3650 -newkey rsa:2048 -keyout private/strongswanKey.pem -out cacerts/strongswanCert.pem openssl pkcs12 -export -inkey private/strongswanKey.pem -in certs/strongswanCert.pem -name "host" -certfile cacerts/strongswanCert.pem -caname "strongSwan Root CA" -out CAcert.p12 /*        ( Windows 7)
      
      





サーバーの証明書を生成します。

 openssl req -newkey rsa:1024 -keyout private/serverkey.pem -out reqs/serverreq.pem openssl ca -in reqs/serverreq.pem -days 730 -out certs/servercert.pem -notext
      
      





証明書を生成するとき、openssl.cnfでサーバー証明書のsubjectAltName = IP:<external_IP>パラメーターを設定する必要があります

クライアントの証明書を生成します。

 openssl req -newkey rsa:1024 -keyout private/hostKey.pem -out reqs/hostReq.pem openssl ca -in reqs/hostReq.pem -days 730 -out certs/hostCert.pem -notext openssl pkcs12 -export -inkey private/hostKey.pem -in certs/hostCert.pem -name "host" -certfile cacerts/strongswanCert.pem -caname "strongSwan Root CA" -out host.p12 /*          CA 
      
      







StrongSwanのセットアップ


strongswan.confファイル

 charon { load = curl test-vectors aes des sha1 sha2 md5 pem pkcs1 gmp random x509 revocation hmac xcbc cmac ctr ccm gcm stroke kernel-netlink socket-default updown eap-identity }
      
      





主な構成ファイルはetc / ipsec.confおよびipsec.secretsです。

ipsec.confから始めましょう

 config setup /      strictpolicy=no charonstart=yes plutostart=no / ..    IKEv1 charondebug="ike 2, knl 3, cfg 0" conn %default /     IPSEC- ikelifetime=60m keylife=20m rekeymargin=3m keyingtries=1 dpdaction=restart dpdelay=30s dpdtimeout=180s conn rw /  IPSEC- left=<external_IP> /    leftsubnet=<subnet/prefix> / ,      leftid=<external_IP> leftcert=/etc/ipsec.d/certs/servercert.pem /       IKE SA leftauth=pubkey / ,         RSA right=%any /       IP rightauth=pubkey /       RSA rightsourceip=<subnet/prefix> /      IP-   auto=add /     keyexhcnage=ikev2 type=tunnel
      
      





Ipsec.secretsファイル

 : RSA /etc/ipsec.d/private/serverkey.pem "password"
      
      





このファイルのディレクティブの詳細については、 リンクをご覧ください



Win7のIPSEC 接続を構成し、 証明書をインポートします



その後、クライアントに接続し、ipsec statusallコマンドを使用してログを表示することで接続ステータスを確認できます。まあ、VPN接続はWindowsで正常に接続され、pingが実行されます。



おわりに



私の記事では、StrongSwanデーモンの概要を説明し、クライアントを接続するための証明書でIPSEC IKEv2を構成する例を示しました(Windows 7)。 StrongSwanにはAndroid用の独自のクライアントもあり、指定された設定でも動作します。主なことは、そのための証明書を作成することです。 私が提案した構成からわかるように、strongswan自体がその例で提供している構成とは多少異なり、証明書の生成に多くの注意が払われています。

さらに、サイト間IPSECとリモートアクセスは、認証プロトコルMSCHAPv2-EAP、およびL2TP over IPSEC(IKEv1)を使用して正常に機能します。必要に応じて、それらの構成方法を説明します。



All Articles