![]() |
Copyright © 2000-2005 eazyfox. All Rights Reserved. | ||||
|
|
|||||
Firewallの設定は当然ながら提供するサービスと享受するサービスを考える必要がある。まずは提供サービスから。サーバ機は次のようなサービスを提供することが多い。これらのサービスはFirewallのInternet側からアクセスされることを前提として考えるのでInternet側の入力制限に関係してくる。
| サービス名 | 説明 |
| http | httpサービスはApache、IISなどWebサーバが提供する機能 |
| ftp | ftpサービスはデータの転送を目的として公開データの提供や蓄積を行う |
| stmp | smtpサービスはe-mailの転送で他のsmtpサーバへの送信とsmtpサーバからの受信を担当する |
| pop3 | pop3サービスはメールクライアントへの送信を担当するサービス |
| dns | dnsはアドレス変換を担当する。DynamicDNSを使用するならdnsサーバは必要ない |
この他にもストリーミングやゲームのホストなどいろいろな機能が考えられるが、きりがないので上のような一般的なサービスに限定して考えてみる。では上のサービスを提供するサーバ機が必要とするプロトコルを定義する。ステートレスで定義すると
| プロトコル | 許可/遮断 | 方向 | 説明 |
| http | 許可 | 外→ | 外部からhttpサーバへのアクセスは許可する (1)外部の不特定IPの1024以上のポートから自IPの80ポートへの着信を許可する (2)自IPの80ポートから外部の不特定IPの1024以上のポートへの送信を許可する(セッション確立後) |
| https | 許可 | 外→ | 外部からhttpsサーバへのアクセスは許可する (1)外部の不特定IPの1024以上のポートから自IPの443ポートへの着信を許可する (2)自IPの443ポートから外部の不特定IPの1024以上のポートへの送信を許可する(セッション確立後) |
| ftp | 許可 | 外→ | 外部からftpサーバへのアクセスは許可する (1)外部の不特定IPの1024以上のポートから自IPの21ポートへの着信を許可する (2)自IPの21ポートから外部の不特定IPの1024以上のポートへの送信を許可する(セッション確立後) (3)自IPの20ポートから外部の不特定IPの1024以上のポートへの発信を許可する (4)外部の不特定IPの1024以上のポートから自IPの20ポートへの着信を許可する(セッション確立後) |
| smtp | 許可 | 外→ 内→ |
外部ISPやフリーメールアドレスの使用のため外部メールサーバとのアクセスを許可する (1)外部の不特定IPの1024以上のポートから自IPの25ポートへの着信を許可する (2)自IPの25ポートから外部の不特定IPの1024以上のポートへの送信を許可する(セッション確立後) (3)自IPの1024以上のポートから外部の不特定IPの25ポートへの発信を許可する (4)外部の不特定IPの25ポートから自IPの1024以上のポートへの着信を許可する(セッション確立後) |
| pop3 | 許可 | 内→ | 外部のPCからPOP3サーバへのアクセスを許可する (1)自IPの1024以上のポートから外部の不特定IPの110ポートへの発信を許可する (2)外部の不特定IPの110ポートから自IPの1024以上のポートへの着信を許可する(セッション確立後) |
| dns | 許可 | 外→ 内→ |
外部ISPのDNS参照を許可する(UDP、TCP両方) (1)自IPの53ポートから外部の不特定IPの53ポートへの発信を許可する (2)外部の不特定IPの53ポートから自IPの53ポートへの着信を許可する |
| dhcp | 許可 | 内→ | 外部ISPのDHCPへの接続を許可する (1)自IPの68ポートから外部の不特定IPの67ポートへの発信を許可する (2)外部の不特定IPの67ポートから自IPの68ポートへの着信を許可する |
すべてのルールに行きと戻りを定義しなければいけないステートレスだとこのような定義になる。定義は一回だけ行うだけであり面倒だとはあまり思わない。しかしステートフルで定義すると
| プロトコル | 許可/遮断 | 方向 | 説明 |
| http | 許可 | 外→ | 外部からhttpサーバへのアクセスは許可する (1)外部の不特定IPの1024以上のポートから自IPの80ポートへの着信を許可する |
| https | 許可 | 外→ | 外部からhttpsサーバへのアクセスは許可する (1)外部の不特定IPの1024以上のポートから自IPの443ポートへの着信を許可する |
| ftp | 許可 | 外→ | 外部からftpサーバへのアクセスは許可する (1)外部の不特定IPの1024以上のポートから自IPの21ポートへの着信を許可する (2)自IPの20ポートから外部の不特定IPの1024以上のポートへの発信を許可する |
| smtp | 許可 | 外→ 内→ |
外部ISPやフリーメールアドレスの使用のため外部メールサーバとのアクセスを許可する (1)外部の不特定IPの1024以上のポートから自IPの25ポートへの着信を許可する (2)自IPの1024以上のポートから外部の不特定IPの25ポートへの発信を許可する |
| pop3 | 許可 | 内→ | 外部のPCからPOP3サーバへのアクセスを許可する (1)自IPの1024以上のポートから外部の不特定IPの110ポートへの発信を許可する |
| dns | 許可 | 外→ 内→ |
外部ISPのDNS参照を許可する(UDP、TCP両方) (1)自IPの53ポートから外部の不特定IPの53ポートへの発信を許可する |
| dhcp | 許可 | 内→ | 外部ISPのDHCPへの接続を許可する (1)自IPの68ポートから外部の不特定IPの67ポートへの発信を許可する |
ずいぶん量が減ってすっきりする。しかしこの文字で表した一覧では大変判りにくいので
これらの情報から必要なフィルタを考えると
| Protocol | Src. IP | Src. Port | Dst. IP | Dst. Port | Action | 説明 | |
| Incoming | TCP | − | 80 | − | − | Allow | Internetからhttpへのリクエストは許可 |
| TCP | − | 25 | − | − | Allow | Internetからsmtpへのリクエストは許可 | |
| UDP | − | 68 | − | 67 | Allow | DHCPサーバからのリクエストは許可 | |
| Outgoing | TCP | − | − | − | 80 | Allow | 外部httpへのリクエスト |
| TCP | − | − | − | 443 | Allow | 外部httpsへのリクエスト | |
| TCP | − | − | − | 25 | Allow | 外部smtpへのリクエスト | |
| TCP | − | − | − | 110 | Allow | 外部pop3へのリクエスト | |
| TCP | − | − | − | 21 | Allow | 外部ftpへのリクエスト | |
| TCP | − | >1023 | − | >1023 | Allow | 外部ftp-dataへのリクエスト | |
| UDP | − | 53 | − | 53 | Allow | 外部dnsへのリクエスト |
PassiveモードのFTPは上記のように抜け抜けの状態になってしまうのであまりお勧めできません。NATでポートフォワードを指定して特定の1台だけFTPが使用できるようにしたほうがいいです。
| Protocol | Src. IP | Src. Port | Dst. IP | Dst. Port | Action | 説明 | |
| Incoming | TCP | 192.168.1.0/24 | >1023 | − | 80 | Allow | Internetからhttpへのリクエストは許可 |
| TCP | 192.168.1.0/24 | >1023 | − | 25 | Allow | Internetからsmtpへのリクエストは許可 | |
| UDP | − | 68 | − | 67 | Allow | DHCPサーバからのリクエストは許可 | |
| Outgoing | TCP | − | 80 | 192.168.1.0/24 | >1023 | Allow | 外部httpへのリクエスト |
| TCP | − | 443 | 192.168.1.0/24 | >1023 | Allow | 外部httpsへのリクエスト | |
| TCP | − | 25 | 192.168.1.0/24 | >1023 | Allow | 外部smtpへのリクエスト | |
| TCP | − | 110 | 192.168.1.0/24 | >1023 | Allow | 外部pop3へのリクエスト | |
| TCP | − | 21 | 192.168.1.0/24 | >1023 | Allow | 外部ftpへのリクエスト | |
| TCP | − | >1023 | 192.168.1.0/24 | >1023 | Allow | 外部ftp-dataへのリクエスト | |
| UDP | − | 53 | 192.168.1.0/24 | 53 | Allow | 外部dnsへのリクエスト |
Windows2000でICSまたはIP Routerを機能させるときのFirewallとして選択できるのは
・RRAS(Routing and Remote Access Service)
・PktFilter
・NetCenturion
・CHX-I のPacket FilterとNATの組み合わせ
・SoftPerfect Personal Firewall
・Kerio(Tiny) Personal FirewallとICS機能の組み合わせ
になるかと思います。それぞれ一長一短があります。簡単に比較表を作っておきます。
| 機能 | 長所 | 短所 |
| RRAS | IP RouterとNATとDHCP、DNSの全ての機能が統合されているので設定は簡単 | ポートが範囲指定できないのでルール作りが煩わしい。一覧性が無いのでバッチを作ってルール適用したほうが楽かも |
| PktFilter | 機能はRRASと同じだが、テキストで設定できるので少しは楽(ポート指定も"<>"や"="が使える) | 設定はテキスト形式なのでGUIになれた身にはつらい。サービスの起動に時間がかかる(2分くらい) |
| NetCenturion | PktFilterと同じ機能だがGUIが使える。ログも分割できる | まったく無名。参考サイトもまったく無い。インターフェイスの選択でIPを指定するのは?? |
| CHX-I | Packet Filterは大変高機能で設定もわかりやすい。が多機能すぎるのと事例が少ない | RRASを有効にしないのならDHCPサーバ機能とDNSのリレーが必要(DHCPとBINDを別にインストールしなければならない)。ステートフルなので動作が重い |
| SoftPerfect | GUIでの設定。ポートリストも使用可能 | ログが貧弱。フォントの関係で画面が切れる |
| KerioVer.2 +ICS |
一番お手軽な組み合わせ。サーバ公開に向いているかは不明 | インターフェイスごとの指定はできないのでサーバをトポロジー的に隔離することは難しい |
で、実際にCHX-IとPktFilterでルールをつくってみました。
・PktFilterの紹介とルールのページはこちら
・CHX-I Packet Filterの紹介とルールのページはこちら
・SoftPerfectの紹介ページはこちら