Strongswanは、オープンソースのマルチプラットフォームIPSec実装です。これは、強力な認証メカニズムに焦点を当てたIPSecベースのVPNソリューションです。 Strongswanは、IKEv1とIKEv2の両方のキー交換プロトコル、X.509証明書または事前共有キーに基づく認証、および安全なIKEv2EAPユーザー認証のサポートを提供します。
このチュートリアルでは、Strongswanを使用してIPSecVPNサーバーをインストールする方法を紹介します。 「EAP-MSCHAPv2」認証を使用してIKEv2VPNサーバーを作成し、CentOS8サーバーでLetsencrypt証明書を使用します。
前提条件
- CentOS8サーバー
- root権限
何をしますか?
- CentOS8にStrongswanをインストールする
- SSLLetsencryptを生成する
- Strongswanを設定する
- NATファイアウォールを有効にする
- ポート転送を有効にする
- テスト
この最初のステップでは、strongswanのIPsec実装ソフトウェアと必要なすべてのパッケージをEPELリポジトリからインストールします。
strongswanパッケージをインストールする前に、EPELリポジトリをCentOS8システムに追加する必要があります。
CentOS8サーバーのEPELリポジトリを追加します。
sudo dnf install epel-release
その後、以下のdnfコマンドを使用して、EPELリポジトリからstrongswanパッケージをインストールします。
sudo dnf install strongswan
strongswanパッケージがインストールされるのを待ちます。
このガイドでは、ドメイン名「vpn.hakase-labs.io」を使用してIKEv2 VPNサーバーを作成し、letsencryptから生成された証明書を使用します。
このステップでは、letsencryptツール「certbot」を手動でインストールし、サーバードメイン名「vpn.hakase-labs.io」の証明書を生成します。
以下のwgetコマンドを使用して、GitHubからcertbotバイナリファイルをダウンロードします。
wget https://dl.eff.org/certbot-auto -O /usr/local/bin/certbot-auto
その後、ファイルの権限を変更して実行可能にします。
chmod +x /usr/local/bin/certbot-auto
また、Letsencrypt証明書を生成するためのcertbotツールがインストールされています。
Letsencrypt証明書を生成する前に、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-autoを使用して新しいSSL証明書ファイルを生成できます。
メールアドレスとドメイン名を自分のものに変更し、以下の「certbot-auto」コマンドを実行します。
certbot-auto certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email [email protected] -d vpn.hakase-labs.io
完了すると、次のような結果が得られます。
ドメイン名のすべての証明書は、「/etc/letsencrypt/live/domain.com」ディレクトリに生成されます。
次に、証明書ファイル「fullchain.pem」、「privkey.pem」、および「chain.pem」を「/etc/strongswan/ipsec.d/」ディレクトリにコピーする必要があります。
cp /etc/letsencrypt/live/vpn.hakase-labs.io/fullchain.pem /etc/strongswan/ipsec.d/certs/
cp /etc/letsencrypt/live/vpn.hakase-labs.io/privkey.pem /etc/strongswan/ipsec.d/private/
cp /etc/letsencrypt/live/vpn.hakase-labs.io/chain.pem /etc/strongswan/ipsec.d/cacerts/
「vpn.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
vimエディターを使用して新しい「ipsec.conf」を作成します。
vim ipsec.conf
そして、次の構成を貼り付けます。
config setup
uniqueids=never # allow multiple connections per user
charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2"
conn %default
fragmentation=yes
closeaction=restart
rekey=no
dpdaction=clear
keyexchange=ikev2
compress=yes
dpddelay=35s
lifetime=3h
ikelifetime=12h
ike=aes256gcm16-prfsha512-ecp384!
esp=aes256gcm16-ecp384!
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
conn ikev2-pubkey
auto=add
保存して終了します。
次に、「ipsec.secrets」ファイルを編集して、RSAサーバーの秘密鍵とEAPユーザーパスワードのクレデンシャルを定義する必要があります。
'ipsec.secrets'ファイルを編集します。
vim ipsec.secrets
以下の設定を貼り付けてください。
: RSA "privkey.pem"
hakase : EAP "[email protected]"
tensai : EAP "[email protected]"
保存して終了します。
そして、strongswanのIPSec構成が完了しました。起動ブート時間にstrongswanサービスを追加してから、サービスを開始します。
systemctl enable strongswan
systemctl start strongswan
strongswanサービスはCentOS8サーバーで稼働しています。次のコマンドを使用して確認してください。
systemctl status strongswan
netstat -plntu
そして、以下のような結果が表示されます。
このステップでは、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サーバーは、CentOS8サーバーでStrongswanとLetsencryptを使用して作成されています。