株式会社クニエ
シニアテクノロジーアーキテクト 阪田 義浩
シニアテクノロジーコンサルタント 芦田 剛士
- はじめに
- 必要な準備作業
- 基本システム作成
- HinemosManagerサーバ構築
- クライアントからのVPN接続
- HinemosManagerへの接続
- HinemosマネージャからAWSへのアクセス権限付与
- 補足:OpenSSLの脆弱性(CVE-2014-0160)対応
- お問い合わせ
作成日 | 2014/2/28 |
---|---|
更新日 | 2014/4/30 |
※OpenSSLの脆弱性-Heartbleedについて(CVE-2014-0160, 2014年4月7日報告)
本記事で使用するOpenVPNではOpenSSLを利用しておりますが、現在記載の手順では、この脆弱性の対策がとられたバージョンが導入されます。
2014年4月17日以前に本記事を参照し作業を行われた場合は、この脆弱性の影響を受ける可能性があります。OpenVPN Access Serverのバージョンが2.0.6未満の場合は、対策が必要となります。
導入済のOpenVPN Access Serverのバージョンを確認するには、本記事の「3.3.3.OpenVPN管理ページ」を参照し、OpenVPN管理ページにログインしてください。ログイン直後の「Status Overview」画面にてバージョンが確認できます。
脆弱性の対策は「補足:OpenSSLの脆弱性(CVE-2014-0160)対応」を参照して下さい。詳細については以下のサイトを参照して下さい。
https://community.openvpn.net/openvpn/wiki/heartbleed
1 はじめに
ここでは、Amazon Web Services (以下 AWS)環境へインターネットVPNによってセキュアに接続する方法を説明します。
Amazon VPCのプライベートサブネットに作成したHinemosManagerサーバへ、インターネット経由でセキュアに接続する環境を設定してみましょう。
Amazon VPCへのインターネットVPN接続イメージ
※インターネットVPN
インターネットを介し複数の拠点間を直接接続されたプライベートネットワークにつながっているかのようにプライベートネットワークを拡張する技術です。インターネット接続さえあればセキュリティを保ちながら容易にプライベートネットワークに接続することができます。
※Amazon VPC
AWSが提供する仮想プライベートネットワーク機能です。VPCの中に複数のサブネットワークを作成し、各サブネット内にサーバを設置できます。あるサブネットはインターネットへの公開用、別のサブネットはローカル専用等というように自由にネットワークを構成することができます。
1.1 本ドキュメントで作るシステム構成
表 1. 本記事で使用するサーバ/クライアント
サーバ/ クライアント |
概要 |
OS |
Private IP address |
Public IP address |
---|---|---|---|---|
Hinemos Manager サーバ |
・AWSのVPC上に作成 ・Hinemos公式のAMI(HinemosManager 4.1.0がインストールされたAMI)から作成 ※(2019/07/24 追記)Hinemos公式のAMIについては、現在公開停止となっています。 |
RedHat 6.4 |
172.31.1.101 ※1 |
なし |
VPN サーバ |
・AWSのVPC上に作成 ・OpenVPN公式のAMIから作成 |
Debian7.0 |
172.31.0.101※1 |
[作成時に自動付与] |
NAT サーバ |
・VPC作成ウィザードで自動で作成 |
Amazon Linux 2013.03 |
172.31.0.? [作成時に自動付与] |
[作成時に自動付与] |
Hinemos クライアント |
・作業用PCにインストール |
Windows xp Windows7 等 ※2 |
任意 |
任意 |
※1. IPアドレスは一例です。本記事では上記IPアドレスで説明します。
※2.Hinemosクライアントの対応OSの詳細は以下のURLをご参照ください。
http://www.hinemos.info/hinemos/env/requirements
本記事で設定する構成
1.2 注意事項
•本記事では、AWSの使用料金については記載しておりません。利用量、時間等に応じて使用料金が生じますのでご注意ください。
•本記事では、2014年2月時点での AWS Management Console の操作方法を記載しています。 AWSのサービス変更に伴い、これらの操作が変更となる可能性があります。 また、アカウントによって、AWS ManagementConsole の画面上に表示される内容や、操作方法が異なる場合があります。
1.3 免責事項
本記事により生じたいかなる損害に対しても、 株式会社クニエは一切の責任を負いません。
2. 必要な準備作業
2.1 VPCのIPアドレス体系
ここでは新規にVPC環境を作成します。VPCのIPアドレス体系は以下のとおりとします。
表 2. VPCのIPアドレス体系
設定項目 |
設定値 |
---|---|
VPCのCIDR |
172.31.0.0/16 |
パブリックサブネット CIDR |
172.31.0.0/24 |
パブリックサブネット 作成先リ-ジョン |
ap-northeast-1a |
プライベートサブネット CIDR |
172.31.1.0/24 |
プライベートサブネット 作成先リ-ジョン |
ap-northeast-1a |
VPNサーバのPrivate IP (バプリックサブネット内) |
172.31.0.101 |
HinemosManagerサーバのPrivate IP (プライベートサブネット内) |
172.31.1.101 |
※IPアドレスは一例です。本記事では上記IPアドレスで説明します。
2.2 Key Pair作成
2.2.1 Key Pairによる鍵認証方式
AWS上のサーバへは鍵認証によりログインします。Key Pair(公開鍵・秘密鍵)が合っている場合のみログインすることができます。ユーザ名・パスワードの認証よりも安全な認証方式です。
公開鍵はAWS側で保管され、EC2起動時にインスタンスにコピーされます。
秘密鍵はローカル側の安全な場所に保管してください。
2.2.2 Key Pair作成手順
① AWS Management Consoleにログインします。
② AWS Management Consoleのサービス一覧から『EC2』の選択
画面左上のServicesからサービス一覧を表示し、『EC2』を選択します。
画面右上のリージョンを選択する箇所がTokyoになっていることを確認して下さい。Tokyo以外になっている場合にはTokyoを選択してください。
以降の操作はすべてTokyoリージョンで実施します。
③ Key Pairの作成
左のメニューから『Key Pairs』を選択し、『Create Key Pair』 をクリックします。『Create Key Pair』ダイアログ画面の『Key Pair Name』に任意の名前(今回、mykeyとします)を入力し『Yes』をクリックします。
作成と同時に秘密鍵ファイル(今回はmykey.pem)が自動でダウンロードされますのでシステムの安全な場所に保存します。このファイルは再度ダウンロードすることはできないため、 注意して管理する必要があります。
3. 基本システム作成
3.1 VPC作成
3.1.1 VPC作成ウィザードの起動
AWS Management Consoleのホーム画面のVPCアイコンをクリックしてください。または、左上のServicesからサービス一覧を表示し、『VPC』を選択します。『VPC Dashboard』に表示されている『Start VPC Wizard』をクリックします。 ここでは『VPC with Public and Private Subnets』を選択し、『Continue』をクリックします。
『Create an Amazon Virtual Private Cloud』画面に設定する値は以下の表の通りにし『Create VPC』をクリックします。
表 3.『Create an Amazon Virtual Private Cloud』設定値
大項目 |
設定項目 |
設定値 |
備考 |
---|---|---|---|
One VPC with an Internet Gateway |
IP CIDR block |
172.31.0.0/16 |
表2の設定項目 「VPCのCIDR」 |
DNS Hostnames |
チェック入れる |
|
|
Two Subnets |
Public Subnet |
172.31.0.0/24 |
表2の設定項目 「パブリックサブネット CIDR」 |
Public Subnet Availability Zone |
ap-northeast-1a |
表2の設定項目 「パブリックサブネット 作成先リ-ジョン」 |
|
Private Subnet |
172.31.1.0/24 |
表2の設定項目 「プライベートサブネット CIDR」 |
|
Private Subnet Availability Zone |
ap-northeast-1a |
表2の設定項目 「プライベートサブネット 作成先リ-ジョン」 |
|
One NAT Instance with an Elastic IP Address |
Instance Type |
m1.small |
|
KeyPairName |
mykey |
「2.2.2. Key Pair作成手順」で作成したKeyPair |
|
Hardware Tenancy |
Tenancy |
default |
|
作成には数分かかります。「Your VPC has been successfully created」と表示されれば作成成功です。『close』をクリックし『Create an Amazon Virtual Private Cloud』画面を閉じてください。
注意:この時点からNATインスタンス(m1.small)が起動しています。課金が始まりますので料金が気になる方は、必要のないときであればインスタンスを停止して下さい。
3.1.2 VPC IDの確認
『VPC』ダッシュボード画面の左のメニューから『Your VPCs』をクリックします。先ほど作成したVPCの『VPC ID』をメモしておきます。(「3.2. Security Group作成」で使用します。)
3.2 Security Group作成
Security Groupとは、EC2インスタンスへのインバウンドトラフィック(外から内)、EC2インスタンスからのアウトバウンドトラフィック(内から外)を制限するファイアーウォール機能です。デフォルトではインバウンドトラフィックは閉ざされています。アウトバウンドトラフィックは、Destinationに「0.0.0.0/0」がデフォルトで設定されているので開放されています。
ここでは必要なインバウンドトラフィックに対してアクセスルール(ホワイトリスト)を定義します。
•プロトコル( TCP/UDP)
•宛先ポート
•アクセス元IP / Security Group
設定したルール以外のインバウンドトラフィックは破棄されます。
Security Group概念図
以下、作成していくSecurity Groupのアクセスルールは、本記事で作るシステム構成を実現するために必要なもののみとしています。用途に応じて追加のアクセスルールを設定してください。例えばHinemos Managerでシスログ監視を行う場合はTCP514を追加で設定する必要があります。
3.2.1 VPNサーバ用 Security Groupの作成
OpenVPNサーバのための新しいSecurity Groupを作成します。
AWS Management Consoleの『EC2』ダッシュボード画面を開いてください。(画面左上のServicesからEC2を選択)
左のメニューから『Security Groups』をクリックします。『Viewing:』欄には「VPC Security Groups」をセットしてださい。Security Groupsの一覧が表示されます。
左上に『Create Security Groups』ボタンがありますのでクリックします。
『Create Security Group』のダイアログに以下の内容を入力し、『Yes, Create』をクリックします。
表 4. VPNサーバ用 Security Group設定
設定項目 |
設定値 |
---|---|
Name |
任意(ここではVPN) |
Description |
任意(ここではfor VPN Server) |
VPC |
3.1.2で確認したVPC ID |
3.2.2 VPNサーバ用 Security GroupのInbound設定
VPNサーバ用 Security GroupにInboundのルールを追加します。
3.2.1で作成したVPNサーバ用 Security Group「VPN」を選択し画面下部の『Inbound』タブをクリックします。ルールを追加するには、『Create a new rule』『Source』欄に値を入力して『+Add Rule』をクリックします。
『Create a new rule』に「Custom TCP rule」や「Custom UDP rule」を選択した場合には『Port range』にも値の入力が必要になります。
以下の表の通りルールを追加してください。
表 5. VPNサーバ用 Security Group Inboundルール
Create a new rule |
Port range |
Source |
備考 |
---|---|---|---|
SSH |
22 |
0.0.0.0/0 |
ssh接続用ポート |
HTTPS |
443 |
0.0.0.0/0 |
OpenVPN clientからOpenVPN Server への接続で利用 |
Custom TCP rule |
943 |
0.0.0.0/0 |
OpenVPNの Admin Web UI用ポート |
Custom UDP rule |
1194 |
0.0.0.0/0 |
OpenVPN接続用ポート |
なお、Sourceが0.0.0.0/0だと、どこからでもアクセス可能となるため、接続元となるグローバルIPアドレスが特定できる場合にはSourceにグローバルIPアドレスを指定してください。
上記の4つのルールを追加したら「Apply Rule Changes」ボタンを押下して設定を確定します。
Outboundのルールはデフォルト設定のままとします。デフォルト設定では『ALL Port (Service)』に「ALL」、『Destination』に「0.0.0.0/0」が設定されていますので全ての通信が許可されます。
3.2.3 HinemosManager用Security Groupの作成
「3.2.1. VPNサーバ用 Security Groupの作成」と同じ手順でSecurity Groupsの一覧を表示してください。
左上に『Create Security Groups』ボタンをクリックして以下の内容のSerurity Groupを作成してください。
表 6. HinemosManager用Security Group設定
設定項目 |
設定値 |
---|---|
Name |
任意(ここではHinemos) |
Description |
任意 (ここではfor HinemosManager) |
VPC |
3.1.2で確認したVPC ID |
3.2.4 HinemosManager用 Security GroupのInbound設定
HinemosManagerサーバ用 Security GroupにInboundの以下のルールを追加します。
・HinemosクライアントからHinemosマネージャに対するHTTP通信を許可
(VPNServerからのHTTP通信を許可)
まず3.2.1で作成したVPNServer用のSecurity Groupの「Group ID」を確認します。
VPNServer用のSecurity Group「VPN」を選択します。
画面下部の『Details』タブをクリックします。 『Group ID』として表示された「sg- xxxxxxxx」はメモをしておいて下さい。
次に3.2.3で作成したHinemosManager用のSecurity Group「Hinemos」を選択します。画面下部の『Inbound』タブをクリックします。
ルールを追加するには、『Create a new rule』、『Source』欄に値を入力して『+Add Rule』をクリックします。
『Create a new rule』に「Custom TCP rule」や「Custom UDP rule」を選択した場合は『Port range』にも値の入力してください。
以下の表の通りルールを追加してください。『Source』にはVPNServer用のSecurity Group「VPN」の「Group ID」をセットしてください。
表 7. HinemosManager用 Security GroupのInbound設定
Create a new rule |
Port range |
Source |
備考 |
---|---|---|---|
SSH |
22 |
sg-xxxxxxxx |
ssh接続用ポート |
Custom TCP rule |
8080 |
sg-xxxxxxxx |
HinemosManagerへの接続ポート |
※Tips:Sourceには以下の値を設定することができます。
・個々の IP アドレス
・CIDR 表記の ネットワークアドレス
・同一VPC 内で定義したセキュリティグループ
・同一リージョンの別のAWS アカウントのセキュリティグループ
(AWSアカウントID をプレフィックスとして追加。
例えば、111122223333/sg-xxxxxxxx)
上記のルールを追加したら「Apply Rule Changes」ボタンを押して設定を確定します。
Outboundのルールはデフォルト設定のままとします。デフォルト設定では『ALL Port (Service)』に「ALL」、『Destination』に「0.0.0.0/0」が設定されていますので全ての通信が許可されます。
3.2.5 NAT用サーバ用のSecurity Group作成
VPCのプライベートサブネット内に起動するインスタンスは、インターネットとは通信できません。VPC のパブリックサブネットでネットワークアドレス変換(NAT)インスタンスを使用し、プライベートサブネットのインスタンスを有効にすれば、インターネットへアクセスすることができます。ただし、インターネットからのインバウンドトラフィックは受信できません。
「3.1.1. VPC作成ウィザードの起動」の操作にて、NATインスタンスは自動で作成されSecurity Group「default」が割り当てられています。ここではNATインスタンスのための新しいSecurity Groupを作成し、「default」から変更します。
「3.2.1. VPNサーバ用 Security Groupの作成」と同じ手順でSecurity Groupsの一覧を表示してください。
左上の『Create Security Groups』ボタンをクリックして以下の内容のSerurity Groupを作成してください。
表 8. NAT用サーバ用のSecurity Group設定
設定項目 |
設定値 |
---|---|
Name |
任意(ここではNAT) |
Description |
任意(ここではfor NAT Server) |
VPC |
3.1.2で確認したVPC ID |
3.2.6 NATサーバ用 Security GroupのInbound設定
NATサーバ用 Security GroupにInboundのルールを追加します。
3.2.5で作成したNATサーバ用 Security Groupを選択し画面下部の『Inbound』タブをクリックします。ルールを追加するには、『Create a new rule』『Source』欄に値を入力して『+Add Rule』をクリックします。
以下の表の通りルールを追加してください。
表 9. NAT用 Security GroupのInbound設定
Create a new rule |
Port range |
Source |
備考 |
---|---|---|---|
HTTP |
80 |
172.31.1.0/24 |
プライベートサブネットからのアクセスを許可 |
HTTPS |
443 |
172.31.1.0/24 |
上記のルールを追加したら「Apply Rule Changes」ボタンを押して設定を確定します。
Outboundのルールはデフォルト設定のままとします。デフォルト設定では『ALL Port (Service)』に「ALL」、『Destination』に「0.0.0.0/0」が設定されていますので全ての通信が許可されます。
3.2.7 NATインスタンスのSecurity Groupの変更
NATインスタンスに割り当てられているSecurity Groupを「default」から上記3.2.5で作成したNAT用 Security Groupへ変更します。
まずNATインスタンスのInstance IDを確認します。
AWS Management Consoleの『EC2』ダッシュボード画面を開いてください。(画面左上のServicesからEC2を選択)
左のメニューから『Elastic IPs』をクリックします。
『Scope』列の値が「3.1.2. VPC IDの確認」で確認したVPC IDになっているのがNATインスタンスですので、「Instance ID」をメモして下さい。
左のメニューから『Instances』をクリックします。
先ほどメモしたNATインスタンスの「Instance ID」の行を選択します。(『Name』列の左側にあるチェックボックスにチェックを入れます。)
ここで、NATインスタンスにNameを設定しておくと便利です。
NATインスタンスの『Name』列の値が空白になっています。空白箇所をクリックすると編集可能な状態になります。任意(ここではNAT)の値を入力してください。もしNameに値を設定したことで、『Name』列の左側にあるチェックボックスのチェックがはずれた場合は再度チェックを入れて下さい。
選択した状態で右クリックし(もしくは画面上部にある『Actions』をクリック)『Change Security Groups』を選択します。
『Change Security Groups』ダイアログにて,『Name』列が「default」のSecurity Groupにチェックがついていますので、チェックを外します
上記3.2.5で作成したNAT用 Security Group「NAT」にチェックを入れ『Assign Security Groups』をクリックします。
3.3 VPNサーバ構築
3.3.1 VPNサーバ用のEC2インスタンス作成
パブリックサブネット内にVPNサーバのインスタンスを起動させます。
本記事では、公開されているOpenVPN Access ServerのAMIを利用してVPNサーバをセットアップします。
AWS Management Consoleの『EC2』ダッシュボード画面を開いてください。(画面左上のServicesからEC2を選択)
左のメニューから『Instances』をクリックします。
次に画面左上方の青いボタン『Launch Instance』をクリックします。
① OpenVPN Access Server AMIの検索
『Step 1: Choose an Amazon Machine Image (AMI) 』画面の左のメニューから
『Community AMIs』を選択します。「Search community AMIs」と書かれた検索ボックスに「OpenVPN」と入力します。
「OpenVPN Access Server 2.0.2」が検索結果として表示されます。(2014年2月時点)
「OpenVPN Access Server 2.0.2」の右側にある『Select』をクリックします。
※2014年4月17日以降、OpenVPN Access Server2.0.7のAMIが公開されていますのでそちらをご利用ください。バージョン2.0.6以降はOpenSSLの脆弱性(CVE-2014-0160)の対策がとられています。
② インスタンスのタイプを選択
『Step 2: Choose an Instance Type』画面の左のメニューからお好みのインスタンスタイプを選択して下さい。検証用であれば『micro instances』で十分です。選択後、『Next: Configure Instance Details』をクリックします。
③ インスタンスの詳細設定
『Step 3: Configure Instance Details画面』の各項目に以下の表の通り入力します。入力後、『Next: Add Storage』をクリックします。
表 10. VPNサーバ Instance Details設定
設定項目 |
設定値 |
|
---|---|---|
Number of Instance |
1 |
|
Purchasing option |
- |
|
Network |
上記「3.1.2. VPC ID」で確認したVPC ID |
|
Subnet |
172.31.0.0/24 ap-northeast-1a |
|
Public IP |
チェック入れる Automatically assign a public IP address to your instances |
|
IAM role |
None |
|
Shutdown behavior |
Stop |
|
Enable termination protection |
チェック入れる |
|
Monitoring |
チェック入れない |
|
Tenancy |
Shared tenancy |
|
Network interfacesのDevice「eth0」 |
Network Interface |
New network interface |
Subnet |
-(自動でセットされる) |
|
Primary IP |
172.31.0.101 |
|
Secondary IP addresses |
設定しない |
|
Advanced Details |
デフォルト設定のまま |
④ ストレージ設定
『Step 4: Add Storage』画面では、デフォルト設定のままとし『Next: Tag Instance』をクリックします。
⑤ タグの設定
『Step 5: Tag Instance』画面では以下のとおり入力します。
表 11. VPNサーバ Tag Instance設定
Key |
Value |
---|---|
Name |
任意(ここではVPNServer) |
入力後、『Next: Configure Security Group』をクリックします。
⑥ Security Groupの設定
『Step 6: Configure Security Group』画面では、『Assign a security group』に「Select an existing security group」を選んで下さい。
下に「3.2. Security Group作成」で作成したSecurity Group一覧が表示されますので「VPN」を選んで下さい。
下に「3.2.2. VPNサーバ用 Security GroupのInbound設定」で設定したアクセスルールが表示されます。
画面右下にある『Review and Launch』をクリックします。
⑦ インスタンス起動
『Step 7: Review Instance Launch画面』では、上記① から⑥まで入力してきた内容を確認します。
警告「Improve your instance's security. Your security group, VPN, is open to the world.」と表示されます。VPNサーバへ接続元するグローバルIPアドレスが特定できる場合は、Security Group「VPN」のSourceの値を「0.0.0.0/0」からグローバルIPアドレスへ設定することで警告の表示はなくなります。難しい場合が多いと思いますので、ここではこのままにしておきます。
確認後『Launch』をクリックします。
『Select an existing key pair or create a new key pair』 のダイアログが表示されます。上段のコンボボックスでは「Choose an existing key pair」を選択します。下段のコンボボックスでは、「2.2. Key Pair作成」で作成した Key Pair を選択します。注意事項に同意してチェックをした後、『Launch Instances』をクリックします。
『Launch Status』画面にて「Your instance is now launching」のメッセージを確認後、画面右下にある『View Instances』をクリックします。
⑧ インスタンス正常起動確認
EC2インスタンスの一覧が表示され、その中にVPNのインスタンスが確認できます。数分すると『Status Checks』列の値が「2/2 checks passed」になれば正常に起動しています。
以上で、VPNサーバ用のEC2インスタンス作成作業は完了です。
3.3.2 VPNサーバのOS上の設定
ターミナルエミュレータソフトでOSへログインします。ここでは、PuTTYを使用した場合で説明しています。
初期のログインユーザはrootです。rootでログイン後の作業内容は以下の通りです。
• OpenVPN のセットアップ
• 作業用のOSユーザを作成
• OpenVPN用ユーザのパスワードの設定
• 作業用のOSユーザ以外のOSへのログイン禁止の設定
※PuTTY を使用して Amazon EC2 インスタンスに接続する方法については以下のサイトを参考にしてください。
① VPNサーバ用インスタンスのPublic IPの確認
AWS Management Consoleの『EC2』ダッシュボード画面を開いてください。(画面左上のServicesからEC2を選択)
左のメニューから『Instances』をクリックします。
『Name』が「VPN」となっているインスタンスを選択します。(『Name』の左側にあるチェックボックスにチェックを入れます。)
画面下部の『Description』タブ画面内の右側にある『Public IP』のIPアドレスを確認します。※Public IPはインスタンスの停止・起動を行う度にIPアドレスが変更されまのでご注意下さい。IPアドレスを固定したい場合は、Elastic IPを割り当てる必要があります。
② OSへログイン
上記①で確認したIPアドレスにPuTTYよりOSにログインします。ユーザIDはroot、パスフレーズはなしです。初回ログイン時は"Putty Security Alert" ダイアログが表示されます。これは接続先情報を保存するかを問い合わせるダイアログです。[はい(Yes)]ボタンを押下します。
③ OpenVPN Access Server Setup Wizard
ログイン後、「OpenVPN Access Server Setup Wizard」が以下のとおり開始されます。
login as: root Authenticating with public key "imported-openssh-key"
OpenVPN Access Server Initial Configuration Tool ------------------------------------------------------ OpenVPN Access Server End User License Agreement (OpenVPN-AS EULA)
1. Copyright Notice: OpenVPN Access Server License; Copyright (c) 2009-2013 OpenVPN Technologies, Inc.. All rights reserved.
<途中略>
Please enter 'yes' to indicate your agreement [no]:yes <=「yes」を入力 |
「yes」を入力します。
以降のダイアログではすべてデフォルトのままの設定としますので、都度「ENTER」を押下してください。
Once you provide a few initial configuration settings, OpenVPN Access Server can be configured by accessing its Admin Web UI using your Web browser.
Will this be the primary Access Server node? (enter 'no' to configure as a backup or standby node) > Press ENTER for default [yes]: <=「ENTER」を押下
Please specify the network interface and IP address to be used by the Admin Web UI: (1) all interfaces: 0.0.0.0 (2) eth0: 172.31.0.101 Please enter the option number from the list above (1-2). > Press Enter for default [2]: <=「ENTER」を押下
Please specify the port number for the Admin Web UI. > Press ENTER for default [943]: <=「ENTER」を押下
Please specify the TCP port number for the OpenVPN Daemon > Press ENTER for default [443]: <=「ENTER」を押下
Should client traffic be routed by default through the VPN? > Press ENTER for default [yes]: <=「ENTER」を押下
Should client DNS traffic be routed by default through the VPN? > Press ENTER for default [yes]: <=「ENTER」を押下
Use local authentication via internal DB? > Press ENTER for default [no]: <=「ENTER」を押下
Private subnets detected: ['172.31.0.0/24']
Should private subnets be accessible to clients by default? > Press ENTER for default [yes]: <=「ENTER」を押下
To initially login to the Admin Web UI, you must use a username and password that successfully authenticates you with the host UNIX system (you can later modify the settings so that RADIUS or LDAP is used for authentication instead).
You can login to the Admin Web UI as "openvpn" or specify a different user account to use for this purpose.
Do you wish to login to the Admin UI as "openvpn"? > Press ENTER for default [yes]: <=「ENTER」を押下
> Please specify your OpenVPN-AS license key (or leave blank to specify later): <=「ENTER」を押下 |
以上でOpenVPNの初期化が開始されます。数分後に以下の画面が表示されたら「OpenVPN Access Server Setup Wizard」は終了です。
Initial Configuration Complete!
You can now continue configuring OpenVPN Access Server by directing your Web browser to this URL:
https://xxx.xxx.xxx.xxx:943/admin <=xxx.xxx.xxx.xxxはIPアドレス Login as "openvpn" with the same password used to authenticate to this UNIX host.
During normal operation, OpenVPN AS can be accessed via these URLs: Admin UI: https:// xxx.xxx.xxx.xxx:943/admin <=xxx.xxx.xxx.xxxはIPアドレス Client UI: https:// xxx.xxx.xxx.xxx:943/ <=xxx.xxx.xxx.xxxはIPアドレス
See the Release Notes for this release at: http://www.openvpn.net/access-server/rn/openvpn_as_2_0_2.html
root@OVPNAS20:~# <=プロンプトが表示 |
④ システムのアップデート
以下のコマンドでシステムのアップデートを行います。通常数秒から数分で処理は終了します。
#apt-get update #apt-get upgrade
|
⑤ 管理用ユーザの作成
以下のコマンドより管理用のユーザ(ここではvpnadmin)を作成しパスワードを設定します。
ここでパスワードを設定してください。
# useradd -m vpnadmin <=ユーザ作成 # passwd vpnadmin <=パスワード設定 Enter new UNIX password: <=任意のパスワードを入力 Retype new UNIX password: <=再度パスワードを入力 passwd: password updated successfully |
⑥ 管理用ユーザのsudoコマンドの設定
以下のコマンドより管理用のユーザvpnadminがsudoコマンドを利用できるようにします。事前にバックアップを取得したのち変更します。
#cp /etc/sudoers /etc/sudoers.org #vi /etc/sudoers |
vpnadmin ALL=(ALL:ALL) ALL」を追記します。
設定内容
root ALL=(ALL:ALL) ALL vpnadmin ALL=(ALL:ALL) ALL <=この行を追記 |
⑦ 管理用ユーザへの公開鍵の配置
以下のコマンド操作より、管理用のユーザvpnadminのホームディレクトリ配下に公開鍵を配置します。
#mkdir /home/vpnadmin/.ssh #cp /root/.ssh/authorized_keys /home/vpnadmin/.ssh/authorized_keys |
ファイル所有者・パーミッションを変更します。
#chgrp -R vpnadmin /home/vpnadmin/.ssh #chown -R vpnadmin /home/vpnadmin/.ssh #chmod 700 /home/vpnadmin/.ssh #chmod 600 /home/vpnadmin/.ssh/authorized_keys |
以上でvpnadminユーザでOSにログインできるようになりました。rootユーザはOSからログオフしておきましょう。
⑧ 作業用ユーザでOSへログイン
管理用ユーザvpnadminでVPNサーバにログインをしてください。
⑨ openvpnユーザのパスワード設定
以下のコマンドによりopenvpnユーザのパスワードを設定します。(openvpnというユーザは既に作成されています。)
$ sudo passwd openvpn [sudo] password for vpnadmin: Enter new UNIX password: <=任意のパスワードを入力 Retype new UNIX password: <=再度パスワードを入力 passwd: password updated successfully |
⑩ rootとopenvpnユーザのログイン禁止設定
VPNサーバへ作業用ユーザvpnadminのみがログイン許可とする設定をします。
(rootとopenvpnのログインは不可となります。)
以下のコマンドより作業用OSへのログインのみを許可します。
$sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org $sudo vi /etc/ssh/sshd_config |
設定内容
AllowUsers vpnadmin <=最終行に追加
|
sshのサービスを再起動し設定を反映します。
$sudo service ssh restart |
以上の設定でVPNサーバへリモートログインできるのはvpnadminだけとなりました。念のため、現在のセッションをログオフする前に、vpnadminでのログインを試しておきましょう。rootでログインできないことも確認して下さい。
以上でOS上の設定作業は終了です。
3.3.3 OpenVPN管理ページからの設定
ブラウザよりOpenVPNの管理ページへアクセスし、プライベートサブネットへのアクセスを許可する設定を行います。
① OpenVPNの管理ページへ接続
ブラウザから以下のアドレスに接続します。
https://<Public IP>:943/admin
<Public IP>は上記「3.3.2. OpenVPN設定」の「①VPNサーバ用インスタンスのPublic IPの確認」で確認したIPアドレスを指定してください。
「このサイトのセキュリティ証明書は信頼できません」という警告が表示された場合は、『このまま続行』ボタンを押して続行してください。
「Admin Login」画面の『Username』に「openvpn」、『Password』に上記「3.3.2. OpenVPN設定」の「⑨openvpnユーザのパスワード設定」で設定したパスワードを入力します。『Sign In』をクリックします。
ユーザライセンス同意画面「OpenVPN Access Server End User License Agreement (OpenVPN-AS EULA)」の内容を確認して『Agree』をクリックします。
② VPCのプライベートサブネットへのアクセスを許可
VPCのプライベートサブネットへのアクセスを許可します。
画面左メニューの『VPN Settings』をクリックします。
画面中央の『Routing』-『Specify the private subnets to which all clients should be given access (as 'network/netmask_bits', one per line) 』のテキストボックス内に
VPC内のPrivate SubnetのCIDR(表 3のPrivate Subnetの設定値)を追加します。
VPN Settings画面
入力後、ぺージの一番下までスクロールし、「Save Settings」をクリックします。
「Save Setting」ボタン押下
設定内容を「適用」する為、「Update Running Server」をクリックします。
「Update Running Sever」ボタン押下
以上でOpenVPNサーバの設定は完了です。画面右上にある『Logout』をクリックしてログアウトしてください。
4. HinemosManagerサーバ構築
プライベートサブネット内にHinemosManagerのインスタンスを起動させます。
本記事では、公開されているAMIを利用してHinemosマネージャをセットアップします。
4.1 EC2インスタンス作成
AWS Management Consoleの『EC2』ダッシュボード画面を開いてください。
(画面左上のServicesからEC2を選択)
左のメニューから『Instances』をクリックします。
次に画面左上方の青いボタン『Launch Instance』をクリックします。
4.1.1 HinemosのAMIの検索
『Step 1: Choose an Amazon Machine Image (AMI) 』画面の左のメニューから
『Community AMIs』を選択します。「Search community AMIs」と書かれた検索ボックスに「AMI_HINEMOS」と入力します。
いくつかのHinemosのAMIが検索結果としてリストアップされます。 その中に「AMI_HinemosManager410_CloudV200」が表示されます。(2014年2月時点)
「AMI_HinemosManager410_CloudV200」の右側にある『Select』をクリックします。
4.1.2 インスタンスのタイプを選択
『Step 2: Choose an Instance Type』画面の左のメニューからお好みのインスタンスタイプを選択して下さい。「t1.micro」でHinemos Managerを動作させるためには追加の設定調整が必要になります。ここでは『m1.small』を選択します。『Next: Configure Instance Details』をクリックします。
4.1.3 ネットワークの設定
『Step 3: Configure Instance Details画面』の各項目に以下の表の通り入力します。入力後、『Next: Add Storage』をクリックします。
表 12. HinemosManager Instance Details設定項目
設定項目 |
設定値 |
|
---|---|---|
Number of Instance |
1 |
|
Purchasing option |
- |
|
Network |
上記「3.1.2. VPC IDの確認」で作成した VPC ID |
|
Subnet |
172.31.1.0/24 ap-northeast-1a |
|
Public IP |
チェック入れない Automatically assign a public IP address to your instances |
|
IAM role |
None |
|
Shutdown behavior |
Stop |
|
Enable termination protection |
チェック入れる |
|
Monitoring |
チェック入れない |
|
Tenancy |
Shared tenancy |
|
Network interfacesのDevice「eth0」 |
Network Interface |
New network interface |
Subnet |
-(自動でセットされる) |
|
Primary IP |
172.31.1.101 |
|
Secondary IP addresses |
設定しない |
|
Advanced Details |
デフォルト設定のまま |
4.1.4 ストレージ設定
『Step 4: Add Storage』画面では、デフォルト設定のままとし『Next: Tag Instance』をクリックします。
4.1.5 タグの設定
『Step 5: Tag Instance』画面では以下のとおり入力します。
表 13. HinemosManager Tag Instance設定項目
Key |
Value |
---|---|
Name |
任意(ここではHinemosManager) |
入力後、「Next: Configure Security Group」をクリックします。
4.1.6 Security Groupの設定
『Step 6: Configure Security Group』画面では、『Assign a security group』に「Select an existing security group」を選んで下さい。
下に「3.2. Security Group作成」で作成したSecurity Group一覧が表示されますので「Hinemos」を選んで下さい。
下に「3.2.4. HinemosManager用 Security GroupのInbound設定」で設定したアクセスルールが表示されます。
画面右下にある『Review and Launch』をクリックします。
4.1.7 インスタンス起動
『Step 7: Review Instance Launch画面』では、上記4.1.1 から 4.1.6まで入力してきた内容を確認します。確認後「Launch」をクリックします。
『Select an existing key pair or create a new key pair』 のダイアログが表示されます。上段のコンボボックスでは「Choose an existing key pair」を選択します。下段のコンボボックスでは、「2.2. Key Pair作成」で作成した KeyPait を選択します。注意事項に同意してチェックをした後、『Launch Instances』をクリックします。
『Launch Status』画面で「Your instance is now launching」のメッセージが表示されます。画面右下にある『View Instances』をクリックします。
4.1.8 インスタンス正常起動確認
EC2インスタンスの一覧が表示され、その中にHinemosManagerのインスタンスが表示されます。数分で『Status Checks』列の値が「2/2 checks passed」になり起動完了です。
以上で、HinemosManagerのEC2インスタンスの作成が完了しました。
5. クライアントからのVPN接続
5.1 OpenVPN Clientインストール
以下のサイトより「OpenVPN Desktop Client Download for Windows」をダウンロードし、インストールします。
http://www.openvpn.net/index.php/openvpn-client/downloads.html
5.2 VPN接続確認
OpenVPN Clientを起動し、『Server Adderss』にVPNServerのPublic IPアドレスを入力し『Connect』をクリックします。
(VPNServerのPublic IPアドレスは「3.3.2. OpenVPN設定」の「①VPNサーバ用インスタンスのPublic IPの確認」で確認したIPアドレスです。)
「Login」ダイアログが表示されたら、「Username」に「openvpn」、「Password」には「3.3.2.10.OpenVPNユーザのパスワード設定」で設定したパスワードを入力して「Connect」をクリックします。
OpenVPN Client起動時の画面
初回ログイン時は「Untrusted Security Certificate」のダイアログ画面が表示されます。
「Always」ボタンをクリックします。
以上でVPCとのVPN接続が実現されました。この状態でVPC内にあるEC2インスタンスのプライベートアドレス宛へのアクセスが可能になっています。
6. HinemosManagerへの接続
6.1 HinemosClient4.1.1のインストール
作業用PCにHinemosClientをインストールしてください。
インストールモジュールを下記から入手しインストールしてください。
https://sourceforge.jp/projects/hinemos/releases/
インストールモジュール(32bit):HinemosClientInstaller-4.1.1_win32.msi
インストールモジュール(64bit):HinemosClientInstaller-4.1.1_win64.msi
インストール方法については下記からマニュアルをダウンロードして確認をして下さい。
http://sourceforge.jp/projects/hinemos/releases/?package_id=4738
インストールマニュアル:install.pdf
6.1.1 HinemosManagerのPrivateIPの確認
AWS Management Consoleの『EC2』ダッシュボード画面の左のメニューから『Instances』を選択します。
『Name』が「HinemosManager」となっているインスタンスを選択します。(『Name』列の左側にあるチェックボックスにチェックを入れます。)
画面下部の『Description』タブ画面内の左側にある『Private IPs』のIPアドレスを確認します。
6.1.2 HinemosManagerへの接続確認
Hinemos Clientを起動し、「接続[ログイン]」画面に以下の表にある値を入力し「ログイン」ボタンを押下してください。
表 14. HinemosManagerへの接続確認
項目 |
入力値 |
---|---|
ユーザID |
hinemos |
パスワード |
hinemos |
接続先URL |
http://<HinemosManagerのPrivateIP>:8080/HinemosWS/ |
以下の画面が表示されましたらログインが成功しています。
Hinemos Managerログイン成功時の画面
以上でAmazon VPCのプライベートサブネットに作成したHinemosManagerサーバへ、インターネット経由でセキュアに接続する環境の作成が完了しました。
7.HinemosのAWS管理機能の設定
今回設定したHinemosManagerには、Hinemosクラウド管理オプションStandard for AWSが含まれています。このオプション機能はAWSのエンドポイントを介して、AWSのリソースを制御します。今回構築した環境では、NATサーバを経由してエンドポイントにアクセスします。
HinemosManagerからインターネットへのアクセス経路
7.1 HinemosClinetへHinemosクラウド管理オプションのインストール
Hinemosクラウド管理オプションはHinemosClientにも追加インストールが必要です。
インストールモジュールを下記から入手しインストールしてください。
http://sourceforge.jp/projects/hinemos/releases/
インストールモジュール:CloudClientStandardAWS_v2.0.1.zip
マニュアル:Hinemos_Option_Cloud_2_0_Std_AWS.pdf
7.2 AWSアカウントの登録
7.2.1 HinemosManagerへの接続確認
「6.1.2. HinemosManagerへの接続確認」を参照し、HinemosClientよりHinemosManagerにログインして下さい。
7.2.2 クラウドパースペクティブビューの表示
HinemosClient画面の上にあるメニューバーの「パースペクティブ」より「パースペクティブ表示」を選択します。
「Open Perspective」ダイアログ画面内の「クラウド」を選択し「OK」ボタンをクリックします。
Open Perspectiveダイアログ画面
7.2.3 クラウド[アカウントリソース]登録
クラウド[アカウントリソース]ビューの右側にある登録ボタンをクリックします。
クラウド[アカウントリソース]ビュー
クラウド[アカウントリソース登録・変更]ダイアログに以下の表 15 「クラウド[アカウントリソース] 設定項目」の内容を入力し「OK」ボタンをクリックします。
クラウド[アカウントリソース登録・変更]ダイアログ画面
表 15. クラウド[アカウントリソース] 設定項目
設定項目 |
設定値 |
---|---|
アカウントリソースID |
任意(ここでは、AWS) |
アカウントリソース名 |
任意(ここでは、AWSアカウント) |
アカウントリソース説明 |
任意(ここでは、AWSアカウント) |
クラウドサービスID |
「Amazon Web Services」を選択する |
クラウドユーザID |
任意(ここでは、AWS_Master) |
クラウドユーザ名 |
任意(ここでは、AWSマスター) |
クラウドユーザ説明 |
任意(ここでは、AWSマスター) |
アクセスキー |
AWS アカウントのアクセスキーIDを入力する |
シークレットキー |
アクセスキーのペアとなるシークレットアクセスキーを入力する |
割当ロールID |
クラウドユーザと紐付ける、HinemosのロールIDを指定する(ここではALL_USERSを選択する) |
確認画面が表示されたら「OK」ボタンをクリックします。
アカウントリソース作成確認ダイアログ画面
以下のメッセージが作成されましたら正常にアカウントリソースの作成が完了しています。「OK」ボタンをクリックします。
アカウントリソース成功画面
数分するとクラウドパースペクティブの左にあるクラウド[スコープ]ビューより本記事で作成したサーバを含むインスタンスの一覧を確認することができます。
クラウド[スコープ]ビュー
以上で、Hinemosクラウド管理オプション Standard for AWSを使用してAWSを管理する準備が整いました。これでHinemosからEC2やEBSの操作や管理もできるようになりましたので、ぜひ試してみてください。
補足:OpenSSLの脆弱性(CVE-2014-0160)対応
1. VPNサーバの対応
OpenSSLの脆弱性(CVE-2014-0160)への対策として以下を実施します。
•ライブラリの更新
•サーバの秘密鍵、証明書の再生成(OpenVPN初期化により実施)
ターミナルエミュレータソフトでVPNサーバへログインします。ログイン方法の詳細については、本ページの「3.3.2 VPNサーバのOS上の設定」を参照してください。
ログインユーザについて、本ページの「3.3.2 VPNサーバのOS上の設定」で管理用ユーザvpnadminのみログインを許可している場合はrootユーザでログインができないのでご注意ください。
1.1 ライブラリの適用
以下のコマンドで、ライブラリをダウンロードします。
$ cd /tmp $ sudo curl -O http://swupdate.openvpn.org/hb/Debian/7/amd64/libcrypto.so.1.0.0 [sudo] password for vpnadmin: <=パスワード入力 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1914k 100 1914k 0 0 9.8M 0 --:--:-- --:--:-- --:--:-- 9.8M
$ sudo curl -O http://swupdate.openvpn.org/hb/Debian/7/amd64/libssl.so.1.0.0 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 429k 100 429k 0 0 5490k 0 --:--:-- --:--:-- --:--:-- 5577k |
以下のコマンドで、ライブラリをバックアップします。
$ mkdir /tmp/lib_bak $ sudo cp -p /usr/local/openvpn_as/lib/libcrypto.so.1.0.0 /tmp/lib_bak/ $ sudo cp -p /usr/local/openvpn_as/lib/libssl.so.1.0.0 /tmp/lib_bak/ $ ls -lt /tmp/lib_bak/ total 2328 -rwxr-xr-x 1 root root 1942944 Nov 1 16:15 libcrypto.so.1.0.0 -rwxr-xr-x 1 root root 436160 Nov 1 16:14 libssl.so.1.0.0 |
以下のコマンドで、OpenVPNのサービスを停止し、ダウンロードしたライブラリを配置します。
$ sudo /etc/init.d/openvpnas stop * Stopping openvpnas openvpnas [ OK ] $ sudo cp /tmp/libcrypto.so.1.0.0 /usr/local/openvpn_as/lib/ $ sudo cp /tmp/libssl.so.1.0.0 /usr/local/openvpn_as/lib/ $ ls -lt /usr/local/openvpn_as/lib/libcrypto.so.1.0.0 -rwxr-xr-x 1 root root 1960304 Apr 14 07:08 /usr/local/openvpn_as/lib/libcrypto.so.1.0.0 $ ls -lt /usr/local/openvpn_as/lib/libssl.so.1.0.0 -rwxr-xr-x 1 root root 439760 Apr 14 07:08 /usr/local/openvpn_as/lib/libssl.so.1.0.0 |
以上でライブラリの適用は完了です。
1.2 秘密鍵、サーバ証明書の再生成
以下のコマンドにより、OpenVPNの初期化をします。初期化の過程で秘密鍵、サーバ証明書が再生成されます。
$ cd /usr/local/openvpn_as/bin $ sudo ./ovpn-init Detected an existing OpenVPN-AS configuration. Continuing will delete this configuration and restart from scratch. Please enter 'DELETE' to delete existing configuration: DELETE <=DELETEを入力 Detected an existing OpenVPN-AS configuration. Continuing will delete this configuration and restart from scratch. Please enter 'DELETE' to delete existing configuration: DELETE Stopping openvpnas daemon...
OpenVPN Access Server Initial Configuration Tool ------------------------------------------------------ OpenVPN Access Server End User License Agreement (OpenVPN-AS EULA)
1. Copyright Notice: OpenVPN Access Server License; Copyright (c) 2009-2013 OpenVPN Technologies, Inc.. All rights reserved.
<途中略>
Please enter 'yes' to indicate your agreement [no]:yes <=yesを入力
|
以降のダイアログではすべてデフォルトのままの設定としますので、都度「ENTER」を押下してください。
Once you provide a few initial configuration settings, OpenVPN Access Server can be configured by accessing its Admin Web UI using your Web browser. Will this be the primary Access Server node? (enter 'no' to configure as a backup or standby node) > Press ENTER for default [yes]: <=「ENTER」を押下 Please specify the network interface and IP address to be used by the Admin Web UI: (1) all interfaces: 0.0.0.0 (2) eth0: 172.31.0.101 Please enter the option number from the list above (1-2). > Press Enter for default [2]: <=「ENTER」を押下 Please specify the port number for the Admin Web UI. > Press ENTER for default [943]: <=「ENTER」を押下 Please specify the TCP port number for the OpenVPN Daemon > Press ENTER for default [443]: <=「ENTER」を押下 Should client traffic be routed by default through the VPN? > Press ENTER for default [yes]: <=「ENTER」を押下 Should client DNS traffic be routed by default through the VPN? > Press ENTER for default [yes]: <=「ENTER」を押下 Use local authentication via internal DB? > Press ENTER for default [no]: <=「ENTER」を押下 Private subnets detected: ['172.31.0.0/24'] Should private subnets be accessible to clients by default? > Press ENTER for default [yes]: <=「ENTER」を押下 To initially login to the Admin Web UI, you must use a username and password that successfully authenticates you with the host UNIX system (you can later modify the settings so that RADIUS or LDAP is used for authentication instead). You can login to the Admin Web UI as "openvpn" or specify a different user account to use for this purpose. Do you wish to login to the Admin UI as "openvpn"? > Press ENTER for default [yes]: <=「ENTER」を押下 > Please specify your OpenVPN-AS license key (or leave blank to specify later): <=「ENTER」を押下 |
以上でOpenVPNの初期化が開始されます。数分後に以下の画面が表示されたら「OpenVPN Access Server Setup Wizard」は終了です。
Initializing OpenVPN... Adding new user login... useradd -s /sbin/nologin "openvpn" Writing as configuration file... Perform sa init... Wiping any previous userdb... Creating default profile... Modifying default profile... Adding new user to userdb... Modifying new user as superuser in userdb... Getting hostname... Hostname: OVPNAS20 Preparing web certificates... <=秘密鍵、証明書の生成 Getting web user account... Adding web group account... Adding web group... Adjusting license directory ownership... Initializing confdb... Generating init scripts... Generating PAM config... Generating init scripts auto command... Starting openvpnas... NOTE: Your system clock must be correct for OpenVPN Access Server to perform correctly. Please ensure that your time and date are correct on this system. Initial Configuration Complete! You can now continue configuring OpenVPN Access Server by directing your Web browser to this URL: https://172.31.0.101:943/admin Login as "openvpn" with the same password used to authenticate to this UNIX host. During normal operation, OpenVPN AS can be accessed via these URLs: Admin UI: https://172.31.0.101:943/admin Client UI: https://172.31.0.101:943/ See the Release Notes for this release at: http://www.openvpn.net/access-server/rn/openvpn_as_2_0_2.html |
後は、「AWSへのインターネットVPNアクセス」の「3.3.3.OpenVPN管理ページからの設定」を参照して、VPCのプライベートサブネットへのアクセスを許可する設定を実施してください。
以上でVPNサーバでの作業は終了です。
2. OpenVPNクライアントの対応
Windows版OpenVPNクライアントのインストーラにはOpenSSLが含まれていますが「AWSへのインターネットVPNアクセス」の記事中の以下のサイトよりダウンロードした「OpenVPN Desktop Client Download for Windows」を利用している場合は今回の脆弱性による影響はありません。
http://www.openvpn.net/index.php/openvpn-client/downloads.html
OpenVPNのインストール先ディレクトリにあるlibeay32.dllの製品バージョンが1.0.1から1.0.1fである場合は今回の脆弱性による影響を受けますが、「OpenVPN Desktop Client Download for Windows」に含まれるlibeay32.dll のバージョンは0.98nのため対応は必要ありません。
お問い合わせ