スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

パケットフィルタリング(IPフィルタリング)(2)

iptables

□書式

iptables [-t table] -[AD] チェイン ルールの詳細 [オプション]
iptables [-t table] -I チェイン [ルール番号] ルールの詳細 [オプション]
iptables [-t table] -R チェイン ルール番号 ルールの詳細 [オプション]
iptables [-t table] -D チェイン ルール番号 [オプション]
iptables [-t table] -[LFZ] [チェイン] [オプション]
iptables [-t table] -N チェイン
iptables [-t table] -X [チェイン]
iptables [-t table] -P チェイン ターゲット [オプション]
iptables [-t table] -E 旧チェイン名 新チェイン名

□iptablesには、3つの「テーブル」が用意されいる。

filterテーブル ― ネットワークパケットを処理する デフォルトのテーブル。
natテーブル ― 新しい接続を開くようなパケットに対して参照される。
          また、Network Address Translation (NAT)に使用。
mangleテーブル ― パケット変更の特定のタイプ(特別なパケット変換)に使用。

□テーブルによって使用できる「チェイン」が異なる。

filterテーブルで使用可能なチェイン

INPUT ― ホスト用のターゲットとされているネットワークパケット(受信パケット)に適用。
OUTPUT ― ローカル生成のネットワークパケット(送信パケット)に適用。
FORWARD ― ホストを通ってルーティングしたネットワークパケット(マシンを経由するパケット)に適用。

natテーブルで使用可能なチェイン

PREROUTING ― ネットワークパケットが到着すると、すぐに変換。
OUTPUT ― ローカル生成のネットワークパケット(送信パケット)を送信(ルーティング)される前に変換。
POSTROUTING ― ネットワークパケットが出て行くときに変換。

mangleテーブルで使用可能なチェイン

INPUT ― ホスト用のターゲットとされているネットワークパケット(受信パケット)に適用。
OUTPUT ― ローカル生成のネットワークパケット(送信パケット)を送信(ルーティング)される前に変換。
FORWARD ― ホストを通ってルーティングしたネットワークパケット(マシンを経由するパケット)に適用。
PREROUTING ― ネットワークパケットが到着すると、すぐに変換。
POSTROUTING ― ネットワークパケットが出て行くときに変換。

□ターゲット(ルールにマッチしたときのファイアウォールの動作)

ACCEPT    パケットを通過させる
DROP     パケットを破棄し、相手にはなにも返答しない
REJECT   パケットを破棄し、相手にはICMPを使って破棄したことを通知する
REDIRECT port   パケットを指定したポートにリダイレクトする
RETURN   チェイン内のルール評価を終了させる

その他に、SNAT、DNAT等がある

SNAT --to(--to-source) <IPアドレス> [-<IPアドレス>] [:port-port]

パケットの送信アドレスを変換。natテーブル、POSTROUTINGチェインでのみ有効。
ポートを指定すると、変換されたアドレスの指定されたポートで接続することになる。
IPアドレス、ポート共にレンジ指定が可能。

DNAT --to(--to-destination) <IPアドレス> [-<IPアドレス>] [:port-port]

パケットの送信アドレスを変換。natテーブルとPREROUTING、OUTPUTチェイン、これらのチェインから呼び出されるユーザー定義チェインのみで有効。
ポートを指定すると、変換されたアドレスの指定されたポートに接続する。
IPアドレス、ポート共にレンジ指定が可能。

□オプションは複数のグループに分けられる

・コマンド
実行する特定の動作を指定する。基本的に一つしか指定できない。

-A(--append) チェイン ルールの詳細
選択されたチェインの最後に 1 つ以上のルールを追加。

-D(--delete) チェイン ルールの詳細
-D(--delete) チェイン ルール番号
選択されたチェインから 1 つ以上のルールを削除。2 つの使い方がある。
  チェインの中の番号 (最初のルールは1) を指定する場合と、マッチするルールを指定する場合。

-I(--insert) チェイン [ルール番号] ルールの詳細
選択されたチェインにルール番号を指定して1つ以上のルールを挿入。
  ルール番号が 1 の場合、ルールはチェインの先頭に挿入される。
  ルール番号が指定されない場合も先頭に挿入される。

-R(--replace) チェイン ルール番号 ルールの詳細
選択されたチェインでルールを置換。ルール番号は 1 からはじまる。

-L(--list) [チェイン]
選択されたチェインにある全てのルールを一覧表示。
  チェインが指定されない場合、全てのチェインにあるリストを一覧表示。
  
-F(--flush) [チェイン]
選択されたチェイン(指定しなければテーブル内全てのチェイン) の内容を消去。

-Z(--zero) [チェイン]
すべてのチェインのパケットカウンタとバイトカウンタをゼロにする。
  クリアされる直前のカウンタを見るために、-L, --list (一覧表示) オプションと同時に指定可。

-N(--new-chain) チェイン
指定した名前でユーザー定義チェインを作成。同名のターゲットが既に存在してはならない。

-X(--delete-chain) [チェイン]
指定したユーザー定義チェインを削除。そのチェインが参照されていてはならない。
  削除する前に、そのチェインを参照しているルールを削除するか置き換えなければならない。
  引数が与えられない場合、テーブルにあるチェインのうち組み込み済みチェイン以外を全削除。

-P(--policy) チェイン ターゲット
チェインのポリシーを指定したターゲットに設定。
  (ユーザー定義ではない)組み込み済みチェインにしかポリシーは設定不可。
  また、組み込み済みチェインもユーザー定義チェインもポリシーのターゲットには設定不可。

-E(--rename-chain) 旧チェイン名 新チェイン名
ユーザー定義チェインを指定した名前に変更。
  見た目だけの変更なので、テーブルの構造には何も影響しない。

-h
ヘルプ。

・パラメータ

-p(--protocol) [ ! ] プロトコル
ルールで使われるプロトコル、またはチェックされるパケットのプロトコル。
指定できるプロトコルは、 tcp, udp, icmp, all のいずれか 1 つか、数値。
数値には、これらのプロトコルのどれかないし別のプロトコルを表す数値を指定することができる。
プロトコルの前に "!" を置くと、そのプロトコルを除外するという意味になる。
数値 0 は all と同じ。オプションが省略された際のデフォルトはall。

-s(--source) [ ! ] IPアドレス [/マスク]
送信元の指定。 アドレスはホスト名、ネットワーク IP アドレス (/マスクを指定する)、
  通常の IP アドレス、のいずれかである。
  マスクはネットワークマスクまたは数値(/24等)でも可。
  アドレス指定の前に "!" を置くと、そのアドレスを除外するという意味になる。
  フラグ --src は、このオプションの別名である。

-d(--destination) [ ! ] IPアドレス [/マスク]
送信先の指定。
  フラグ --dst は、このオプションの別名である。

-j(--jump) ターゲット
ルールのターゲット、つまり、パケットがマッチした場合にどうするかを指定する。
  ターゲットはユーザー定義チェイン (そのルール自身が入っているチェイン以外) でも、パケットの行方を即時に決定する特別な組み込み済みターゲットでも、拡張されたターゲットでもよい。
  このオプションがルールに指定されなかった場合、ルールにマッチしてもパケットの行方に何も影響しないが、ルールのカウンタは 1 つ加算される。

-i(--in-interface ) [ ! ] デバイス
パケットを受信することになるデバイス名。
  デバイス名の前に "!" を置くと、そのデバイスを除外するという意味になる。
  デバイス名が "+" で終っている場合、その名前で始まる任意のデバイス名にマッチする。
  このオプションが省略された場合、任意のデバイス名にマッチする。

-o(--out-interface) [ ! ] デバイス
パケットを送信することになるデバイス名 。
  デバイス名の前に "!" を置くと、そのデバイスを除外するという意味になる。
  デバイス名が "+" で終っている場合、その名前で始まる任意のデバイス名にマッチする。
  このオプションが省略された場合、任意のデバイス名にマッチする。

