二要素認証を用いたホストログイン管理およびユーザ操作監査が可能なプロダクト「Bastionhost」のご紹介①

f:id:sbc_suzuki10:20200908191822p:plain

こんにちは。エンジニアの鈴木です。

今回はBastionhostについてご紹介および検証をしていきたいと思います。



はじめに

Bastionhostは、Alibaba Cloudが提供するシステム運用保守(O&M)およびセキュリティ監査プラットフォームです。

www.alibabacloud.com

Bastionhostプロダクトには以下の機能があります。

  • 1. O&M操作の記録
    • ・Linuxコマンド監査
    • ・Windows操作の記録
    • ・ファイル転送監査
  • 2. アクセス制御
    • ・アカウント管理
    • ・権限管理
  • 3. セキュリティ認証
    • ・2要素認証(SMS認証や動的トークン)
    • ・AD認証の同期
    • ・LDAP認証の同期



Bastionhostはいわゆる踏み台サーバのような役割を果たし、Bastionhostでのログイン認証、アカウント管理、そしてBastionhostを介して接続したHostでの操作を記録します。

f:id:sbc_suzuki10:20200827131133p:plain

接続プロトコルはSSH、RDP、またはSFTPをサポートします。
クライアントはPuTTY、SecureCRT、XShell、WinSCP、MSTSCなどをサポートします。

今回はシンプルな構成を例にとり、Bastionhostを使用してみたいと思います。



検証の環境構成図

今回は以下の構成をとり、Bastionhostを検証していきます。

f:id:sbc_suzuki10:20200827194124p:plain




準備

Bastionhostインスタンスにバインドする以下のリソースを用意します。
・VPC ※Bastionhostインスタンスおよび管理化のリソースローンチのため、作成
・VSwitch ※Bastionhostインスタンスおよび管理化のリソースローンチのため、作成
・ECS ※Bastionhostインスタンスへの紐づけのため、作成
・Security Group ※※Bastionhostインスタンスおよび管理下のリソースへのアタッチのため、作成

BastionhostインスタンスはSecurity GroupとWhitelistが使用できます。
今回は空ルールのSecurity Groupのみ使用します。
※空ルールのSecurity GroupでもBastionhostインスタンスに接続が可能です。

f:id:sbc_suzuki10:20200827155457p:plain


以下はECSインスタンスのSecurity Groupとして作成します。
Bastionhostインスタンス配下のHostのSecurity Groupは
Bastionhostインスタンスからのインバウンド通信のみ許可します。

f:id:sbc_suzuki10:20200827153505p:plain


追加するBastionhostインスタンスのプライベートIPアドレスとグローバルIPアドレスはBastionhostインスタンスの「Egress IP」にマウスオーバーすると表示されるので、Bastionhostインスタンス作成後に各HostのSecurity Group追加します。

f:id:sbc_suzuki10:20200827155704p:plain


今回はSecurity Groupを以下のように設定しています。

f:id:sbc_suzuki10:20200827193805p:plain



Bastionhostインスタンスの作成

Bastionhostインスタンスを購入します。
インスタンス作成可能なリージョンは2020/8/20時点では以下になります。
・香港
・シンガポール
・マレーシア
・インドネシア
・インド

東京リージョンはありませんが、日本からも上記のリージョンにローンチされたBastionhostインスタンスに接続可能です。

f:id:sbc_suzuki10:20200820233808p:plain




Bastionhostインスタンスの初期化

Runを押下し、インスタンスのローンチ先VPCとVSwitch、Security Groupを指定し、初期化します。

f:id:sbc_suzuki10:20200820234705p:plain


f:id:sbc_suzuki10:20200820234922p:plain


初期化後、Manageを押下し、Bastionhostインスタンスの設定画面に遷移します。

f:id:sbc_suzuki10:20200821003503p:plain


f:id:sbc_suzuki10:20200821003513p:plain




今回使用するBastionhostの設定箇所全容

Bastionhostインスタンスが作成されたので、設定をしていきます。

設定箇所と設定の連動は以下の図のようになっております。
順番に設定していきます。

f:id:sbc_suzuki10:20200826174041p:plain




Host(ECS)の追加パターン1

www.alibabacloud.com

既に作成しているECSを追加します。
Hosts画面で「Import ECS Instances」を押下します。

f:id:sbc_suzuki10:20200824102623p:plain


ECSがローンチしているリージョンを選択します。
複数選択可能です。

f:id:sbc_suzuki10:20200824102836p:plain


リージョンに所属するECSがすべて表示されるので、
Bastionhostインスタンスに紐づけるECSを選択し、「Import」を押下します。

f:id:sbc_suzuki10:20200824103935p:plain


Hosts画面に追加されます。

f:id:sbc_suzuki10:20200824104406p:plain




