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)を使用して正常に機能します。必要に応じて、それらの構成方法を説明します。

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


All Articles