はじめに
ハブにはさまざまなデバイスでIPSECを設定することに関する多くの記事がありますが、Linuxについては比較的少ないので、StrongSwanには表面的には1つの記事しかありません。
レビューでは、次の問題に対処します。
- StrongSwanデーモンの概要。
- 証明書にリモートアクセスVPNを構成します。
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 /ディレクトリに保存され、次の名前が付けられています。
- ipsec.conf-IPSEC接続パラメーターと接続パラメーター全般を定義します。
- ipsec.secrets-証明書と認証キーへのリンクを保存するために使用されます。
- strongswan.conf-暗号化アルゴリズムと追加機能の接続用。
さらに、plutoおよびcharonデーモンが使用する証明書およびCRLファイルを保存するためのソフトウェアのインストール中に、次のディレクトリを含む/etc/ipsec.dディレクトリが作成されます。
- private-RSAおよびECDSA秘密鍵が含まれています。
- certs-X.509およびPGP証明書が含まれます。
- crls-失効した証明書のリストを保存します。
- cacerts-信頼できるCA証明書を保存します。
- ocspcerts-署名されたOCSP証明書が含まれています。
- reqs-PKCS#10形式の証明書要求が含まれています。
/etc/ipsec.secretsファイルには、次の種類のキー(パスワード)が無制限に含まれています。
- RSA。公開鍵証明書のパスワードを決定します。
- 公開鍵証明書のパスワードを決定するECDS。
- 事前共有キーを決定するためのPSK。
- EAPアカウントのEAP
- NTLMアカウントのNTLM
- XAUTHアカウントのXAUTH。
- スマートカードPINのPIN。
したがって、すべての認証タイプがサポートされます。
StrongSwan接続を管理するipsecコマンドの主要パラメーター:
- 開始|再起動|停止;
- ipsec status | statusall-IPSEC接続のステータスを表示します。
- up | down | route | unroute-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)を使用して正常に機能します。必要に応じて、それらの構成方法を説明します。