Jul 22, 2007

Mac OS XにFirewallを設定しよう



 Mac OS X(PantherやTiger)で構築したサーバーは日々、インターネットから寄せられるあなたのサークル仲間、職場のスタッフやお客さんからのリクエストに応え、けなげな働きをしてくれています。その多くはWebページの表示やメール送受信、ファイル共有などサーバーに用意したサービスに行われるものですが、実のところ、サーバーにやってくるリクエストはそれだけではなかったりします。あなたが用意していないサービスに接続しようとするもの、こっそりと裏口を探そうとするものなど、余計なリクエストもあるわけです。

 ここでは、Mac OS X(PantherやTiger)に標準で用意されているFirewall機能を設定、有効にして、必要のない接続やリクエストからサーバーを防御する方法を考えていきます。


システム環境設定の共有パネルでファイアウォールを設定します。



ファイアーウォールの概略

 インターネットにつながったサーバー、と限らずMacにもPCにも、実はいろいろな通信が届いています。何のけなしにSafariでネットサーフィンをしているときですら、もしかしたらあなたのMacにはなにかあなたの知らない通信が届いているかもしれません。自分は「パーソナルWeb共有」しかオンにしていないとしても、サーバーのアドレス宛に、SMTPは?POPは?SMBは?iChatできる?そんなリクエストが届いているかもしれません。そして時には、「ヒヒヒ、あそこのポートが開いてたらなにかいたずらできないかな」、なんて悪意のある通信が届いていることもあるかもしれません。


何も対策をしていないとサーバーで用意していないサービスへも問い合わせが届いている


 サーバーにやってくる通信は、無造作に届いているように思えますが、ちゃんと決まりがあります。イメージとしてはMacの中にたくさんのドアがあると考えてください。そしてそれぞれの通信は、決まったドアを通るように決められています。「パーソナルウェブ共有」が通るドア、「パーソナルファイル共有」が通るドア、「POP」が通るドア、「SMTP」が通るドア、などのようにです。

 仮に、パーソナルウェブ共有のドアにPOPが「あけてーーーー。」とやってきてもドアは開きません。特別な設定をしていなければ、必ず決まったドアを通ります。

 この仕組みを利用して、サーバーで動かしていないサービスのドアを開かないようにしてしまえば、余計な通信をのぞくことができます。これがファイアウォール機能になります。

 Mac OS Xなどの最近のOSは機能として、ソフトウェアファイアーウォールが用意されています。OS側でもファイアーウォールを有効にすることで安心感が高まります。またMacごとにファイアウォールの設定ができるということは、LAN内にあるたくさんのMacやPC間での通信にもトラブルを未然に防ぐ効果がねらえます。

 ファイアーウォールは、まず、ルーターなどで設定するのが普通です。ルーターに装備されているファイアーウォールは「外から入ってくる通信を制限する」場合、「内から出ていく通信を制限する」場合、「その両方を制限する」場合など、目的に応じて複雑な設定ができるようになっていますが、Mac OS Xに用意されているファイアーウォールは、設定されていない外から入ってくる通信はすべてシャットアウトするという、ものすごく単純なものです。その分設定もわかりやすいかとおもいます。

 ただし、ソフトウェアによるファイアーウォールは、設定さえすれば完璧というものではないという心がけも忘れないでください(もちろんこれはハードウェアによるファイアーウォールでもおなじこと)。



必要なもの

  • Mac(Mac OS Xを搭載しているもの。ここは10.4.x(Tiger)で進みます)
  • やる気
  • セキュリティーとプライバシーへの配慮
  • インターネットを構築してくれた方々への畏敬の念



Firewall機能を有効にする

 ファイアウォール機能はシステム環境設定の「共有」パネル内に配置されています。

  1. アップルメニューから「システム環境設定」を起動させます。



  2. システム環境設定が開いたら、共有パネルを開きます。



  3. 共有パネルが開いたら、ファイアウォールタブをクリックします。



  4. ファイアウォール機能を設定するパネルが開きます。現在は「ファイアーウォール機能は停止中です」と表示されているはずです。

    ファイアーウォール機能パネルが表示される。


    現在は停止中。



  5. 「開始ボタン」を押して、ファイアーウォール機能を有効にします。




  6. 「ファイアウォール機能は動作中です」に表示が変わります。これであなたのMac OS Xでファイアウォール機能が有効になりました。



  7. [重要]サーバーとしてMacを運営している場合、ここから、追加の設定が必要になります。このままでは、サーバーに用意したSMTP、POP、IMAP、SSLなどのサービスまでブロックされてしまいます。次のステップで、ファイアウォール機能に現在サーバーで動作しているサービスを通過するように設定を追加していかないといけません。

    上記のリストでは「パーソナルファイル共有」にしかチェックがついていません。なので、パーソナルファイル共有以外の通信はすべてブロックされてしまうことになります。もし、あなたが「Windows共有」、「SMTP」、「POP3」、「IMAP」などをサーバーで動かしていたとしたら、あなたのサーバーを利用しているユーザーのみなさんは「???なんだか急につながらなくなったぞ?」と、胃を痛くすることになってしまいます。



