[an error occurred while processing this directive]

「『サーバ』に対する誤った認識」に100質風に回答

[an error occurred while processing this directive]100質ってのは「〜に100の質問」というもので、このサイトだと2006/9/7時点で「自宅サーバ管理者に100の質問」に答えています。

2006/9/7「●安易な自鯖立てへの警鐘」に戻る

 

追記:2008/7/24に追記・修正。その部分は色変えてある。

▼自分でサーバ立てるのってなんか楽しそうだしスゴそうだよね?
私はPC弄りが手段ではなく目的な人間なので、管理ツールとか無駄に弄ってても楽しいと思えるからOK。
逆にそうではない普通?の人はレン鯖も視野に入れたほうがいいかも。
私は両方やってるが(ぉ)。

▼サーバ立てるのなんてちょっとパソコンに詳しければ簡単にできるんでしょ?
ちょっとってどの程度なのかわからんが、XPでブラウザ・メール程度だったらやめておいたほうが吉。
本家の回答だとかなり厳しいことが書かれているが、最低限セキュリティ関係の知識はクライアント以上に必要かと。
そもそも、クライアントだとIncomingポートは全部閉じていてもOK(Windows Messengerのファイル共有などはポートを空けないといけないが、UPnP対応ルータだと自動化されるはず)だが、サーバだとサービスポート開ける分どうしてもリスクが増す。

▼ハードウェアの多重化なんて必要?
個人的には多重化よりもUPS/バックアップ(これは多重化に近いけど)が必要だと思う。
これらはサーバやらなくてもクライアントレベルでも役立つ。
UPSは微妙だが、まあ保険みたいなものか。
例えば停電、ブレーカーダウン、電圧低下などが発生した時にPCのダウンを防止する。
ノートPCの場合バッテリーがあるのでそれがUPSの代わりになる。
ちなみに手元にある基本情報技術者のテキストによると、多重化の方法には
デュプレックス方式:装置を二重化し、正常時は一方を運転、故障したらもう一方に切り替え。
※予備系のスタンバイ方式にもホットスタンバイとコールドスタンバイがある
デュアル方式:2台の装置を並列運転させ、互いを監視し、相手の故障を発見すると相手を停止させる
などがある。個人で、しかもWindowsだと辛いな。
例として、鯖コンテンツをTeraStationなどのNASに外部化、マシン2台用意して、普段はどちらかに割り振っておき、もしそちらが落ちたら無事なマシンでルータのNATテーブルを書き換える(telnetなどで書き換えられるルータじゃないと厳しい)とか。
TeraStationもバックアップモード?(2台用意すればそういう運用ができるっぽい)にしておけばさらに堅牢度が上がる。


▼企業で使うとかじゃなく(略)〜Macなら大丈夫だよね?
この辺は本家にほぼ同意。
クライアントレベルだとマイナーOSは多少安全かもしれないが…?
WindowsのウイルスはWindows上でしか動かない(wineなどの仮想環境使えば別)が、バッファオーバーフロー攻撃などはプラットフォームに関係なくダメージ受けるからね。
とりあえずセキュリティに関しては「〜すれば大丈夫」といった王道はないと考えておいたほうがいいだろう。
学問に王道なし。セキュリティにも王道なし。食べられないよ黄銅梨(ぉ)。

▼今までサーバ立ててたけど別に何も問題はなかったよ?
これについては、私自身侵入食らった経験あるので。
侵入食らったのはサーバマシンではなく、普段はクライアントとして使用しているもので、VNCの脆弱性を突かれて侵入された。
これから言えることは
・脆弱性情報は欠かさずチェック
・台数が少し増えるだけでも管理の面倒さは一気に増える
・サーバは「サーバ機」だからサーバなのではなく、「サーバデーモン(プログラム)」を動かすからサーバ
最近ではメーカー製PCでもロケーションフリー対応とかで初期状態でApacheなどが動いていることがある(「Fen」がそうだった)。知らず知らずのうちにクライアントがサーバになっている場合もあるので注意。

▼じゃ、どうすればいいのさ?
WindowsXPとかは元々サーバ用途じゃないので少々やりづらい。せめてProfessionalが欲しい所。
VistaだとUltimate…いや、むしろサポート期間の長いBusinessのほうが自鯖には向いてる?。
・サービス停止はマイコンピュータ右クリック→「管理」(以下、「コンピュータの管理」と表記)→「サービスとアプリケーション」→「サービス」
・ポート閉じるのはWindows ファイアウォールだが、私はこれを無効にしてルータ側で設定してるので詳細不明。他を当たってくれ(ぉ)。
・メールの送信状況やWebサーバへのアクセス状況は各サーバデーモンの吐き出すログを見る。場合によっては「コンピュータの管理」→「イベント ビューア」以下のログに出力されることも。
・意図せぬ通信を検出するにはWindows ファイアウォールなどのファイアウォールソフトを使うといい。最初は普通のアプリケーションからの通信もいちいち確認出るので鬱陶しそうだが…。
・ディスク/メモリ/CPUはNorton System Doctorなどのツールを入れるか、パフォーマンスモニター(コントロールパネルの「管理ツール」→「パフォーマンス」)などを見る。他にはタスクマネージャ(タスクバー右クリック)やマイコンピュータなど。
・ネットワークポートはnetstat。オプションに-anを指定すると全接続表示+ポートが数値になるのでチェックしやすい(と私は思う)。
・ファイル操作は…そんなログあったかなぁ。とりあえず外部ツール入れれば対応可能。
 MicrosoftからFileMon for Windowsというツールが公開されている。これを使えばあらゆるファイル操作が補足できるらしい。
 ただし、デフォルトではexplorer.exeやsvchost.exeなどのOS・シェルが行うファイルI/Oが多すぎるのでIncludeとExcludeで必要なものだけを選択するようにしよう。
 あとはopenfilesというコマンドで今開いているファイルは分かるらしい。ただ、設定変更が必要で、パフォーマンスが下がるっぽい(未検証)。

