324.4 netfilter/iptables

2021-06-21

324.4 netfilter/iptables

重要度 5
説明 iptablesの使用方法と設定に精通していること。
主要な知識範囲
・iptables を使用したパケットフィルタリング及び NAT(Network Address Translation)機能

重要なファイル、用語、ユーティリティ

  • iptables
  • iptables-save/iptables-restore

iptables

iptablesは、パケットフィルタリング、ファイアウォール、ネットワークアドレス変換(NAT)機能をもつコマンド

書式
iptables [-t テーブル] -[AD] チェイン ルール詳細 [オプション]
iptables [-t テーブル] -[LFZ] チェイン [オプション]
iptables [-t テーブル] -I チェイン [ルール番号] ルール詳細 [オプション]
iptables [-t テーブル] -N チェイン
iptables [-t テーブル] -X チェイン

主なテーブル

filter パケットの許可・破棄を設定するためのもので、フィルタリングのために使用。INPUT、FORWARD、OUTPUTチェインを利用可
nat 新しいセッションを開くパケットの送信元フィールドや、宛先フィールドの変換のために使用。OUTPUT、PREROUTING、POSTROUTINGチェインを利用可
mangle TTLの設定・変更やMARK付けなどの、パケットの内容を変更するために利用。
カーネル2.4.17までは、POSTROUTING、OUTPUTチェインを利用可。
カーネル2.4.18からは、INPUT、FORWARD、POSTROUTINGチェインも利用可。

主なコマンド

-A [チェイン] [ルールの詳細] または –append [チェイン] [ルールの詳細] 選択されたチェインの最後のルールを追加
-D [チェイン] [ルールの詳細] または –delete [チェイン] [ルールの詳細] 選択されたチェインを削除
-F [チェイン] または –flush [チェイン] 選択されたチェイン(何も指定しなければテーブル内の全てのチェイン)の内容を消去
-I [チェイン] [ルール番号]< [ルールの詳細] または –insert[チェイン] [ルール番号]< [ルールの詳細] 選択されたチェインにルール番号を指定してルールを挿入
-L [チェイン] [オプション] または –list [チェイン] [オプション] 選択されたチェインにある全てのルールを一覧表示。チェインの指定がなければ全てを表示
-N [チェイン] または –new-chain [チェイン] 指定された名前のユーザー定義チェインを作成
-X [チェイン] または –delete-chain [チェイン] 指定したユーザー定義チェインを削除
-Z [チェイン] または –zero [チェイン] すべてのチェックインのパケットカウンタとバイトカウンタを0に設定

チェイン

チェインとは、iptablesでは特定条件に当てはまるパケットに対して処理ルールを定義すること

INPUT 入力(受信)パケットに対して適用
OUTPUT 出力(送信)パケット に対して適用
FORWARD 転送(フォワード)するパケットに対して適用
PREROUTING ルーティング前に適用。転送時に使用。受信時を宛先アドレスを変換するチェイン
POSTROUTING ルーティング後に適用。マスカレード時に使用。送信時に送信元アドレスを変換するチェイン

ターゲット

ターゲットは、パケットがマッチした際のアクションを指定

ACCEPT パケットの受け入れる
DROP パケットを破棄
REJECT パケットを拒否し、パケット送信先にICMPエラーメッセージを送信
RETRUN チェーン内のルール評価を終了する
MASQUERADE 「-t nat」と「-A POSTROUTING」と同時に用いて送信元IPとポート番号を書き換える
PREROUTING 特定ポートにリダイレクト
LOG Logを採取する
SNAT パケットの送信元アドレスを修正する。natテーブルでpostroutingチェーンでのみ利用できる。
DNAT パケットの送信先アドレスを修正する。natテーブルでpostroutingチェーンでのみ利用できる。

主なコマンドの主なパラメータ

-s [アドレス] または –souce [アドレス] 送信元を指定
-d [アドレス] または –destination [アドレス] 送信先を指定
-i [インターフェイス名] または –in-interface [インターフェイス名] パケットを受信するインターフェイス名を指定
-j [ターゲット] または –jump [ターゲット] ルールのターゲットを、つまり、パケットをマッチした場合の処理
-o [インターフェイス名] または –out-interface [インターフェイス名] パケットを受信するインターフェイス名を指定
-p [プロトコル] または –protocol [プロトコル] ルールで使用されるプロトコル、またはチェックされているパケットのプロトコル。
tcp, udp, icmp, all のいずれかを指定。tcp,udpの場合は以下のオプションを指定可能
-sport [ポート番号] または –souce-port [ポート番号] 送信元ポートまたはポート範囲を指定
-dport [ポート番号] または –destination -port [ポート番号] 送信先ポートまたはポート範囲を指定


・192.168.0.50 から送信された全てのトラフィックを破棄

# iptables -A INPUT -s 192.168.0.50 -j DROP

・外部からのHTTP(ポート番号:80)へのアクセスを許可

# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

・IPアドレス192.168.0.50からのポート番号22への接続を許可

# iptables -A INPUT -s 192.168.0.50 -p tcp --dpot 22 -j ACCEPT

iptables-save

iptablesコマンドで設定した内容は,メモリーに格納されて動作します。そのため,再起動した際には,それまで設定した全ての内容が失われてしまいます。
現在設定されているルールをファイルに書き出して保存しておくツールが iptables-save です

書式
iptables-save [オプション]
[]省略可能

オプション

-c または –counters すべてのパケとカウンタとバイトカウンタの値を出力
-t [テーブル名] または –teble [テーブル名] 出力テーブルに制限する。指定しなければ全テーブルを出力


・IPテーブル情報をファイルに出力

# iptables-save > /tmp/iptables.txt

iptables-restore

ルールを変更した場合などに iptables-save で保存したファイルを読み込んで変更を元に戻すツールが iptables-restore です

書式
iptables-restore [オプション]
[]省略可能

オプション

-c または –counters すべてのパケとカウンタとバイトカウンタの値を復元
-n または –noflush これまでのテーブルの内容を削除しない。指定しなければこれまでの各IPテーブルの内容を全て削除


・iptables-saveコマンドで保存したファイルからIPテーブル情報を復元

# iptables-restore < /tmp/iptables.txt

LPIC 30xLPIC303

Posted by admin