株式会社グローバルゲート公式ブログ

こんにちは!株式会社グローバルゲートでサーバ管理をしてるタカです。
Linuxサーバを運用していると、「まずはfirewalldを使いましょう」という流れに出会うことが多いと思います。
実際、僕自身も普段の業務ではfirewalldを使うケースがほとんどです。OS標準で扱いやすく、管理も比較的シンプルで、チーム運用でもルールの統一がしやすい。保守性を重視する現場では、firewalldはとても優秀な選択肢です。
ただ一方で、サーバ運用を続けていく中で「本当に自分は何を許可して、何を遮断しているのかを理解できているだろうか?」と感じる瞬間も増えてきました。通信が思ったように通らない、想定外の経路でアクセスされる、ポート開放やNATが絡むと急に難易度が上がる…。そんな場面で必要になるのは、ツールの操作方法というよりも「パケットがどのように流れ、どこで制御しているのか」という仕組みの理解です。
そこで今回の記事では、firewalldではなくiptablesに焦点を当てて解説していきます。とはいえ、これは「業務でもfirewalldを捨ててiptablesに統一しよう」という話ではありません。業務では業務の事情があり、チーム運用・変更管理・標準化の観点からfirewalldが最適解になる場面は多いです。僕もそこは割り切って使い分けています。
ではなぜiptablesを学ぶのか。答えはシンプルで、iptablesは仕組みが見えるからです。INPUT/OUTPUT/FORWARD、filterやnat、ステート管理、ログ出力…これらを自分の手で組み上げられるようになると、Firewallの設計そのものが理解できるようになります。
さらに一歩進むと、Linuxを「サーバ」ではなく「ルーター」として構築することも可能になります。
本記事では、僕が業務とは別に用意した独自サーバ環境で、iptablesを使って本格的なFirewallとルーターを構築していく過程をまとめます。初心者でも読めるように基本から丁寧に進めつつ、最終的には実務で役立つレベルの構成まで踏み込む予定です。
iptablesを「怖いもの」から「理解できる武器」に変える、その第一歩になれば嬉しいです。

firewalldって、正直かなり便利です。ゾーンを選んで必要なサービスを許可するだけで、ある程度しっかりしたFirewallが作れますし、設定もシンプルなので運用もしやすい。実際、僕も業務ではfirewalldを使うことが多くて、「迷ったらまずfirewalld」は全然アリだと思っています。
ただ、少し込み入った構成を作ろうとすると「これって結局どんなルールになってるんだろう?」って気になってくることがあります。たとえば複数NICを使ったり、ルーター的な動きをさせたり、NATを絡めたりすると、思ったように通信が通らないことも出てきます。そういうときにfirewalldの設定だけ見ていると、原因が見えづらいことがあるんですよね。
firewalldは使いやすい反面、中で何が起きているかを意識しなくても動いてしまう仕組みでもあります。だからこそ、もう一段深い理解を目指すなら、裏側の仕組みも知っておくと強くなれます。
iptablesを使う一番の理由は、とにかく「今どんなルールで守ってるのか」が見えることです。INPUTで止めてるのか、FORWARDなのか、どの条件でDROPしてるのかが、ルールとしてそのまま並びます。最初は難しそうに見えますが、慣れてくるとむしろ分かりやすいと感じるようになります。
サーバ運用でよくあるのが「設定したはずなのに繋がらない」「逆に通した覚えがないのに通ってる」みたいな状況です。こういうとき、iptablesならルールを上から順番に追っていけば、どこで止めているのかが判断できます。
つまり、トラブル対応がしやすくなるんです。もちろん設定はfirewalldより手間がかかります。でも、その分だけ自分で理解して作っている感があって、運用の安心感が違います。自分のサーバを自分のルールで守りたい人には、iptablesはかなり相性がいいと思います。
iptablesって「Firewallの設定で使うもの」というイメージが強いかもしれません。でも本気を出すと、Linuxをルーターとして動かすための大事なパーツにもなります。たとえばLANからインターネットへ出すためのNAT(MASQUERADE)を設定したり、外部から来た通信を内部サーバへ転送するポートフォワード(DNAT)を作ったりもできます。
つまり、iptablesを理解すると「守る」だけじゃなくて「通す」「振り分ける」みたいな、ネットワークの仕組みそのものが見えるようになってくるんですよね。ここまでできるようになると、Firewallとルーターの境界が一気にクリアになります。
もちろん、いきなり全部やろうとすると難しく感じます。でも本記事では、最初は最低限のFirewallから始めて、段階的にルーター構築まで進めていくので大丈夫です。1つずつ積み上げていけば、ちゃんとゴールまで辿り着けます。
iptablesが「怖い」って言われるのは、気持ち的にすごく分かります。ルールを間違えるとSSHが繋がらなくなったりして、「うわ、やらかした…」ってなりがちなので最初は誰でも慎重になります。
でも、iptablesって理解さえできればかなり筋がいい仕組みです。ルールは上から順番に評価される、戻り通信はESTABLISHED/RELATEDで許可する、まずは必要な通信だけ通す…このあたりが分かってくると、急に扱いやすくなります。
そして面白いのが、ちゃんと理解して作ったiptablesルールは「自分で守れてる感」が強いことです。
firewalldみたいに便利な道具も素晴らしいけど、iptablesを触れるようになると守りの解像度が上がります。