Host(ECS)の追加パターン2

Hosts画面から「Import Other Hosts」プルダウンの「Create Host」からもHostを追加できます。

f:id:sbc_suzuki10:20200826105731p:plain


ローンチしているECSの情報を入力します。
HostがBastionhostインスタンスのVPC内に存在しない場合は、
Bastionhostインスタンスからローカル通信でHostに到達できないので、パブリックIPアドレスを指定します。

f:id:sbc_suzuki10:20200826110245p:plain


Hostが追加されました。

f:id:sbc_suzuki10:20200826110552p:plain




Host(RDS)の追加

RDS専用クラスターホストもHostとして追加が可能です。
本ブログでは割愛します。

www.alibabacloud.com

www.alibabacloud.com




Host Groupの追加およびHostの紐づけ

www.alibabacloud.com

Host Groups画面で「Create Host Group」を押下します。

f:id:sbc_suzuki10:20200824102049p:plain


ホストグループ名を入力します。

f:id:sbc_suzuki10:20200824105945p:plain


Host Groupが作成されました。
次にHost GroupにHostを追加します。

f:id:sbc_suzuki10:20200827141451p:plain


「Add Member」を押下し、Hostを追加します。

f:id:sbc_suzuki10:20200824121045p:plain


f:id:sbc_suzuki10:20200824121454p:plain


Host GroupにHostが追加されました。

f:id:sbc_suzuki10:20200827141812p:plain




RAMユーザ作成

BastionhostのユーザとしてRAMユーザを使用します。
そのため、まずはRAMユーザを作成します。

今回は管理者ユーザと一般ユーザ相当のRAMユーザを作成します。
※以下では管理者ユーザのみ作成していますが、同様の手順で一般ユーザも作成します。

パスワードと2要素認証を有効化します。

f:id:sbc_suzuki10:20200820175821p:plain


MFAデバイスを有効化します。

f:id:sbc_suzuki10:20200827142204p:plain


MFAデバイスにQRコードの読み込みまたは「Retrieve manually enter information.」タブのUser NameとKeyを入力します。
MFAデバイスは今回、chrome ウェブストアのAuthenticatorを使用しました。

f:id:sbc_suzuki10:20200820175841p:plain


認証が成功したことを確認します。

f:id:sbc_suzuki10:20200820180336p:plain




Userの追加

BastionhostインスタンスのUser画面で「Import RAM User」を押下し、RAMコンソールで作成したRAMユーザをインポートします。

f:id:sbc_suzuki10:20200821160012p:plain


RAMコンソールで作成したRAMユーザが表示されますので、
作成したRAMユーザをチェックボックス押下で選択し、importを行います。

f:id:sbc_suzuki10:20200821160731p:plain


RAMユーザが追加されたことを確認します。

f:id:sbc_suzuki10:20200827142644p:plain




User Groupの追加およびUserの紐づけ

User Groupを作成します。
User Groupを作成することでHostへのユーザ割り当てがまとめてできるので、
ユーザ増減時の対応スピード向上のメリットがあります。

今回は全RAMユーザが所属するAll_Usersと管理者だけが所属するAdministratorsを作成します。

「Create User Group」を押下し、User Groupを作成します。

f:id:sbc_suzuki10:20200821161519p:plain


ユーザグループ名を入力します。

f:id:sbc_suzuki10:20200821162239p:plain


User Groupが作成されました。

f:id:sbc_suzuki10:20200821163648p:plain


作成されたUser Groupを押下し、詳細画面に遷移します。 MembersタブでAdd Memberを押下し、ユーザを追加します。

f:id:sbc_suzuki10:20200821162927p:plain


User Groupに所属させるUserを選択し、Addを押下します。

f:id:sbc_suzuki10:20200828181430p:plain


User GroupにUserが所属しました。

f:id:sbc_suzuki10:20200828181450p:plain




ログイン許可ユーザの設定

Userに対してどのHostにログイン許可を与えるかを設定します。
以下の図の赤枠の部分となります。

f:id:sbc_suzuki10:20200827100501p:plain


User Groups画面で「Authorize Host Groups」を押下します。

f:id:sbc_suzuki10:20200828181938p:plain


User GroupにHost Groupに紐づけます。
「Authorized Host Group」タブで「Authorize Host Groups」ボタンを押下します。

f:id:sbc_suzuki10:20200824140457p:plain


紐づけるHost Groupを選択し、OKを押下します。

f:id:sbc_suzuki10:20200824142521p:plain


User GroupとHost Groupが紐づけられました。

f:id:sbc_suzuki10:20200824143910p:plain




Host内OSユーザの認証

BastionhostインスタンスのUserがHostにログインする際に使用するHostのOSユーザの認証を行います。

f:id:sbc_suzuki10:20200827100423p:plain