Firewallを通過させる通信を追加する-純正のサービスの場合-

 Mac OS Xが標準でサポートしている共有機能については、最初からファイアウォールに項目が用意されていますので何もする必要はありません。

  1. サービスタブで現在提供しているサービスのリストを確認します。
    上記の画像は「共有」パネルのサービスタブに表示される標準で提供されているサービス一覧。ここに用意されている項目については、以下の画像のようにほとんどがファイアウォールのリストにはじめから用意されている。


  2. ファイアウォールタブを開いて、確認したサービスと同じサービスにチェックが自動的についていることを確認します。
    有効になっているサービスは、自動的にファイアウォールにもチェックがつけらる仕組み。


  3. 以下、例として、「パーソナルファイル共有」サービスを追加してみると、自動的にファイアウォール機能にもチェックがついていることを確認しています。

    パーソナルファイル共有を有効にすると...



    ファイアウォール機能にも自動的にチェックが入ります。親切だ!



Firewallを通過させる通信を追加する

 PostfixやPOP, IMAPなどをサーバーに構築してある場合、ファイアウォール機能を有効にすると、これらの通信までブロックされてしまいます。自分で構築したサービスについてはマニュアルでファイアウォールを通過するように設定していく必要があります。

  1. ここでは例として、メールの送信サービスとして利用される、SMTPが通過できるように設定を行ってみます。まず、「新規」を押します。



  2. 設定ダイアログが開きます。



  3. 「ポート名」のポップアップメニューをクリックし、一番下の「その他」を選択します。



  4. まずはSMTPから設定してみます。SMTPは通信にTCPの25番というポートを利用していますので、「TCPポート番号」のところに「25」と入力をします。



  5. 次に「説明」欄に、この設定が何であるかを説明するキーワードを入力します。ここではSMTPと入力してあります。




  6. 以上の入力がすんだら「OK」を押し、設定を完了させます。



  7. ファイアウォール機能リストの一番下に「SMTP」が追加され、ちゃんとチェックがついているかを確認します。



  8. 一つのサービスで複数の番号を指定する必要がある場合もあります。この場合は、通し番号では「-(ハイフン)」でつなぎます。バラの番号の場合は「,(カンマ)」でつないで指定します。

    通し番号の場合はハイフンで。



    バラの場合は、カンマでつなぎます。


  9. 開けておくポートには種類があります。TCPとUDPというポートです。ほとんどのものはTCPだけで動きますが、中にはUDPを開けておかないとうまくいかないものもあります。そのサービスに必要なポート番号と種類をよく調べて、正しく設定を行うようにします。ただしMac OS X10.3(Panther)では、この二つを分けて指定する機能はありません。




ファイアーウォールとポート番号

 以下によく使うサービスのポート番号をあげておきます。

参考:アップルソフトウェア製品で使われる「一般的な」TCPおよびUDPポート

提供するサービス名 ポート番号 TCP/UDP 備考
FTPサービス
FTP-data 20 TCP OS側にはじめから項目が用意されています。
FTP 21 TCP FTPコントロールと呼ばれる。

OS側にはじめから項目が用意されています。

リモートログイン
SSH 22 TCP リモートログインを提供する場合

OS側にはじめから項目が用意されています。

メール関係
SMTP(メール送信) 25 TCP Postfixを提供する場合
POP3(メール受信) 110 TCP
IMAP(メール受信) 143 TCP
IMAP SSL(メール受信) 993 TCP SSL経由で行う場合
POP over SSL(メール受信) 995 TCP/UDP SSL経由で行う場合
SMTP Submission Port 587 TCP/UDP OP25B対策用として使用する。
ドメインネーム関係
DNS 53 TCP/UDP BINDなどでネームサーバ環境を提供する場合
パーソナルウェブ共有関係
http 80 TCP OS側にはじめから項目が用意されています。
https 443 TCP SSL経由で行う場合
パーソナルファイル共有関係
AFP 548 TCP OS側にはじめから項目が用意されています。

基本的にはインターネット側には開けてはいけないが、OSのファイアーウォールでは設定できない。

Windows共有
Windows Internet Naming Service (WINS)

netbios-ns

137 UDP OS側にはじめから項目が用意されています。

インターネット側には開けてはいけないが、OSのファイアーウォールではではその向きが設定できないので、ルーター側で必ず対応しておくこと。

NETBIOS Datagram Service

netbios-dgm

138 UDP OS側にはじめから項目が用意されています。

インターネット側には開けてはいけないが、OSのファイアーウォールではではその向きが設定できない。ルーター側で必ず対応しておくこと。

Server Message Block (SMB)

netbios-ssn

139 TCP OS側にはじめから項目が用意されています。

インターネット側には開けてはいけないが、OSのファイアーウォールではではその向きが設定できない。ルーター側で必ず対応しておくこと。

