富士通が運用するOpenStackのクラウド基盤「Fujitsu Cloud Service for OSS」略称 4OSS (旧名称 K5)で稼働のWebサーバーでSSLクライアント認証を行い、既存のWebサーバーへリバースプロキシによりリダイレクトさせる構成例です。リバースプロキシ先のWebサーバを外部から隠ぺいし安全性を高めることが出来ます。SSLクライアント認証時のアクセスログも取得します。一般的なOpenStackでも同様の構成での運用も可能です。
Client — ( 443 ) —SSLクライアント認証&リバースプロキシ — ( 443 / 80 ) — Web
4OSS/OpenStack基盤上に稼働のリバースプロキシーサーバーを利用してSSLクライアント認証経由で既存のWebサーバーに安全にアクセスさせる事が出来ます。
今回はプライベートCA、SSLクライアント認証とReverse Proxyを1台のサーバー上で運用するケースです。
既存のWebサーバーへのアクセスは、
1)SSLクライアント証明書による認証(プライベートCA)
2)ID/パスワードによる認証(既存のWebサーバー)
との多要素認証のため、ID/パスワードの漏えいによるWebへの不正アクセスに効果を発揮します。
プライベートCAとSSLクライアント認証&リバースプロキシーを1台で運用するサーバとしては、
を利用します。
公的な認証局 ( Public CA )が発行したSSLクライアント証明書を利用してのSSLクライアント認証を行なう運用も出来ます(例 グローバルサイン / UPKI )
Powered BLUE プライベートCAを利用すると
- CA機能 / SSLクライアント証明書発行・失効・認証
- SSLクライアント認証
- リバースプロキシ
- インターネットサーバー機能(Web/Mail/DNS)
を1台の仮想サーバーで運用することが出来ます。
構築方針
- PrivateCAサーバーとSSLクライアント認証&リバースプロキシを1台で運用
- ターゲットのWebサーバーも4OSS/OpenStack上で運用
- 設定はGUIから行なう
使用するもの
- Fujitsu Cloud Service for OSS (4OSS)
- Powered BLUE プライベート CA 1台 ( 認証局 / 4OSSで運用 )
- Powered BLUE Web サーバー 3台( Web / 4OSSで運用)
- SSLサーバー証明書
ネットワーク構成(最終形)
- LAN 10.0.5.0 / 24
- ルーター / gw IP=10.0.5.1
- B870-CA IP=10.0.5.20 / IP=133.162.67.42 / B870-CA.mubit.com
- Web1 / B870-WEB1 IP=10.0.5.31 / IP=133.162.67.53 / B870-LBC1.mubit.com
- Web2 / B870-WEB2 IP=10.0.5.32 / IP=133.162.67.54 / B870-LBC2.mubit.com
- Web3 / B870-WEB3 IP=10.0.5.37 / IP=133.162.67.57 / B870-LBC3.mubit.com
- 運用するゾーン east-3 or west-3
設定&構築
今回は4OSSのGUIからの操作で構築します。尚OpenStack 標準のGUI / Horizonからの操作やAPI , Ansibleでの構築も可能です。
Networkの設定
OpenStack / 4OSSのネットワークなどの基本設定を行ないます。
- 4OSS/OpenStack上にNetworkなどを初期設定します
Webサーバーの設定
この例ではWebサーバーとしては、CentOS/RedHat 7.x 対応のPowered BLUE Web サーバーを利用します。一般的なWebサーバーを利用することも出来ます。
4OSS/OpenStack上に3台のPowered BLUE Web サーバーをセットアップします。
- Web1 / B870-WEB1 IP=10.0.5.31 / IP=133.162.67.53 / B870-LBC1.mubit.com
- Web2 / B870-WEB2 IP=10.0.5.32 / IP=133.162.67.54 / B870-LBC2.mubit.com
- Web3 / B870-WEB3 IP=10.0.5.37 / IP=133.162.67.57 / B870-LBC3.mubit.com
Web サーバーには、ホームページデータ、サイボウズ、デスクネッツ、Active! Mail 他を適宜インストールしておきます。
Private CAの設定
Private CAとしては、Powered BLUE Private CAを利用します
4OSS/OpenStack上にPowered BLUE Private CA サーバーをセットアップします。
- B870-CA / B870-CA.mubit.com / IP=10.0.5.20 / IP=133.162.67.42
グローバルIPのアサイン
- CA / B870-CA IP=10.0.5.20 / IP=133.162.67.42 / B870-CA.mubit.com
- Web1 / B870-WEB1 IP=10.0.5.31 / IP=133.162.67.53 / B870-LBC1.mubit.com
- Web2 / B870-WEB2 IP=10.0.5.32 / IP=133.162.67.54 / B870-LBC2.mubit.com
- Web3 / B870-WEB3 IP=10.0.5.37 / IP=133.162.67.57 / B870-LBC3.mubit.com
Private CAへのグローバルIPのアサイン
ターゲットのWeb サーバー(Web1/Web2/Web3)についても、同様の操作でグローバルIPをアサインしておきます
SSLクライアント証明書の発行
プライベートCAでSSLクライアント証明書を発行。クライアント証明書は、会社や部門全体での一括発行や、1ユーザーごとの個別の発行が出来ます
SSLクライアント証明書を個別発行の場合(マニュアルで1枚発行の場合)
例 suzuki@mubit.com ユーザーのクライアント証明書を作成
有効期限などを指定して発行します
有効期間やポリシーを設定して、部門や全社員の一括発行も出来ます
SSLクライアント証明書をダウンロードします
ダウンロードURLを通知して、ユーザーが個別にダウンロードすることも出来ます
SSLクライアント証明書のブラウザへのインストール(Firefoxの場合)
「証明書を表示」をクリック
あなたの証明書」のインポートをクリック
SSLクライアント証明のパスワード入れてインストールします
正常にインポート時の表示
証明書マネージャーにインストールしたクライアント証明書が表示されます
SSLクライアント認証を設定
- Webアクセス時の 「SSLクライアント認証」 を有効にします
アクセスコントロール
有効なSSLクライアント証明書を有している場合でも、Webサイト毎に各種のアクセスコントロールが設定出来ます
失効リスト(CRL)に関わらず、ただちにWebへのアクセス禁止を設定できます
SSLクライアント証明書を失効させることなく、Webへのアクセスを禁止できます
・組織や部門でのアクセス制限
・曜日や時間帯でのアクセス制限
・特定ユーザーでのアクセス制限
・端末を紛失したので、ただちにAさんのSSLクライアント証明書でのアクセスを禁止
ログの出力先などの指定
SSLクライアント認証時のアクセスログの出力先を指定出来ます
リバースプロキシの設定
設定例 (複数のリダイレクト先を指定できます )
- activemail/am_bin --->> https://10.0.5.31/activemail/am_bin/
- cybozu/cbag --->> http://10.0.5.32/cybozu/cbag/
- desknets/dneo --->> http://10.0.5.37/desknets/dneo/
- owncloud --->> https://10.0.5.31/owncloud/
- proself --->> https://10.0.5.31/proself/
- roundcube --->> https://10.0.5.31/roundcube/
- mosp --->> https://10.0.5.32/dm_time4/srv/
- mubit --->> http://www.mubit.com/dir/
SSLサーバー証明書
- リバースプロキシサーバーに、SSLサーバー証明書を入れます
- SSLサーバー証明書は、自己証明書やLet’s Encrypt、パブリックなサーバー証明書を登録出来ます
自己証明書の場合
同一のSSLのサーバー証明書を作成します(1台目のhttpsサーバー)
- 「自己署名デジタル証明書の作成」 または 「署名リクエストの作成」 で作成します
自己署名デジタル証明書の作成の場合
- 「自己署名デジタル証明書の作成」から必要事項を記入して、SSLを有効にします
パブリックなSSLサーバー証明書を利用の場合
- 署名リクエスト(CSR)で作成の場合
- 必要事項を記入して、「署名リクエストの作成」 ボタンを押します
- 作成された 「署名リクエスト」 ファイルを保存
- この「署名リクエスト」ファイル signig-request.txt を、公的なSSLサーバー証明書の発行機関へ送付
公的機関で発行された、SSLサーバー証明書を「インポート」します
Let’s Encryptの場合
Let’s Encryptは、無償で利用できる公的なSSLサーバー証明書です。Powered BLUE 870 へはフリープラグインを利用して、WebサーバーへSSLサーバー証明書をインストールします。
DNSへ登録
IP=133.162.67.42 / B870-CA.mubit.com
アクセス例
SSLクライアント認証&リバースプロキシ経由での active! mail へのアクセス
https://B870-CA.mubit.com/activemail/am_bin/
リバースプロキシ先のWebサーバーのURLが隠ぺいされています
SSLクライアント認証&リバースプロキシ経由での サイボウズへのアクセス
https://B870-CA.mubit.com/cybozu/cbag
リバースプロキシ先のWebサーバーのURLが隠ぺいされています
SSLクライアント認証&リバースプロキシ経由での デスクネッツへのアクセス
https://B870-CA.mubit.com/desknets/dneo/
リバースプロキシ先のWebサーバーのURLが隠ぺいされています
SSLクライアント認証&リバースプロキシ経由での roundcubeへのアクセス
https://B870-CA.mubit.com/roundcube/
リバースプロキシ先のWebサーバーのURLが隠ぺいされています
SSLクライアント認証&リバースプロキシ経由での MosP勤怠管理へのアクセス
https://B870-CA.mubit.com/dm_time4/srv/
リバースプロキシ先のWebサーバーのURLが隠ぺいされています
SSLクライアント認証例 (承認されない場合)
有効なSSLクライアント証明書が無いクライアントからのアクセスの場合 ( IPhone )
Google Chrome の場合
デモサーバー
Powered BLUEの デモサーバー
Fujitsu Cloud Service for OSS (4OSS) の設定&構築
4OSS GUIからの操作
超簡単 Fujitsu Cloud Service for OSS (4OSS)を初期設定する
4OSS リモートコンソールの利用設定
4OSS Ansibleでの操作
Ansibleで4OSSのNetWork構築やサーバー設定を行なう
4OSS メモリスワップの追加
4OSSのLinuxサーバーにmemory swap を設定する
4OSS Webサーバーを構築
4OSS SSLクライアント認証Webを構築
4OSS ワンタイムパスワード認証Webを構築
4OSS Webをロードバランスする
4OSSでWeb/https (443) をロードバランスする
4OSS SSLクライアント認証&リバースプロキシ
4OSSでクライアント認証後に既存Webへリバースプロキシ転送する
4OSS ロードバランサ&SSLクライアント認証&リバースプロキシ
4OSSでロードバランサー配下でクライアント認証後に既存Webへリバースプロキシ転送する
4OSS 多要素認証&リバースプロキシ対応のWebを構築
富士通マーケットプレース
Fujitsu MetaArc Marketplace / Fujitsu Cloud Service for OSS (4OSS)
Fujitsu Cloud Service for OSSのマーケットプレイス