2001年1月20日 更新
長所:短所:
- 強力なアクセスコントロール
- GUIベースでの設定
- 各種のログ出力方法と緊急時の連絡手段の提供
- 簡単に設置が可能
- 多少高価になる
この構成は、商用のファイヤーウォールであるSonicWALLを利用した場合の尤も一般的な構成です。このファイヤーウォールにはDMZを用意した製品があるので、これを利用することでインターネットサイドにはサーバを置くことのない構成が可能になります。 DMZにはインターネット側からアクセス可能なサーバを配置しますが、すべてのパケットはSonicWALLにてコントロールされるので、直接インターネットサイドにサーバを置く場合より安全にパケットを流すことが可能になります。
万一、DMZ上のサーバがクラッカーに侵入された場合でも、DMZゾーンと内部LANの間が直接的な接続ではなくSonicWALLのコントロール下にあるので、クラッカーが内部LANに侵入する事が困難になります。(不可能という訳ではありません。あくまで困難になるだけです。どんな優れたファイヤーウォールを配置しても、完全に安全な構成にはなりません。悪意ある侵入を困難にして、対策する時間を得ることができるのがファイヤーウォールの目的のひとつです)
注意すべき点としては、DMZに配置したサーバには侵入の危険が常に付きまとうの、ここに配置するサーバの防御ならびにデータについては、通常と同じように十分な考慮と防御が必要です。
このセキュリティポリシは次のように表せます。
ということになります。
- 外部(インターネットサイド)にはサーバを配置しない。
- 外部DNSと外部メール・WWWサーバは、DMZ上に配置すると共にSonicWALLによるアクセス制御を受ける。
- 外部DNSと外部メール・WWWサーバには個人情報やユーザアカウントを登録しない。
- インターネットサイドから直接内部LAN上のマシンにはアクセスさせない。
- 外部からのメールは外部メールサーバで一度受信してから、内部メールサーバで転送させる。
内部メールサーバにはDMZ上の外部メールサーバ以外からの外部メールを受信させない。- 内部からは一般的なパケットは透過的に接続できる。
- 外部(DMZのこと)に配置するサーバはできればサービス毎(DNS,WWW、Mail)に構築する
コマンド 設定内容 # login password
(パスワード入力)ルータへ接続する際のパスワードを定義します # administrator password
(パスワード入力)ルータの管理用モードへのパスワードを定義します。 # security class 2 on off ルータへの遠隔操作のセキュリティを設定します。 # date 2000-11-03
# time 13:52:02日付と時間を設定。ルータのログに残る情報にはアタックに関するものもあるので、時間をしっかりと合わせておき、あとで解析し易いようにしておく。 # ip lan address 202.10.10.1/28 ルータのLANインターフェイスのIPアドレスを定義。この値はプロパイダから取得したグローバルIPの内の1つ。
この例では、202.10.10.1を指定している。
(ネットマスクは28ビット、すなわち255.255.255.240)# nat use off
# nat masquerade offNATとIP-Masqueradeの機能をOFFにする # pp line L128 WAN側のインターフェースの通信速度を128Kbpsと定義 # pp select leased WAN側の回線として専用線を使う事を定義 # ip filter 10 reject 192.168.0.0/16 * * * *
# ip filter 11 reject 172.16.0.0/12 * * * *
# ip filter 12 reject 10.0.0.0/8 * * * *外部からプライベートアドレスでくるパケットは攻撃パケットの可能性が高い為、これを拒否するようにフィルタを作成する。 # ip filter 13 pass * 202.10.10.0/28 established * * 外部からのパケットだが、内部からの要求に対しての応答としての戻りパケットは透過させる為のフィルタ # ip filter 14 pass * * tcp 20 * 内部からFTPの実行に対して、WAN側からデータ転送用に20番のポートでアクセスしてくるのでこれを許可する。 # ip filter 20 pass * 202.10.10.2/32 tcp,udp * 53,113 外部からのパケットのうち、DNS関係のパケットは内部へ通過させる。この時、内部のDNSサーバのアドレスだけを許可すること。(この例では、202.10.10.2がDNS) # ip filter 21 pass * 202.10.10.3/32 tcp * 80,443 外部からのパケットのうち、WWW関係のパケットは内部へ通過させる。この時、内部のWWWサーバのアドレスだけを許可する。(この例では、202.10.10.3がWWW)。ポート443はSSLパケット # ip filter 22 pass * 202.10.10.3/32 tcp * 25 外部からのパケットのうち、メール関係のパケットは内部に通過させる。この時、ルータ内部のメールサーバのアドレスだけを許可する。(この例では、202.10.10.4がメールサーバ) # ip filter 30 pass * 202.10.10.0/28 tcp,udp 53,123 * UDPベースのパケットはルール13のestablishedなパケットにならないのでDNS(53),ntp(123)については明示的に戻りパケットして定義しておく必要がある。 # ip filter 100 reject * * * * * 外部からのパケットをすべて拒否するフィルタ。本来は定義不要だが、混乱を少なくする為に明示的に定義している。 # ip pp secure filter 10 11 12 13 14 20 21 22 30 100 WAN側のパケットフィルタを有効にする # ip pp route add net default 1 WAN側のポートをデフォルトゲートウェイとして設定 # pp enable leased WAN側のポートを有効にする # save
# restart
SonicWALLの設定については、まず、「一般」−「ネットワーク」画面を開き
次のように設定します。
続いて「詳細設定」−「イントラネット」を開き
- ネットワークアドレシングモード:「NAT有効」
- SonicWALL Webアドレス:「192.168.0.1」(ローカル側のアドレス)
- LANサブネットマスク:「255.255.255.0」(ローカル側のLANサブネットマスク)
- WANルータアドレス:「202.10.10.1」(ルータのアドレス)
- NATパブリックアドレス:「202.10.10.7」(SonicWALLのWAN側のアドレス)
- WAN/DMZサブネットマスク:「255.255.255.240」(WAN側のサブネットマスク)
- DNSサーバ:「202.10.10.2」(自分の外部DNSのアドレス)
「SonicWallのWANリンクは、直接インターネットルータに接続」を選択します。同じく「DMZ」タブを開き
DMZの範囲として今回は「202.10.10.2」〜「202.10.10.3」を指定します。
次に各種パケット単位でのアクセスコントロールを設定します。まず、「アクセス」−「サービス」の画面を開き、DMZに与えられているアクセスをすべて拒否するようにしてください。この後、インターネットからDMZ上のマシンへのPINGを許可するように設定します。(PINGを許可するかどうかは十分な検討をしてください。多くのサイト攻撃者はPINGによってマシンの存在を確認するケースが圧倒的に多いです。しかし、このパケットを拒否してしまうと、プロパイダによってはDMZが落ちていると判断してしまうところもあったりします。)
「アクセス」−「ルール」を開き、次のように設定します。以上でPINGのパケットがインターネット上からDMZ上のマシンへ可能になります。
- 動作:「許可」
- サービス:「Ping」
- 送信元:「WAN」、「*」
- 送信先:「DMZ」、「*」
同じように今度はDMZ上のWWWサーバへのアクセスルールを作成してみましょう。このとき、PINGとは違い、WWWサーバは特定のIPアドレスを持ったマシンなのでそれ以外のマシンへはWWW用のパケットがインターネット上から送られてこないように設定します。
![]()
これによってWWWパケットは202.10.10.3のマシンにしか届かないようになります。
- 動作:「許可」
- サービス:「Web(HTTP)」
- 送信元:「WAN」、「*」
- 送信先:「DMZ」、「202.10.10.3」
DNS(ドメイン)やメールに関しても同じようにルールを設定して、サービスを提供しているマシン以外へ不要なパケットが届かないようにルールを設定しましょう。
DMZ上のメールサーバから内部のメールサーバにメールが届くようにするために、ルールの中で次の設定を行ってください。ただし、このままでは、インターネット(DMZ)上から内部LANは直接見えないので、内部LAN上のメールサーバをインターネット上のIPアドレスとマッピングしておきます。「詳細設定」−「1対1NAT」を選び、この中で192.168.0.2のアドレスを202.10.10.6といったような使っていないグローバルIPにマッピングしておきます。以後、このグローバルIPアドレスを使ってDMZ上のメールサーバと内部のメールサーバのメールのやり取りが行われます。
- 動作:「許可」
- サービス:「MAIL(smtp)」
- 送信元:「DMZ」、「202.10.10.3」
- 送信先:「LAN」、「192.168.0.2」
Mailサーバとして利用するqmailというプログラムのインストールと各種設定については、こちらを参考にしてください。squidのインストールが終了したら、smtprouteファイル編集してqmail宛に届いたメールを内部のメールサーバへ転送します。
これで"@hogehoe.co.jp"宛のメールは内部のメールサーバへ転送されるようになります。("hogehoge.co.jp"の部分は各自のドメイン名に書き換えてください)
.hogehoge.co.jp:[202.10.10.6]
hogehoge.co.jp:[202.10.10.6]
Linuxの設定として忘れてならないのは不要なサービスの停止と、不要なパケットの排除になります。
TurboLinux(他のLinuxでも)では、/etc/inetd.confでネットワーク関係のサービスを起動しているので、それを修正します。(RedHat 7.0以降ではinetd.confではなくxinetd.confという別の構成になっています。これについては調査が終わったら載せていきたいと思います)
inetd.confでは不要なサービスを停止するので、すべての行の先頭に"#"を入力してサービスが起動しないようにします。ファイルの編集が完了したら、
# ps ax | grep inetd
でinetdのプロセス番号を調べ、
# kill -HUP プロセス番号
でinetdをリスタートして設定内容を有効にします。