Mac OS X Tiger でマニアックにファイアウォールを設定してみる
さて、サーバ(と言えるほどのものでも無いですが)の監査を受けるに当たって、OpenSSH関連と同じ位問題になったのが、ファイアウォールの設定。Mac OS Xには標準でファイアウォール機能があるので、それを使っていれば大丈夫だーみたいな感じでいい加減にやったら文句言われて終了、という事を繰り返す事数回、どうやらその原因は、「あるポート番号を開けるように設定すると、全ての通信元からの(そのポート経由の)アクセスを受け入れてしまう仕様になっている」という事である事が判明。それファイアウォールとして意味あんの? と思いつつ、まあどうにかしないといけないわけで、やっぱり何も知らない所から孤独な作業が始まりましたと。
以下ではそこで得られた知見をまとめ。一応この方法で、特定の場所から特定のポート経由のアクセスだけを受け入れる(パケットフィルタリングというらしい)、という設定が可能っぽい。で、その結果監査側からのアクセスブロックに成功し、監査のガイドラインを変更へ追いやったみたいです。一歩間違うとサイバーテロの標的にされかねない環境(研究機関なので)である以上、監査のレベルもそれなりに高いはずである、という憶断に従えば、この事からある程度信頼性の高い方法という事になりますね。元知識がゼロなので何ともいえませんが。 Panther以前の仕様は知りません。Tigerだけのような気がする。あと、ぶっ壊れたら御愁傷様。 その前に、Mac OS Xにおけるファイアウォール関係の設定をおさらい。 ・「システム環境設定」→「共有」で設定できる。 ・「ファイアウォール」タブを選択し、「開始」でファイアウォール機能が「入」になる(デフォルトでは外からのアクセスを原則全て(tcp)遮断)。「切」にしておくメリットはほとんど無いと思う。 ・ポートの開け閉めは「サービス」タブと連動。「サービス」の意味は、サーバソフトを立ち上げるかどうかという意味。例えば、「リモートログイン」を「入」にするとSSHのサーバソフト(sshd)が起動して、ファイアウォールが入になっていればSSHが使うポート番号「22」が開けられる。つまり、サービスが切になっているものに関しては、いくらポートが開いていてもアクセス不能(アクセスを処理できるものがいないので)。という事は、不正アクセスを防ぐ最終手段は、外部と通信するソフトを全て切る、という事だろうな。だから、後述の方法を使うと「ファイアウォール」タブは使えなくなってしまうけれど、必要なものは「サービス」タブから「入」にはしておかないとどんな設定でも徒労に終わる。 ・ソフトによって使用するポート番号は決まっている。ここのリストとかを使うと便利。 http://www.vwnet.jp/mura/tcpip-port.htm で、本題。Mac OS XはUNIX系のOSをベースにしているので、GUIで設定できる項目でもその実体はただのUNIXのソフトだった、という事は多いです。ファイアウォールに関してもきっとそうに違いない、という事でいろいろ調べて、どうやらそれがipfwというものだという所までたどり着く(これがかなり大変だった)。で、次にipfwの設定方法を調べて読むと、やっぱり特定通信元からのアクセスのみを受け入れる、という事は可能っぽい。でも、そうした解説ページのほとんどはファイアウォールを一から構築する事を目的として書かれていて、素人には意味分からん、というオチ。 そこでOS Xの標準設定をパクって使えば良いんじゃね? という結論に至る。以下その具体的なやり方。 ・上記方法に基づき、ファイアウォールを「入」にする。この時、詳細を選択し、「UDPトラフィックをブロック」「ファイアウォールのログを記録」「ステルスモードを使用」にチェックを入れておく。今回は例示のために「サービス」タブから「リモートログイン」と「FTPサービス」、あと「ファイアウォール」タブから「ネットワークタイム」を入にしておく。 ・ターミナルから以下のように入力。 $ sudo ipfw list ipfwコマンドを使うときには必ず管理者権限で、という事で頭にsudo。listで現在の設定を一覧で出力してくれる。今の設定の場合、出力はこんな感じ。 02000 allow ip from any to any via lo* 1行あたり一つのルールを意味しているらしい。これの組み合わせで表現する。 太字にした部分が、サービスとかから有効にした結果変わった部分。それ以外は基本設定のようなものだから良く分からなくてもOKという事にした。以下のURLでいろいろな設定の場合のサンプルが見れる。 http://www.hc.keio.ac.jp/itc/manual/mac/Security/ つまり、太字の部分をいじれば望みのアクセス制限がかけられるという訳。 実際に設定する前に、ルールの意味を。こんな風に解釈してみる。 [行番号] [allow or deny (log)] [tcp or udp] from [どこからのアクセス?] to [どこへのアクセス?] dst-port [ポート番号] [in or out] [行番号]:ルールを適用する順番を決める。数字の大きい方から適用されていく。つまり、数字の少ないルールほど優先される。ちなみに、65535はデフォルトであって、「全てのアクセスを受け入れる」という意味。これより小さい番号を設定しなければならない。つまり、これは一番優先度が低いという事。 [allow or deny (log)]:そのまま。このアクセスを許可するか拒否するか。deny logとするとログを取るようになる。 [tcp or udp]:tcpかudpか。ポート番号と普通セットで書かれているので、それに準じれば良い。あとicmpとかいうのもあるらしいが、デフォルトで全拒否となっていて、それで問題無いっぽいので無視。 [どこからのアクセス?], [どこへのアクセス?]:anyとすると何でもOKとなる。IPとかホスト名とかを指定すればそれのみ有効。「システム環境設定」ではこの部分の変更が効かないから問題だったのだね。具体的な指定方法は後述。 [ポート番号]:どのプロトコルか。先に挙げたリストを使うなりして何とかしてほしい。 [in or out]:ファイアウォールの外側からのアクセス(in)か内側からのアクセス(out)か。普通inを気にするものだと思う、のでinしか使わない。 若干これに従わないものが混じっていますが、それは全無視で。 実際の設定は、こう。 $ sudo ipfw [add or delete or flush] ルール addで追加、deleteで削除(行番号指定だけでOK)、flushでルールの全削除(確認有り)。つまり、「システム環境設定」経由でひな形を作っておけばコピペが有効。 以上を踏まえて、最初のリストに戻る。太字の部分を解説すると、2070行はSSH(ポート番号がtcpの22だから)、2080行はFTP(ポート番号がtcpの21だから)、22000行はネットワークタイム(ポト番号がudpの123だから)をそれぞれあらゆる場所から許可する、という意味になる。では、これをちょっといじって、SSHはIPアドレス110.1.2.3と111.4.5.6からのみ許可する、としてみる。 $ sudo ipfw delete 2070 カンマで区切ることでアドレス指定はいくつもつなげられる。 ちょっと応用。FTPは192.168.10.0から192.168.10.254の255個のアドレス全てから受け入れる、としてみる。 $ sudo ipfw delete 2080 W.X.Y.0/24という書き方で、W.X.Y.0からW.X.Y.254まで全部、という意味。下記のURLを参考に。 http://www.networkworld.jp/b-course/-/17982.html この界隈の人間は世界の常識であるかのようにこういう書き方をするが、こんなの一般人に分かるかボケ <解読するまでにもの凄く時間がかかった人 こういう調子で、開けたいポートに関して(デフォルトでは全遮断、12190行と35000行にそう書いてある)tcp関連は2061〜12189行の範囲、udp関連は20371〜30509行の範囲に書いていけば良い。 注意点が一つ。一回ipfwコマンドで設定をいじると、「システム環境設定」からファイアウォールがいじれなくなります(他のファイアウォールソフトが有効になっていると設定ができないようになっていて、ターミナルから操作することは何故かそれに当たっているらしい)。ごちゃごちゃやって復帰できなくなったら再起動(ログアウトするだけじゃまだ残っているからダメ)で。再起動で全部消えます。 ネタ。 「システム環境設定」からApple Remote Desktopを有効にすると3283と5900のtcp, udp両方が開くけど、最低限必要なものはtcpの5900番(これはVNCソフトで一般に必要とされるポート)だけっぽい。これだけでもリモート制御は可能。じゃあ3283番は何なんだ、という事になるが、これはApple Remote Desktopの「レポート機能」というものを使う時に必要となる。でもこれも使っているのはudpの3283番で、tcpの3283番は使ってなさそう。意味分からん。 こうやって苦労して作った設定も、再起動すると全部消えやがるので、シェルスクリプトでも書いておいた方が良いです。こんな昔のファミコンソフトみたいな事しなくても、どこかに設定ファイルとかで残しておく場所があるんじゃないの? と思って調べても現状分からず。南無。
by fyama_tani
| 2006-07-09 16:33
| 雑記
|
小説の紹介とか化学に関する事とかを織り交ぜながら適当に。
カテゴリ 以前の記事 2011年 10月 2011年 08月 2011年 06月 2011年 05月 2011年 04月 2011年 03月 2011年 02月 2011年 01月 2010年 12月 2010年 11月 2010年 10月 2010年 09月 2010年 08月 2010年 07月 2010年 06月 2010年 05月 2010年 04月 2010年 03月 2010年 02月 2010年 01月 2009年 12月 2009年 11月 2009年 10月 2009年 09月 2009年 08月 2009年 07月 2009年 06月 2009年 04月 2009年 03月 2009年 02月 2008年 12月 2008年 11月 2008年 10月 2008年 09月 2008年 08月 2008年 07月 2008年 06月 2008年 05月 2008年 04月 2008年 03月 2008年 02月 2008年 01月 2007年 12月 2007年 11月 2007年 10月 2007年 09月 2007年 08月 2007年 07月 2007年 06月 2007年 05月 2007年 04月 2007年 03月 2007年 02月 2007年 01月 2006年 12月 2006年 11月 2006年 10月 2006年 09月 2006年 08月 2006年 07月 2006年 06月 2006年 05月 2006年 04月 最新のトラックバック ライフログ タグ 検索 その他のジャンル ファン 記事ランキング ブログジャンル 画像一覧 |
ファン申請 |
||