[ ! ] -f(--fragment)
このオプションは、分割されたパケットのうち2番目以降のパケットだけを参照するルールであることを意味する。
  このようなパケット(または ICMP タイプのパケット) は送信元・送信先ポートを知る方法がないので、送信元や送信先を指定するようなルールにはマッチしない。
   "-f" フラグの前に "!" を置くと、分割されたパケットのうち最初のものか、分割されていないパケットだけにマッチする。

□マッチングの拡張

一部のパラメータ(-pパラメータ等)では、パラメータ指定によってはさらに拡張指定が行える。
これを「マッチングの拡張」という。以下はその一部。

--sport(--source-port) [ ! ] [port[:port]]

送信元ポートを指定する。ポートはレンジで範囲指定することも可能。
パラメータ設定で「-p tcp」を指定したときに使用。

--dport(--destination-port) [ ! ] [port[:port]]

送信先ポートを指定する。ポートはレンジで範囲指定することも可能。
パラメータ設定で「-p tcp」を指定したときに使用。

--icmp-type [ ! ] typename

typenameにはICMPのタイプ(echo-requestやecho-replyなど)を指定する。
パラメータ設定で「-p icmp」を指定したときに使用。



その他多数のオプションやターゲットの拡張などがあるが、省略(書ききれない)。
もっとiptablesを使い込んでみて、必要性を感じれば書く。。
スポンサーサイト

テーマ : UNIX/Linux
ジャンル : コンピュータ

tag : LINUX CentOS 設定 iptables ファイアウォール firewall

パケットフィルタリング(IPフィルタリング)(1)

IPフィルタリングの用語と表現

*Accept (許可) - パケットを受け入れ (accept) て、ファイアウォール・ルールを通過させること。 drop, reject ターゲットの反対。

*Drop(破棄) - パケットが削除された後、何のアクションも行わない。パケットが破棄された旨をホストにも伝えない。ただパケットが消滅するだけ。

*Reject (拒絶) - 基本的には drop ターゲット (ポリシー) と同じだが、パケットが破棄されたという事実を送信者に返答する。

*State (ステート) - ひとつのストリーム(バイト列の流れ)の中における、パケットの状態 (state)。
具体的に言えば、ファイアウォールが初めて観測した (知った) パケットは NEW というステートに識別され (TCPコネクションのSYNパケット)、また、ファイアウォールが既に認知している確立済みのコネクションに属しているパケットならば ESTABLISHED と判定される。ステートは、セッションを常に監視しているコネクション追跡機構 によって判断される。

*Chain (チェイン) - ルールの集合体 (ルールセット) から成り、パケットがチェインの中を進んでいく時にそれらのルールが適用される。それぞれのチェインには特有の役割 (例えばそのチェインがどのテーブルに属しているかによって、チェインにできることできないことが決まる) や、適用範囲 (例えば foward されたパケットにのみ適用するとか、自ホスト宛てのパケットだけに適用するなど) がある。

*Table (テーブル) - 各テーブルには別個の使用目的があり、 iptables には 4つのテーブルがある。 raw, nat, mangle, filter テーブルだ。例えば filter テーブルはパケットをフィルタリングするためにできており、 nat テーブルはパケットに NAT (Network Address Translation = ネットワークアドレス変換) を施すために設計されている。

*Match (マッチ) - IPフィルタリングでは、2通りの意味がある。
ひとつは、或るルールの中の単一の一致条件を指す場合。そのマッチは、ヘッダがこれこれの情報を持っていなければならないということをルールに指示する。例えば --source マッチは送信元アドレスが或る特定のネットワーク範囲やホストアドレスでなければならないということを指示する。
もうひとつは、ひとつのルールを丸ごと 1 個のマッチと捉える場合。そのルールに指定してある全ての条件にマッチしたら、ジャンプ (ターゲット) に指定してある動作 (パケットの破棄など) が実行される。

*Target (ターゲット) - ルールセットの中の各ルールには大抵、ひとつのターゲット・セットがある。ルールの持つ条件が全て満たされたらパケットに何を行うかを指示するのがターゲット。
drop する、 accept する、 NAT を掛けるなどといった処置だ。

*Rule (ルール) - ほとんど全ての IPフィルタ一般、そして iptables でも、ルールとは、ひとつのターゲットを従えた 1 項目または数項目の一致条件 (match) の集まりを指す。ひとつのルールが複数のターゲット (アクション) を持てるように実装した IPフィルタもある。

*Ruleset (ルールセット) - ルールセットとは、幾つものルールから成るルールの総体のことで、 IPフィルタはこの "ルールセット" をロードして動く。
iptables の場合なら、ルールセットは、 filter, nat, raw, mangle の各テーブルとその下位にある全チェーンに組み込まれた、全てのルールを含有する。通常、ルールセットは設定ファイルの類に書き連ねる。

*Jump (ジャンプ) - ジャンプ命令はターゲットと密接な関係にある。
iptables においては、ジャンプ命令はターゲットと全く同じ書き方となるが、唯一異なるのが、ターゲット名ではなく別のチェーンの名前を指定するという点だ。つまり、ルールの条件に一致したら、パケットは指定した副チェーンへと送られ、通常と同じようにそこで処理される。

*Connection tracking (コネクション追跡) - 簡潔に言うと、コネクション追跡を備えたファイアウォールはコネクション/ストリームを追跡することができる。これを行うには大抵、プロセッサとメモリに大きな負荷がかかる。だが、ファイアウォールポリシーの構築者がそれを適切に使えば、この機能を持つファイアウォールは持たないものよりも遙かに高いセキュリティを獲得できる。

*Policy (ポリシー) -チェインのポリシー。これは、どのルールにもマッチしなかったパケットを処すデフォルトのアクションをファイアウォールに指示する。

テーマ : UNIX/Linux
ジャンル : コンピュータ

tag : LINUX セキュリティ ファイアウォール iptables

固定IPの設定(CentOS 5.2)

ネットワークデバイスの設定ファイルが置かれているディレクトリに移動

# cd /etc/sysconfig/network-scripts/

設定したい接続をviで編集(通常はeth0でよいと思う)。別に他のエディタでもよいが。

# vi ./ifcfg-eth0


DEVICE=eth0   ←デバイス名
ONBOOT=yes   ←システム起動時に有効にするか
BOOTPROTO=none   ←固定IP:none,static DHCPはdhcp
HWADDR=XX:XX:XX:XX:XX:XX   ←MACアドレス
TYPE=Ethernet    ←インタフェースのデバイスタイプ。他にxDSLなど
#DHCP_HOSTNAME=example.com   ←DHCPサーバに通知するホスト名
IPADDR=192.168.xx.xx    ←IPアドレスの指定(好きなように)
NETMASK=255.255.255.0   ←IPアドレスに対するネットマスクの指定
#NETADDR=192.168.1.0   ←ネットワークアドレス。記述は不要
#BROADCAST=192.168.1.255  ←ブロードキャストアドレス。記述は不要
USERCTL=no ←デバイスの制御をroot以外にも許すか。
PEERDNS=no ←DHCPで取得したDNSサーバのアドレスを/etc/resolv.confに
           反映するか。DHCPを使う場合は通常yes。
GATEWAY=192.168.1.1 ←DGのアドレス(通常はルータのIP)
IPV6INIT=no ←このデバイスでIPv6を有効にするか(通常はno)


DNSの指定ファイルをviで編集

# vi /etc/resolv.conf

nameserver XXX.XXX.XXX.XXX
nameserver XXX.XXX.XXX.XXX


ネットワーク再起動

# service network restart


設定確認

# ifconfig -a

テーマ : UNIX/Linux
ジャンル : コンピュータ

tag : LINUX CentOS IP 設定 手動

スカウター
プロフィール

Author:うにえる
個人的メモ

検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。