StrongSwan。 MSCHAPv2-EAPを使用したリモートアクセスVPN

それはどうなるのでしょうか?



この記事では、LinuxサーバーでStrongSwanデーモンを構成して、IPSEC IKEv2経由でリモートユーザー(リモートアクセスVPN)を接続する方法について説明します。MSCHAPv2-EAPバンドルは、クライアント認証プロトコルとして使用されます。



ソリューションの説明



このリモートアクセスVPNの実装では、EAPプロトコル(RFC 3748)が、クライアントゲートウェイに接続するための認証のためにMicrosoft CHAPバージョン2と組み合わせて使用​​されます。

このプロトコルは、Windows 7アジャイルのVPNクライアントで使用されます。 IPアドレスによるIKEv2の識別に加えて、クライアントはゲートウェイで定義された名前とパスワードによるEAP認証を使用します。

ゲートウェイは、RSA証明書を使用してクライアントで認証します。

下の図のスタンドとソリューションのスキーム。

画像

仮想IPインターフェース-ゲートウェイによってクライアントに割り当てられる仮想アドレス。 StrongSwan構成ファイルで構成可能。

証明書のVPNに関するこのソリューションの主な利点は、各証明書をクライアントにインポートする必要がなく、ログインとパスワードを知っているだけでよいことです。 追加の利点は、IKEv2プロトコル接続を使用してIPSECを確立することです。これには、IKEv1よりもいくつかの利点があります。 グーグルの成功の利点の説明。



証明書の生成



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

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

まず、OPENSSLを構成します。

vi /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証明書を生成します。


CA証明書を作成します。

 openssl req -x509 -days 3650 -newkey rsa:2048 -keyout private/strongswanKey.pem -out cacerts/strongswanCert.pem
      
      





CA証明書をフォームp.12に変換します。これは、Windowsとほとんどのクライアントが理解するため、インポートに問題はありません。

 openssl pkcs12 -export -inkey private/strongswanKey.pem -in certs/strongswanCert.pem -name "host" -certfile cacerts/strongswanCert.pem -caname "strongSwan Root CA" -out CAcert.p12
      
      







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


証明書要求を作成します。

 openssl req -newkey rsa:1024 -keyout private/serverkey.pem -out reqs/serverreq.pem
      
      





以前に作成した要求を使用して、CAに証明書を要求します。

 openssl ca -in reqs/serverreq.pem -days 730 -out certs/servercert.pem -notext
      
      





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



StrongSwanデーモンの構成



StrongSwanのインストールは、リポジトリまたはソースから簡単に実行できます。

/etc/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ファイルで行う必要があります

基本的なパラメーターを定義する構成セットアップセクション:

 config setup strictpolicy=no charonstart=yes plutostart=no charondebug="ike 2, knl 3, cfg 0"
      
      





接続が構成されているconnセクション

 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=eap-mschapv2 rightsendcert=never rightsourceip=<subnet/prefix> /      IP-   auto=add /     keyexhcnage=ikev2 type=tunnel
      
      







また、/ etc / ipsec.secretsファイルで、ゲートウェイ証明書の公開鍵ファイルとEAPユーザーのアカウンティングを指定する必要があります。

 : RSA /etc/ipsec.d/private/serverkey.pem "password" ivan : EAP "pass1" max : EAP "pass2"
      
      







上記の設定は/etc/ipsec.confに保存されます



クライアントのセットアップ



クライアントとして、StrongSwan VPN ClientアプリケーションがインストールされたWindows 7またはAndroid OSを実行するデバイスを使用できます。

クライアントのセットアップは、次の項目で構成されています。

  1. CA証明書をクライアントにインポートする
  2. クライアントのセットアップ
  3. クライアントの起動


Androidの場合、一般に、すべてが同じです。



おわりに



クライアントとサーバーを構成した後、サーバーでStrongSwanを再起動できます。これはipsec restartコマンドで実行され、クライアントとの接続を試行します。 ipsec statusallコマンドが発行されたときにゲートウェイが成功すると、接続ステータスが確立され、クライアントとサーバー間のpingが楽しく実行されます。

クライアントがleftsubnetパラメーターで定義されたサブネットからローカルリソースにアクセスできることを忘れていました。それに応じてルーティングとファイアウォールルール(iptables)を構成する必要があります。

StrongSwanを使用してL2TP over IPSEC(IKEv1)を実装することもできます。これについては後で説明します。



All Articles