[Cloud, Network] Networking 102

原文はこちら。
https://blogs.oracle.com/pshuff/entry/networking_102

今週は基本的なネットワークのチュートリアルを進めていきます。まずは簡単なネットワーク設定を理解することが重要です。そうすれば、より複雑なネットワーク設定を実施することができます。Oracle Linuxインスタンスを展開し、Apache HTTP Serverをインストールし、80/tcpを公開するところから始めます。これは簡単な作業ですが、自分のインスタンスのIPアドレスを見つける方法、OSやComputeクラウドコンソールでポートを開ける方法、デスクトップや続けて作成する2個目のインスタンスからこのインスタンスに接続する方法を理解する上で有効な作業です。この後、2個のOracle Linuxインスタンスを作成し、Apache HTTP Serverを一方のインスタンスに構成します。ただし、そのインスタンスのみがクラウドの他のインスタンスと通信できるようにします。

Step 1: 

Oracle Computeコンソールを開き、インスタンスを作成します(今回はOracle Linux 6.6のインスタンスを作成)。特別な設定をせずにデフォルトの設定を受け入れます。このサーバインスタンスをWebServer1と呼ぶことにします。SSH接続できるようにデフォルトネットワーク接続を設定します。

数分後、22/tcpが開いているLinuxインスタンスが立ち上がり、SSHでサーバに接続することができます。Apache HTTP Serverはインストールされておらず、80/tcpはOSおよびクラウドネットワークインターフェースでロックダウンされています。

Step 2: 

SSHでインスタンスに接続し、コマンドラインでアクセスできることを確認します。opcユーザーとして接続し、rootとしてコマンドを実行します。この例では、Mac OSのターミナルでSSHコマンドを使って実施しています。Windowsであればputtyを使って接続を作成することが簡単にできるはずです。


Step 3: 

Linuxインスタンスにyumを使ってApache HTTP Serverをインストールします。ソフトウェアをapache.orgからダウンロードし、インストールすることは簡単にできたでしょうが、yumを使うと、1ステップで迅速かつ簡単にインストールし構成することができます。sudoコマンドがoracleとしてログインしていると使えないため、前のステップでopcユーザーとしてログインしていることを確認しておく必要があります。このyumコマンドを初めて実行する場合、様々なカーネルバージョンのためのマニフェスト全てをダウンロードし、依存性をチェックする必要があるため、少々時間がかかります。httpdパッケージには依存性はあまりありませんので、インストールは比較的クリーンです。マニフェストのダウンロードに時間はかかりますが、実際のインストールはそれほど時間がかからないはずです。


Step 4: 

index.htmlを編集し、サービスを起動して実行するためにApache HTTP Serverを構成します。注意いただきたいのは、この状態では自身のコンピュータ(Linuxインスタンス)以外でサービスを見ることができない、ということです。その理由は、クライアントからのリクエストをOSにまで通すためには、OS、クラウドサービスで80/tcpを有効化する必要があるからです。


Step 5: 

クラウドサービスを構成し、パブリックインターネットから作成したインスタンスへの通信を可能にするために80/tcpを開きます。これはComputeコンソールの[ネットワーク]タブをクリックし、新たにセキュリティ・リストを作成して実現します。この例では、通過させるプロトコルとしてhttpとsshを含む新しいリストを作成しています。まず、セキュリティ・リストを作成します。このリストをWebServerと呼ぶことにします。


Step 6: 

先ほど作成したセキュリティ・リストのセキュリティ・ルールとして80/tcpを構成します。httpとsshのルールを作成します。その後、新しいルールが作成されたことを確認します。Linuxインスタンスは現時点ではデフォルト・ルールに関連付けられていることにご注意ください。この次のステップで変更します。


Step 7: 

Linuxインスタンスと新しいルールを関連付けます。これは[インスタンス]タブに移動して[インスタンスの表示]をクリックして進めていきます。どのセキュリティ・リストをこのインスタンスに関連付けるのかを確認し、変更したいと思います。最初はsshのみを含むデフォルトリストに紐付いています。WebServerリストを追加し、デフォルトリストを削除したいのです。最終的にはリストにはsshとhttpを有効にしたWebServerリストのみが含まれるようにします。Webサーバのメンテナンスの利便性を考慮しつつ、デフォルトルールやデフォルトリストを使う別のインスタンスへ影響を与えないようにしたいならばhttpsやsftpを簡単に追加することができます。

Step 8:

ここでOSレベルでポートを開きます。これはSELinuxインターフェースとiptablesインターフェースを変更することによって実施します。サーバの80/tcpへのインバウンドトラフィックを許可したいので、これらのサービスを無効化するか、iptablesルールを追加し、80/tcpへのトラフィックを全て許可することができます。下図のように、SELinuxやiptablesをを止めて全てのファイアウォールルールを無効化することもできますが、実際にはこの設定は推奨されません。その理由は、もしこのマシンもしくはこのインスタンスが稼働しているサーバと同じラックにある別のマシンで、他のポートが開いている場合、全てのポートが開いていて、攻撃に対してOSを脆弱な状態にしてしまうためです。SELinuxやiptablesを無効化する動画を確認したり、チュートリアルのWebページで説明されているコマンドを実行したりすることができます。
Disable Firewall and SELinux Oracle Linux 6 
http://sa-oracle.snapdedo.com/2012/05/disable-firewall-and-selinux-oracle.html 
重要なのはSELINUX=disabledと設定し、iptablesサービスを停止することです。


Step 9: 

変更をテストするために、ブラウザを開き、Apache HTTP Serverに接続します。シンプルなWebクライアントを使ってindex.htmlファイルを取得することもできるはずです。Webページに ”I am here!” というメッセージが表示されているはずです。再度言いますが、これは安全な方法ではありません。本当であれば、iptablesをカスタマイズして、80/tcpのトラフィックを許可し、ssh以外のトラフィックを全て拒否したいのです。

まとめると、Linuxサーバを構成し、Apache HTTP Serverをインストールし、クラウドコンソールとOSレベルでネットワークル―ルを構成し、パブリックインターネットからこのComputeインスタンスへのトラフィックを許可しました。クラウドインターフェースで80/tcpと22/tcp以外の全てのトラフィックをブロックしています。これは拙いプラクティスではあるにせよ、インスタンスのOSレベルのファイアウォールを無効化し、インバウンドトラフィックを全て許可して、クラウドインスタンスをファイアウォールとして利用しています。データセンター内の他のComputeサービスがこれらの開いているポートにアクセスできるため、これはよい方法ではありません。明日、この部分について深掘りし、OSレベルのファイアウォールを再度有効にして、適切に構成していきます。また、データセンター内のサーバ間通信についても、パブリックアクセスからサービスを隠しつつ、パブリックインターネットに面するフロントエンド・サーバが安全にサービスにアクセスできるようにします。

0 件のコメント:

コメントを投稿