netbios-ssn 139 TCP/UDP OS側にはじめから項目が用意されています。

インターネット側には開けてはいけないが、OSのファイアーウォールではではその向きが設定できない。ルーター側で必ず対応しておくこと。

インスタントメッセンジャー関係
AIM 5190 TCP/UDP iChatとAOLインスタントメッセンジャーが使用します。ファイル転送に利用します。

無人チャットサーバーを運営するのでなければ、サーバーでは開けておく必要はないと思います。

iChat 参加リクエスト送受信 5060 UDP iChatで参加の呼び出しを行ったりするのに利用されます。

無人チャットサーバーを運営するのでなければ、サーバーでは開けておく必要はないと思います。

iChat Bonjour 5297 TCP OS側にはじめから項目が用意されています。

LAN内専用として設定すること。インターネット側には開けておかない。

無人チャットサーバーを運営するのでなければ、サーバーでは開けておく必要はないと思います。

iChat Bonjour 5298 TCP/UDP
iChat SNATMAP 5678 UDP ルータ越えでチャットをするとき正常動作するさせるために使用。

無人チャットサーバーを運営するのでなければ、サーバーでは開けておく必要はないと思います。

iChat AVストリーム送受信(RTP,RTCP)s 16384-16403 UDP このポートで音声、映像などを送受信する。

無人チャットサーバーを運営するのでなければ、サーバーでは開けておく必要はないと思います。

Jabber 5222 TCP Jabberインスタントメッセージサーバーを運営する場合必要になります。
Jabber SSL接続 5223 TCP JabberでのチャットをSSLを利用してできるようにする場合必要になります。
Jabber_Admin 5280 TCP eJabberd使用時、管理ページへ接続するのに必要。
リモートコントロール関係
Apple Remote Destop レポート機能 3283 TCP/UDP OS側にはじめから項目が用意されています。

リモートコンピューターのシステム概要などを取得するのに使用します。

Apple Remote Destop 管理制御機能(VNCも) 5900 TCP OS側にはじめから項目が用意されています。

これが開いていないと監視も制御できません。VNCも同じ番号です。

Apple Remote Destop WBEM HTTP 5988 TCP OS側にはじめから項目が用意されています。

Web Based Enterprise Managementだそうです。

ストリーミング関係
QuickTime Stremaing Server(qtss) 7070 UDP QuickTime Stremaing Serverを提供する場合、開けておく必要があります。
Real Time Streaming Protocol(rtsp) 554 TCP/UDP QuickTime Stremaing Serverを提供する場合、開けておく必要があります。
QuickTime Streamin Server管理用 1220 TCP QuickTime Stremaing Server管理ページにアクセスする際に必要になります。
その他
プリンタ共有 631,515 TCP/UDP OS側にはじめから項目が用意されています。
インターネット側には普通開けてはいけない。OSのファイアーウォールではその向きが設定できないので、ルーター側で必ず対応しておくこと。
Webmin 10000 TCP Webminを利用する場合、管理ページへアクセスする際に必要になります。
iTunes共有 3689 TCP/UDP OS側にはじめから項目が用意されています。

LAN内専用として設定すること。インターネット側には開けておかない。

Bonjour 5353 UDP LAN内専用として設定すること。インターネット側には開けておかない。
MySQL 3306 TCP 基本的には設定する必要はありません(localからlocalへ処理されているので)。開ける場合、最低インターネット側には3306ではないポートに変換などをしておくことが望ましい。でないと攻撃の対象になります。
ネットワークタイム(NTP) 123 TCP/UDP ネットワークタイムサーバーを利用して日付と時間を自動的にシンクロさせるのに使用します。




注意すること

 ファイアウォール機能が有効になれば、サーバーのセキュリティはぐっと高まるわけですが、その反面、サーバーで新しいサービスを構築したとき、ファイアウォール機能が原因で、新しいサービスが利用するポートがブロックされてしまい、それに気づかず悩むことがあります。

 たとえばSMTPを構築したとき、SMTPではポート25番を使用するわけですが、このときファイアウォール機能が有効になっていると、Postfixの設定に間違いがなくても、なぜか送信ができず、どこか設定を間違ったかなと、悩んでしまうようなことがあります。

 新しいサービスを構築したときは、まずそのサービスがどんなポートを使うのかをよく調べて、ファイアウォールに追加しておくか、一時的に無防備になりますが、ファイアウォール機能をオフにして、サービスのテストを行うなどの手順を忘れないようにします。

 また、このソフトウェアファイアウォール機能を装備するだけで、セキュリティ的に完璧になるということではありません。不要なサービスは停止させたり、また何よりルーターによるファイアウォール機能も有効に組み合わせていく必要があります。




Trackback

No Trackbacks

Track from Your Website

http://earlybirds.ddo.jp/namahage/inegalog/trackback/tb.php?id=47
(言及リンクのないトラックバックは無視されます)

Comments in Forum

2 Comments