Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Why I Don’t Trust Default Firewall Rules on Linux Servers | by Faruk Ahmed | Sep, 2025

2025年09月25日に「Dev.to」が公開したITニュース「Why I Don’t Trust Default Firewall Rules on Linux Servers | by Faruk Ahmed | Sep, 2025」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Linuxサーバーのデフォルトファイアウォール設定は安全とは限らない。許可しすぎ、不要なポート開放、送信制御の欠如が問題を引き起こす。サーバーのセキュリティを強化するには、必要な通信以外は全て拒否するよう、設定を見直すべきだ。

ITニュース解説

Linuxサーバーのセキュリティを守る上で、ファイアウォールは非常に重要な役割を担う。ファイアウォールとは、例えるならばサーバーへの出入りを監視し、決められたルールに基づいて通信を許可したり拒否したりする「門番」のような機能だ。この機能が適切に設定されていないと、サーバーは不正アクセスやサイバー攻撃の標的となり、重大な被害を受ける可能性があるため、システムエンジニアを目指す上ではその理解が不可欠となる。

多くのLinuxディストリビューションには、ufwfirewalld、あるいはより低レベルなiptablesといったファイアウォールを管理するためのツールが標準で含まれている。しかし、これらのツールの初期設定、つまり「デフォルトルール」だけでは、サーバーを十分に保護できないと指摘する声がある。その理由はいくつかある。

まず、デフォルトルールが「許可しすぎ」である場合がある。一部のLinuxディストリビューションでは、サーバーから外部へ出ていく「アウトバウンド」の通信をすべて許可している。これは一見便利に思えるが、もしサーバーがマルウェアに感染したり、サイバー攻撃を受けて不正に侵入されたりした場合、攻撃者はそのサーバーを操り、外部にある攻撃者の指令サーバー(「コマンド&コントロール(C2)サーバー」と呼ばれる)へ自由に情報を送信したり、遠隔操作の指示を受け取ったりできてしまう。これはサーバー内部の機密情報が漏洩したり、サーバーがさらなる攻撃の「踏み台」として利用されたりする大きなリスクとなる。

次に、「万能」な設定が前提になっている点も問題だ。異なる役割を持つサーバー、例えばWebサーバーとデータベースサーバーでは、それぞれ外部との通信で必要となるポートが異なる。Webサーバーはインターネットからのアクセスを受け付けるためにHTTP(80番ポート)やHTTPS(443番ポート)を開放する必要があるが、データベースサーバーは通常、外部から直接アクセスされるべきではない。しかし、デフォルトルールではこれらのサーバーの役割の違いを考慮せず、同じような設定が適用されることが多い。その結果、本来閉じておくべき不要なポートが開いたままになり、それがセキュリティ上の弱点となる可能性がある。

さらに、「気づかれない隙間」が存在することも懸念材料だ。Linuxシステム内部で利用される特定のサービス、例えばネットワーク経由でプログラムを呼び出すためのRPC(111番ポート)や、プリンター共有に用いられるCUPS(631番ポート)などは、デフォルトで「信頼されたサービス」として扱われ、意図せず外部に開放されていることがある。サーバー管理者がその存在に気づいていなくても、これらの開いたポートは攻撃者にとって格好の侵入経路となる可能性がある。使用していないサービスや不要なポートは、確実に閉じておくことがセキュリティの基本的な考え方である。

そして、最も危険なのが「アウトバウンド制御の欠如」である。サーバーが不正侵入された場合、攻撃者は侵入したサーバーを使って外部の指令サーバーと通信しようとする。この通信は、多くのデフォルトファイアウォールルールではほとんど制限されていないことが多い。つまり、攻撃者は何の障害もなく外部と連絡を取り合い、盗んだデータを外部へ送り出したり、サーバー上で新たな攻撃を仕掛けるための指示を受け取ったりできるのだ。侵入後の被害拡大を防ぐためにも、サーバーから外部への通信についても厳密な制御が必要となる。

これらの問題を解決し、サーバーのセキュリティを強化するため、筆者はいくつかのステップを提唱している。その中でも最も重要なのが「デフォルトで拒否」という原則だ。これは、セキュリティの基本的な考え方である「最小権限の原則」に基づいている。具体的には、明示的に許可された通信だけをサーバーに通し、それ以外のすべての通信はデフォルトで拒否するという、厳格なルールを設定することだ。

この原則をufwというファイアウォール管理ツールで実現する具体的な例が示されている。ufw default deny incomingというコマンドは、外部からサーバーへの「インバウンド」のすべての通信を、原則として拒否するという設定だ。この設定により、たとえあなたが意図しないポートが開いたままであったとしても、外部からのアクセスは効果的に遮断される。その上で、Webサーバーであれば80番ポートと443番ポート、SSHで管理するための22番ポートなど、サーバーの機能として必要不可欠なポートだけを後から個別に許可していく。これに対し、ufw default allow outgoingというコマンドは、サーバーから外部への「アウトバウンド」の通信をデフォルトで許可するという設定である。記事の抜粋ではこの形だが、前述の「アウトバウンド制御の欠如」の問題点を踏まえると、実際にはアウトバウンド通信も、必要最小限の宛先やポートに限定するよう、さらに厳しく設定を検討すべきであると理解できる。

結論として、Linuxサーバーのファイアウォールは、ただ「設定されている」という状態では不十分であり、そのサーバーの役割や利用状況に合わせて、詳細かつ厳密にカスタマイズすることが極めて重要である。デフォルト設定に盲目的に頼るのではなく、「デフォルトで拒否」の原則に基づき、必要な通信だけを許可し、不要な通信は徹底的に遮断するという意識を持って、自らの手でサーバーの「門番」を強固にすることが、安全なシステム運用の第一歩となる。これは、システムエンジニアとしてサーバーセキュリティを担う上で、常に心に留めておくべき基本的な姿勢である。

関連コンテンツ

関連IT用語

関連ITニュース