|
| ※まだメモ状態で、今のところ役に立つ情報はほとんどありません。中途半端なもの上げるなぁ〜とお叱りをいただく前に、念のためお断りしておきます。 本来、サーバー構築とセキュリティ対策は別ジャンルと捉えられるため、サーバー構築書籍なんかだと小さくちぃ〜さく語られている上に風説が伴いがちなセキュリティ(あ、風説の流布は私か(^^;)ですが、今回は思いきってどちらかというとセキュリティを中心に、同時進行させてみようという無謀なテストでもあります。途中で執筆を挫折すること請け合い。 あと、盗聴や暗号化には踏み込まないと思うなぁ。 |
最近はぁ〜、社会的な後押しもあってぇ〜、定額接続も安くなってきてぇ〜、繋ぎっぱなしも珍しくなくなってきてぇ〜・・・。と言うような世の中になってまいりました。なにせ、うちとこみたいなド田舎でもフレッツ・ISDNやADSLが使えるくらいですし、都市部では光ファイバを使った大容量の回線も珍しくなくなってきましたね。さて、そこでせっかく繋ぎっぱなしになっているんなら、自分でサーバーを立ち上げてみたいと思うのが人情ってもんです。え?思いませんか?そんなあなたも読むだけ読んでみると、何かのたしになるかもです。サーバーの仕組とかネットワークの成り立ち、セキュリティの知識など、私が「にわかシステム管理者」として培ってきた知識を惜しげも無く投入して書き上げる予定なので、インターネット全般に対する知識を広げることができる・・・かもしれません。
サーバーを立てるにあたって、絶対に気をつけたいことがあります。そう、いわずもがなセキュリティ対策です。インターネットへ常につないでいると言うことは、常に4億以上の人の前にまったくの無防備な状態でぽつんと立っているのと同じ事です。しかも対峙している時は一対一というとても不自然な世界です。いつどこで犯罪に遭ってもまわりの人は気付いてくれませんし、守ってもくれません。インターネットは、特に世界規模でのネットワークであるため、国内だけの論理は通じず、さらに国際的な犯罪防止機構が無いため、常に危険が付きまといます。例えるならば、空腹な野生のライオンのたくさんいる檻の中に裸にされて放りこまれたような状態ですね。最低限のセキュリティ対策も施す気がないのであれば、このページは見なかったことにして、今すぐお引き取りくださいませ。そう、実際に不正アクセスの被害にあっただけならまだしも、中継されてよそ様にご迷惑をおかけしたり、ご迷惑をおかけしたところからお叱りメールをもらってもまったく理解できずに放置なんて事になったら、社会的信用を失うこと請け合いです。詳しくは徐々にセキュリティの項目において説明することになりますが、常にサーバーの状態やセキュリティホールの状態を監視・改善できる時間を取れないのであれば、サーバーを立ててはいけません。当然自己責任が原則となる世界です。良いカモにされないように、そしてよそ様にご迷惑をおかけしない様に、セキュリティ対策は最重要項目としてお勉強しましょう。
例えば、プロバイダさんにWebスペースを間借りしてサイト運営をしている場合、ディスクスペースだとかCGIの利用などに思いっきり制限がありますよね。メールアドレスだって、ひとつ数百円とは言え、追加にはやっぱり余計なお金がかかっちゃいます。それに対して、自分の使っているパソコンは、数十ギガもハードディスクがあまっていたり、CPUなんかほとんど使わない処理ばかりに使われていたりします。さらに、常時接続しているのに、回線を使っているのは「そうだなぁ〜、会社から帰ってきてからせいぜい30分くらいだな(藁」なんてこともざらです。そう、この自分の持っている環境の余分なリソースをインターネットサービスに利用したいと思うのはおかしなことではありません。と言うわけで、このドキュメントでは、そんな余分なリソースを活用して、自宅でサーバーを立てちゃおうという無謀な策略をご紹介することになります。
もちろんデメリットもあります。前述のセキュリティ対策は、やはりわずらわしい以外の何ものでもありませんし、一度サーバーを立てたらパソコンの電源は入れっぱなしにしないと通信は成り立ちません。特にメールなどは常時送受信できる環境でなければ、当然意味の無いものになってしまいます。労務費や電気代、バックアップ電源などの投資にそれ相応のコストがかかることを覚悟しましょう。もちろん社会的信用を失いかねないリスクや、踏み台にされて損害賠償などの訴訟を起こされる可能性も伴います。
このドキュメントでは、NTTのフレッツシリーズやCATVなどを用いて常時接続している環境において、固定のIPアドレスやドメイン名を取得するほどの利用価値を感じていないけど、サーバーは立ててみたいという方が対象です。前提条件として、常にインターネットへ接続していること、プロバイダさんから借りているIPアドレスがグローバルアドレスであること、TCP/IPの仕組について大まかに理解していること、トラブル発生時には自分で責任を取れることが必須です。機器については、へっぽこなパソコン1台と、TAやADSL・CATVモデム、ルータなどインターネットへ接続できる環境が必要です。アクセスに用いる機器は、基本的になんでも結構ですが、ルータについては、たくさん種類があって、1つずつ検証して説明するわけにはいきませんので、必要な設定要件を記述する程度にとどめる予定です。ちなみに、OSはWindows各種です。
TCP/IPはご存知ですか?インターネットを利用するにあたって、標準プロトコルとなっているTCP/IPの知識は必須です。あらかじめ「ネットワーク入門」及び「インターネットプロトコルの謎」相当の知識は必須です。TCPについては、ドキュメント中、サーバーの解説と共に若干の説明を加える予定にしていますが、詳しくは専門の書籍を読むなどしてください。ま、責任問題のからむことを行うわけですから、ある程度の知識を蓄えておくのは当然と言う考えでいないと、あとで泣きを見る羽目になりますよ。
とりあえず、ネットワークやインターネットプロトコル(IP)については、「ネットワーク入門」と「インターネットプロトコルの謎」を読んどいてくださいませ。
トランスポート層のプロトコルは、IP層より運ばれてきたデータから、各アプリケーションごとに割り当てられているポート番号にそって、より上位層のアプリケーション層などへデータを受け渡します。郵便配達に例えると、集合住宅へきた郵便配達員さんが、各戸の郵便受けへ郵便物を振り分けるような処理です。そして、そのトランスポート層で用いられる代表的なプロトコルがTCPとUDPです。
ポートは、同一ホスト内で複数のサーバーを識別するために割り当てられた番号です。ポート番号の概念を使って、複数のアプリケーションを稼動させることを実現させています。ポート番号は、0から65535までの番号があり、大きく分けて0から1023までのWell Known Port Numbers(良く使われるポート番号)、1024から49151までのRegistered Port Numbers(予約済みポート番号)、49152から65535のDynamic AND/OR Private Ports(動的/プライベートポート)の3つにわかれています。通常サーバー側で使うのは、Well Known Portで、SMTPの25、httpの80、POP3の110など、おなじみの番号も登録されています。詳しくは、ianaのサイトをご覧下さい。
TCP(Transmission Control Protocol)の役割は、IP層から分割されて送られてくるデータを整列して上位層へ運びます。個々のパケットにはシーケンス番号が記録されており、番号順に並べ、欠落している情報があれば再度送信元へ要求し、届いたパケットが順番に並ぶように整えてる機能を持ち、プロトコル自体で信頼性を確保しています。
UCP(User Datagram Protocol)は、TCPと違って並べ替えや再要求などを行わず、信頼性は保証されない形式のプロトコルです。信頼性を確保する処理を省いているため、逆に処理速度が効率が良くなります。信頼性を保証する部分は、必要に応じてアプリケーション側で補完する必要があります。
(DNS、http、SMTP、POPの解説・・・)
WindowsNT 4.0 には、私の知っている限りの知識のなかでは、ダイヤルアップアダプタ側のパケットを制御する機能が提供されていません。そこで、ここでは BlackICE Defender というソフトウェアを用いる事によりパケットフィルタリングを行います。パケットフィルタリングができれば、各種ルータでもその他のパーソナルファイアウォールソフトウェアでもなんでもかまいません。また、ここで書く以前に、ちょっとだけセキュリティについて考える、もうちょっとセキュリティについて考えるを理解している必要がありますが、一応最近の動向も踏まえて、再度解説してみます。そう、最初にビビらせます。覚悟しとけやゴルァ〜です。(^^;
CATV(ケーブルテレビ)インターネット利用者やインターネット対応マンションなどで、時折、他人のネットワークコンピュータが見えるトラブルが発生しています。これは、CATVのLAN型接続で多く見られるケースで、LAN(内側のネットワーク)に接続した際にWAN(外側のネットワーク)を意識せず、ファイルやプリンタの共有を行ってしまい、不意にWAN側にも共有資源が提供されてしまっているケースです。ただし、相互に見ているお互いの人が、単純に「見えている」程度の認識しかない場合は実際の被害には至らないのですが、他人のプライバシーを覗ける状況下で、その衝動を抑えきれる人は少ないですね。また、共有されているコンピュータは、簡単にファイルを読み書きでき、さらに最悪の場合は消してしまうことさえできますし、もちろん、先般大流行したNimdaの様に、共有フォルダを媒介して感染させるワームも登場しています。パソコンの中にあるファイルには、アカウントやパスワードを情報を類推するために必要な情報なども大量に含まれます。特に不特定多数の接続するWAN側からアクセスが可能な場合、盗まれる情報をどの様に利用されるのかさえまったくわからないことにも注意が必要ですね。
ネットワークを通して相手に不正アクセス行為をしようとした場合、一般的な手法として事前に「スキャン」と呼ばれる行為が行われます。まあ、泥棒さんが侵入しようとする家を下調べするようなものですね。ターゲットとしたコンピュータに搭載されているOSの種類、稼動しているアプリケーションやそのバージョン、常に開いているポートなどを調べ、そこにセキュリティ上の弱点が無いか、OSやアプリケーションに脆弱性は無いか等を調査する行為ということになります。この様な行為を行うツールは、自らの脆弱性を調べるためにも使われますので、インターネット上や雑誌の付録CD-ROMなどでも比較的簡単に入手することができます。これらのツールで収集した情報を元に、実際の侵入方法などを検討しクラッキング(実際に破壊や改竄を行う行為)に至るため、スキャンそのものの危険性は低いものの、執拗に繰り返されるスキャンには常に注意を払う必要があるでしょう。また、これらのスキャンからクラッキングまでを一連のプロセスとして自動的に実行する、いわゆるクラッキングツールなども広く出まわっているため、油断はできませんよぉ〜。
コンピュータやネットワークにおいて最も深刻な被害をもたらすのがこの「侵入」と呼ばれる行為です。インターネットへ繋いでいたら、目の前で突然様々なアプリケーションが動き出しちゃったりすることもあります。これは、悪意のある第三者がコンピュータへ侵入したり、遠隔操作用のツールを仕込むなどの手法により、相手の意のままに遠隔操作されてしまっているためです。もちろん、目で見えるアプリケーションが開かれた場合はすぐに気がつきますけど、実際には表面上はわからない様にバックグラウンドで動作するようなプログラムを走らせられてしまうので、注意してても気がつきませんよね。ひとたび侵入されてしまうと、コンピュータはクラッカーの思い通りに操作されてしまいますので、パソコンの中のファイルを破壊・改竄されたり、へんてこな遠隔操作ツールを仕込まれたり、そのほかのサイト攻撃への踏み台とされてしまうことにもなります。もちろん、重要な機密情報へアクセスしたり、盗み出すことも可能ですし、場合によっては、管理者権限を奪われ、自分からは操作もできないばかりか、BIOSも書きかえられて、そのパソコンをまったく使えなくしてしまうこともできます。つまり、不正アクセスの根幹を成す行為と言えます。怖いですねぇ〜・・・。ビビった?
ある日突然、見知らぬWebサイトの管理者から1通の電子メールが届けらました。読んでみると自分のところから不正アクセスを受けているとの苦情が綴られています。もちろん自分自身には全く身に覚えはありません。そう、これが人呼んで「踏み台」と呼ばれる行為です。不正アクセスを行う者が、自分の身元を隠すために、中継点としてあなたのネットワークを利用し、結果として、相手からはあなたのネットワークから不正アクセスが仕掛けられているように見えているのです。また、SPAMと呼ばれる迷惑メールに困ったことのある方も多いことでしょう。電子メールのヘッダ部分には、仲介したサーバーの記録が残りますが、SPAM発信者は、自分の身元を隠すために無防備に公開されている第三者のSMTPサーバーを中継し、自らの発信場所を隠蔽しているのです。家庭内LANやSOHO、小規模事業所などでは、満足なセキュリティ知識のある管理者を置いていないことが多く、対策を怠っているネットワークは絶好の踏み台となる可能性を持っています。しかも、悪いことに、この様な事態が起きた場合、不正アクセス禁止法(※)において、放置プレイは第三者責任を問われる可能性が示されているので注意しなくてはいけません。
※:不正アクセス行為の禁止等に関する法律について
不正アクセス行為の禁止等に関する法律は、不正アクセス行為の禁止と罰則、それらの再発防止のために定められ、平成12年2月より施行された法律です。その目的は、ハイテク犯罪の防止、電気通信に関する秩序の維持とされています。第三者のアカウント情報を無断で利用したり、むやみに自らのアカウント情報などを公開して不正アクセスを助長する行為などを禁止しています。
セキュリティに対して慎重に慎重を重ねたプログラム設計をしても、現実的にはミスをなくすことはできないみたい。そんな隙を狙った攻撃がバッファーオーバーフロー攻撃です。攻撃対象となるソフトウェアに対して、特定の文字列や意図しないほど長ぁ〜い文字列などを挿入した際に、ソフトウェア内で正常なエラー回避処理が施されていない場合、処理が完了せずにパニックを引き起こし、場合によっては管理者権限を奪われるなどの被害をもたらします。主にサーバーに対して用いられる攻撃手法ですが、もちろん、クライアント利用のアプリケーションでも、外部のサーバー等から取得した情報によりクライアントアプリケーション自身にバッファオーバーフローが発生することもあり、油断することはできないんですよぉ〜。管理者権限を奪われたり、トロイの木馬をしかけられるなど、任意のプログラムが実行される環境になれば、そりゃもう踏んだり蹴ったりです。
で、最近では一般の新聞やテレビのニュースなどでも耳にするDoS(Denial of Service)攻撃。これはWebサーバーなど、何らかのサービスを公開しているコンピュータの特定のポートに対して、集中的にパケットを送りこみ、通信回線のトラフィックを溢れかえらせたり、サーバー自身のバグを悪用してサービスを停止させてしまう攻撃です。例えば、SYN Flood 攻撃なんてのは、TCPで通信を確立するとき、要求・応答・確認の手順が必要なところ、サーバーに応答までさせておいて、確認を返さないで中途半端な状態にしてしまうことができるわけです。また、この攻撃を複数のコンピュータから行う行為を分散型サービス拒否攻撃、DDoS(Distributed Denial of Service)攻撃と呼びまして、あらかじめ遠隔操作用のツールをしかけられ、ゾンビ化された複数のコンピュータから一斉にサービス拒否攻撃を行う攻撃手法です。この分散型の場合は、複数の経路から攻撃が行われるため、フィルタリングが難しく、クラッカーの特定も非常に難しいため深刻な問題となっています。サーバー公開を目指す者にとって大きな障害となる可能性がとぉ〜っても高いので注意しなくちゃです。
(バインドの表示をすべてのアダプタにして、インターネットへ接続するアダプタのWINSクライアントを無効にしちゃいましょう。)
(足引っ掛けてサーバー倒れちゃったとかいうとサーバーだとしゃれにならないもんね・・・)
(瞬断ごときで止まるようではサーバーぢゃないっす)
(RAID使ったりするほどでもないからなぁ。なに書こうかな・・・)
(自宅サーバーだと端末としても使われる可能性が高いから、やっぱり必須だろうなぁ・・・)
BlackICE Defender(以下BID)は、IDS(Intrusion Detection System:侵入検知システム)をベースとしたパーソナルファイアウォールで、パケットの検知機能、検出されたパケットの内容を読み取り、既知の攻撃手法を収録したパターンファイルと照合して不正アクセスと判定したものをブロックする機能、パケットフィルタリング機能を提供する低価格なパーソナルファイアウォールです。今回は、主にパケットフィルタリングに注目して使いますので、パケットフィルタリングができれば、その他のパーソナルファイアウォールソフトウェアでもルータでもかまいません。
BIDには防御レベルに「なし」「普通」「高」「最高」4つのデフォルト設定が用意されています。それぞれfirewall.iniのフィルタリング設定は以下のようになっています。
| 防御レベル | TCP LOW | TCP HIGH | UDP LOW | UDP HIGH |
|---|---|---|---|---|
| なし | A | A | A | A |
| 普通 | R | A | R | A |
| 高 | R | R | R | A |
| 最高 | R | R | R | R |
NetBIOS関係のポートについては、「インターネットファイル共有を有効にする」及び「ネットワークコンピュータの表示を有効にする」のチェックを外しておくと、どのレベルに設定してもTCPの137、138及びUDPの139はREJECTされます。また、全レベルに対して、113はACCEPTされています。
BIDは外側から飛んでくる(インバウンドと言います)パケットしかフィルタリングしませんので、内側から送信する(アウトバウンドと言います)パケットを制御することはできません。そこで、LAN側からのアクセスを制御するため、プロキシなどを用いると良いでしょう。(・・・でも、サーバー自身が直接アクセスできる環境だとダメだよね。どうしましょ。(^^;)
今のところないっす。最近のルータにはマルチレイヤインスペクションなんてFireWall-1みたいな強力なフィルタリング機能があるのですが、うちはそんなん持ってないです。独学で勉強するか、作るか、買えです。(^^;
なにはともあれ、現代インターネットで情報公開の基本となっているWebサーバーの立上げをして見ましょう。
ANHTTPd ver 1.35b
Neon Mail Server Ver 1.14
Neon Mail Serverは、初期値でSMTPが25、POP3が110、telnetに999の3つのポートを開きます。このメールサーバーでは、Telnetにてユーザ管理やフィルタリング設定を行いますが、初期状態では当然の事ながらインターネット側からもtelnetによりアクセスし、管理情報を変更することができてしまいます。まず、インストール作業が終わったら、デフォルトのtelnet用ポート番号(999)を1024以上の任意のものに変え、そのポート番号をパケットフィルタリングにて外部からのアクセスを拒否に設定します。さらに、デフォルトの管理用アカウントは単純なもので、しかも公開されているものですから、すぐに新しい管理用のアカウントを登録し、デフォルトの管理者アカウントを変更します。
POPポートについては、インターネット経由で外部からアクセスしないのであれば、かならずパケットフィルタリングにて外部からのアクセスを拒否するようにしましょう。