Iptablesチュートリアル 1.2.2

Oskar Andreasson

     
    

Tatsuya Nonogaki - 日本語訳

Japanese translation v.1.0.1

この文書を、フリーソフトウェア財団発行の GNU フリー文書利用許諾契約書バージョン1.1 が定める条件の下で複製、頒布、あるいは改変することを許可する。序文とその副章は変更不可部分であり、「Original Author: Oskar Andreasson」は表カバーテキスト、裏カバーテキストは指定しない。この利用許諾契約書の複製物は「GNU フリー文書利用許諾契約書」という章に含まれている。

このチュートリアルに含まれるすべてのスクリプトはフリーソフトウェアです。あなたはこれを、フリーソフトウェア財団によって発行された GNU 一般公衆利用許諾契約書バージョン2の定める条件の下で再頒布または改変することができます。

これらのスクリプトは有用であることを願って頒布されますが、*全くの無保証* です。商業可能性の保証や特定の目的への適合性は、言外に示されたものも含め全く存在しません。詳しくはGNU 一般公衆利用許諾契約書をご覧ください。

あなたはこのチュートリアルと共に、GNU 一般公衆利用許諾契約書の複製物を一部受け取ったはずです。もし受け取っていなければ、フリーソフトウェア財団まで請求してください(宛先は the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA)。


献辞

僕はこのドキュメントを僕の素晴らしい妹と姪、それに義弟に捧げる。彼らは僕を応援し、インスピレーションを与えてくれた。彼らは、なくてはならない幸せの源であり一筋の光だ。感謝!

それに、僕に執筆の励みを与え、以心伝心で世話をしてくれる Ninel に言葉を贈らないわけにはいかない。ありがとう。

そして、僕はこの作品を、とてつもなくきつい仕事をしている Linux 開発者達と維持管理者達に捧げたい。この素晴らしいオペレーティングシステムを世に送り出してくれている人々へ。

