こんにちは。
PSソリューションズでOracle Cloud関係のお仕事をしている AK です。
さて、今回はOracle Cloudの「Oracle Cloud Infrastructure Classic」を使ってサーバを作成した前回 の記事の続きです。
前回はOracle Cloud Infrastructure ClassicのWebUIから順を追って設定し、サーバを作成するところまでを行いました。このサーバは、起動したもののネットワーク設定を端折ったため、外部からアクセスできない状態でした。そこで、今回はネットワーク設定を追加し、外部からアクセス可能となるまでをご説明します。
本当に外部からアクセスできない?
前回の記事作成から少し時間が経っているため、記事のために作成した環境は捨ててしまいました。下記サーバは前回と同じ手順でもう一度作成しています。
手軽に作って手軽に捨てられるのがクラウドのメリット。今回のサーバはプレーンなものですが、要件に応じて作り込んだサーバでも、簡単に作ったり捨てたり増やしたりできます。(別の機会に詳細な記事を掲載する予定です)
ところで、本当に外部から接続できないのでしょうか。念のため確認してみましょう。
外部に公開されるIPアドレスは「パブリックIP」と表現されています。
コマンドラインからpingしてみたところ、残念ながら疎通不可でした。やはり、外部からアクセスするには設定が必要なのです。
外部からアクセス可能にする最低限の設定
外部からアクセスするために必要な設定は「ネットワーク」のタブにあります。
まずは、この「ネットワーク」タブをクリック。「共有ネットワーク」の下に「セキュリティ・ルール」、「セキュリティ・リスト」、「セキュリティ・アプリケーション」、「セキュリティ・IPリスト」、「IP予約」が存在していることが確認できます。
「セキュリティ・リスト」を見てみると ”default” が存在しており、先ほど再作成したサーバが「関連するインスタンス」に表示されています。前回は詳しく触れませんでしたが、このセキュリティ・リストは、サーバ構築時の設定に出てきたものです。
セキュリティ・リストはマニュアルにて、以下のように説明されています。
<引用>
「セキュリティ・リスト」は、1つ以上の「セキュリティ・ルール」でソースまたは宛先として指定できるCompute Classicインスタンスのグループです。
(引用元:Oracle Help Center | Oracle Cloud Infrastructure Compute Classicの使用)
続いて、インバウンド・ポリシーとアウトバウンド・ポリシーの説明となります。
<引用>
セキュリティ・リストへ向かうトラフィックのフローは、インバウンド・ポリシーによって制御されます。 インバウンド・ポリシーは常にdenyに設定されているので、デフォルトでは、セキュリティ・リストの外部にあるソースからのトラフィックはセキュリティ・リストに含まれているインスタンスにアクセスできません。
(引用元:Oracle Help Center | Oracle Cloud Infrastructure Compute Classicの使用)
外部からアクセスできないのは、インバウンド・ポリシーがdenyであることに起因するようです。では、インバウンド・ポリシーをpermitにすればよいかというと、それは推奨されない設定のようです。
<引用>
Webコンソールでは、インバウンド・ポリシーをpermitには指定できません。 これは、インバウンド・ポリシーをpermitに設定して有効にすると、ファイアウォールが無効になるためです。
(引用元:Oracle Help Center | Oracle Cloud Infrastructure Compute Classicの使用)
マニュアルの最初に、セキュリティ・リストとセキュリティ・ルールの関連の話がありました。
セキュリティ・ルールはデフォルトでは作成されていないので、セキュリティ・ルールの画面から[ セキュリティ・ルールの作成 ] ボタンを押して作ってみます。
マニュアルにも出てきた、”ソース” や ”宛先” という欄があるのを確認できますでしょうか。
つまり、このように設定すればよいのです。
さて、”ソース” のセキュリティIPリストが「public-internet」、宛先のセキュリティ・リストが「default」のセキュリティ・ルールができました。
ここで再びpingしてみると…。
pingが通りました!外部からのアクセス成功です。
今度はSSHでログインします。Oracle Cloud Infrastructure ClassicのLinuxサーバには、「opc」というOSユーザが自動的に作成されています。
ログインにも成功しました。
サーバ構築前にやっておきたい!セキュリティの事前準備
セキュリティ・リスト“default”は、サーバ作成時にデフォルトで選択されています。そして、そのセキュリティ・リストに『鍵さえあれば外部のどこからでもアクセス可能にする』設定が含まれていることには不安が残りますよね。
(そのような設定であることを理解した上で使う分にはよいのですが、得てして忘れ去られがち)
そこで、セキュリティ・リスト“default”を無効化し、新規の外部から接続する用途のセキュリティ設定を作ります。
まずはセキュリティ・リストから。「共有ネットワーク > セキュリティ・リスト」の画面から [ セキュリティ・リストの作成 ] ボタンをクリックします。
このように入力しました。
次に、セキュリティ・ルールを作ります。「 共有ネットワーク > セキュリティ・ルール」の画面から [ セキュリティ・ルールの作成 ] ボタンをクリックします。
今度は、このように入力しました。
“宛先”に追加で作成したセキュリティ・リストが指定されていることと、セキュリティ・アプリケーションに「ssh」が指定されていることがポイントです。
併せて、既存の宛先が “default”となっているセキュリティ・ルールを編集し、“ステータス”を「無効化」しました。作成済のセキュリティ・ルールの更新では、この “有効 / 無効“のみ変更できます。
外部からのアクセスを遮断したい場合など、このセキュリティ・ルールを無効化するだけでアクセス不可とすることができます。もちろん、再度有効化するときも、ステータスを変更するだけで実行できます。
最後に、先ほど作成したセキュリティ・リストをインスタンスに付与します。
このインスタンスへのセキュリティ・リストの付与や削除は、サーバが起動中でも動的に実施することができ、わずか数秒程度で実機に反映されます。
さて、結果を確認してみましょう。
サーバにpingを打つと、タイムアウトとなりました。これはサーバに付与されたセキュリティ・リストの内、”default”は無効になっており、有効な“MySecList”はセキュリティ・アプリケーションでSSHのみ指定されているためです。
SSHの接続は成功しました。PingはできずSSHは許可されていることから、セキュリティ・リスト “MySecList”が有効であることが分かりました。
このように、セキュリティ要件を満たしたセキュリティ・ルールの設定を事前に行っておくことで、インスタンスの作成時に “MySecList”を選ぶだけで、この設定が新規サーバにも適用されます。
おわりに
今回は 1台のサーバのみに着目しましたが、Oracle Cloud Infrastructure Classicのネットワークの設定は、まだまだ深堀りできる項目です。セキュリティ・リストは、同じセキュリティ・リストを持つサーバ同士での疎通が可能であったり、セキュリティIPリストを用いたセキュリティ・ルールのソース・宛先の絞込みができたりなど…。
引き続き、Oracle Cloud Infrastructure Classicのネットワーク設定は話題にしていきますので、ご注目ください。