クラウドサーバーにはファイアウォールが必要ですか?
ファイアウォールは、あなたのサーバー上で動作し、外部の人が特定のポートを使用するのを防ぐネットワークユーティリティです。これにより、攻撃者がアクセスすべきでないプロセスにアクセスするのをブロックするための便利なセキュリティツールとなります。あなたのサーバーには必要ですか?
必要なポートのみを開放し、残りはファイアウォールで保護してください。
サーバー上で実行するサービスは、ポートを介して外部世界に接続します。各ポートには番号があり、サービスはそのポート番号で接続を待機します。これは常にセキュリティリスクというわけではなく、時にはユーザーがサービスにアクセスするためにポートを開放しておく必要があります。
ポート80と443はHTTPとHTTPSのデフォルトポートです。ウェブサーバーを運営している場合、これらは開いている必要があります。ポート22は、新しいLinuxインストールではデフォルトのSSHポートであるため、開いている可能性が高いです。このポートは閉じることができますが、SSHを別のポートに移動する必要があります(それはどちらにしても良いアイデアです)。
ファイアウォールがない場合、接続を開始するサービスはデフォルトで任意のポートにアクセスできるようになります。この状況を防ぎ、システム上で予期しないものが動作していないことを保証するために、ルールを定義しておくことが最善です。これがまさにファイアウォールの役割です---サーバー上のプロセスが外部とどのように通信できるかのルールを定義します。
システム上で現在開いているポートを確認するには、次のコマンドを実行できます:
sudo netstat -plntあるいは、より簡潔な出力が欲しい場合は:
sudo netstat -plnt | grep "LISTEN" | awk '{print $4 "t" $7}'これらのコマンドは、各オープンポートと、そのポートを使用しているプロセスを一覧表示します。NetstatはプロセスのPIDとファイル名しか表示しないため、完全なパスが必要な場合は、PIDをpsコマンドに渡す必要があります。サーバーにアクセスせずにポートをスキャンする必要がある場合は、クライアントサイドのユーティリティnmapを使用できます。
サービスをホストするために特別に使用されていないその他のものは、ファイアウォールで閉じるべきです。
システム上で実行されているすべてがオープンであるべきなら、ファイアウォールは不要かもしれません。しかし、ファイアウォールがない場合、インストールした新しいプロセスによって未使用のポートが簡単にオープンになる可能性があります。新しいサービスがロックされる必要がないことを確認する必要があります。
まず最初に、サービスをパブリックIPで運用しないでください
ファイアウォールは素晴らしいセキュリティツールですが、特定のサービスは全世界からアクセス可能であるべきではありません。ポートを開く必要がある場合、そのサービスはブルートフォース攻撃やその他の厄介な問題に対して脆弱です。しかし、接続をあなたの仮想プライベートクラウドに制限することで、これが発生するのを防ぐことができます。
データベースはこの良い例です。MySQLのようなデータベースは、管理接続のためにオープンポートを持っている必要があります。しかし、データベースと話しているのがあなたのウェブサーバーだけで(メンテナンス時のあなたを含む)、MySQLをプライベートに保ち、ウェブサーバーとのみ通信させるべきです。アクセスが必要な場合は、SSHを使用してウェブサーバーにアクセスし、そこからネットワークの残りにアクセスできます。
ファイアウォールの設定方法
Amazon Web ServicesやDigital Oceanのようなマネージドホスティングサービスを利用している場合、プロバイダーがウェブインターフェースから管理できるファイアウォールを持っているかもしれません。これがオプションであれば、その方法でファイアウォールを設定すべきです。
AWS、特に、ファイアウォールを使用することを強制され、それはセキュリティグループで管理されています。すべてのポートはデフォルトで閉じており(ポート22を除く)、インターフェースから手動で開く必要があります。 EC2管理コンソールから、実行中のインスタンスのセキュリティグループを編集し、インバウンドルールを変更することができます。
AWSでは、ルールのソースを指定することができるため、たとえばSSHを自分の個人IPアドレスのみに制限したり、データベースサーバーとウェブサーバーの接続をプライベートにすることができます。
他のプロバイダー、例えば Linode や一般的なホスティングを利用している場合は、ファイアウォールを自分で設定する必要があります。それには、最も簡単な方法は iptables ユーティリティを使うことです。
Windowsサーバーを運用している場合は、適切に名付けられたWindowsファイアウォールを構成する必要があります。これは、Windows Management Consoleから、またはnetshを使用して行うことができます。


