16.04前書きDigitalOceanクラウドファイアウォールは、ネットワークレベルで強力なファイアウォールサービスを提供し、サーバーがアプリケーションを提供してデータを保存するという仕事を自由に行えるようにします。このチュートリアルでは、2サーバーのWordpressとMySQLのセットアップをクラウドファイアウォールを使用するように調整し、このサービスが提供できる利点のいくつかを示します。Firewalls]チュートリアルをご覧ください。前提条件このチュートリアルを開始する前に、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-remote-database-to-optimize-site-に概説されているインフラストラクチャを作成する必要があります。16.04でMySQLを使用してサイトパフォーマンスを最適化するためにリモートデータベースを設定する方法]。Webサーバーと、スタンドアロンのMySQLサーバーの2つのサーバーが残ります。`ユーティリティを使用してファイアウォールが設定されています。+`は、Linuxのiptablesファイアウォールエンジンの使いやすいラッパーです。ここで両方のサーバーにログインし、ファイアウォールのステータスを確認しましょう。Default:」の後に、ファイアウォールがデフォルトですべての着信接続を拒否し、すべての発信接続を許可していることが示されています。IN`)を許可する4つのルールがあります。*で同じことを行います。----この出力は似ていますが、2つのNginxポートを標準のMySQLポートであるポート3306に交換しました。現在の設定がわかったので、交換を計画しましょう。*に適用することもできますが、ルールの編成方法により柔軟なアプローチを取ります。このシステム(おそらくキャッシュサーバー)に3番目のタイプのサービスを追加する必要がある将来に備えて、自分自身を準備したいです。そこで、物理サーバーではなく、役割に基づいてファイアウォールルールを分割します。各ドロップレットに複数のクラウドファイアウォールを適用できるため、これらのファイアウォールをきめ細かくモジュール化することは問題ではありません。分解すると、両方のサーバーに実際に複数の機能があることに気づきます。Webページまたはデータベース情報を提供する主要な機能があり、SSHサービスによって提供される管理機能もあります。*管理*ファイアウォール、*フロントエンド*ファイアウォール、*データベース*ファイアウォールを作成するのは理にかなっています。Webサービスまたはデータベースサービスを複数のホストに拡張する将来のシナリオを処理するために、DigitalOceanのタグ付け機能を使用して、ロールレットをロール別に整理します。タグは、ドロップレットに適用してそれらを分類し、サーバーのグループ全体を一度にアドレス指定できる単純なラベルです。クラウドファイアウォールサービスは、タグ内のすべてのドロップレットにファイアウォールルールを適用できるため、正しいファイアウォールルールが既に設定されている新しいドロップレットを簡単にプロビジョニングできます。使用して動的な方法で行うのが難しいこと)は、クラウドファイアウォールがタグに基づいてインバウンドアクセスを制限できることです。したがって、たとえば、*データベース*サーバーは、*フロントエンド*サーバーからのみアクセスできる必要があります。+」セットアップでは、ネットワーク上の誰でもデータベースを開くことができます。*でタグ付けされたドロップレットのみにロックダウンします。設定する必要がある3つのファイアウォールを、わかりやすい言葉でまとめてみましょう。*タグ付きサーバーからのみTCPポート3306への受信トラフィックを許可このチュートリアルでは、発信トラフィックをまったく制限しません。悪い考えではありませんが、自動更新メカニズムや、基になるオペレーティングシステムの他の重要な機能を壊さないように注意する必要があります。新しいファイアウォールの計画ができたので、始めましょう。ステップ1-サーバーのタグ付け最初に、ファイアウォールルールの準備として、ロールレットにロールのタグを付けます。DigitalOceanコントロールパネルに移動します。デフォルトのビューは、ドロップレットのリストです。*ドロップレットの右側にある*その他*ボタンをクリックし、*タグの追加*を選択します。[「タグの編集」を選択]このドロップレットのタグを入力できるテキストボックスがポップアップ表示されます。*ボタンをクリックします。タグがドロップレットリストに表示されます。[タグ付きドロップレットリスト]将来のドロップレットを作成するときに、初期プロビジョニングプロセス中にこれらのタグを適用できます。ドロップレットは、対応するファイアウォールルールを自動的に継承します。次のステップでこれらのルールを設定します。ステップ2-クラウドファイアウォールの作成クラウドファイアウォールを設定します。この順序により、Webサイト訪問者のサービスが中断することはありませんが、一時的に新しいSSH接続を確立することができなくなります。これは、すでに確立された接続には影響しません。ファイアウォールサービスは、DigitalOceanコントロールパネルの[ネットワーク]セクションで利用できます。表示されたら、[ファイアウォール]タブをクリックし、ボタンをクリックして開始します。フロントエンドファイアウォールの作成[*ファイアウォールの作成]ページで、*名前*を入力し、*インバウンドルール*を構成し、ファイアウォールを適用するドロップレットを選択する必要があります。*セクションはそのままにします。*フィールドに入力します。*セクションからデフォルトのSSHルールを削除する必要があります。柔軟性を高めるために、このルールを*管理*ファイアウォールに分割します。ページの右側にあるリンクを使用して、SSHルールを今すぐ削除します。次に、ドロップダウンをクリックしてを選択します。これにより、正しいプロトコル(TCP)とポート(80)が自動入力され、デフォルトですべてのIPv4およびIPv6アドレスからのトラフィックが許可されます。これが私たちが欲しいものです。HTTPSを有効にしている場合は、上記のプロセスを繰り返して、今回を選択して2番目のルールを作成します。*インバウンドルール*セクションは次のようになります。*と入力し、自動提案されたらタグを選択します。[「フロントエンド」タグに適用]ボタンをクリックしてください。*タグを持つすべてのドロップレットに適用されます。更新されたファイアウォールの概要ページに戻り、新しいファイアウォールが表示されます。[フロントエンドルールが記載されたファイアウォールの概要]ここで、*データベース*ファイアウォールを作成します。Firewallの作成[ファイアウォール]ページで、もう一度クリックします。このプロセスは、*フロントエンド*ファイアウォールの場合とほぼ同じです。*名前*フィールドに入力します。デフォルトのSSHルールを削除します。次に、ドロップダウンを使用してを選択し、新しいルールを作成します。デフォルトのMySQLルールが作成され、すべてのIPからポート3306へのアクセスが許可されます。フロントエンドサーバーのみがデータベースにアクセスできるようにします。*と入力し始め、自動提案されたらタグを選択します。これで、そのタグが適用されたすべてのドロップレットは、データベースサーバーへのアクセスを許可されます。他のすべてのIPはブロックされます。*はそのままにします。*ドロップレットに適用*で、このファイアウォールをタグに適用し、をクリックします。一度、ファイアウォールの概要ページに戻ります。[database-fwおよびfrontend-fwルールが設定されているファイアウォールの概要]両方のファイアウォールがそれぞれ1つのドロップレットに適用されることを示していることに注意してください。Webサイトをロードしても、正常にロードされるはずです。次に、SSHを介して管理を再度有効にします。最後にもう一度クリックします。*フィールドに追加します。このファイアウォールに必要なのはデフォルトのSSHルールだけです。これにより、すべてのIPがポート22に接続できるようになります。フィールドを、接続元の特定のIPに変更できます。将来IPが変更された場合、管理アクセスを復元するためにこの1つのルールを更新する必要があります。これは、事前に計画し、ルールをモジュール化するもう1つの利点です。[ドロップレットへの適用]で、とタグの両方を追加して、をクリックします。最後のファイアウォールの概要を見てみましょう。+`ファイアウォールもアクティブになっています。それらを無効にして、接続をテストしましょう。+」ファイアウォールを無効にする必要があります。startupこれにより、現在のファイアウォールが停止し、すべてのルールが消去され、起動時にルールが再度有効になりません。この時点で、すべての接続が復元されます。サーバーの1つに新しいSSHセッションを作成してみてください。次に、Webサイトをロードして、Webサーバーがまだデータベースに接続し、ブラウザーにWebページを返していることを確認します。すべてのサービスに接続できるということは、実際にはファイアウォールが機能していることを証明するものではありません。ファイアウォールが実際に配置されていることを確認するために、もう少しテストを行いましょう。」というユーティリティを使用してWebサーバーとデータベースサーバーをスキャンします。+`はホストをスキャンし、どのポートが開いているか、閉じているか、フィルターされているかを示すポートスキャナーです。16.04サーバーにログインします。+`をインストールします。+」を使用して、ウェブサーバーのパブリックIPをスキャンします。`に関する出力に注意してください。」として表示されます。+」も接続できないことを意味します。予想どおり、SSH、HTTP、およびHTTPSポートが開いていることにも注意してください。次に、データベースサーバーをスキャンします。そのように設定した場合は、DropletのプライベートIPを使用するようにしてください。MySQLデータベースはこれをリッスンするためです。seconds以前と同様に、ほとんどのポートがフィルタリングされていることがわかります。SSHポートは開いているとのみ表示され、MySQLポートは使用できません。タグ付けされたサーバーのみに制限したことを思い出してください。次に、コマンドを再実行します。secondsMySQLポートが開いていると表示されます。Firewallルールによって保護されていることを確認しました。*タグを削除して、このテストサーバーの元のファイアウォール設定を復元できるようになりました。」ファイアウォールの設定を、柔軟で強力なネットワークベースのクラウドファイアウォール設定に置き換えました。APIを介したクラウドファイアウォールの使用の詳細については、次の記事を参照してください。