スポンサーサイト

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

Linuxでファイアウォールを作成

ゲーム製作から途方も無くかけ離れてる気がしないでもないですが、ネット部分を作成するにあたって絶対必要であろうFWの作成メモです。

〜 iptablesを使ってFWを構築 〜

iptables とは IPv4 のパケットフィルタと NAT を管理するサービスである

まずテーブルとチェインという概念がある
テーブルは三つ存在し、指定がないとデフォルトであるfilterが使用される
チェインはいくつもの「ルール」を重ねて作成してある
このルールの壁こそがFWとなるわけである


ルールを追加するときは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 旧チェイン名 新チェイン名
複数の異なるテーブルを定義できる
各テーブルにはたくさんの組み込み済みチェインが含まれており、さらにユーザー定義のチェインを加えることもできる

設定されたFWのルールに当てはまった場合どうするか?というパケットの行動を決めるのが「ターゲット」である
ターゲットの種類は以下
------------------------------
ACCEPT パケットの通過を許可
DROP  パケットを破棄
QUEUE ユーザー空間に渡す(カーネルがサポートしていれば)
RETURN このチェインの検討を中止して、以前の (呼び出し元) チェイン内の次のルールから検討を再開  
------------------------------


テーブルは全部で3種類存在する
------------------------------
【テーブル】 :【登録されている組み込みチェイン】
①filter  INPUT、FORWARD、OUTPUT
②nat  PREROUTING、OUTPUT、POSTROUTING
③mangle  PREROUTING、OUTPUT カーネル2.4.18からはこれらの他に INPUT、FORWARD、POSTROUTING
------------------------------


上記であげたチェインの説明
------------------------------
INPUT 入力(受信)パケット
OUTPUT 出力(送信)パケット
FORWARD フォワードするパケット
PREROUTING 受信時に変換するチェイン
POSTROUTING 送信時に変換するチェイン
------------------------------





iptables で使えるオプションは、いくつかのグループに分けられる

コマンド 以下の説明で注記されていない限り、コマンドラインで指定できるのはこの中の 1 つだけである
------------------------------
-A(--append) chain :chain に条件やアクション(ルール)を追加します。
-P(--policy) chain :chain の基本となるルールを決定します。
-D(--delete) chain :指定チェインから1つ以上のルールを削除
-N(--new-chain)chain :新しいユーザー定義チェインを作成
-X(--delete-chain)chain :指定ユーザー定義チェインを削除
-F chain :条件の合致する chain を削除します。chain 省略時は「全て」削除します。
------------------------------


パラメータ 以下のパラメータは (add, delete, insert, replace, append コマンドで用いられて) ルールの仕様を決める。
------------------------------
-p (--protocol) :プロコトル ルールで使うプロトコル(tcp、udp、icmp、all)を指定
-s (--source) :IPアドレス[/mask] 送信元アドレス。IPアドレスのほかにホスト名などでも指定できる
-d (--destination) :IPアドレス[/mask] 接続先アドレス。IPアドレスのほかにホスト名などでも指定できる
-i (--in-interface) :デバイス パケットが入ってくるインターフェイス(eth0、eth1など)を指定
-o (--out-interface):デバイス パケットが出ていくインターフェイスを指定
-j (--jump) :ターゲット パケットがマッチしたときのアクション(ターゲット)を指定
-t (--table) :テーブル テーブル(filter、nat、mangle)を指定
------------------------------


その他のオプション
------------------------------
-v(--verbose)
詳細な出力を行う。 list コマンドの際に、
インターフェース名・ (もしあれば) ルールのオプション・TOS マスクを表示させる。
パケットとバイトカウンタも表示される。
このオプションを append, insert, delete, replace コマンドに適用すると、ルールについての詳細な情報を表示
-n(--numeric)
数値による出力を行う。 IP アドレスやポート番号を数値によるフォー
マットで表示する。デフォルトでは、iptables は (可能であれば)
これらの情報をホスト名・ネットワーク名・サービス名で表示しようとする。