Table of Contents
著者について
読み方
予備知識
このドキュメントで用いる表記法
<この日本語訳で用いる表記法>
1. 序章
1.1. なぜこのドキュメントを書いたか
1.2. どのようにして書いたか
1.3. このドキュメントで使う用語
1.4. まとめ
2. TCP/IPのおさらい
2.1. TCP/IPのレイヤー
2.2. IPの特徴
2.3. IPヘッダ
2.4. TCPの特徴
2.5. TCPヘッダ
2.6. UDPの特徴
2.7. UDPヘッダ
2.8. ICMPの特徴
2.9. ICMPヘッダ
2.9.1. ICMPエコー要求/応答
2.9.2. ICMP到達不能メッセージ (Destination Unreachable)
2.9.3. ソースクエンチ (Source Quench)
2.9.4. リダイレクト (Redirect)
2.9.5. TTL equals 0
2.9.6. パラメータ障害
2.9.7. タイムスタンプ要求/応答
2.9.8. インフォメーション要求/応答
2.10. SCTPの特徴
2.10.1. イニシャライズとアソシエーション
2.10.2. データの送信とコントロールセッション
2.10.3. シャットダウンと中止
2.11. SCTPヘッダ
2.11.1. SCTP共通ヘッダフォーマット
2.11.2. SCTPの一般ヘッダと共通ヘッダ
2.11.3. SCTP ABORTチャンク
2.11.4. SCTP COOKIE ACKチャンク
2.11.5. SCTP COOKIE ECHOチャンク
2.11.6. SCTP DATAチャンク
2.11.7. SCTP ERRORチャンク
2.11.8. SCTP HEARTBEATチャンク
2.11.9. SCTP HEARTBEAT ACKチャンク
2.11.10. SCTP INITチャンク
2.11.11. SCTP INIT ACKチャンク
2.11.12. SCTP SACKチャンク
2.11.13. SCTP SHUTDOWNチャンク
2.11.14. SCTP SHUTDOWN ACKチャンク
2.11.15. SCTP SHUTDOWN COMPLETEチャンク
2.12. TCP/IP宛先誘導型ルーティング
2.13. まとめ
3. IPフィルタリングとは
3.1. IPフィルタとは何か
3.2. IPフィルタリングの用語と表現
3.3. IPフィルタの計画の仕方
3.4. まとめ
4. ネットワークアドレス変換とは
4.1. NATの利用目的と用語解説
4.2. NAT使用時の注意点
4.3. 概念を理解するためのNATマシン構築例
4.3.1. NATマシン構築に必要なもの
4.3.2. NATマシンの配備位置
4.3.3. プロキシの配置の仕方
4.3.4. NATマシン構築の最終段階
4.4. まとめ
5. 準備
5.1. iptablesの入手先
5.2. カーネルのセットアップ
5.3. ユーザ空間のセットアップ
5.3.1. ユーザ空間アプリケーションのコンパイル
5.3.2. Red Hat 7.1 でのインストール
5.4. まとめ
6. テーブルとチェーンの道のり
6.1. 全般
6.2. mangleテーブル
6.3. natテーブル
6.4. Rawテーブル
6.5. filterテーブル
6.6. ユーザ定義チェーン
6.7. まとめ
7. ステート機構
7.1. はじめに
7.2. conntrackエントリ
7.3. ユーザ空間でのステート
7.4. TCPコネクション
7.5. UDPコネクション
7.6. ICMPコネクション
7.7. デフォルトのコネクション
7.8. 追跡除外コネクションとrawテーブル
7.9. 複雑なプロトコルとコネクション追跡
7.10. まとめ
8. 大きなルールセットの保存とリストア
8.1. 速度に関する考察
8.2. restoreの欠点
8.3. iptables-save
8.4. iptables-restore
8.5. まとめ
9. ルールの作り方
9.1. iptablesのコマンドの基本
9.2. テーブル
9.3. コマンド
9.4. まとめ
10. iptablesのマッチ
10.1. 汎用的なマッチ
10.2. 暗黙的なマッチ
10.2.1. TCPマッチ
10.2.2. UDPマッチ
10.2.3. ICMPマッチ
10.2.4. SCTPマッチ
10.3. 明示的なマッチ
10.3.1. Addrtypeマッチ
10.3.2. AH/ESPマッチ
10.3.3. Commentマッチ
10.3.4. Connmarkマッチ
10.3.5. Conntrackマッチ
10.3.6. DSCPマッチ
10.3.7. ECNマッチ
10.3.8. Hashlimitマッチ
10.3.9. Helperマッチ
10.3.10. IP rangeマッチ
10.3.11. Lengthマッチ
10.3.12. Limitマッチ
10.3.13. MACマッチ
10.3.14. Markマッチ
10.3.15. Multiportマッチ
10.3.16. Ownerマッチ
10.3.17. Packet type マッチ
10.3.18. Realmマッチ
10.3.19. Recentマッチ
10.3.20. Stateマッチ
10.3.21. TCPMSSマッチ
10.3.22. TOSマッチ
10.3.23. TTLマッチ
10.3.24. Uncleanマッチ
10.4. まとめ
11. iptablesのターゲットとジャンプ
11.1. ACCEPTターゲット
11.2. CLASSIFYターゲット
11.3. CLUSTERIPターゲット
11.4. CONNMARKターゲット
11.5. CONNSECMARKターゲット
11.6. DNATターゲット
11.7. DROPターゲット
11.8. DSCPターゲット
11.9. ECNターゲット
11.10. LOGターゲット
11.11. MARKターゲット
11.12. MASQUERADEターゲット
11.13. MIRRORターゲット
11.14. NETMAPターゲット
11.15. NFQUEUEターゲット
11.16. NOTRACKターゲット
11.17. QUEUEターゲット
11.18. REDIRECTターゲット
11.19. REJECTターゲット
11.20. RETURNターゲット
11.21. SAMEターゲット
11.22. SECMARKターゲット
11.23. SNATターゲット
11.24. TCPMSSターゲット
11.25. TOSターゲット
11.26. TTLターゲット
11.27. ULOGターゲット
11.28. まとめ
12. スクリプトのデバグ
12.1. デバグ、それは必要欠くべからざるもの
12.2. Bashデバグテクニック
12.3. デバグに役立つシステムツール
12.4. iptablesのデバグ
12.5. その他のデバグツール
12.5.1. Nmap
12.5.2. Nessus
12.6. まとめ
13. rc.firewallファイル
13.1. 例 rc.firewall
13.2. rc.firewallの解説
13.2.1. 設定オプション
13.2.2. 追加モジュールの初期ロード
13.2.3. procの設定
13.2.4. 各種チェーンへのルール配置
13.2.5. デフォルトポリシーの設定
13.2.6. filterテーブルにユーザ定義チェーンを作る
13.2.7. INPUTチェーン
13.2.8. FORWARDチェーン
13.2.9. OUTPUTチェーン
13.2.10. natテーブルのPREROUTINGチェーン
13.2.11. SNATの開始とPOSTROUTINGチェーン
13.3. まとめ
14. スクリプト例
14.1. rc.firewall.txtスクリプトの構造
14.1.1. 構造
14.2. rc.firewall.txt
14.3. rc.DMZ.firewall.txt
14.4. rc.DHCP.firewall.txt
14.5. rc.UTIN.firewall.txt
14.6. rc.test-iptables.txt
14.7. rc.flush-iptables.txt
14.8. Limit-match.txt
14.9. Pid-owner.txt
14.10. Recent-match.txt
14.11. Sid-owner.txt
14.12. Ttl-inc.txt
14.13. Iptables-save ruleset
14.14. まとめ
15. iptables/netfilter用グラフィカルユーザインターフェイス
15.1. fwbuilder
15.2. Turtle Firewall プロジェクト
15.3. Integrated Secure Communications System
15.4. IPMenu
15.5. Easy Firewall Generator
15.6. まとめ
16. Linux, iptables及びnetfilterをベースとした製品
16.1. Ingate Firewall 1200
16.2. まとめ
A. 特別なコマンドの詳細解説
A.1. 稼働中のルールセットのリストアップ
A.2. テーブルのアップデートとフラッシュ
B. よくある問題と質問
B.1. モジュールロードのトラブル
B.2. NEWステートでありながらSYNビットの立っていないパケット
B.3. SYN/ACKでNEWなパケット
B.4. 予約済みIPアドレスを使用するインターネットサービスプロバイダ
B.5. iptablesにDHCPリクエストを通させる
B.6. mIRC DCCのトラブル
C. ICMPタイプ
D. TCPオプション
E. その他の資料とリンク
F. 謝辞
G. History
H. GNU Free Documentation License
0. PREAMBLE
1. APPLICABILITY AND DEFINITIONS
2. VERBATIM COPYING
3. COPYING IN QUANTITY
4. MODIFICATIONS
5. COMBINING DOCUMENTS
6. COLLECTIONS OF DOCUMENTS
7. AGGREGATION WITH INDEPENDENT WORKS
8. TRANSLATION
9. TERMINATION
10. FUTURE REVISIONS OF THIS LICENSE
How to use this License for your documents
I. GNU General Public License
0. Preamble
1. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
2. How to Apply These Terms to Your New Programs
J. スクリプト例コードベース
J.1. Example rc.firewall script
J.2. Example rc.DMZ.firewall script
J.3. Example rc.UTIN.firewall script
J.4. Example rc.DHCP.firewall script
J.5. Example rc.flush-iptables script
J.6. Example rc.test-iptables script
List of Tables
2-1. SCTPタイプ
2-2. エラー原因コード
2-3. INITの可変長パラメータ
2-4. INIT ACK の可変長パラメータ
6-1. ローカルホスト (我々のマシン) を宛先とするパケット
6-2. ローカルホスト (我々のマシン) を送信元とするパケッ ト
6-3. フォワードパケット
7-1. ユーザ空間でのステート
7-2. 内部ステート
7-3. サポートされている複雑なプロトコル
9-1. テーブル
9-2. コマンド
9-3. オプション
10-1. 汎用的なマッチ
10-2. TCPマッチ
10-3. UDPマッチ
10-4. ICMPマッチ
10-5. SCTPマッチ
10-6. アドレスタイプ
10-7. Addrtypeマッチオプション
10-8. AHマッチオプション
10-9. ESPマッチオプション
10-10. Commentマッチオプション
10-11. Connmarkマッチオプション
10-12. Conntrackマッチオプション
10-13. DSCPマッチオプション
10-14. ECNマッチオプション
10-15. IP内のECNフィールド
10-16. Hashlimitマッチオプション
10-17. Helperマッチオプション
10-18. IP rangeマッチオプション
10-19. Lengthマッチオプション
10-20. Limitマッチオプション
10-21. MACマッチオプション
10-22. Markマッチオプション
10-23. Multiportマッチオプション
10-24. Ownerマッチオプション
10-25. Packet typeマッチオプション
10-26. Realmマッチオプション
10-27. Recentマッチオプション
10-28. Stateマッチオプション
10-29. TCPMSSマッチオプション
10-30. TOSマッチオプション
10-31. TTLマッチオプション
11-1. CLASSIFYターゲットオプション
11-2. CLUSTERIPターゲットオプション
11-3. CONNMARKターゲットオプション
11-4. CONNSECMARKターゲットオプション
11-5. DNATターゲットオプション
11-6. DSCPターゲットオプション
11-7. ECNターゲットオプション
11-8. LOGターゲットオプション
11-9. MARKターゲットオプション
11-10. MASQUERADEターゲットオプション
11-11. NETMAPターゲットオプション
11-12. NFQUEUEターゲットオプション
11-13. REDIRECTターゲットオプション
11-14. REJECTターゲットオプション
11-15. SAMEターゲットオプション
11-16. SECMARKターゲットオプション
11-17. SNATターゲットオプション
11-18. TCPMSSターゲットオプション
11-19. TOSターゲットオプション
11-20. TTLターゲットオプション
11-21. ULOGターゲットオプション
C-1. ICMPタイプ
D-1. TCPオプション