セキュリティ企業Red Canaryは、オープンソースメッセージブローカー「Apache ActiveMQ」に存在する脆弱(ぜいじゃく)性「CVE-2023-46604」を悪用し、クラウド上の「Linux」システムに持続的なアクセスを確保する攻撃者の存在を確認した。ここまでは、よくある悪意ある攻撃の一例に過ぎない。
⇧ ただひたすらに、エンジニアの仕事が増えますなぁ...
OpenVPNは2つの通信方式が用意されている
とりあえず、
⇧ 公式の手順を翻訳しているページがあるのだが、元の公式の手順が酷いのか、手順が非常に分かり辛い...
で、
⇧ とあるのだが、「FAQ」が「404 Page not found」で見当たらない...
ネットの情報を漁っていたところ、
ルーティングとブリッジ、2つの通信方式
なお、OpenVPNによる拠点間の接続では、次の2通りの方法が可能です。
https://atmarkit.itmedia.co.jp/flinux/special/openvpn/openvpnb.html
■ルーティング方式
■ルーティング方式
OpenVPNサーバとクライアントには、それぞれ別セグメントのネットワークが割り当てられます。そのためクライアントへデータを転送するには、サーバ側セグメントで経路設定が必要になります。
ただし、ブロードキャストのような無駄なパケットが転送されないため、ネットワークを効率よく使用できます。またネットワークが別セグメントになるため、アクセス制御を実施しやすいという利点もあります。
https://atmarkit.itmedia.co.jp/flinux/special/openvpn/openvpnb.html
■ブリッジ方式
■ブリッジ方式
OpenVPNサーバとクライアントが同セグメントに仮想的に接続します。そのためブロードキャストパケットや、非TCP/IPパケットもクライアントへ転送されます。
ブロードキャストのようなクライアントあてではない無駄なパケットも転送されるなど非効率ですが、ルーティング方式のような特別な経路設定を行うことなく、OpenVPNクライアントと疎通が可能です。またネットワークゲームのような特殊なプロトコルや映像配信のようなマルチキャストパケットにも対応します。
https://atmarkit.itmedia.co.jp/flinux/special/openvpn/openvpnb.html
⇧ と説明があった。
まとめると、
- ルーティング方式
- ブリッジ方式
⇧ という違いになるようだ。
OpenVPNはクライアントサーバーモデルだが、クロスプラットフォームに対応しているらしい
日本語版の「FAQ(Frequently Asked Questions)」によると、
OpenVPNはどんなプラットフォームで使用できますか?
OpenVPNの特長の一つはその移植性の高さにあり、さまざまなプラットフォームでOpenVPNが利用できます。Windows、Linux、MacといったPC環境に加え、AndroidやiOSでも利用できます。さらに、各プラットフォームとも単一のコードベースからビルドされているため、プラットフォームが異なっていても同様に動作しますし、異なるプラットフォーム間でも接続できます。
⇧ とあり、「クロスプラットフォーム(cross-platform)」に対応しているらしい。
「クロスプラットフォーム(cross-platform)」はというと、
クロスプラットフォーム(英: cross-platform)とは、異なるプラットフォーム(例えばPC/AT互換機とMacintosh、あるいはWindows・macOS・FreeBSD・Linuxなどのように、仕様が全く異なる機械(ハードウェア)またはオペレーティングシステム)上で、同じ仕様のものを動かすことが出来るプログラム(ソフトウェア)のことを言う。同様の呼称にマルチプラットフォームがある。
⇧ 上記にあるように、異なる「OS(Operation System)」間での動作をサポートしているらしい。
つまり、
- クライアント
- サーバー
で、別々の「OS(Operation System)」を利用できるということらしい。
なのだが、公式の手順には、同一の「OS(Operation System)」についてしか説明がない...
OpenVPNの環境構築の手順を整理してみる
改めて、
⇧ 上記の内容を確認した感じ、「プロンプト」による入力が必要になって来るので、
の2工程に分ける必要がありそうだ。
手順を整理してみると、
No | 手順概要 | 作業場所 | |
---|---|---|---|
仮想マシン (クライアント用) |
仮想マシン (サーバー用) |
||
1 | 仮想マシンの用意 ※1 | - | - |
2 | OpenVPNのインストール ※2 | ✅ | ✅ |
3 |
①マスター認証機関(CA)の証明書と鍵の生成 |
- | ✅ |
4 |
②サーバー用の証明書と鍵の生成 |
- | ✅ |
5 |
③クライアント用の証明書と鍵の生成 |
- | ✅ |
6 |
④Diffie Hellmanパラメータの生成 |
- | ✅ |
7 |
⑤鍵ファイの確認 & クライアントへ①と③で生成されるファイルをコピー ※3 |
✅ | ✅ |
8 |
サーバー用/クライアント用の設定ファイルの作成 ①サンプル設定ファイルを元に設定ファイルを複製 |
✅ | ✅ |
9 |
サーバー用/クライアント用の設定ファイルの作成 ②OpenVPN サーバー設定ファイルの編集 |
- | ✅ |
10 |
サーバー用/クライアント用の設定ファイルの作成 ③OpenVPN クライアント設定ファイルの編集 |
✅ | - |
11 |
VPNの起動と接続テスト ①OpenVPN サーバーの起動 |
- | ✅ |
12 |
VPNの起動と接続テスト ②OpenVPN クライアントの起動 |
✅ | - |
※1 サブネットの設定。Virtualboxで仮想マシンを用意するのでネットワークアダプターで調整する感じになると思われる。
※2 その他、OpenVPN の依存パッケージもインストールが必要。
※3 以下の仮想マシン(サーバー用)に生成されているファイル群を仮想マシン(クライアント用)の /etc/openvpn/client にコピーする。
⇧ といった感じになる気がする。
ちなみに、「認証局(CA)」を用意するのは、
OpenVPNで使用できる認証方法は、ざっくり言うと以下の4つです。
⇧ 上記で言うところの「2. 証明書認証」の「認証方法」に該当すると思われる。
イメージとしては、
⇧ 上記サイト様の図のような情報で認証が行われるようだ。
ちなみに、ネット上で「証明書認証」という用語がヒットしない...
唯一、「Certificate Authentication」という用語が、
⇧「PostgreSQL」のドキュメントでヒットしたのだが、それ以外には、
- Client Certificate Authentication
- Certificate Based Authentication
とかがヒットするが、結局のところ、正しい用語が分からない...
「Kubernetes」環境の構築の時も思ったのだが、「インフラレイヤー」周りの構築の手順って、本当に分かり辛いよね...
せめて、手順を実施する作業場所ぐらいは明らかにして欲しいよね...
まぁ、そもそも「ソフトウェアエンジニア」の範疇の作業ではない気がするが...
毎度モヤモヤ感が半端ない…
今回はこのへんで。