・起動プロセスはタスクマネージャかtasklist・taskkill。しかしRagnarokOnlineなどのチート防止ツールを使ったゲームや、rootkitsなどはプロセスを隠蔽するので厄介。
・ログインユーザーはXPの初期状態(「ようこそ画面」とユーザーの切り替えが有効)だとタスクマネージャから。それ以外だとtelnetやssh起動してない限り複数ログインは無理だったような気がするが…?
 telnetやssh起動してる場合は…うーん、ちょっと分からん(ぉ)。
 不用意にリモートのログインを許したくない場合はグループポリシー(gpedit.msc)から「ローカルコンピュータポリシー→コンピュータの構成→Windowsの設定→セキュリティの設定→ローカルポリシー→ユーザー権利の割り当て」で「〜を拒否する」に入れておくとか。
 あと、そもそも無駄にユーザを作らない。テストでパスワードなしのユーザ作って放置してしまうと危険。消したくない場合は無効にしておこう。

・実行されたコマンドは…これも外部ツール頼りか?
本家記事はLinuxを前提にしてるため、Windowsだと難しい面もある。
しかし、少なくとも上に上げたツール類の使い方は最低限知っておきたい所。「タスクマネージャ?なにそれ」といったようではサーバ立てるのはやめてくれと言いたい。
実は外部からの接続のためにTL10動かしてるのでLinuxも使ってるんだが、SSH専用なのでルータからポート22だけ割り振るようにしている。
あと、SSHも最近はアタックが多いのでパスワード認証は無効にして鍵オンリーにしてあるんだが、いくら鍵認証にしても鍵ファイル(特に秘密鍵)盗まれたら意味がないので、秘密鍵が入っているノートPCやモバイル機器の紛失に注意し、万一紛失したらすぐにサーバのauthorized_keysから該当する(対になる)公開鍵を消そう。


▼よし、わかった。がんばって上記の対策をすれば大丈夫なんだね?
だから鯖管理に王道なし。
泥棒はさておき自然災害はいつやってくるかわからない。しかも忘れた頃にやってくる。
あと、こうやって追記してるように、常に情報を最新に保つ努力が必要。
いくら莫大な資金・労力・時間をかけても10年前の対策やってたんじゃほとんど無意味になることも。


▼泥棒に盗まれるなんて滅多に起きないでしょう?
意外に油断してる田舎が狙われるかもしれない。
もっとも、泥棒の侵入を許した時点で、普通の金銭目的な泥棒なら通帳や印鑑を盗むはず。
他に手をつけずサーバだけクラックしていくのはよほどサーバ管理者に怨恨があるか、金になる情報があるか、あるいは…。
気になるようならサーバに鍵でも付けておこう。もちろん、まず家に侵入させないことが第一だが。

▼まとめ:サーバ運営に必要とされる能力
これって質問じゃない気もするが…。
ハードウェア知識については、自作PC作れるといったぐらいでは全く足りない気がする(最近の自作は簡単だからね)。
ソフトウェア知識、ネットワーク知識もそうだが、サーバ管理目指すなら少なくとも初級シスアド、できれば基本情報技術者ぐらいのレベルは欲しい所。実際には具体的な各ツール(工具・パーツと管理ソフトウェア両方の意味で)類の使い方なども必要になる。
これらはコンピュータがが「目的」でない人にとっては習得が苦痛かもしれない。
PCを「手段」としてしか捉えられないようなら、レン鯖借りてコンテンツ作成に力を注いだほうがいいかも。
ちなみに、私はたとえ疲れて寝ててもサーバの警報が鳴れば飛び起きて(警報に気づけばの話だが)即対処するぐらい鯖運営?にはまってる。障害対処で徹夜もたまにある。
すまん、最近体力が落ちてきて警報無視することがたまにある(ぉ)。
つらくなってきたら無理せずレンタル鯖に移行するのも手だ。健康第一。


▼参考文献
Linuxでやるなら本家のリストも役立つかと。ただWindowsだと、まともなサーバ管理の本を探そうにもWindows 2003 Server+IISなどエンタプライズ向け構成が多いはずのでネット情報に頼ることが多くなるかも。
私が参考にしたサイトは
Let's build home server. - 自宅サーバのススメ - 自宅にサーバーを構築
「鷹の巣」の自宅サーバー
など。
一応このサイトにも設定&開設事例なんてのがあるけど、内容はかなりぬるめかも。
とはいえ、一応5年も続いてるのでそれなりのことは書いていくつもりだが、実はまだかなり未完成(ぉ)。Windows XP+AN HTTPDなのでかなりライトな構成を想定。


2006/9/7「●安易な自鯖立てへの警鐘」に戻る