Hosts画面で各インスタンスの詳細画面でOSユーザの認証を行います。
OSユーザの認証は1ホストずつでもまとめてでも可能です。

www.alibabacloud.com

今回は1ホストずつログインユーザの認証を行います。

インスタンスを押下します。

f:id:sbc_suzuki10:20200825140209p:plain


「Host Account」タブの「Create Host Account」を押下します。

f:id:sbc_suzuki10:20200825141248p:plain


接続プロトコルとユーザ、パスワードを入力し、「Verify」を押下し、有効かどうかチェックします。

f:id:sbc_suzuki10:20200825142517p:plain


問題ない場合は「The verification is successful.」がポップアップします。

f:id:sbc_suzuki10:20200826121914p:plain


Host Accountsが追加されました。

f:id:sbc_suzuki10:20200826130942p:plain



補足となりますが、OSユーザの認証はパスワードだけでなく、SSH Private Keyでの認証も可能です。

f:id:sbc_suzuki10:20200827144214p:plain


f:id:sbc_suzuki10:20200827144235p:plain




UserごとのHostログイン時OSユーザの設定

BastionhostインスタンスのUserがHostにログインする際に使用するHostのOSユーザの設定を行ったため、次にHostにそのOSユーザを割り当てます。

f:id:sbc_suzuki10:20200827100552p:plain


「UsersまたはUser Groups」で目的のUser/User GroupのAction列、「Authorize HostsまたはAuthorize Host Groups」を押下します。

f:id:sbc_suzuki10:20200828181716p:plain


「Authorized Host Groups」のAuthorized Accounts列「None. Authorize accounts」を押下します。

f:id:sbc_suzuki10:20200826213305p:plain


OSユーザを入力します。

f:id:sbc_suzuki10:20200826213700p:plain


OSユーザが設定されました。
これでHostに接続可能となります。

f:id:sbc_suzuki10:20200826213818p:plain




ログイン時の見え方

接続先は以下になります。
Bastionhostコンソールか、BastionhostインスタンスのManage画面で確認可能です。

f:id:sbc_suzuki10:20200821105820p:plain


f:id:sbc_suzuki10:20200821105457p:plain


IPアドレスでも接続可能です。
Bastionhostコンソールで「Egress IP」にマウスオーバーすると「グローバルIPアドレスとプライベートIPアドレス」が表示されます。

f:id:sbc_suzuki10:20200827160129p:plain




また、今回の構成では管理者と一般ユーザでアクセス範囲を分け、アクセス制限を以下としました。

f:id:sbc_suzuki10:20200827194212p:plain



Windowsへの接続

www.alibabacloud.com

Windowsでmstsc.exeを実行し、Bastionhostインスタンスに接続します。
※デフォルトポートは63389になります。変更可能です。

f:id:sbc_suzuki10:20200827145342p:plain


f:id:sbc_suzuki10:20200827145428p:plain


ユーザとパスワードの認証画面が表示されます。
ここではBastionhostインスタンスでUserとして登録したRAMユーザを入力します。
パスワードもRAMユーザ作成時のパスワードになります。
※キーボード操作のみ有効となります。

f:id:sbc_suzuki10:20200821113336p:plain


ユーザおよびパスワードが正しい場合、MFAの認証画面が表示されます。
ここではBastionhostインスタンスでUserとして登録したRAMユーザのMFAを使用し、MFA認証を行います。
※キーボード操作のみ有効となります。

f:id:sbc_suzuki10:20200821113407p:plain


接続先Hostを選択します。
※キーボード操作のみ有効となります。

f:id:sbc_suzuki10:20200827150003p:plain


Host(ECS)にログインしました。

f:id:sbc_suzuki10:20200827145946p:plain




Linux

www.alibabacloud.com

PuTTYで接続します。
※デフォルトポートは60022になります。変更可能です。

f:id:sbc_suzuki10:20200825104401p:plain


ユーザ名、パスワード、MFAを入力します。

f:id:sbc_suzuki10:20200825104410p:plain


許可されたHostが表示されます。

f:id:sbc_suzuki10:20200826141157p:plain


ログインしました。

f:id:sbc_suzuki10:20200826141212p:plain




おわりに

今回はBastionhostインスタンスを介した同VPC内および別リージョンのECSに対しての接続や、
RAMユーザのMFAを利用したBastionhostインスタンスログイン時の2要素認証を行ってみました。

Bastionhostを利用することでユーザやグループごとのアクセス権限管理やキーペアやパスワードの管理、
踏み台サーバの保守、監視・記録ソフトの構築・導入などが不要となります。

f:id:sbc_suzuki10:20200828114739p:plain
ぜひBastionhostの導入をご検討ください!

次回はBastionhostのユーザ操作の監査機能を中心にご紹介させて頂きます。

www.sbcloud.co.jp