IPCHAINS(IP-MASQUERADE)の設定



rpmfind.netからダウンロードしてきた最新版のrpmファイルをインストールします。
  # rpm -ivh ipchains-1.3.9-5.i386.rpm
Linux IPCHAINS-HOWTOLinux IP Masquerade HOWTOを参照するのもいいでしょう。

我が家のサーバのipchainsの設定です。
  #!/bin/sh
  ###############################################################################
  ## 環境設定
  ##
  ## iptablesのパス
          IPCHAINS="/sbin/ipchains"
  ##
  ## 内部ネットワークのインターフェイス
          INT_IF="eth0"
  ##
  ## 外部ネットワークのインターフェイス
          EXT_IF="eth1"
  ##
  ## 内部ネットワークのIPアドレス
          INT_NET="192.168.0.0/24"
  ###############################################################################
  ## モジュールの組み込み
  ##
  #       /sbin/modprobe ip_masq_cuseeme
  #       /sbin/modprobe ip_masq_ftp
  #       /sbin/modprobe ip_masq_irc
  #       /sbin/modprobe ip_masq_quake
  #       /sbin/modprobe ip_masq_raudio
  #       /sbin/modprobe ip_masq_vdolive
  ###############################################################################
  ## チェーンの初期化
          $IPCHAINS -F
  ###############################################################################
  ## デフォルトポリシーの定義
          $IPCHAINS -P input   DENY
          $IPCHAINS -P output  ACCEPT
          $IPCHAINS -P forward DENY
  ###############################################################################
  ## ローカルループバックからのパケットはすべて受け入れる
          $IPCHAINS -A input -i lo -j ACCEPT
  ##
  ## 内部ネットワークからのパケットを受け入れる
          $IPCHAINS -A input -i $INT_IF -s $INT_NET -j ACCEPT
  ##
  ## 外部ネットワークからユーザーポートへのパケットを受け入れる(TCPの接続要求を除く)
          $IPCHAINS -A input -i $EXT_IF -p tcp ! --syn --dport 1024: -j ACCEPT
          $IPCHAINS -A input -i $EXT_IF -p udp --dport 1024: -j ACCEPT
  ##
  ## ICMPのパケットは受け入れる
          $IPCHAINS -A input -p icmp -j ACCEPT
  ###############################################################################
  ## 外部インターフェイスで破棄するIPアドレスを定義
  ## 内部ネットワークのIPアドレスを騙るパケットを破棄
          $IPCHAINS -I input -i $EXT_IF -s $INT_NET -j DENY
  ##
  ## ループバックアドレス、プライベートアドレスからのパケットを破棄
          $IPCHAINS -I input  -i $EXT_IF -s 127.0.0.0/8    -j DENY
          $IPCHAINS -I output -i $EXT_IF -s 127.0.0.0/8    -j DENY
          $IPCHAINS -I input  -i $EXT_IF -s 10.0.0.0/8     -j DENY
          $IPCHAINS -I output -i $EXT_IF -s 10.0.0.0/8     -j DENY
          $IPCHAINS -I input  -i $EXT_IF -s 172.16.0.0/12  -j DENY
          $IPCHAINS -I output -i $EXT_IF -s 172.16.0.0/12  -j DENY
          $IPCHAINS -I input  -i $EXT_IF -s 192.168.0.0/16 -j DENY
          $IPCHAINS -I output -i $EXT_IF -s 192.168.0.0/16 -j DENY
  ##
  ## ループバックアドレス、プライベートアドレス宛のパケットを破棄
          $IPCHAINS -I input  -i $EXT_IF -d 127.0.0.0/8    -j DENY
          $IPCHAINS -I output -i $EXT_IF -d 127.0.0.0/8    -j DENY
          $IPCHAINS -I input  -i $EXT_IF -d 10.0.0.0/8     -j DENY
          $IPCHAINS -I output -i $EXT_IF -d 10.0.0.0/8     -j DENY
          $IPCHAINS -I input  -i $EXT_IF -d 172.16.0.0/12  -j DENY
          $IPCHAINS -I output -i $EXT_IF -d 172.16.0.0/12  -j DENY
          $IPCHAINS -I input  -i $EXT_IF -d 192.168.0.0/16 -j DENY
          $IPCHAINS -I output -i $EXT_IF -d 192.168.0.0/16 -j DENY
  ##
  ## Windowsネットワーク(NetBIOS over TCP/IP)の送信パケットを破棄
          $IPCHAINS -A output -i $EXT_IF -p tcp --dport 137:139 -j DENY
          $IPCHAINS -A output -i $EXT_IF -p udp --dport 137:139 -j DENY
          $IPCHAINS -A output -i $EXT_IF -p tcp --dport 445 -j DENY
          $IPCHAINS -A output -i $EXT_IF -p udp --dport 445 -j DENY
  ###############################################################################
  ## 接続を受け入れるサービスを定義(FTP、SSH、SMTP、DNS、WWW、POP3、NTPを公開する例)
  # FTP
          $IPCHAINS -A input -i $EXT_IF -p tcp --sport 1024: --dport 21 -j ACCEPT
          $IPCHAINS -A input -i $EXT_IF -p tcp --sport 1024: --dport 20 -j ACCEPT
  # SSH
          $IPCHAINS -A input -i $EXT_IF -p tcp --sport 513:1023 --dport 22 -j ACCEPT
          $IPCHAINS -A input -i $EXT_IF -p tcp --sport 1024: --dport 22 -j ACCEPT
  # SMTP
          $IPCHAINS -A input -i $EXT_IF -p tcp --sport 1024: --dport  25 -j ACCEPT
  # DNS
          $IPCHAINS -A input -i $EXT_IF -p tcp --sport 1024: --dport 53 -j ACCEPT
          $IPCHAINS -A input -i $EXT_IF -p udp --sport 1024: --dport 53 -j ACCEPT
          $IPCHAINS -A input -i $EXT_IF -p udp --sport 53    --dport 53 -j ACCEPT
  # WWW
          $IPCHAINS -A input -i $EXT_IF -p tcp --sport 1024: --dport 80 -j ACCEPT
  # POP3
          $IPCHAINS -A input -i $EXT_IF -p tcp --sport 1024: --dport 110 -j ACCEPT
  # NTP
          $IPCHAINS -A input -i $EXT_IF -p udp --sport 123: --dport 123 -j ACCEPT
  ###############################################################################
  ###############################################################################
  ## IPマスカレードの設定
          $IPCHAINS -A forward -i $EXT_IF -s $INT_NET -j MASQ
          $IPCHAINS -A forward -j REJECT
  ## IP転送を有効にする
          echo 1 > /proc/sys/net/ipv4/ip_forward
丸ごとカット&ペーストでファイルを作成してください。
例えば、ファイル名をipchains.shとして適切な所有者に実行権を与え、/tmpの下に保存したとします。実行するにはその所有者(ここではrootとします)で、
  # /tmp/ipchains.sh
とすれば実行できます。
ただし、再起動してしまうと設定情報が消えてしまいますので、
  # /etc/rc.d/init.d/ipchains save
で、データを保存してください。
外部ネットワークのインターフェースにに割り当てられたIPアドレスがプライベートアドレスなら、「外部インターフェイスで破棄するIPアドレスを定義」の箇所で該当するアドレスをコメントアウトしてください。