LPIC-2 - 202試験 - 212:システムのセキュリティ - 212.1 ルータを構成する

Last Update : September 18 2014 21:34:16

     

a. iptablesの設定

iptablesとは、パケットフィルタリング、ファイアウォール機能です。 ホストで送受信するIPv4のパケットのフィルタリングや、NAT(network address translation)を管理するためのコマンドです。

iptablesの定義は「テーブル」単位で管理します。このテーブルは、パケットを制御する目的ごとにあり、iptablesコマンドではfilter、nat、mangleの三つのテーブルがあります。

  • filterテーブル : パケットの許可や破棄を設定するためのもので、パケットのフィルタリングのために使う。
  • natテーブル : パケットの送信元フィールドや、あて先フィールドの変更のために使う。
  • mangleテーブル : TTLの設定/変更やMARK付けなどパケットの内容を変更するために使う。

つまり、パケットのフィルタリングにはfilterテーブルを使うことになります。
iptablesで設定したルールは、パケットが通過する途中のどこで適用するかという場所ごとに「チェーン」と呼ぶ単位があります。具体的にいうと、受信したパケットは、まず「PREROUTING」チェーンを通過してから、自分あてのパケットか他人あてパケットかを判断し、他人あての転送対象であるパケットならば「FORWARD」チェーンを通過してから、「POSTROUTING」チェーンを通過させて外部に転送します。
一方、自分あてのパケットであれば、「INPUT」チェーンを通過させてからhttpデーモンやftpデーモンといった自分のプロセスに渡します。さらに、自分のプロセスで処理したあとに再び外部に送る必要があるパケットについては、「OUTPUT」チェーンを通過してから、やはり「POSTROUTING」チェーンを通過して外部に転送されます。

ルールが、どのチェーンで適用されるかは、filter、nat、mangleの三つのテーブルごとに異なります。パケットをフィルタリングするfilterテーブルで設定した内容は、このうちのINPUT/OUTPUT/FORWARDの三つのチェーンを通過する際に適用されます。つまり、パケットを転送するか、自分のプロセスに渡すか、自分のプロセスから出力するか、のいずれかの場合に、設定しておいたルールに適合するパケットがあった場合は、あらかじめ指定しておいたアクションを行います。

ルールでは、対象パケットを判定する基準と、該当した対象パケットをどう取り扱うかといった動作(ターゲットと呼ぶ)を定義します。
チェーンを通過するパケットが基準にマッチした場合はターゲットとして設定した動作が実行され、マッチしなかった場合は次のルールに渡されます。
ターゲットとして指定できる動作は、通過を許可、破棄、ログに記録、送信元に通知して破棄、次のルールに飛ばす、の5種類(これ以外にユーザー定義チェーン名も指定可能)です。

なお、filter以外のテーブルについては、natテーブルで設定した内容はPREROUTING/OUTPUT/POSTROUTINGチェーンを、mangleテーブルで設定した内容はPREROUTING/INPUT/OUTPUT/FORWARD/POSTROUTINGチェーンを通過したときに適用されます。

【 パケットフィルタリング 】

パケットのヘッダー部分を見て、 設定した条件(送信元IPアドレスや宛先IPアドレス、ポート番号など)と一致するかどうかを判 定して、 一致する場合は設定したアクション(転送、破棄、アドレス書き換えなど)を行うものである。

【 アドレス変換 】

パケットのヘッダー部分を見て、設定した条件と一致するかどうかを判定し、 一致する場合はヘッダーのIPアドレスやポート番号を書き換えるものである。

● iptables コマンド構文
  iptables [オプション] チェーン [パラメータ] [ターゲット]

● iptables コマンドオプション
 -A 指定チェインの最後に新しいルールを追加する
 -D 指定チェインから1つ以上のルールを削除する
 -P 指定チェインのポリシーを指定したターゲットに設定する
 -L 現在の crontab ファイルを削除する。(全ての設定が削除される)
 -N 新しいユーザー定義チェインを作成する
 -X 指定したユーザー定義チェインを削除する。(全ての設定が削除される)
 -I ルール番号を指定してルールを挿入する
 -F 指定されたチェーンの全ての設定を削除する

● チェーン
INPUT 自ホストに入ってくるパケット
OUTPUT ローカルマシンで生成されたパケット
FORWARD 自ホストを経由するパケット
PREROUTING 入ってきたパケットを変換
POSTROUTING 出ていくパケットを変換

● パラメータ
-p プロトコル プロトコル(tcp、udp、icmp、all)を指定
-s IPアドレス[/mask] 送信元のアドレス。IPアドレスorホスト名を記述
-d IPアドレス[/mask] 送信先のアドレス。IPアドレスorホスト名を記述
--sport ポート番号 送信元のアドレス。IPアドレスorホスト名を記述
-dport ポート番号 送信先のアドレス。IPアドレスorホスト名を記述
-i インターフェイス名 パケットが入ってくるインターフェイスを指定
-o インターフェイス名 パケットが出ていくインターフェイスを指定
-j ターゲット 条件に合ったときのアクションを指定
-t テーブル テーブルを指定
-m state --state パケットの状態を条件として指定。stateは、 NEW、ESTABLISHED、RELATED、INVALIDが指定できる
! -p、-s、-dなどで、条件を反転(~以外となる)
--to IPアドレス:ポート番号 宛先を指定

● ターゲット
ACCEPT パケットの通過を許可
DROP パケットを破棄
MASQUERADE 送信元IPアドレスとポート番号の変換
SNAT 送信元のIPアドレスの変換
DNAT 送信先のIPアドレスの変換
LOG ログを取る
REJECT パケットを拒否し、ICMPメッセージを返信(送信元に通知)
REDIRECT 特定ポートにリダイレクト

b. 攻撃の回避


z. 出題範囲概要

●主要な知識範囲
iptablesの設定ファイル、ツール、ユーティリティ
ルーティングテーブルを管理するためのツール、コマンド、ユーティリティ
プライベートアドレスの範囲
ポートリダイレクトとIP転送
発信元または宛先のプロトコル、ポート、アドレスに基づいて、データグラムを受け入れる、または拒否するフィルタとルールの表示と記述
フィルタ設定の保存および再読込
●重要なファイル、用語、ユーティリティ
/proc/sys/net/ipv4 /etc/services iptables



     

www.it-shikaku.jp