習うより慣れろ! iptablesテンプレート集

第2回 natテーブルを利用したLinuxルータの作成

鶴長 鎮一
2005/5/17

 テンプレート10
 外部から特定の内部サーバへのアクセスを許可

テンプレート10の想定環境

  サーバとして
  外部からの接続パケットは基本的にすべて破棄
  ただし接続済み通信のパケットは許可
  内部からの接続パケットは基本的にすべて許可
  ループバックアドレスに関してはすべて許可
  メンテナンスホストからのping、メンテナンスホストへのpingを許可
  メンテナンスホストからのssh(TCP 22)を許可
  ルータとして
  内部アドレスやプライベートアドレスが外部に漏れないようにブロック
  外部から内部ネットに入ってくるパケットを書き換え
  対象パケット:ディスティネーションポートがTCP 80/443
 ディスティネーションアドレスを内部ネットのHTTPサーバアドレスに
対象パケット:ディスティネーションポートがTCP 25/110
 ディスティネーションアドレスを内部ネットのメールサーバアドレスに
  外部(eth0)からHTTP/HTTPS/SMTP/POP3サーバへの転送を許可

 サーバを内部ネットに設置したまま、外部ネットから接続できるようにします。ブロードバンドルータが「ポート転送」と呼んでいる機能です。この機能の仕組みは至って簡単で、Linuxルータの外部ネット側アドレスの特定ポートに来たパケットを指定された内部ネット内のサーバへ転送するだけです。

 この機能はしばしばDMZ(DeMilitarized Zone)と混同されますが、DMZではありません。DMZは、Linuxルータとファイアウォールを内部ネットのものと分けるか、LinuxルータとファイアウォールにNICを増設して3イーサネットで構成し、内部ネットとも外部ネットとも異なる領域にサーバを格納します。外部ネットからのアクセスを受けるサーバはどうしてもセキュリティ強度が落ちるため、内部ネットと分離してしまおうというものです。

 ポート転送もDMZ内ホストもSNAT+IPマスカレードを素通りするため、意図しない侵入や攻撃を受ける危険性が常に存在することを覚えておきましょう。

  テンプレート10の表示(このウィンドウ)
テンプレート10の表示(別ウィンドウ)
テンプレート10(template10.sh)のダウンロード

テンプレート10の解説

 55行目から79行目で、HTTP/HTTPS/SMTP/POP3のポート転送を設定しています。外部から見た場合、サーバのIPは1.2.3.4です。アクセスするポートによって、転送先を変えています。

 では、HTTPサービスを例に解説します。

52 #################
53 #DNAT(HTTP)
54 #################
55 http_ip='192.168.0.2'
56 http_port='80'
57 iptables -t nat -A PREROUTING -p tcp -i eth0 -d $my_internet_ip --dport $http_port -j DNAT --to-destination $http_ip:$http_port
58 iptables -A FORWARD -i eth0 -o eth1 -p tcp -d $http_ip --dport $http_port -j ACCEPT

 55、56行目でHTTPサーバのIPアドレス、ポート番号を指定します。

 57行目では、eth0側から入ってくるパケットのうち、

  • ディスティネーションアドレスがLinuxルータの外部ネット側アドレス
  • ディスティネーションポートがHTTPのサービスポート

であるパケットのあて先を、転送先HTTPサーバのアドレスとポートに変換します。

 このままではeth0から入ってきたパケットを内部のサーバへ転送しようとした時点で、FORWARDチェインのデフォルトルール規制で破棄(DROP)されます。そこで58行目のように、eth0から入ってくるパケットでもHTTPサーバへのパケットは転送可能にしています。

 HTTPサービスを例に説明しましたが、方法自体はIPアドレスとポート番号を変更するだけでほかのサービスにも応用可能です。

6/6

Index
習うより慣れろ! iptablesテンプレート集
 第2回 natテーブルを利用したLinuxルータの作成
  Page 1
natテーブルによるNATの実現
  Page2 テンプレート6
IPマスカレードによるLinuxルータ
 テンプレート6の想定環境
 改造のヒント:メンテナンスホストが外部ネット側にある場合
  Page 3 テンプレート7
Windowsファイル/プリンタ共有パケットのブロック
 テンプレート7の想定環境
  Page 4 テンプレート8
透過型プロキシの実現(ルータと同一サーバ)
 テンプレート8の想定環境
 改造のヒント:REDIRECTを使う方法
  Page 5 テンプレート9
透過型プロキシの実現(ルータとサーバを分離)
 テンプレート9の想定環境
Page 6 テンプレート10
外部から特定の内部サーバへのアクセスを許可
 テンプレート10の想定環境

連載 習うより慣れろ! iptablesテンプレート集


 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をサーバとクライアントにインストールすれば、インターネット上でも安全な通信が可能になる

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します

TechTargetジャパン

Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ



- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH