TOPサーバ構築・運用> NATサーバに必要なファイアウォール設定




改めて知っておきたいRed Hat Enterprise Linux 4 - ネットワークサービス編
改めて知っておきたいRed Hat Enterprise Linux 4 - ネットワークサービス編

第4回:NATサーバに必要なファイアウォール設定とデータベースサーバ、メールサーバ

著者:日本ヒューレットパッカード  古賀 政純   2006/12/27
1   2  3  次のページ
NATサーバに必要なファイアウォール設定

   インターネットのようなセキュアでないネットワークとエンタープライズ用途のLANセグメントを接続する場合、企業内に設置したサーバの不要なポートやサービスを停止する作業が必要です。さらに、企業内LAN全体を守るためにはこういった対処と同時に、ファイアウォールを導入するべきでしょう。

   Red Hat Enterprise Linuxにおいては、ファイアウォールはiptablesコマンドを駆使することで実現可能です。しかし現在では高機能なファイアウォール製品が提供されており、エンタープライズ用途ではそういった専用の機材を導入するのが一般的です。

   とはいえ予算の都合上、高いセキュリティを実現するファイアウォール製品を購入できないこともあります。このようなケースでは、NATサーバを設置してiptablesによるファイアウォールを設定することも考えられます。

   また、小規模なオフィスやSOHO環境などではブロードバンドルータ側にファイアウォール機能が搭載されていることがあります。簡易なファイアウォール機能のみが必要な場合はこれらの機能で充分ですが、独自の規制を行いたいといった場合はLinuxによるサーバを設置し、iptablesによるファイアウォールを設定することとなります。

   一般にファイアウォールを含め、Linuxにおけるセキュアシステムの構築方法としては以下の3種類があげられます。
  1. ホストベースのセキュリティ(例:tcp_wrapper)
  2. ユーザベースのセキュリティ(例:PAM)
  3. パケットベースのセキュリティ(例:iptables)

   tcp_wrapperやPAMといったセキュリティ対策は、LANセグメント内でユーザやホストを限定して行うものですが、iptablesはパケットレベルでのアクセス制限をかけるため非常に強力です。ファイアウォールにiptablesが利用されているのも、パケットレベルでのアクセス制限を掛けることができるためです。

   本連載の第3回「IPアドレスを管理する『DHCPサーバ』と通信の橋渡し『NATルータ』」で解説したNATサーバの環境では、グローバルIPアドレスを持つLANをインターネットと考えた場合、NATサーバがインターネットに晒された状態となり非常に危険です。

   クラッカーがクラッキングソフトウェアを使ってインターネット経由でしらみつぶしにサーバを攻撃することを考えると、セキュリティ要件を満たすための最低限の設定ではあまりにも危険であることがわかると思います。

   精度の高いファイアウォールの設定を行うことは非常に難しいものですが、ここでは、ある程度定石となっているLinuxサーバで実現したNATルータのファイアウォール設定を紹介します。ファイアウォール設定の前提条件として、NATルータとなるLinuxサーバ上で以下のスクリプトが実行されているものとします。

#!/bin/sh
# eth1: Internet
# eth0: Local LAN: 172.16.X.X/16
# [Internet/Global IP LAN]]]---[eth1][NAT Box][eth0]---[Private IP Local LAN]
MYHOST=`/sbin/ifconfig eth1|grep inet|cut -d':' -f 2 |cut -d ' ' -f 1`
← グローバルIPアドレスを取得
MYLOCAL=`/sbin/ifconfig eth0|grep inet|cut -d':' -f 2 |cut -d ' ' -f 1`
← プライベートIPアドレスを取得
LOCALNET='172.16.0.0/16'
echo 1 > /proc/sys/net/ipv4/ip_forward
← IPフォワーディングを有効化
/sbin/iptables ?F
/sbin/iptables -t nat -F
/sbin/iptables -t mangle -F
/sbin/iptables -P FORWARD DROP ← フォワードされるパケットをドロップ
/sbin/iptables -P INPUT DROP ← NATサーバ宛のパケットをドロップ
/sbin/iptables -P OUTPUT DROP ← NATサーバから出て行くパケットをドロップ

   上記のスクリプトは、NATルータとして利用しているLinuxサーバに存在するNICがeth0とeth1に設定されている場合のものです。ここでは、eth1がグローバルIPアドレスのLANに、eth0がプライベートIPアドレスのLAN環境に接続されていると仮定しています。

   スクリプト内において-Pオプションで指定されているFORWARD/INPUT/OUTPUTの各チェインは、それぞれNATルータを経由するパケットと入ってくるパケット、送出されるパケットについて規則を適用します。

   ファイアウォールを設定する場合、まず最初に一番厳しい設定を施し、そこから徐々に利用を許可するポートを追加していきます。ここではすべてのパケット通信を遮断するため、それぞれの項目をDROPと指定しています。

   以下は、一般的に外部から接続する必要があるサービスについて、iptablesを使ってパケットフィルタリングを行う場合の設定例です。システム要件によっても設定内容は異なるため、あくまでも一例として参照してください。


Webサーバについて

   外部のマシンからWebサーバへアクセスするには、80番ポートと443番ポートへ接続できる環境が必要です。このため80番ポートと443番ポートでNATルータへ出入りするパケットについて、通信を許可しておく必要があります。

/sbin/iptables -A INPUT -p tcp --dport 80 -d $MYHOST -j ACCEPT
← $MYHOST宛のパケットのうち、80番ポートで通信するものは許可
/sbin/iptables -A OUTPUT -p tcp --dport 80 -s $MYHOST -j ACCEPT
← $MYHOSTから出て行くパケットのうち、80番ポートで通信するものは許可
/sbin/iptables -A INPUT -p tcp --dport 443 -d $MYHOST -j ACCEPT
← $MYHOST宛のパケットのうち、443番ポートで通信するものは許可
/sbin/iptables -A OUTPUT -p tcp --dport 443 -s $MYHOST -j ACCEPT
← $MYHOSTから出て行くパケットのうち、443番ポートで通信するものは許可

1   2  3  次のページ


日本ヒューレット・パッカード株式会社 古賀 政純
著者プロフィール
日本ヒューレット・パッカード株式会社
古賀 政純

2000年よりUNIXベースのHAクラスタシステム及び、科学技術計算システムのプリセールスに従事。並列計算プログラミング講習会などを実施。その後、大手製造業及び官公庁系の大規模Linuxクラスタの導入、システムインテグレーションを経験。現在は、大規模エンタープライズ環境向けのLinuxブレードサーバ及びHP Serviceguard for Linux(HAクラスタソフトウェア)のプリセールスサポート、システム検証を担当している。毎日、Linuxサーバと寝食を共に(?)しています。


この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。

INDEX
第4回:NATサーバに必要なファイアウォール設定とデータベースサーバ、メールサーバ
NATサーバに必要なファイアウォール設定
  Telnet接続について
  データベースサーバについて
改めて知っておきたいRed Hat Enterprise Linux 4 - ネットワークサービス編
第1回 Webサーバの基本「Apache」
第2回 3つのファイルサーバ「NFS & FTP & Samba」
第3回 IPアドレスを管理する「DHCPサーバ」と通信の橋渡し「NATルータ」
第4回 NATサーバに必要なファイアウォール設定とデータベースサーバ、メールサーバ
改めて知っておきたいRed Hat Enterprise Linux 4 - 管理ツール編
第1回 現実路線のサーバ管理ソフトウェア
第2回 手軽なWeb管理ツールと強力な専用ツール
改めて知っておきたいRed Hat Enterprise Linux 4 - サーバ編
第1回 ブレードサーバとLinux
第2回 HAクラスタとバックアップ
第3回 データレプリケーションとWebサーバの構築の基本
改めて知っておきたいRed Hat Enterprise Linux 4 - インストール編
第1回 Red Hat Enterprise Linuxの概要
第2回 インストールの方法とサポート状況の確認
第3回 インストールとNICの設定
第4回 インストール後に行う設定
改めて知っておきたいRed Hat Enterprise Linux 4 管理編
第1回 外部ストレージの設定と運用について
第2回 RHEL4におけるユーザ管理
第3回 RHEL4におけるシステム管理とSIMについて
第4回 RHEL4におけるOSのチューニング
改めて知っておきたいRed Hat Enterprise Linux 4 - バックアップ編
第1回 オープンソースMondo Rescueによるバックアップ手法
第2回 NetVault for Linuxを使ったバックアップ
改めて知っておきたいRed Hat Enterprise Linux 4 - クラスタ編
第1回 LinuxでもHAクラスタ
第2回 Serviceguard for Linuxでクラスタ環境の管理