-x(--exact)
厳密な数値で表示する。パケットカウンタとバイトカウン タ を 、
K(1000 の何倍か)・M (1000K の何倍か)・G (1000M の何倍か) ではなく
厳密な値で表示する。このオプションは、 -L コマンドとしか関係しない。

--line-numbers
ルールを一覧表示する際、そのルールがチェインのどの位置にあるかを表す行番号を各行の始めに付加する。

--modprobe=command
チェインにルールを追加または挿入する際に、 (ターゲットやマッチング の 拡張などで)
必要なモジュールをロードするために使う commandを指定する。

------------------------------



・iptablesの設定の流れ
 1.チェインのポリシーを決める
 2.現在設定されているルールをクリアする
 3.新しいルールを設定する
 4.再起動すると戻ってしまうので作成した設定をセーブする
 5.iptables を再起動する


================================================
             例(あくまで例)
================================================
1. チェインのポリシーを決める(以降のルールにマッチしなかった場合に適用するデフォルトルール)
 INPUT については、一旦すべて ACCEPT(許可) します。
 FORWARD は使わないので DROP(破棄) します。
 OUTPUT は、すべて ACCEPT(許可) します。
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
 
※FORWARD はルータとして動作させるときに設定します。

2. 現在設定されているルールをクリアする
 最初にルールをクリアしておきます。
sudo iptables -F

3. 新しいルールを設定する(例)
 icmp(ping)と自端末からの入力を許可
sudo iptables -A INPUT -p icmp -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT

 Web、FTP、POP、smtp による接続を許可
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 110 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 25 -j ACCEPT

 ssh による接続を許可
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT ローカルの他端末からWebminでの接続を許可(Webminのポート:10000)
sudo iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 10000 -j ACCEPT 
TCPの接続開始と応答、FTPデータなどを許可
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
他の接続はすべて破棄(ポリシーの再設定)
sudo iptables -P INPUT DROP

4. 再起動すると戻ってしまうので作成した設定をセーブする
 このままではサーバを再起動すると設定が消える。
 ルールをセーブする
sudo /etc/init.d/iptables save

5. iptables を再起動する
sudo service iptables restart



<超重要!!>
・ルールの評価順?
ルールは記述した順番に評価されていくことになる
どれにも当てはまらない(ターゲットで飛ばされない)場合ポリシーで指定されたターゲットに飛ばされる


・ユーザ定義チェーンのルールはいつ評価されるのか?
まずユーザ定義チェーンには、チェーンの末尾に達した時に適用するデフォルトポリシーを指定することはできない。
それが可能なのはビルトインチェーンだけ。
ポリシーを書き込んだのと同じ動作をさせる事は可能。ルールを末尾にポリシーのそれを書き込めばよい。
ユーザ定義チェーンでいずれのルールもマッチしなかった場合、規定の動作では、元のチェーンへ戻る。
戻る場所は自身へ飛ばすことになったルールの真下である。

コメントの投稿

非公開コメント

No title

アメリカのCMU(カーネギーメロン大学)で歩行動作などの
基本モーションの学術用公開データベースがある
(Motion Capture Database)。

ttp://sites.google.com/a/cgspeed.com/cgspeed/motion-capture/cmu-bvh-conversion

モーション一覧リスト
ttp://sites.google.com/a/cgspeed.com/cgspeed/motion-capture/cmu-bvh-conversion/bvh-conversion-release---motions-list

.bvh のモーションデータ。
同じサイトにある簡易ビューワーbvhplay.exeで読み込むことで
簡単に動作が確認できる。

bvhplay.exe は以下からダウンロード。
ttp://sites.google.com/a/cgspeed.com/cgspeed/bvhplay

ありがとうございます!

文字数制限でこちらでお礼を書き込めないようなので記事にて返信致します。
プロフィール

あしゅ

Author:あしゅ
ぷぃぷぃ日常。
いつのまにか雑記ブログに。

カテゴリ
最新記事
検索フォーム
最新コメント
リンク
このブログをリンクに追加する
ブロとも申請フォーム

この人とブロともになる

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