サーバーをファイアウォールする必要があるのはなぜですか?
注意してください:私はこれを火炎戦争にすることに興味はありません!ファイアウォールソリューションに多大な労力を費やし、必要性を信じるように教え込まれているため、多くの人がこの主題について強く信じていることを理解しています。 ただし、セキュリティの専門家である人々からの回答を探しています。これは重要な質問であり、答えは自分自身や私が働く会社以上のものに役立つと信じています。何年もの間、妥協することなく、ファイアウォールなしでサーバーネットワークを運用してきました。私たちが経験したセキュリティ侵害は、ファイアウォールで防ぐことはできませんでした。 私が「サーバー」と言うとき、私は常に「秘密の内部請求データベース」ではなく、「一般に提供されるサービス」を意味するので、私はここであまりにも長く働いてきたと思います。そのため、ファイアウォールで使用するルールでは、インターネット全体へのアクセスを許可する必要があります。また、パブリックアクセスサーバーはすべて、オフィスとは別の専用データセンターにあります。 他の誰かが同様の質問をし、私の答えは負の数に投票されました。これは、投票する人々が私の答えを本当に理解しなかったか、または私が現在していることをするのに十分なセキュリティを理解していないかのいずれかを信じさせます。 これがサーバーセキュリティへの私のアプローチです。 サーバーをインターネットに接続する前に、オペレーティングシステムのセキュリティガイドライン に従ってください。 TCPラッパーを使用して、SSH(およびその他の管理サービス)へのアクセスを少数のIPアドレスに制限します。 Muninでこのサーバーの状態を監視します。そして、Munin-node固有の重大なセキュリティ問題をデフォルト構成で修正します。 新しいサーバーをNmapします(サーバーをインターネットに接続する前にも)。このサーバーをファイアウォールする場合、これは着信接続が制限されるポートの正確なセットである必要があります。 サーバーをサーバールームにインストールし、パブリックIPアドレスを付与します。 オペレーティングシステムのセキュリティ更新機能を使用して、システムを安全に保ちます。 私の哲学(および質問の根拠)は、強力なホストベースのセキュリティによってファイアウォールが不要になるというものです。全体的なセキュリティ哲学では、ファイアウォールがある場合でも、強力なホストベースのセキュリティが依然として必要であるとされています(セキュリティガイドラインを参照)。これは、パブリックサービスをサーバーに転送するファイアウォールにより、ファイアウォールがまったくないのと同じくらい攻撃者が有効になるためです。脆弱なのはサービス自体であり、そのサービスをインターネット全体に提供することはその操作の要件であるため、サービスへのアクセスを制限することは重要ではありません。 そこならばあるインターネット全体でアクセスする必要のないサーバーで使用可能なポートは、そのソフトウェアは、ステップ1でシャットダウンする必要があり、攻撃者が脆弱なソフトウェアを介してサーバーに侵入べきステップ4で確認しました攻撃者は自分でポートを開くと、代わりにランダムなポートでアウトバウンド接続を行うことで、ファイアウォールを簡単に破ることができます(そして実行します)。セキュリティのポイントは、攻撃が成功した後に自分自身を守ることではありません-それはすでに不可能であることがすでに証明されています-そもそも攻撃者を締め出すことです。 オープンポート以外にもセキュリティに関する考慮事項があることが示唆されていますが、私にとっては、自分の信仰を守るように思えます。オペレーティングシステム/ TCPスタックの脆弱性は、ポートがそのオペレーティングシステム/ TCPスタックに直接転送されているという事実に基づいて、ファイアウォールが存在するかどうかにかかわらず、同様に脆弱である必要があります。同様に、ルーター上にファイアウォールを設置するのではなく、サーバー自体でファイアウォールを実行すると(さらに悪いことに、両方の場所で)、不要な複雑なレイヤーが追加されるようです。「セキュリティは層になっている」という哲学は理解していますが、X層のベニヤ板を重ねて屋根を作り、それらすべてに穴を開けるような点があります。別の層の合板は、その穴からの漏れを止めません 正直に言うと、ファイアウォールをサーバーに使用する唯一の方法は、既知の攻撃者からのすべてのサーバーへのすべての接続を防止する動的ルールがある場合です-スパムのRBL(偶然にも、メールサーバーの機能とほぼ同じです) 。残念ながら、それを行うファイアウォールは見つかりません。次善の策はIDSサーバーですが、それは、攻撃者が最初に実サーバーを攻撃せず、攻撃者が攻撃する前にネットワーク全体を調べることを迷惑をかけることを前提としています。また、これらは多数の誤検知を引き起こすことが知られています。