
第4回 Linuxで作るファイアウォール[NAT設定編]
今回からiptablesの具体的な設定を解説する。iptablesの使い方はやや複雑だが、理屈を理解すれば難しいものではない。前半で紹介する知識を利用して、まずはNATを実現しよう。
大貫大輔株式会社ラック
不正アクセス対策事業本部
2001/11/23
前回はiptablesを使用するためのカーネル再構築とルールの設計を行いました。これを基にファイアウォールを構築していきます。今回はiptablesの概要とNATの設定を行いましょう。
なお、前回紹介したルールはあくまでも参考なので、実際には自分の環境に合わせて作成してください。ただし、ルールの作成方法は基本的に変わらないので参考になると思います。
iptablesの仕組みと機能
これから本格的にファイアウォールを構築していくわけですが、その手段であるiptablesを理解していなければ目的を達することはできません。少々回り道になりますが、iptablesについて学んでおきましょう。
■iptablesを理解するための概念
iptablesを使うには、テーブルやチェインなどの概念を理解しておく必要があります。
iptablesには、3つの「テーブル」が用意されており、それぞれ「filter」「nat」「mangle」と呼びます。この中のfilterテーブルがデフォルトテーブルで、テーブルを指定せずにiptablesコマンドを使用した場合はこれが使われます。また、テーブルによって使用できる「チェイン」が異なります。
| filter | INPUT、FORWARD、OUTPUT |
| nat | PREROUTING、OUTPUT、POSTROUTING |
| mangle | PREROUTING、OUTPUT |
| 表1 各テーブルの組み込みチェイン | |
チェインは、パケットを検査する「ルール」のリストです。各チェインでルールに適合するかを調べ、次のチェインにパケットを渡します。このチェインのルールを変更・追加することでfilterテーブルやnatテーブルの設定が行われ、これによってファイアウォールを構築するわけです。natテーブルで使用するPREROUTING、OUTPUT、POSTROUTINGについては、NATの設定時にあらためて解説します。
| INPUT | 入力(受信)パケット |
| OUTPUT | 出力(送信)パケット |
| FORWARD | フォワードするパケット |
| PREROUTING | 受信時を変換するチェイン |
| POSTROUTING | 送信時に変換するチェイン |
| 表2 組み込みチェイン | |
| コラム:ipchainsとiptables |
カーネル2.4から採用されたiptablesと、従来のipchains(カーネル2.4でもサポートされている)の違いの一部を紹介しましょう。
|
■iptablesコマンドのオプション
iptablesはコマンドにオプションを指定してルールを作成します。基本的な設定方法はipchainsと同じです。まず、ファイアウォールを構築するうえで最低限必要であろうと考えられるオプションについて説明します。より詳細な説明が必要と判断したものについては、その都度解説を加えていきたいと思います。
iptablesの「オプション」は、基本的にチェインの操作を行う際に使用します。表3はその一部です。
| -A(--append) | 指定チェインに1つ以上の新しいルールを追加 |
| -D(--delete) | 指定チェインから1つ以上のルールを削除 |
| -P(--policy) | 指定チェインのポリシーを指定したターゲットに設定 |
| -N(--new-chain) | 新しいユーザー定義チェインを作成 |
| -X(--delete-chain) | 指定ユーザー定義チェインを削除 |
| 表3 iptablesのオプション | |
チェイン内のルールを指定するのに使うのが「パラメータ」です。同じくパラメータの一部を表4に挙げておきます。
| -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)を指定 |
| ! | -p、-s、-dなどで、条件を反転する。「! 192.168.0.1」とすると、「192.168.0.1以外」という意味になる |
| 表4 iptablesのパラメータ | |
-jパラメータでは、「ターゲット」を指定する必要があります。これは、パケットがマッチした際のアクション(何を行うか)のことです。主なものを表5にまとめておきました。
| ACCEPT | パケットの通過を許可 |
| DROP | パケットを破棄 |
| REJECT | パケットを拒否し、ICMPメッセージを返信 |
| REDIRECT | 特定ポートにリダイレクト |
| 表5 ターゲット(-jパラメータで指定するアクション) | |
また、ターゲットには「SNAT」と「DNAT」があります。表では説明しにくいので、以下で書式とともに挙げておきます。
●SNAT
SNAT --to(--to-source) <ipaddr>[-<ipaddr>][:port-port]
パケットの送信元アドレスを変換する。natテーブルとPOSTROUTINGチェインでのみ有効。ポートを指定すると、変換されたアドレスの指定されたポートで接続することになる。IPアドレス、ポート共にレンジ指定が可能。
●DNAT
DNAT --to(--to-destination) <ipaddr>[-<ipaddr>][:port-port]
パケットの送信先アドレスを変換する。natテーブルとPREROUTING、OUTPUTチェイン、これらのチェインから呼び出されるユーザー定義チェインのみで有効。ポートを指定すると、変換されたアドレスの指定されたポートあてに接続することになる。IPアドレス、ポート共にレンジ指定が可能。
一部のパラメータ(-pパラメータなど)では、パラメータ指定によってさらに拡張指定が行える場合があります。これを「マッチングの拡張」と呼びます。以下にその一部を紹介します。
●--sport
--sport(--source-port) [!] [port[:port]]
送信元ポートを指定する。ポートはレンジで範囲指定することも可能。パラメータ設定で「-p tcp」を指定したときに使用。
●--dport
--dport(--destination-port) [!] [port[:port]]
送信先ポートを指定する。ポートはレンジで範囲指定することも可能。パラメータ設定で「-p tcp」を指定したときに使用。
●--icmp-type
--icmp-type [!] typename
typenameにはICMPのタイプ(echo-requestやecho-replyなど)を指定する。パラメータ設定で「-p icmp」を指定したときに使用。
iptablesのオプションやパラメータはこれですべてではありません。適宜manページなどを参照してください。
|
1/2
|
|
||||
|
||||
| 連載 ゼロから始めるLinuxセキュリティ |
| Linux Squareフォーラム セキュリティ関連記事 |
| 連載:習うより慣れろ! iptablesテンプレート集(全4回) 初心者にとって、iptablesは難しい。そこで、学習の第1歩としてテンプレートを自分の環境に適応させることから始めよう |
|
| 連載:ゼロから始めるLinuxセキュリティ(全11回) 奥が深いセキュリティ対策の世界をゼロから解説。ホストレベルのセキュリティからファイアウォール、IDSの構築、ログ管理方法まで、システム管理者必見 |
|
| 特集:WebDAV時代のセキュリティ対策[前編] WebDAVのメソッドは便利な反面、セキュリティホールとなり得る。しかし、適切な対策を講じることでメソッドの危険性は取り除くことができる |
|
| 特集:FreeS/WANによるIPSecの導入と運用[前編] LinuxでIPSecを利用するには、「FreeS/WAN」というIPSecスタックを用いることになる。まず、これをインストールすることから始めよう |
|
| 特集:Linux以外のIPSecスタックとの相互接続[前編] 別のOSや異なるIPSecスタックとの相互接続が可能なら、その用途は大幅に広がる。前編では、FreeBSDのKAMEと相互接続を試みる |
|
| 特集:sshでセキュアネットワーク サーバにリモートログインする場合は、暗号化して転送するsshを使おう。sshをサーバとクライアントにインストールすれば、インターネット上でも安全な通信が可能になる |
|
|
TechTargetジャパン
- クライアントがアクセスできる範囲を制限する (2012/2/10)
今回は、サーバ上のファイルの扱いに関係する設定項目について解説します - 新しい記事も入っていて安心しました (2012/2/7)
Linux Squareのアクセスランキングを公開します。定番の記事ばかりでなく、連載中の記事もよろしくお願いいたします - エラーメッセージをどう扱うか? (2012/2/2)
今回は、スクリプト実行時にエラーが発生したことを知らせるメッセージの扱い方を説明します - ファイルのアップロードを制限する (2012/1/30)
HTTPクライアントがアップロードしてくるファイルの扱いについて解説します。そもそも受け入れる必要があるのか? ということのほかにも、いろいろ設定が必要です
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
