よくある質問・用語集

  • もっと調べる

iptablesとは

iptablesとは、Linuxに実装されたパケットフィルタリング型のファイアウォール機能である。ネットワークのパケットを直接処理する部分であり、カーネル内で動作する。 そのため、統一的に全てのアプリケーションのセキュリティを高めることができる。システム全体で不正な通信を排除し、安全な通信だけをアプリケーションに届ける役割を担う。

Linuxカーネル2.6にはNetfilterと呼ばれるパケットフィルタリングモジュールが採用されている。パケットフィルタリングとは、ネットワークインタフェースを通過するパケットを、その内容によってフィルタする機能である。

Netfilterは、The netfilter.org projectによって開発・保守されていて、パケットフィルタリング、アドレス変換、パケットの操作などの処理をサポートしている。従来のIPv4ネットワークだけでなく、IPv6にも対応している。Netfilterは、カーネルに組み込まれるモジュールの部分と、設定・管理を行うコマンドの部分の2つで構成されている。iptablesは厳密にはこのコマンドを指している。

パケットの処理

Netfilterはパケットを受信すると、パケットの検査を行った後、以下の6つのステップでパケットを処理する。

  • PREROUTING
  • ROUTING
  • FORWARD
  • INPUT
  • OUTPUT
  • POSTROUTING

パケットの検査

Netfilterがパケットを受け取ると、入力されたパケットが正しいものであるか検査する。チェックサムを調査し、内容的に正しいものかどうか調査する。正しくない場合、そのパケットは破棄される。不正な構造を持ったパケットが送り込まれた場合でも、あらかじめそれを破棄することにより、以降のステップの安全性を保つ。

PREROUTING

パケットのリダイレクトなど、ネットワークインタフェースから送られてきたパケットに対して、アドレス変換などの処理を行う。

ROUTING

ルーティング(経路決定)を行う。パケットの終点アドレスを調べ、それに従ってパケットの送り先を決定する。

FORWARD

ネットワークインタフェースから渡されたパケットの転送を行う。

INPUT

ローカルプロセスへのパケットの配送を行う。

OUTPUT

ローカルプロセスからネットワークインタフェースへパケットを送信する。

POSTROUTING

ネットワークに出力されるパケットに対しての処理を行う。アドレス変換などの処理を行う。

パケットフィルタリングの範囲

パケットフィルタリングは、「通信元のホスト」「通信先のホスト」「利用するプロトコル(サービス)」「パケットが届いた物理インタフェース」といった基準で実施することができる。ネットワークインタフェースは、イーサネットのほか、PPP、SLIP、PLIPなど、パケットをカプセル化できるものならどんなものにも対応している。

パケットフィルタリングは、Linuxカーネル内のパケットの処理段階のどこで実施するかにより効果が異なる。例えば、INPUTやOUTPUTでパケットフィルタリングを実施すれば、自サーバ上のアプリケーションに関する通信を制御することができる。また、ルータとして設置されたLinuxマシンの、FORWARDでパケットフィルタリングを行えば、組織内のコンピュータに送られる通信を制御することができる。

テーブル

Netfilterではパケットフィルタリング、アドレス変換、パケット処理の3つの機能を提供する。iptablesコマンドやip6tablesコマンドでは、この機能に対応した概念として「テーブル」がある。テーブルには、以下の3種類がある。

  • filter
    パケットフィルタリングで参照するテーブルを指定。
  • nat
    新しい接続を開くパケットが参照するテーブルを指定。現在のところ、ip6tablesではnatテーブルを使用することはできない。
  • mangle
    特別なパケットが参照するテーブルを指定。

チェイン

Netfilterでは、特定の条件に当てはまるパケットに対して処理ルールを定義する。この条件のグループをチェイン(chain)と呼ぶ。チェインには、最初から定義されている組み込みチェインと、後から定義するユーザ定義チェインの2種類がある。

パケットの処理で説明を行った6つの各ステップは、そのままPREROUTINGチェイン、ROUTINGチェイン、FORWARDチェイン、INPUTチェイン、OUTPUTチェイン、POSTROUTINGチェインとして利用することができる。テーブルによって利用できる組み込みチェインに制限がある。組み込みチェインは、パケットの処理段階に応じたルールを追加することができる条件グループと考えることができる。

  • INPUTチェイン
    パケットが入ってくる時にチェック。利用できるテーブルは、filterとmagnleである。
  • OUTPUTチェイン
    パケットが出て行く時にチェック。利用できるテーブルは、filter、natとmagnleである。
  • FORWARDチェイン
    パケットをフォワーディングする時にチェック。利用できるテーブルは、filterである。
  • PREROUTINGチェイン
    パケットが入ってきた時に、パケットを変換。利用できるテーブルは、natとmagnleである。
  • POSTROUTINGチェイン
    パケットが出て行く時にパケットを変換。利用できるテーブルは、natである。

ユーザ定義チェイン

iptablesおよびip6tablesでは、必要に応じてテーブルにユーザ定義のチェインを作成できる。ユーザ定義チェインに対しては、削除、変更の処理を行うことができる。なお、全ての操作で、テーブルの指定は省略することができ、省略した場合にはfilterテーブルに対して操作が行われる。

ターゲット

Netfilterでは、ルールに合致したパケットに対して、様々な処理を行うことができる。この処理をターゲット(target)と呼ぶ。代表的なターゲットは以下となる。

  • ACCEPT
    パケットを通過させる。
  • DROP
    パケットを破棄する。
  • RETURN
    チェイン内のルール評価を終了する。
  • REDIRECT
    パケットを特定のポートにリダイレクトする。
  • REJECT
    パケットを破棄し、その旨をICMPを使って通知する。オプションでICMPの通知メッセージタイプを指定できる。
  • SNAT
    パケットの送信元アドレスを修正する。natテーブルで、後述するPOSTROUTINGチェインでのみ利用できる。iptablesのみで利用できる。
  • DNAT
    パケットの送信先アドレスを修正する。natテーブルの、PREROUTING、OUTPUTチェインで利用できる。iptablesのみで使用できる。
  • MASQUERADE
    パケットの送信元アドレスを修正する。natテーブルで、後述するPOSTROUTINGチェインでのみ利用できる。iptablesのみで利用できる。
  • LOG
    マッチしたパケットをカーネルログに記録する。

【カテゴリ】:セキュリティ  OS  

  • もっと調べる

【Webセミナー】自社でOSSを採用しよう!今更聞けないOSSの基本セミナー

日程: 11月22日(金)Webセミナー「BigBlueButton」を使用します。
内容: OSSを導入したいけど、どこから手をつければいいかわからない方必見!
ご興味のあるかたはぜひご参加ください。

セミナー申込

関連用語

iptablesに関連するページ(事例など)

iptablesとは先頭へ