iptablesって聞くと、いきなり「難しそう…」って身構えちゃう人も多いと思います。
でも安心してください。iptablesは暗記するものじゃなくて、仕組みを知るものだから、最初に全体像さえ掴めば意外とスッと入ってきます。
ざっくり言うと、iptablesは「この通信は通す」「この通信は止める」っていうルールを積み重ねて、Linuxの中にFirewallを作る仕組みだ。そしてもう少し踏み込むと、ルールを使ってNATをしたり、別のネットワークへ通信を中継したりもできます。
つまり、Linuxをルーターっぽく動かすこともできるということです。
この記事では、まずiptablesがどこで通信をチェックしているのかを丁寧に整理し、後半で出てくるNATやルーティングの話も一気に分かりやすくなると思います。まずは気楽に、「iptablesの地図」を頭の中に作るところから始めてみましょう。
iptablesは一言で言うと、Linuxの中で動く通信の門番みたいな存在です。
サーバに入ってくる通信、サーバから出ていく通信、そしてサーバを通り抜ける通信をチェックして、ルールに合えば通し、合わなければ止める。これがFirewallとしての基本の役割になるのですね。
たとえば、外部からSSH接続(22番)を許可したいなら「SSHは通す」というルールを作るとします。
逆に、不要なポートを閉じたいなら「それ以外は拒否する」というルールを作り、これを積み重ねていくと、だんだん守りが完成していく感じです。
iptablesの良いところは「何を許可して、何を拒否しているか」が、ルールとしてそのまま残ること。つまり、設定を見返したときに門番が何をしてるかがハッキリ分かります。最初はコマンドの見た目に圧倒されるけど、慣れれば「これは意外と正直な仕組みだな」って思えてくるようになります。
iptablesを難しく見せている最大の原因は、たぶん「テーブル」と「チェーン」という言葉だと私は思っています。
然しながら、最初から全部を完璧に覚える必要はありません。
初心者がまず押さえるべきなのは、たった2つだけ。
・1つ目は“チェーン”
これは通信が通るルートのことで、代表的なのはINPUT(外から入る)、OUTPUT(外へ出る)、FORWARD(通り抜ける)の3つ。Firewallとして守るなら、まずはINPUTが中心になる。
・2つ目は“テーブル”
これはルールの目的ごとの箱みたいなものです。
最初に使うのはfilter(通す/止める)で、ルーター構築やNATで使うのがnat!
最初は「filterが基本」「natはルーターで出てくる」と覚えておけば十分です。
この2つの概念が頭に入るだけで、iptablesは急に見通しが良くなる。次の章からは、この全体像をベースに実際のルールへ落とし込んでいきましょう。
iptablesで絶対に覚えておきたいポイントがあります。
それが「ルールは上から順番に評価される」ということだ。これを知らないと、初心者はすごく嵌ることになります。
たとえば「SSHを許可するルール」を書いたつもりでも、その上に「全部DROPするルール」があったら、SSHはそこに引っかかって止まってしまう。逆に「全部許可するルール」が先にあると、その下にどれだけ拒否ルールを書いても意味がなくなります。
つまりiptablesはルールの順番が命で、この仕組みが分かると設定ミスを見つけるのも簡単になるということ。
通らない通信があれば、上から順に見て「どこで止まってる?」を探せばよいので、ログを混ぜればさらに追いやすくなります。

iptablesを扱う際、「最初から難しいルールを書かなければならない」と身構える必要はありません。実際に、初めに押さえるべきポイントはそれほど多くはなく、むしろ重要なのは「現在どのようなルールが設定されているかを正しく確認できること」と、「安全に検証・操作を行うための手順を理解すること」です。
iptablesで初心者がつまずきやすい原因の一つに、ルールの意味を十分に理解しないまま追加や削除を行ってしまう点が挙げられます。その結果、SSH接続ができなくなったり、通信そのものが遮断されてしまったりすることがあるので、このような経験から「iptablesは難しい」「扱うのが怖い」と感じてしまう方も少なくありません。
しかし、基本的なコマンドと操作の流れを理解していれば、iptablesは決して危険なツールではありません。
まず設定内容を確認するための読むコマンドから始め、段階的にルールを操作するための書くコマンドへと進んでいきます。
最終的な目的は、iptablesをブラックボックスとして扱うのではなく、自身で理解し、制御できるツールとして活用できるようになることです。焦らず、一つずつ確実に理解を深めていきましょう。
iptablesを操作する前に、必ず行っておきたいのが「現在どのようなルールが設定されているか」を確認する作業です。この工程を省略していきなりルールを追加・変更してしまうと、意図しない通信遮断などのトラブルにつながる可能性があります。
基本となるのは、ルール一覧を表示するコマンドで、これを実行するとINPUT、OUTPUT、FORWARDといった各チェーンに設定されているルールが、上から順に表示されます。ここでは、前章で触れた「ルールは上から順に評価される」という点を意識しながら確認することが重要です。
初めのうちは、表示される内容をすべて理解できなくても問題ありません。「このようなルールが設定されている」「ACCEPTやDROPといった動作がある」と把握できれば十分だと考えてます。
慣れてくると、「このルールはSSH用」「こちらは戻り通信を許可するためのもの」といった具合に、少しずつ内容が読み取れるようになり、iptablesではルールを書き換える前に読むことが非常に重要です。現状を把握する習慣を身につけるだけでも、運用時のトラブルは大きく減らすことができます。
iptablesには、ルールを追加・削除するためのコマンドが用意されていますが、初心者の方が最初に「削除」操作から始めることはおすすめできません。なぜなら、削除したルールは元に戻すことができないためです。
特に意識しておきたいのは、「ルールの順序が動作に大きく影響する」という点です。新しいルールをどの位置に追加するかによって、通信の可否が変わることがあります。ルールを末尾に追加するのか、先頭に挿入するのかによって、結果が異なる点は必ず理解しておきましょう。
また、ルールの検証を行う際には、「現在の接続が切断されても作業を継続できるか」という視点も重要です。SSH接続で作業している場合は、別の接続手段を用意しておく、あるいはタイムアウト付きで操作を行うなど、万一に備えた対策を講じておくと安心です。
iptablesは不用意に操作すると危険ですが手順を守って慎重に扱えば安全に利用できるツールなので、複雑な設定を行う前にルールがどのように追加・削除されるのか、その挙動を理解することを目的とします。
iptablesのコマンドを初めて見ると、多くのオプションが並んでおり、難しく感じるかもしれません。しかし、初心者の段階で頻繁に使用するオプションは、実際にはそれほど多くありません。
主に使用するのは、通信の種類を指定するプロトコル、ポート番号の指定、送信元や宛先アドレスの指定といった基本的な項目です。加えて、実務では戻り通信を許可するための状態指定(ESTABLISHED / RELATED)もよく利用されます。
すべてのオプションを一度に覚える必要はありません。「SSHは22番ポート」「Web通信は80番・443番」「戻り通信は許可する」といった基本的な考え方を、ルールとして表現できれば十分です。
iptablesは暗記を前提としたツールではなく、必要になった際に調べながら適切に指定できれば、実務上は問題なく運用できます。
最もお伝えしたいのは、「最初から完璧を目指さないこと」です。iptablesの操作では、まず現在のルールを確認し、次に一つだけルールを追加し、その動作を確認する。この流れを繰り返すだけで、設定ミスによるトラブルは大幅に減らせます。
一度に大量のルールを作成し、まとめて適用する方法は、特に初心者には適していません。問題が発生した際に原因を特定しづらくなるためです。
また、「元に戻せる状態を用意しておく」ことも重要で
・事前に現在のルールを保存する!
・別の管理セッションを確保する!
・必要に応じてコンソール操作が可能な環境を準備する!
など、いくつかの対策を講じておくことで、心理的な不安も大きく軽減されます。
iptablesは、正しく向き合えば非常に素直で理解しやすい仕組みです。本章で基本操作に慣れた後は、次章で実際のFirewall構築へと進んでいきましょう。

iptablesの基本的な考え方やコマンド操作を理解したところで、次に取り組むべきは、実際にFirewallとして機能する最低限のルール構成を作成することです。ここで重要なのは、最初から複雑で高度な設定を目指すのではなく、「必要な通信だけを確実に許可し、それ以外は遮断する」という基本方針を明確にすることです。
Firewallは一度設定して終わりではなく、運用しながら調整・改善していくものです。初期段階で過度に複雑なルールを設定してしまうと、設定内容を把握できなくなり、障害発生時の原因特定が困難になります。
Firewall構築において最初に決めておくべきなのが、デフォルトポリシーです。これは、どのルールにも一致しなかった通信を「許可するか」「拒否するか」という基本方針を定めるものです。
一般的に推奨されるのは、「基本は拒否(DROP)、必要な通信のみ許可(ACCEPT)」という考え方で、最初からすべての通信を許可してしまうと、Firewallを導入する意義が薄れてしまいます。
一方、拒否を基本とすることで、「なぜこの通信を許可しているのか」という理由がルールとして明確に残り、後から見返した際にも理解しやすくなります。
デフォルトで通信を拒否する構成を取る場合、最初に許可しておくべき通信があります。それがループバック通信と、既存通信に対する戻り通信です。
ループバック通信は、サーバ自身が内部的に利用する通信であり、これを遮断すると、アプリケーションやサービスが正常に動作しなくなる可能性があります。そのため、Firewall構築の初期段階で必ず許可しておく必要があります。
また、外部へ送信した通信に対する応答(ESTABLISHED / RELATED)を許可しないと、Webアクセスやパッケージ更新などが正常に行えなくなります。Firewall設定後に「通信できなくなった」と感じるケースの多くは、この戻り通信の許可漏れが原因です。 これらの基本ルールを最初に設定することで、Firewall導入による予期せぬトラブルを大幅に防ぐことができます。
次に検討するのは、外部からアクセスされる主要なサービスの扱いです。多くのサーバ環境では、管理用のSSHと、公開サービスとしてのWeb通信が該当します。
SSHはサーバ管理の要となるため、無条件で全てのアクセスを許可することは推奨されません。まずは必要なポートのみを明示的に許可し、可能であれば接続元IPを制限するなど、段階的にセキュリティを強化していくことが望ましいでしょう
。
Web通信についても同様に、80番ポートおよび443番ポートといった必要最小限の通信のみを許可します。不要なポートを閉じておくだけでも、攻撃対象となる範囲を大きく減らすことができます。
Firewallの基本は、「何を通すのか」を明確に定義することです。理由のはっきりしたルールを積み重ねることで、運用しやすく安全な構成を維持できます。
Firewall設定において判断に迷いやすい項目の一つが、ping(ICMP)を許可するかどうかです。pingは疎通確認や監視用途で便利な一方、外部からサーバの存在を知られるきっかけにもなります。
この点については、「必ず許可すべき」「必ず遮断すべき」という一律の正解はありません。監視や運用の要件によって、特定のIPアドレスからのみ許可する、あるいは外部からのpingは遮断するなど、方針を決める必要があります。
iptablesの利点は、このような判断を運用方針に応じて柔軟にルールへ反映できる点にあります。Firewallは環境ごとに最適な形が異なるため、本章では「どのように考えて決めるべきか」という視点を重視しています。

Firewallの基本的なルール構成が整ったら、次に重要となるのが「現在どのような通信が発生しているか」を把握できる状態を作ることです。iptablesでは、通信を許可・遮断するだけでなく、その判断結果をログとして記録することができます。
Firewallは目に見えない存在であるため、設定が正しく機能しているかどうかを確認するには、ログによる可視化が欠かせません。本章では、iptablesにおけるログ出力の基本的な考え方と、運用時に過不足のないログ設計について解説します。
iptablesでログを出力する際に使用するのが、LOGターゲットです。LOGターゲットは、その通信を「許可」や「拒否」するものではなく、「この通信が発生した」という事実を記録する役割を持っています。
重要な点として、LOGターゲットは単体では通信の制御を行わないため、ログを記録した後にDROPやREJECTといったアクションを続けて指定する必要があります。この挙動を理解していないと、「ログは出ているが通信が止まらない」といった誤解につながることがあります。
LOGを利用することで、送信元アドレスや宛先ポート、通信の種類などを確認できるようになり、「どのような通信がFirewallに到達しているのか」を把握する手がかりになります。これは、Firewallの動作を理解するうえで非常に有用です。
iptablesでログを取得できるようになると、すべての通信を記録したくなるかもしれません。しかし、ログを無制限に出力すると、必要な情報が埋もれてしまい、かえって運用が難しくなる場合があります。
基本的な考え方としては、「遮断する通信」を中心にログを記録することが推奨されます。DROPやREJECTを行う直前でLOGを設定することで、「どのような不要な通信が到達しているのか」を効率的に把握できます。
一方で正常に許可されている通信まで詳細にログを出力すると、Webアクセスなどの大量のログが出力され、管理負荷が増大します。ログは収集すること自体が目的ではなく、運用状況を把握し、異常に気付くための手段であることを意識することが重要です。
インターネットに接続されたサーバでは、想像以上に多くの不要な通信が到達します。そのため、iptablesのログを有効にすると、「ログが多すぎて確認しきれない」と感じることも少なくありません。
このような場合は、すべてのログを細かく分析しようとするのではなく、「傾向を把握する」ことを目的とするとよいでしょう。例えば、同一の送信元から繰り返しアクセスがある、不審なポートへの接続が継続しているといった傾向が分かるだけでも、十分に価値があります。
後続の章では、こうしたログを活用して自動的に攻撃元を遮断する仕組みについても紹介しますが、本章ではまず「ログを取得し、状況を把握できる状態を作る」ことをゴールとします。
ログは、トラブル発生時に原因を調査するためだけのものではありません。「問題が発生していないこと」を確認するためにも、重要な役割を果たします。
想定外の通信が来ていないこと、設定したルールが意図したとおりに機能していることをログで確認できれば、運用中の不安は大きく軽減されます。Firewallの設定が正しく機能しているかどうかを、客観的に判断できる点は大きなメリットです。
【前編】では、firewalldを使わずにiptablesを選ぶ理由を起点として、iptablesを用いたFirewall構築の基礎について段階的に解説してきました。業務ではfirewalldを採用するケースが多い一方で、iptablesを理解することで、通信制御の仕組みそのものを把握できる点に着目しています。
まず序盤では、本記事の位置付けとして、業務環境と個人検証環境を切り分けながらiptablesを扱う理由を整理しました。利便性の高いツールに任せるだけでなく、その背後でどのような処理が行われているのかを理解することが、結果として安定した運用につながるという考え方を共有しています。
続いて、iptablesとfirewalldの違いを整理し、iptablesを用いるメリットについて説明しました。iptablesは設定の自由度が高く、ルールが可視化されるため、通信の流れや制御ポイントを明確に把握できる点が特長です。特に、本格的なFirewall構成やルーター機能を視野に入れた場合、この理解は大きな意味を持ちます。
中盤では、iptablesの全体像として、テーブルやチェーンの役割、ルールが評価される順序といった基本的な概念を解説しました。ここでは、細かな設定よりも「iptablesがどの段階で通信を制御しているのか」という構造を理解することを重視しています。
さらに、基本コマンドの章では、設定を変更する前に現状を確認する重要性や、事故を防ぐための考え方を整理しました。iptablesは慎重に操作すれば安全に扱えるツールであり、手順を守ることでトラブルを未然に防げることを示しています。
その後、最低限のFirewall構成として、デフォルトポリシーの決め方、必須となる通信の許可、SSHやWeb通信の扱い方などを紹介しました。あわせて、ログ設計の章では、iptablesのLOG機能を活用し、Firewallが正しく機能しているかを確認できる状態を作ることの重要性を解説しています。
ここまでで、iptablesを用いたFirewall構築の基礎は一通り整いました。次回の記事では、このFirewall構成を土台として、Linuxをルーターとして動作させるための設定や、FORWARDチェーンやNATを用いたより実践的な構成について解説していく予定です。
GSVは企業の大切なデータを守る安全なNASサーバーシステムです。自動バックアップやRAID構成による多重保存で、データの消失リスクを最小限に抑えます。ネットワーク接続だけで社内外から安全にデータにアクセス可能で、異なるOS間でもスムーズな運用が可能です。
スケジュール管理やToDoリストの一元管理機能を備え、チームの業務効率化を支援します。契約期間中の無償アップデートで常に最新機能を利用可能です。
さらに、無停電電源装置(UPS)の標準装備、ウイルス検知システム、柔軟なアクセス制限により、物理的な障害やセキュリティリスクからも企業データを保護。GSVは安全で効率的なデータ管理環境を提供します。

【関連記事】
カテゴリー
月別アーカイブ
ブログ内検索
執筆メンバーについて

モーリー
Webデザイナー。
当サイトのデザインと管理も担当しています。

ナミー
Webディレクター。
本社制作部の紅一点。お客様に寄り添った提案を心かげています。

タカ
サーバーエンジニア。
Webサイトにとってサーバーは命、ネットワークは血液です。Webサイトの安定稼働のために日夜注力しています。

たっくん
ITアドバイザー
Webサイトの活用方法からオフィスのネットワーク整備まで、多角的にITの活用方法をご案内させていただきます。

ノーさん
制作部ディレクター。
業種を問わず多くのお客様を担当させていただきました。Webサイトのお悩み、活用方法などぜひご相談ください。
カン
制作部デザイナー。
制作部最年少の若手ですが、だからこそ生まれるアイデア・発想にご期待ください。