Strongswanは、オープンソースのマルチプラットフォームIPSec実装です。これは、強力な認証メカニズムに焦点を当てたIPSecベースのVPNソリューションです。 Strongswanは、IKEv1とIKEv2の両方のキー交換プロトコル、X.509証明書または事前共有キーに基づく認証、および安全なIKEv2EAPユーザー認証のサポートを提供します。
このチュートリアルでは、Strongswanを使用してIPSecVPNサーバーをインストールする方法を紹介します。 「EAP-MSCHAPv2」認証を使用してIKEv2VPNサーバーを作成し、CentOS7サーバーでLetsencrypt証明書を使用します。
- CentOS7サーバー
- root権限
何をしますか?
- CentOS7にStrongswanをインストールする
- SSLLetsencryptを生成する
- Strongswanを設定する
- NATファイアウォールを有効にする
- ポート転送を有効にする
- テスト
この最初のステップでは、strongswanのIPsec実装ソフトウェアと必要なすべてのパッケージをEPELリポジトリからインストールします。
以下のyumコマンドを使用して、EPELリポジトリをインストールし、strongswanパッケージをインストールします。
yum -y install epel-release
yum -y install strongswan
strongswanパッケージがインストールされるのを待ちます。
ドメイン名「ikev2.hakase-labs.io」を使用してIKEv2VPNサーバーを作成し、letsencryptから生成された証明書を使用します。
このステップでは、letsencryptツール「certbot」をインストールし、サーバードメイン名「ikev2.hakase-labs.io」の証明書を生成します。
'certbot'letsencryptツールをインストールします。
yum -y install certbot
certbotのインストール後、firewall-cmdを使用してサーバーのHTTPおよびHTTPSポートを開く必要があります。
以下のfirewall-cmdコマンドを実行して、HTTPおよびHTTPSサービスをfirewalldサービスリストに追加します。
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
これで、letsencryptツールcertbotを使用して新しいSSL証明書ファイルを生成できます。
以下のcertbotコマンドを実行します。
certbot certonly --rsa-key-size 4096 --standalone --agree-tos --no-eff-email --email [email protected] -d ikev2.hakase-labs.io
VPNドメイン名「ikev2.hakase-labs.io」のLetsencrypt証明書が生成され、「/ etc / testsencrypt/live」ディレクトリにあります。
次に、証明書ファイル「fullchain.pem」、「privkey.pem」、および「chain.pem」を「/etc/strongswan/ipsec.d/」ディレクトリにコピーする必要があります。
cp /etc/letsencrypt/live/ikev2.hakase-labs.io/fullchain.pem /etc/strongswan/ipsec.d/certs/
cp /etc/letsencrypt/live/ikev2.hakase-labs.io/privkey.pem /etc/strongswan/ipsec.d/private/
cp /etc/letsencrypt/live/ikev2.hakase-labs.io/chain.pem /etc/strongswan/ipsec.d/cacerts/
「ikev2.hakase-labs.io」という名前のStrongswanVPNのすべてのletsencrypt証明書が生成され、「/ etc / strongswan/ipsec.d」ディレクトリにコピーされました。
tree /etc/strongswan/ipsec.d/
'/ etc / strongswan'ディレクトリに移動し、デフォルトの'ipsec.conf'構成ファイルをバックアップします。
cd /etc/strongswan/
mv ipsec.conf ipsec.conf.asli
vimeditorを使用して新しい「ipsec.conf」を作成します。
vim ipsec.conf
そして、次の構成を貼り付けます。
#global configuration IPsec #chron logger config setup charondebug="ike 1, knl 1, cfg 0" uniqueids=no #define new ipsec connection conn hakase-vpn auto=add compress=no type=tunnel keyexchange=ikev2 ike=aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes256-aes128-sha256-sha1-modp2048-modp4096-modp1024,aes256-sha1-modp1024,aes256-sha256-modp1024,aes256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16-aes256gcm12-aes128gcm16-aes128gcm12-sha256-sha1-modp2048-modp4096-modp1024,3des-sha1-modp1024! esp=aes128-aes256-sha1-sha256-modp2048-modp4096-modp1024,aes128-sha1,aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes128gcm12-aes128gcm16-aes256gcm12-aes256gcm16-modp2048-modp4096-modp1024,aes128gcm16,aes128gcm16-ecp256,aes256-sha1,aes256-sha256,aes256-sha256-modp1024,aes256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha384,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16,aes256gcm16-ecp384,3des-sha1! fragmentation=yes forceencaps=yes dpdaction=clear dpddelay=300s rekey=no left=%any [email protected] leftcert=fullchain.pem leftsendcert=always leftsubnet=0.0.0.0/0 right=%any rightid=%any rightauth=eap-mschapv2 rightsourceip=10.15.1.0/24 rightdns=1.1.1.1,8.8.8.8 rightsendcert=never eap_identity=%identity
保存して終了します。
構成の詳細:
- 「hakase-vpn」という名前の新しいIPSecVPNトンネル接続を作成します。
- 認証用のIKEv2およびESP暗号スイートを指定します。
- ドメイン名「ikev2.hakase-labs.io」と「/etc/strongswan/ipsec.d/certs」ディレクトリにあるletsencrypt証明書「fullchain.pem」を使用した「左」サーバー構成。
- EAP認証方式「eap-mschapv2」を使用した「適切な」クライアント/リモートセットアップ。接続されているすべてのクライアントに仮想IPアドレス範囲「10.15.1.0/24」を割り当て、パブリックDNSCloudflareとgoogleを使用します。
次に、「ipsec.secrets」ファイルを編集して、RSAサーバーの秘密鍵とEAPユーザーパスワードのクレデンシャルを定義する必要があります。
'ipsec.secrets'ファイルを編集します。
vim ipsec.secrets
以下の設定を貼り付けてください。
: RSA "privkey.pem" hakase : EAP "[email protected]" tensai : EAP "[email protected]"
保存して終了します。
構成の詳細:
- 「/etc/strongswan/ipsec.d/private」ディレクトリにあるletsencrypt証明書「privkey.pem」を使用してRSAサーバーの秘密鍵を指定します。
- EAPユーザーの資格情報を「user:EAP"password"」の形式で定義します。
strongswanのIPSec構成が完了しました。 strongswanサービスを開始し、システムの起動時に毎回起動できるようにします。
systemctl start strongswan
systemctl enable strongswan
このステップでは、NATマスカレードを有効にし、「リッチルール」構成を使用して、ファイアウォールでIPSecプロトコル認証ヘッダー(AH)とカプセル化セキュリティペイロード(ESP)を追加します。
認証および暗号化プロトコル用の「AH」および「ESP」をfirewalldに追加します。
firewall-cmd --zone=public --permanent --add-rich-rule='rule protocol value="esp" accept'
firewall-cmd --zone=public --permanent --add-rich-rule='rule protocol value="ah" accept'
ipsecUDPポートとサービスを追加します。
firewall-cmd --zone=public --permanent --add-port=500/udp
firewall-cmd --zone=public --permanent --add-port=4500/udp
firewall-cmd --zone=public --permanent --add-service="ipsec"
次に、NATモードのマスカレードを有効にして、firewalld構成ルールをリロードします。
firewall-cmd --zone=public --permanent --add-masquerade
firewall-cmd --reload
FirewalldのNATモードが有効になっています。以下のコマンドを使用して確認してください。
firewall-cmd --list-all
結果は次のとおりです。
ポートフォワーディングを有効にするには、「sysctl.conf」ファイルを編集する必要があります。
vimエディターを使用して「/etc/sysctl.conf」ファイルを編集します。
vim /etc/sysctl.conf
次の構成をそこに貼り付けます。
net.ipv4.ip_forward = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0
保存して終了し、以下のsysctlコマンドを使用してリロードします。
sysctl -p
ポートフォワーディングが有効になっています。次に、strongswanサービスを再起動します。
systemctl restart strongswan
この場合、MacOSXとAndroidフォンでテストを行います。
-[システム環境設定]を開き、[ネットワーク]メニューをクリックします。
[+]ボタンをクリックして、新しいVPN接続を作成します。
- インターフェース:「VPN」
- VPNタイプ:'IKEv2'
- サービス名:'IKEv2-vpn
-「サーバーアドレス」と「リモートID」に、VPNドメイン名「ikev2.hakase-labs.io」を入力します。
-「認証設定」をクリックします。
-「ユーザー名」を使用した認証。
-ユーザー名「tensai」とパスワード「[emailprotected]」を入力します。
-「OK」をクリックして「Apply」をクリックします。
新しいIKEv2VPN接続がクライアントに作成されました。次に、接続ボタンをクリックします。
そして、クライアントはstrongswan VPNサーバーに接続されており、内部/プライベートIPアドレス10.15.1.1を持っています。
-Google-Playからネイティブのstrongswanandroidアプリケーションをダウンロードしてインストールします。
-新しいVPNプロファイルを追加します
-サーバードメイン名「ikev2.hakase-labs.io」を入力し、IKEv2EAPのユーザー名とパスワードを使用します認証。
以下は、VPNサーバーに接続したときの結果です。
IKEv2 IPSecベースのVPNサーバーは、CentOS7サーバーでStrongswanとLetsencryptを使用して作成されています。