【vyos on VMware Playerでネットワークのお勉強】(004) IPsec暗号化
はじめに
みなさま。こんにちは。
新しい技術を覚えようとしたら、無限に存在しワクワク感が増える一方なのですが、過去に「苦労して覚えたはずの技術」を忘れていると挫折感と無能感に襲われ、無気力感に覆われる。
かと言って、新しい技術を疎かにしていたら時代に置いていかれるので、なんとかモチベーションを保ってやり続けるしかないのですね。
そのような導入を記載したものの、私自身IPv6や無線通信はほとんど勉強していません。(20年以上前の技術にも関わらず)
最近はPython、Go言語、Angular、elastic search、AWS等でアプリレイヤーで遊んでばかりいたので、2022年はレイヤ3以下のところを中心にやり直してみようかなぁ~と何気なく考えています。
(IPv6はvyOSで試せるし、無線周りはラズベリーパイを使えば、そこそこ遊べるような気がしているので)
本記事(002)から(004)にかけて作っていた最終構成(以下のような環境)になります。
前回のGREトンネルをIPsecで暗号化する事によって、前回見えていたパケットの内容を隠します。
使用する環境
# | 使用環境 | 備考 |
---|---|---|
1 | vyos-1.4 | 192.168.151.0/24(VMnet2), 192.168.161.0/24(VMnet3) |
2 | vyos-1.4 | 192.168.151.0/24(VMnet2), 192.168.171.0/24(VMnet4) |
3 | vyos-1.4 | 192.168.171.0/24(VMnet4), 192.168.181.0/24(VMnet5) |
4 | CentOS 8 Stream | HTTPサーバ(192.168.161.101) |
5 | CentOS 8 Stream | HTTPクライアント(192.168.181.101) |
本稿で構築する環境
本稿では、
1. vyOS1とvyOS3間をIPsecで暗号化する
2. 192.168.181.101(HTTPクライアント)から192.168.161.101(HTTPサーバ)にアクセスしたときパケットが暗号化されていることを確認する
の2点を記載していこうと思います。
vyOS02はパケット取得用の環境として扱います。
なお、vyOS1、vyOS2、vyOS3は前回の作業にてOSPFで互いに通信のやり取りが可能になっていること、BGPによりクライアント同士の通信が可能になっていることを前提としています。
vyOS1とvyOS3間をIPsecで暗号化する
下記コマンドにてIPsecトンネル設定を行います。
(鍵交換はsha1、暗号化はAES128なので検証環境のみ許される設定です)
set vpn ipsec ike-group OchanIKEGroup proposal 1 dh-group '2'
set vpn ipsec ike-group OchanIKEGroup proposal 1 encryption 'aes128'
set vpn ipsec ike-group OchanIKEGroup proposal 1 hash 'sha1'
set vpn ipsec esp-group OchanESPGroup proposal 1 encryption 'aes128'
set vpn ipsec esp-group OchanESPGroup proposal 1 hash 'sha1'
set vpn ipsec site-to-site peer 192.168.171.12 authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer 192.168.171.12 authentication pre-shared-secret 'xe3EPT1wGUHj4Hiy'
set vpn ipsec site-to-site peer 192.168.171.12 ike-group 'OchanIKEGroup'
set vpn ipsec site-to-site peer 192.168.171.12 local-address '192.168.151.11'
set vpn ipsec site-to-site peer 192.168.171.12 tunnel 0 esp-group 'OchanESPGroup'
set vpn ipsec ike-group OchanIKEGroup proposal 1 dh-group '2'
set vpn ipsec ike-group OchanIKEGroup proposal 1 encryption 'aes128'
set vpn ipsec ike-group OchanIKEGroup proposal 1 hash 'sha1'
set vpn ipsec esp-group OchanESPGroup proposal 1 encryption 'aes128'
set vpn ipsec esp-group OchanESPGroup proposal 1 hash 'sha1'
set vpn ipsec site-to-site peer 192.168.151.11 authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer 192.168.151.11 authentication pre-shared-secret 'xe3EPT1wGUHj4Hiy'
set vpn ipsec site-to-site peer 192.168.151.11 ike-group 'OchanIKEGroup'
set vpn ipsec site-to-site peer 192.168.151.11 local-address '192.168.171.12'
set vpn ipsec site-to-site peer 192.168.151.11 tunnel 0 esp-group 'OchanESPGroup'
実行結果の確認
vyos@vyos:~$ show vpn ike sa
Peer ID / IP Local ID / IP
------------ -------------
192.168.171.12 192.168.171.12 192.168.151.11 192.168.151.11
State IKEVer Encrypt Hash D-H Group NAT-T A-Time L-Time
----- ------ ------- ---- --------- ----- ------ ------
up IKEv2 AES_CBC_128 HMAC_SHA1_96 MODP_1024 no 9 0
vyos@vyos:~$ show vpn ipsec sa
Connection State Uptime Bytes In/Out Packets In/Out Remote address Remote ID Proposal
---------------------------- ------- -------- -------------- ---------------- ---------------- ----------- ------------------------
peer_192-168-171-12_tunnel_0 up 13s 0B/0B 0/0 192.168.171.12 N/A AES_CBC_128/HMAC_SHA1_96
vyos@vyos:~$ show vpn ike sa
Peer ID / IP Local ID / IP
------------ -------------
192.168.151.11 192.168.151.11 192.168.171.12 192.168.171.12
State IKEVer Encrypt Hash D-H Group NAT-T A-Time L-Time
----- ------ ------- ---- --------- ----- ------ ------
up IKEv2 AES_CBC_128 HMAC_SHA1_96 MODP_1024 no 381 0
vyos@vyos:~$ show vpn ipsec sa
Connection State Uptime Bytes In/Out Packets In/Out Remote address Remote ID Proposal
---------------------------- ------- -------- -------------- ---------------- ---------------- ----------- ------------------------
peer_192-168-151-11_tunnel_0 up 6m30s 0B/0B 0/0 192.168.151.11 N/A AES_CBC_128/HMAC_SHA1_96
実行結果の確認(パケットの確認)
ISAKMPプロトコルのやり取りが行われていることが確認できます。
(パケットは本稿最後の方にGITのリンクを記載します。)
192.168.181.101(HTTPクライアント)から192.168.161.101(HTTPサーバ)にアクセスしたときパケットが暗号化されていることを確認する
[root@localhost ~]# curl http://192.168.161.101
<h1>hello world</h1>
実行結果の確認(パケットの確認)
前回はSYN、SYN/ACK、ACK、TCPパケットの中身がのぞけたのに対して、ESPで暗号化されていることがわかります。
Wiresharkパケット
今回の環境構築で取得したWiresharkのパケットを下記gitにアップロードしたので、興味のある方はご参照ください。
Qiita_004_Packet on Git
今回は、GREでトンネルを作っただけなので、パケットキャプチャによって通信の中身が丸見えというのがよくわかりました。
次回は、vyOS01とvyOS3間でIPsecを張って、vyOS2でパケットキャプチャしても通信の中身を見えないようにします。
さいごに
今回は通信経路上で暗号化されることを確認するためにIPsecの設定を行いましたが、次回移行は通信内容を確認するためにIPsecの設定は行わない環境を利用で検証していきます。
実運用では盗聴されたら問題ありますが、検証環境では通信内容を把握しておく必要がありますからね。
次回はElastic Searchを構築し、パケットをのぞいてみます。
参考リンク
【vyos on VMware Playerでネットワークのお勉強】(003) BGP通信
【vyos on VMware Playerでネットワークのお勉強】(002) OSPF通信の疎通
【vyos on VMware Playerでネットワークのお勉強】(001)ご挨拶
Author And Source
この問題について(【vyos on VMware Playerでネットワークのお勉強】(004) IPsec暗号化), 我々は、より多くの情報をここで見つけました https://qiita.com/o_chan_t/items/c388ca68ef7e79359c46著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .