このページはコスメ・美容に関する類義語辞典が 2006年 12月 05日 11時37分21秒 にクロールしたキャッシュ情報です。
検索キーワード= コスメティック 美容 美容整形
優先キーワード= コスメティック 美容 美容整形
検索キーワード= コスメティック 美容 美容整形
優先キーワード= コスメティック 美容 美容整形
自宅とは?
[ 21] Linux で自宅サーバ [ Home Server Technical. ]
[引用サイト] http://www.miloweb.net/
|
このサイトは非固定 IP アドレスで独自ドメイン( miloweb.net )を取得し、自宅のサーバより発信しています。 ご質問メールについてLinux に関するご質問をメールで頂くことが多々ありますが多忙の為お返事を書くことができません。ご質問はお気軽に BBS へご投稿頂きます様、よろしくお願いいたします。 ただ今サーバのメンテナンス中です。現在、代替サーバで運営していますので、何か不具合が発生するかもしれません。メンテナンス期間は2006年12月3日(日)〜2006年12月4日(月)を予定しています。ご迷惑をお掛け致しますが、よろしくお願いいたします。 「 リンク 」ページのメンテナンスを行いました。同じく「 リンク 」に「相互リンクをお申し込みされる方へのお願い」の一文を追記しました。 Linux はコマンドだけで操作する OS ではありません!Windows の様に GUI での設定が可能です! このサイトは私の調べた Linux で自宅サーバを全て無料で構築する(ソフトウェア的に)方法や、その手順を私の自宅の構成に沿ってご紹介します。これから自宅サーバを立ち上げる方のお役に立てれば光栄です。 ここに掲載している情報は私自身が調べたものや偏見などがありますので、間違っているものや見当違いのものがあるかもしれません。 ほとんどのコンテンツはインストール/設定時に私が書いておいたメモをそのまま html 化したので、間違っているものや、バージョンが低いものがあるかもしれません。 ここで紹介しているルータやOSでないとできないというワケではありません!ここで紹介しているのはあくまで「例」です このサイトは、管理者である kensuke が Vine Linux で自宅サーバ構築時のメモを HTML 化し、公開しているサイトです。 当サイト内のドキュメントの著作権は、管理者である kensuke に帰属しています。無断で一部または全てを転載、複製、放送、翻訳することは、著作権の侵害に相当します。 また、当サイト内のドキュメントを利用した事により発生した損害については、その規模に関わらず 私( kensuke ) は責任を負えません。記事内容が正確なものであるよう努力はしておりますが、誤った情報が含まれていないとも限りませんので、あらかじめご了承頂けますようお願いします。記事内容の実行は、あくまで自己責任でお願いします。私( kensuke )の趣味で運営しているサイトだということをご理解下さい。 当サイトはリンクフリーです。相互リンクも大歓迎です!当サイトへリンクを貼っていただける方は、出来るだけトップページ( http://www.miloweb.net/ )にリンクを貼って頂きたいのですが、どのページでも構いません。 リンクに関する事は、当サイト内「 リンク 」で説明していますので、リンクを貼って下さる方はご一読下さい。 自宅のパソコンをWebサーバとしてWWW(World Wide Web)に公開する事を総称して「自宅サーバ」と呼びます。 プロバイダからグローバルIPアドレスが割り振られている(非固定グローバルIPアドレスでも可能です)。 ISPからグローバルIPアドレスではなく、プライベートIPアドレス(ローカルIPアドレスとも言う)しか割り当てられない場合は、自宅サーバの立ち上げに関してカナリの制限が余儀なくされます。ローカルIPアドレスの場合は「Pix (P-DNS)」で(30日コース 1000円 /90日コース 3000円 /1年コース 9000円(30日間の無料試用可能))可能です このサイトを見てくださった方に今さら「Linux は動作が軽くて、無料で・・・」なんて言ってもしょうがないですよね。 個人的にRed Hat Linux はミーハーっぽい気がする・・・Linux を知れば知るほど他のディストリビューションの魅力に気付きます Windows2000 でサーバを構築する時にはこうは行きません。こんなヘッポコマシンでも安定して動作する所も Linux の良い所なんでしょうネ。 |
[ 22] 自宅サーバーWebRing(ウェブリング)
[引用サイト] http://park12.wakwak.com/~webring/
|
この「自宅サーバーWebRing(ウェブリング)」は、自宅サーバー(ホームサーバー)に関する情報を提供するホームページを輪(リング)のように相互リンクするものです。ホームページを訪れた方々は、このリングの中をたどっていくことにより、「自宅サーバー」という同じテーマをもったホームページを効率よく次々と訪問することが出来ます。 この「自宅サーバーWebRing(ウェブリング)」に参加している各ホームページには、下記のようなナビゲーション・バーが置いてあり、これを利用して相互リンクしています。 これから自宅サーバーを構築される方は、次項以降を読まれる必要はありません。是非、下記のナビゲーション・バーをクリックして、各参加サイトをご訪問願います。もし、自宅サーバーを構築されるOSを決められている場合は、「登録サイト一覧」や「おいでんリンク」をご覧になる方がよいかもしれません。 すでに自宅サーバー(ホームサーバー)をご構築されて構築時の要領(ノウハウ)をWebページに記載されている方は、次項以降をご一読され、是非このWebRing(ウェブリング)にご参加されます様、御願い致します。尚、この自宅サーバーWebRing(ウェブリング)は、現在、「鷹の巣」(たかのす)によって管理されています。 現在は、EasyRINGというフリーなCGI(Perl5)を改造し、プロバイダに設置して、利用しております。 このナビゲーション・バーには、「リングに参加しているホームページの一覧」、「次(前)のホームページへの移動」、 さて、自宅サーバーに関する情報を提供するホームページを運営されている皆さん!この「自宅サーバーWebRing」に参加しませんか? 皆さんが参加することで、この輪(リング)が大きくなっていきます。リングが大きくなればなるほど、このリングをたどる多くの人に皆さんのホームページを知ってもらう事ができます。(アクセス数が増えます!)もちろんご参加は、無料です。 また、参加サイトのトップページには、このWebRingの登録サイト一覧のWebページ(静的なHTMLファイルで、2003年4月13日現在、GoogleのPageRankは4)より、アンカー(ハイパーリンク)されますので、ロボット型検索エンジンで多少検索されやすくなります。 これ以外にGoogleの宝くじPageRankもランダムに贈呈(約1ヶ月間)しています。詳細は、「ページランクとGoogle toolbarについて by Eva」をご参照願います。 自分のウェブページを持っていること。ウェブページが自宅サーバー内でなくてもかまいません。プロバイダのウェブページ等でも結構です。自宅サーバーが時限サーバーである場合は、このリングが提供するプロバイダのウェブページの入口ページを利用して、バナー表示を行い、自宅サーバー開設時間帯のみ自宅サーバーに案内することも出来ます。 ナビゲーション・バーをトップページに貼ること。テキストだけなので、背景色を工夫して、目立たせること。 リングが「壊れたリング」にならない様、サイト保守等でサーバーを停止する場合は、一時的にリングから外し、オフライン状態に戻すこと。 リング運用中に自宅サーバーが安定稼動されていないとリング管理者が判断したサイトは、当サイトの用意する入口ページ(プロバイダのウェブページ)を利用して、リングに参加すること。 全ての年齢で、閲覧可能なサイト内容であること。ここで言う閲覧とは、「サイト内容や文字(漢字)を読んで理解できる」という意味では、ありません。「サイト内容を見られても悪影響を及ぼさない」という意味です。 ページ移動がテキストリンクで移動出来、スクリプト・Java・ActiceX等の実行を切っていても移動出来ること。 プライバシーは、「すべてのcookieをブロック」として、サイトを閲覧致しますので、宜しくご了承願います。 参加の条件が厳しい様ですが、リング利用者の視点に立って、取り決めておりますので、何卒、ご理解の程よろしくお願い致します。 ←稼動中表示ランプ(193バイト)をダウンロードして、貴サイトのホームページのドキュメントルート下に設置して下さい。 ダウンロード先は、1キロの小箱[HP素材集]さんの「ボタン」という項目の中に「but0.gif」としてあります。 貴サイトのバナーをご準備願います。もし、バナーがなければ、AUTO LOGOさんのフリー素材を使用すれば、 これは、「リングに参加しているホームページの一覧」や後述する「入口ページ」で、貴方のサイトが稼動中であることをバナーで表示します。 稼動中表示ランプとバナーの準備が出来ましたら、リングの仮登録画面から、「自宅サーバーWebRing」へ仮登録を行って下さい。 仮登録通知メールに記載(様式例)されているナビゲーション・バーを貴方のウェブページのトップページに貼り付けて下さい。 ナビゲーション・バーを設置されましたら、この電子メールにID番号を明記の上、リング管理者(鷹の巣)へ通知して下さい。 本登録が終わりましたら、本登録通知メールが送信されますので、リング登録サイト一覧に掲載されていることをご確認して下さい。 リング管理者から本登録の通知の後に、一応、ナビゲーション・バーが正常に機能しているか確認して下さい。 また、リングに本登録した後は、リングに登録されている貴方のサイトの情報やリンク形態を編集したり削除することが出来るようになります。 貴方のサイトのURLが変更になった場合や一時停止の場合やDNSサーバーが不調の場合は、速やかにサイト情報を変更するようにして下さい。 また、貴方のサイトを一時的にリングから外し、オフライン状態にすることが出来ますので、そちらもあわせてご利用下さい。 これは、リングが「壊れたリング」にならない為、大変重要ですので、サイトを登録した際には覚えておいて下さい。 この状態は、貴方のサイトを一時的にリングから外します。自宅サーバーに障害が起きたり、保守時に選択して下さい。本登録後にナビゲーション・バーを一時的になくす場合にも選択して下さい。 DNSサーバーに障害が生じた場合、サイト情報を編集する際にhttp://100.100.***.***/とIPアドレスで指定すれば、入口ページから、自宅サーバーへのリンクが可能になります。 ご利用者の為に自宅サーバーWebRingは、リンク切れがない様、極力、努力してシステムを考えています。トップページにナビゲーション・バーを設置されていないサイトは、次のサイトに移動ができませんので、発見次第、即座に仮登録状態にさせて頂きます。ホームページの保守などで一時的にナビゲーション・バーを設置できない場合は、必ず「オフライン状態」にして、一時的に自宅サーバーWebRingのRingから抜けて下さい。 リング内に登録されている、サイトの一覧が表示されます。リングで一覧といった場合こちらを指すことが多いです。 日次・月次アクセス数および合計アクセス数と参加サイトの月間稼働率(目安)の順位とWebRingから参加サイトへの月間アクセス数を表示しています。 今後、プロバイダが変わったり、管理者が変わったりした場合は、ナビゲーション・バーのリンク先の変更をお願いする場合があります。 現在までに、数回URLを引越した悪い実績があります。URLを引越す場合は、数ヶ月程度の移行期間を設けて、サイト全体の引越し(URL転送)についての覚書に記載しています様なURL転送を実施します。 この「自宅サーバーWebRing」参加サイトは、連絡可能な電子メールアドレスが公開されます。(稼動検査連絡用電子メールアドレスは非公開)メールアドレス収集ソフトから、メールアドレスを極力収集されない様にするためにメールアドレスは、HTMLエンティティ出力形式に変更して表示されます。詳細は、メールアドレスの保護(メールアドレス収集ソフトに負担を強いる)をご一読願います。 2005年03月28日以降、参加サイトへの連絡は、CGIのフォームメール(PostMail)に変更しました。メールアドレスは、公開されません。 現在、inktomi系(MSN,Yahoo)の検索エンジンのクローラには、CGIで動的に表示されるアンカーのURLをたどれなくして、データ収集の拒否を行なっています。 これは、inktomi系(MSN,Yahoo)の検索エンジンの場合、CGIでURL転送すると転送元のCGIのURLが検索エンジンに登録されてしまい、本来のURLが検索できなくなるからです。 実際のperlスクリプトは、検索エンジンのクローラに収集されたくない場合のCGIの改造例で示しています。 参加サイトは、通常、リンク形態の状態コードを「4」以上にして、自宅WWWサーバーの稼動監視対象にして下さい。この場合、「鷹の巣」のサイトより、 OPTIONSメソッドを使用している理由は、アクセスログの廃棄を容易にするためです。OPTIONSメソッドを使用する場合、「OPTIONS *」を使用すべきですが、バーチャルホストに対応する為、HTTP/1.1でファイルへのpathを指定して、以下の様なperlスクリプトでアクセスしています。(正しくは、HEADメソッドを用いなければなりません。) ナビゲーション・バーが、テキストだけである為、ナビゲーション・バーが目立たずわかりにくいといったご指摘をお受けした場合、 「自宅サーバーWebRing」の左に下記の様なアニメーション画像の貼り付けをお願いする場合があります。 デザイン重視のWebページの場合は、ナビゲーション・バーを設置するのが非常に難しい為、リング管理者に遠慮なくご相談して下さい。 自宅サーバーWebRingホームページと連絡用掲示板(CGI)がプロバイダのサーバーに設置可能であること。 自宅サーバーWebRingホームページから、リング管理者のトップページへのアンカー(ハイパーリンク)を設置することは、禁止致します。これは、Google等の検索エンジンのPageRank機能の外乱要素(RING主催者のPageRankを不当に上げる不正な手口)になるからです。 2005年03月28日 参加サイトの公開用メールアドレスをCGIのフォームメール(PostMail)にして、隠蔽化を実施。 2004年07月09日 メールアドレスのリンクの全部をHTMLエンティティ化するスクリプト例を追記。 2004年06月18日 その他の項に「特定の検索エンジンのクローラへの収集防止対策」と「サーバー稼動検査について」を追記。 2003年04月14日 自宅サーバーWebRing(ウェブリング)の利点にロボット型検索エンジンでの利点を追記。その他、説明を補足。 2003年03月23日 ナビゲーション・バーに関する記述を追加。登録サイト一覧のサイト数を20から25に変更。 2002年12月03日 検索エンジンからのアクセス数が無視出来なくなったので、登録サイト一覧のリンク方法を一部変更。 2002年11月01日 ログ情報の内容に「日次アクセス数」と「月間稼働率(目安)の順位」を追加。アクセス数順位を廃止。 2002年10月31日 W3C勧告HTML 4.01 strict.dtdに一部対応し、スタイルシート化したのに伴い、ナビゲーション・バーのHTMLタグを変更。 自宅サーバーWebRingの参加サイトのWebサーバーの稼動検査には、下記のフリーソフトを参考にし、ソースコード流用を行いました。◆自宅サーバー道さんの「自宅サーバ稼動チェックプログラムとは」◆Dream-Seedさんのサーバー稼動チェック Webサーバーの稼動検査に必要なPerlスクリプト作成に必要な知識やネットワークプログラミングは、下記のサイトにて勉強させて頂きました。 メールアドレスの保護は、HTMLエンティティ生成を参考(reference)にしました。フリーソフトも使用させて頂きました。 |
[ 23] 自宅サーバーで行こう - Windows XP & ADSL編
[引用サイト] http://www.y-kit.jp/saba/
|
ADSL回線とWindowsパソコンで自宅サーバーを作る方法を解説しています。 全部フリーソフトを使い、0円で作る欲張りインターネットサーバーのノウハウ全公開! 家のパソコンをサーバー化すれば、ウェブやメールの拠点を自宅に持てて超便利、方法は簡単!レッツ、自宅(マイ)サーバー! まずはルーターのIPアドレスを調べ、そのサブネットマスク内でサーバーのプライベートアドレスを決め、サーバーにするパソコンのIPアドレスを固定します。 ADSL接続のLAN環境では通常、DHCPが有効のため、このままでは外からのアクセスが受けられません。そこでルーターのNAT/IPマスカレードの機能を使い、外からのアクセスをサーバーで受けるようにNATテーブルを定義し、静的IPマスカレードにします。サーバーで提供するサービスごとにポートを開いてやる必要があります。 3月4日14時〜 収容サーバー移設につき、最長72時間のあいだ、当ドメインのメールおよび一部コンテンツが停止いたします。 長らく更新できませんでしたが、またページ制作を再開しようと思います。とうとうレンタルサーバー会社まで作ってしまい、相変わらず忙しいのですが…。(2006/08/22) ダイナミックDNSに関する知識のあるSEまたはプログラマの方を募集しています。DNS関連のWEBサービスのスポット開発業務、プラットホームはRed Hat Linuxです。 あまりにたくさんメールが来るのと、文中で「トライ&エラーの記述が無い」「本名を名乗らない」「製造元やプロバイダに訊くべき質問」など、非常識なメールが止まないので、すみませんがご諒解ください。(2005/06/14) メールでお寄せいただく質問については、現在多忙を極めているため、全部に回答をできない状況です。名前や自己紹介の無いメール、PC環境やトライ&エラーについて記載の無いもの、既出の質問およびFTPとMTAに関するご質問への回答は遠慮させていただいております。 ドメインをはじめネットワーク関連の質問と、お仕事の依頼およびサンキュメールには、順次返信いたします。掲示板もあわせてご利用ください。 自分のパソコンにWWWサーバーソフトをインストールすれば、自宅から直接ホームページを発信できます。また、CGIやPHPで作ったプログラムを自分のパソコンですぐに動かすことができます。 圧倒的なシェアを誇るアパッチでWebサーバーを立てます。アパッチはUNIX系のサーバーですが、ここではWindows XP にインストールします。 無料で使える日本語FTPサーバーソフト、TinyFTPDでFTPサーバーを立てます。外からホームページを更新したり、ファイルの共有や交換ができるようになります。 自宅サーバーなら、好きなアドレスを作って自由にメールを送受信することができます。Windowsにメールサーバーをインストールします。 ドメイン購入された場合、最後のページでユーザー名とパスワードが表示されます。忘れずに必ず控えておいてください。(2006年08月22日) ドメインの申請や設定の変更は、この間も下のフォームから可能です。 --> サーバーサイドスクリプトの実行環境をインストールします。自分のパソコンや自宅のサーバーマシン上で、PHP や CGI などのスクリプト(プログラム)が動くようになります。掲示板を置いたり、Webアプリを作ったりできます。 ブログ(Blog)を使うと、簡単にダイナミックなサイトを作れます。今流行のBlogを始めよう! 連載中!2004年3月 私の自宅では、普通のパソコン(SONY VAIO)で2台のサーバーを立てており、内1台は03年04月27日からADSLで常時(きまぐれ?)公開しています。 新サーバーの共有ユーザー25名ほどを募集しています。自宅マシンではなく、iDC収容の商業サーバーをまるごと使ったホスティングサービスです。(2005/08/01) 世界で最も使われているサーバーソフト。無料だが高度な知識が必要。元はUNIX系。 簡易SMTPサーバー。パソコンから直接メール発信できるようになります。 無料のダイナミックDNSサービスを紹介します。数字は選べるドメインの数です。 初めまして、googleで発見いたしました。OSもXPだし、ADSLモデムも同じ富士通のもので、読む上でもすごく分かりやすかったのですが、うまくいきません。以下の設定でアドバイスをいただけないでしょうか? LANには全部で3台のマシンがあり、プライベートアドレスの最後の数値は、サーバが99、他は3と4になっています。 (虎之助さん、03/08/04) 一度、ルーターからPCまで全てを再起動、そしてもう一度、ルーターのポート(WWWサーバーなら80番)をスタティックIPマスカレードに設定しているか確認してください。次に、サーバーPCのIPアドレスが固定(この例だと 192.168.0.99)されているか確認します。 ポート監視系のソフト(Nortonなどのセキュリティソフト)を切ってください。サーバーPCでWWWサーバーソフト(AN HTTPD)を起ち上げ、そのPC上でブラウザを起動し、http://localhost/ へ接続。自宅ホームページが見えますか?見えなければ、WWWサーバーソフトの設定ミスです。 次に、LAN上の他のPCから、プライベートIPアドレスでサーバーへつないで見ます。この例だと、他のPCのブラウザで http://192.168.0.99/ と入れます。同様にウェブが表示されれば、LAN内は問題なさそうです。 次に外部からの接続です。まずはダイナミックDNSを使わずにテストします。現在のグローバルIPアドレス(ルーターのWAN側IP)を調べ、近くのネットカフェへ走り、そこのPCでブラウザに http://xxx.xxx.xxx.xxx/ と調べたIPを打ち込んでみます。これで見えていれば、サーバーがインターネットへ公開されています。 必ず“自宅外”のPCでチェックすることがミソです。いかがでしょうか。 よくある質問欄で「WebではなくRouterの画面が表示される」の項目がありますが、元の質問は「LANからドメイン名でアクセスするとルーターの設定画面が表示される」ということだと思います。LANの中から公開サーバーにアクセスするときはIPアドレスを直接入力する、というのはそれはそれでいいと思います。 でもおそらく質問者が求めてるのは「ではどうすればLANの中からドメイン名でサーバーにアクセスできるのか」ということで、ドメインシステムに詳しくない自宅サーバーユーザーはたいていの人が躓いているポイントだと思います。 ということでもう一歩踏み込んで「それはDNSの解決が正しくできていないからだ」というとこまで示したらどうでしょう。でもって解決策にはHOSTSファイルを編集して…、と。これだけのページを作成しておられるので詳しい話は省きますが、いかがでしょう? あと、どうも気恥ずかしいので匿名にさせていただいています。その点はご容赦ください。 (匿名さん、03/11/26) というご意見の他、同様の質問をいただいていますので、解決策をまとめておきます。 自宅内からもドメイン名でサーバーマシンにアクセスしたい!という場合は、参考にしてください。 そもそもルーターというのは「LAN(自宅内)」と「WAN(インターネット側)」を明確に区分しており、しかも入ってきたポートへパケットを戻すことはありません。したがって、自宅内からドメイン名でサーバーマシンにアクセスしようとすると、「ページが見つからない」や「ルーターの設定画面が開く」のは正しい結果であり、自宅内(LAN上)ではプライベートIPアドレスを使えば(見かけ以上の)問題はありません。 では、自宅内から同じLAN上のサーバーへドメイン名を使ってアクセスする方法ですが、「hostsファイルを書き換える」「外部のプロキシサーバーを利用する」「内向きDNSを立てる」の3つが有力です。 このファイルに、サーバーのプライベートIPアドレスとドメイン名を追記します。 という感じです。ダイナミックDNSのドメイン名でももちろんOkです。 簡単ですね。同様に自宅内のすべてのパソコンに設定してください。 この方法は、ドメイン名の解決(IPアドレスへの変換)に DNSサーバーを使わず、PC内のhostsファイルを使うことで、ルーターを回避しています。 自分のPCではアドレス入れてもルーターの設定画面に飛びます。それをどうにかできないでしょうか?(Genchanさん、03/07/30) 入れているIPアドレスが、ルーターのプライベートIPアドレスだと、ルーターの設定画面が開きます。正しくPCのIPアドレスを打てば、問題ないはずです。 その準備として、まずはPCのIPアドレスをLAN内で固定しなければなりません。詳しくは こちら をご覧ください。 自宅サーバーの設置に取り組んでおります。しかし、外から見ることが出来ません。ルーターは富士通、IPは手動で固定、ルーターのスタティックIPマスカレード設定も行いました。 DHCP設定は有効のままではダメですか?ぶしつけな質問で申し訳ないのですが、教えて頂けると幸いです。(野崎さん、03/07/02) (1) サーバーソフトが起動しているか確認。サーバー上からlocalhost に接続できますか? (2) ルーターのポート設定が有効か?富士通のルーターは設定のあと、登録ボタン押下、再起動が必要です。 (3) セキュリティソフトやポート監視設定をすべて止める。 (4) ダイナミックDNSを使わず、今現在のグローバルIPを調べる。 (5) 完全に外部の回線からアクセスしてみる。仕様上、自宅LAN内からはグローバルIPでサーバーに接続できないケースが多々あります。別のPCでダイヤルアップ回線で見るなどしてみてください。 友人にFFFTPで接続してもらったところ、以下のようなエラーがでました。 ダイナミックDNSサービスへの登録は済んでいるようですので、再度ログインして現在のグローバルIPアドレスに更新してください。 ドメイン名を打って、現在のグローバルIPアドレスに変換できていますか? はじめまして、「自宅サーバーで行こう」が無かったら自分のサーバーを持つ事なんて夢でした。本当に有難うございます! ダイナミックDNSサービスを利用すると数字のアドレスが自分の好きな名前になり、是非使ってみたいのです。 プロバイダーより与えられたものではなく、ダイナミックDNSサービスのものを使用するのでしょうか? (誠治さん、03/12/19) ダイナミックDNSサービスは、自宅のパソコンの“一意でない”(固定ではなく接続毎に変動する)グローバルIPアドレスに、“固定した”名前を与えてくれるサービスで、外部からドメイン名で自宅サーバーに接続できるようにするために使われます。 一方、パソコンに設定する「優先DNSサーバー」というのは、自分がインターネットを楽しむ場合に(例えばメールやWebを見る場合に)ドメイン名をIPアドレスに変換するために使うもので、(したがって普段意識する必要の無いものですが、必ず必要です) ここにはご利用のプロバイダーのDNSサーバーのアドレスを設定します。これはネットのセットアップの際に設定するもので、プロバイダーの申込書に記入されています。 両者は似ていますが、アクセスの方向が逆向きであり、ちょっと紛らわしいのですが無関係です。 なお、自分のパソコンのグローバルIPアドレスは、ダイナミックDNSサービスのホームページにおいて登録/更新することになります。 パソコンとルーターの設定の中でIPアドレスの設定という項目があると思います。「DNSサーバー」のIPアドレスが一つしか表示されない場合はどうしたらよいのでしょうか?(児玉さん、03/06/28) しかし、最も手っ取り早い方法は、お使いのプロバイダーの加入時の資料を見ることです。児玉さんがお使いのニフティは、Webでも公開してるようですよ。 昨日突然メールの受信が出来なくなってしまいました。(送信は出来ます。) サーバーへ発信しての受信だと出来ますが、外部からの受信が一切ダメの状態です。ネットで色々調べて、ポートを変えてみるとかやりましたが、解消出来ません。 「今まで正常にできていて、突然使えなくなった。」「ローカル(LAN内での使用)では、問題ない。」ということから考えると、どうもダイナミックDNSサービスで名前解決(ドメイン名からIPアドレスへ変換)ができていないように思います。 ドメイン名ではなく、グローバルIPアドレスにメールして届きますか?届くなら、DNSの問題ですので、ダイナミックDNSサービスの MX(メールエクスチェンジャ)レコードの設定を確認してみてください。 また、ArGoMailServer のウインドウ左下は「Delivery On」となっていますか?それと、動作モードが「停止」になっていないでしょうか? うっかり配送停止にしていると、当然のことながらメールはリレーされません。 受信不具合なのでルーターのPOP3ポート(110)の設定をやり直してみました。その後いったん復旧(解消)されたのですが、今朝再度確認をしたところ、また受信出来ません。送信についてはいつでも問題無く行えてます。 利用しているダイナミックDNSサービス、ZIVE 特有の問題の様です。私の環境はダイナミックDNS更新ツールで有名なDICEを使用しており、サーバー起動毎にIPアドレスを更新する設定にしています。ZIVEではIPアドレスの更新が行なわれると MX(メールエクスチェンジャ)レコードの設定が解除されてしまうらしいのです。 DICEでMXレコードの設定に関する詳細設定が出来ると言う事で、早速実施してみたところ、受信の不具合が解消されました。:参考サイト(小沢さん、04/01/29) ここのサイトを見て、Tiny FTPでFTPサーバーを立てたんですけど、先程FFFTPで自分でアクセスして、成功したので友人に試してもらったら接続できませんでした。どうしてでしょうか? ファイアウォールは切ってあるのか、ダイナミックDNSの名前解決はできているのか、Webサーバーについては接続はうまくいくのか、ご自身で試した内容についてもお知らせいただきたいと思います。プロバイダもWindowsのバージョンもわからないとなると、こちらもコメントしかねます。 こちらを参考に自宅サーバーを立てました。有益な情報がわかりやすく解説してありとても参考になりました。 うまくいっていたのですが、TinyFTPDが強制終了してしまうという事態が発生するようになってしまいました。DDNSの更新をサーバー起動時にDICEで行ってるのですが、FTPDに問題が起こるのは時々です。なぜこのような問題が起こるのでしょうか?(hirotoさん、03/08/03) 別のFTPサーバーを使ってみるか、TinyFTPDの関連サイトをあたってみてはいかがでしょう。回答になっていなくてすみません。 やはりソフトの相性もありますので、不調なソフトは諦めて、きっぱり他のデーモンに乗り換えるのも良い方法です。 回答いただきありがとうございます。結局、調べてみましたが手がかりはなく、WAR-FTPDに乗り変えたところ順調に動いております。(hirotoさん、03/08/06) 貴サイトを参考にさせて頂き、自宅マシンでHPを立ち上げたいと思い、いろいろと勉強しているところです。 独自ドメインを取得したいと思うのですが、この場合DDNSのようにプロバイダ側のDHCPで振られたIPでは登録できないのでしょうか? 固定IPが必要なのか、それともDiCE等で独自ドメインでもIP再取得時にIP登録の更新が可能なのかが、いろいろ探したのですがわかりません。 しかしお悩みのように、非固定IPでサーバーを立てるには、ドメイン・DNS・ダイナミックDNS・IP更新の連携が必要で、ハードル高めです。 基本的には、ドメイン(Domain Name)から自宅マシン(IP Address)へたどり着く(これを名前の解決という)には、NICのDNS情報→自サーバーの管轄DNSサーバー→自サーバーのIPアドレス という手順となり、これに従います。 NICのDNS情報は、ドメインを取ったレジストラにて書換えが可能で、固定IPならサーバーのグローバルIPを直接指定します(DNSサーバーも自分で立てた場合)。 一方、非固定IPなら、これを書き換えればよさそうですが、DNSデータベースは変更の反映に24〜72時間かかり現実的ではありません。DNSサーバーを自前で立てるのは非常に大変です。 そこで 非固定IP(ADSLの自宅サーバー)の場合は、ネームサーバーにダイナミックDNSサービス(以下DDNS)を指定してやり、変動するIPの解決をDDNSサービスに任せます。DDNSサービスを使ってワンクッション置き、対外的にはネームサーバーを固定するわけです。 あとは通常のDDNSサービスと同様、IPが変わる度に更新すればいいわけです。 なお、DDNSサービスについては独自ドメインからの名前解決に対応したサービスを利用しなくてはなりません。うちでドメインを取得していただいた場合、成功はお約束できませんが、ご紹介させていただきます。 もちろん、サーバーを立て、DDNSサービスも使いこなせて、その次のステップということになります。 HPを参考にサーバーを作りました。非常に役立ちました、どうもありがとうございました。 物凄いアクセスのあるサイトの場合サーバーに負荷が掛かって中々ページが表示されないとかファイルがダウンロードできないとかいう症状がでます。 現在ADSLなのですが、光ファイバーにすれば問題は解消されるのでしょうか?それと光にした場合帯域制限などをすればユーザーのストレスはなくなるものなのでしょうか? (中田さん、03/09/21) 実はADSLというのは、下りは早くて上りは遅い(上りとはアップロード、ユーザーから見るとダウンロード)ものなのです。ですからADSL:“非対称”デジタル加入者線といいます。 光にすれば、相当解決されると思います。ただご自宅の立地やマシン能力など他のファクターも噛んできますし、まったく変わらないということもありえます。(ADSLの上りは下りと違ってほとんどフルスピードが出てるんです) |
[ 24] お昼は自宅に帰ります! - 厦門( アモイ ) ビューティフル - 楽天ブログ(Blog)
[引用サイト] http://plaza.rakuten.co.jp/xiamen/diary/200511060000/
|
カテゴリ・厦門事情(36)・新米ママの記録(38)・ダンナ日本ドタバタ記録(17)・日本での生活(36)・marumiと愉快な仲間たち(48)・個人的エピソード(61)・厦門オススメ(38)・中国事情(29)・厦門イベント(28)・厦門大学での生活(11)・厦門で子育て(13) 現在の中国では、お昼休みは日本と同様1時間という会社も多いが、一昔前なら、お昼休憩が2時間、という、日本人にとっては羨ましい環境で働く人がほとんどだったし、学生は必ず家に帰ってお昼ごはんを食べ、人眠りしてから再び登校、というのが当たり前である。 アモイにいた頃、ダンナが勤めていた会社も、自宅から歩いて10分という近場だったため、お昼は毎日ご飯を食べに帰宅していたものだ。 現在、彼は日本で働いているのだが、幸運なことに家のご近所で仕事をすることになった。とはいえ、歩いて15分はかかるし、お昼の休憩も45分しかないため、自宅に帰って昼食をとることはできない。 お昼休憩の45分中、会社から自宅までの往復時間が約30分だとして、食べる時間は正味15分くらいしかない。 私なら、仕事場近くで弁当でも買い、仕事場で食べるに決まってる。そのほうが、ゆっくり食事できるし、のんびりと休憩できるのだから。 私の母も、「お昼は仕事場で食べたら?」と、何度もすすめてはみるものの、それでも彼は帰ってくる。そして、大急ぎで帰ってきて、ご飯をかっこみ(それでも一般男性より、食べる速度は遅いのだが)、風のように再び仕事場へ戻っていく。 謎は尽きないのだが、本日、そんなダンナを見かねた私の両親は、彼に【折りたたみ自転車】なるものを買い与えた。「これなら、帰ってくる時間は10分ほど短縮されるであろう」、という温かいご厚意である。 「自転車買うくらいなら、やっぱり帰ってこないほうが良いんじゃ・・・」と言う私の意見を余裕で無視し、日本での初めての自転車に喜びを隠せない様子のダンナであった。 ・ページの設定によっては、プルダウンで「顔選択」を行っても、アイコンが表示されません。ご了承ください。 うちは、1時間半の休憩で、5分で昼食を済まし、散髪に行ったり、ショッピングモールへ行ったり、プー太郎の友達の家へ行ったりしてましたよ。 彼いわく、仕事場で休憩するのは退屈だし、1日中いるみたいで、イヤらしいです。(2005/11/09 01:38:35 PM) >うちは、1時間半の休憩で、5分で昼食を済まし、散髪に行ったり、ショッピングモールへ行ったり、プー太郎の友達の家へ行ったりしてましたよ。 |
[ 25] 高木浩光@自宅の日記
[引用サイト] http://takagi-hiromitsu.jp/diary/
|
この機会に、はてなブックマークを使うことにした*1。といっても、本来のブックマークの用途ではなく、一行批評の用途で使用する。批評の理由を100字で書ききれるはずもなく、不適切な批評となる可能性があるのでこれまで使用してこなかったが、ひとまずやってみることにする。うまくいかないようであれば中止する予定。 *1 一昨年にはてなダイアリーをやめたが、それは複合的理由によるもので、元々 tDiaryを使いたかった。 HTTPリクエストを受けたとき、そのリクエストがどこのWebページから発行されたものかを示すリファラー(REFERER)と呼ばれる情報を得ることができる。この情報を活用し、本来意図したWebページ以外からのリクエストを拒否することで、CSRFによる外部からのリクエストを防ぐことができる。 ただし、ユーザーがリファラー情報を出力しないブラウザを使っている場合、このチェックを導入すると正当な操作でも受け付けなくなってしまう。 懸念されるリファラー情報偽装に対する問題だが、以前はリファラー情報を発行するのは攻撃を踏んでしまった自分自身なので、リファラー情報を偽装する動機がなく、この対策は安全であるとされていた。しかし、Flashのアクションスクリプトを利用することでではRefererヘッダーを自由に作成できてしまうため偽装できてしまう。よって、この対策だけでは安全と言えなくなった。 リファラーで発信元をチェックについて、Flashのアクションスクリプトを用いることでリファラーを偽装できる手段が発見されましたため、内容を全面的に見直しました。 またそれか。Refererのクロスドメイン送信がデファクトスタンダードになったとでも言うのかね? そんなのは Flashの仕様の脆弱性*1とするべきものだ*2。独自の対策において配慮に入れるのは自由だが、あるいは、回避策として伝えるならわかるが、あたかもそれがスタンダードになったかのように公衆に伝えるのはやめてもらいたい。*3 Webアプリケーションはサーバ側だけのシステムではない。法律ではわざわざ「電子情報処理組織」という用語を用意しているくらいで、クライアント側と一体になってひとつのシステムを構成するものである。しかも、クライアントはそのサーバ専用ではなく任意のサーバ向けであるし、サーバもまた複数の種類のクライアントによって利用される。したがって、あるセキュリティ上の脆弱性が存在するとき、その原因がサーバ側にあるのかクライアント側にあるのか、その責任の切り分けが常に重要となる。 しかしながら、Webアプリケーションで用いられる各技術要素は、一部を除いて、セキュリティに関わる仕様が標準規格として明確にされているわけではない。HTTPの規格は存在しても、その上で動く「Webアプリケーション」についての規格というものが存在するわけではない。結果論としての攻撃可能性の有無はクライアント側のブラウザ等の個々の仕様に左右されるが、全体の標準が何かひとつのブラウザ仕様によって決定されるわけではない。 したがって、ブラウザ側の脆弱性は実装の欠陥だけを指すものではなく、仕様の欠陥を指すこともある。ある製品の仕様が欠陥であるかどうかは誰が決めているかというと、それは、業界のコンセンサスによって暗黙的に決まっていると言うほかないだろう。 そうしたコンセンサスを決定付ける大きな要素は、BUGTRAQなどの脆弱性報告の場であろう。特に脆弱性を発見して公表する人の役割は大きい。発見者は、発見した現象の原因がどこにあるかを示し、それがどのように危険であるかを示しながら、製品側の仕様に問題があるという帰結を導いて公表する。これに反対意見がなく、製品ベンダーがそれを修正するならば、あるいは、追試や類似事例の報告の積み重ねによって、その考え方が強まったならば、そこで新たなデファクトスタンダード*4が形成されたということになる。 Refererの話に戻ると、攻撃者が任意に指定したRefererを被害者に送信させることはできないということが、デファクトスタンダードになっているかどうかは、tDiaryのCSRF脆弱性の解決策を導き出す際に、職場の同僚の大岩さんと議論した(2005年7月の話)。その議論の流れは概ね次のようなものだったと記憶している。 高木: やはりね。対策なんだけど、既存の秘密情報がパスワードしかない。ユーザ名はCGIの「HTTP_USER」で取れるんだけど、パスワードって取れないの? 高木: なるほど。それはそれで興味深いけど別問題として置いといて、そうすると次は、秘密情報を乱数で作る方法なんだだけど、Rubyに secure random(暗号学的に安全な擬似乱数生成系)ってある? 大岩: OSによっては存在しない。tDiaryは実行環境としてOSを指定していないので、どのOSでも使えるようにしないと。 高木: ここで自作するのはどうかと思うね。Rubyが用意するべきだから。そうすると次は、時刻情報を使う方法だけど、HMACとかの鍵付きハッシュを使うことになるので、鍵の管理が生ずるよね。 高木: そう。tDiaryは個人で使うとは限らないから、ユーザの安全のための鍵管理を、管理者が責任を負うというのは避けたいね。ときどき変更するべきとか、十分に予測できない文字列にすべきとか。ユーザのパスワードを使えば、ログインのセキュリティと同等にユーザの責任とできるのだけど、パスワードは取得できないわけで。そうすると、ユーザごとの固定のキーをユーザに設定させる方法になるのかな? 高木: そうだね。ただ、弱いキーが設定された場合はユーザの責任にできる。そうすると、Refererチェックの方がよい場合もあることになるんだけど…… 高木: Referer送出を止めている人の件ね。昔のNorton Internet SecurityではデフォルトでRefererを止めていたらしいけど、最近のバージョンではデフォルトでは止めてないらしい。今時だと、止めている人はMozillaのextensionとかでサイトごとに個別に止めてるんじゃないか。だから、ユーザの選択で、固定のキー方式か Refererチェック方式か、選ばせるという方法が考えられる。 大岩: Referer方式は、同じホスト上のページに罠があるとチェックになりませんね。tDiaryは日記ですから。でも、これは POSTに限定することで防げますね。 大岩: コメント欄やトラックバックにはHTMLタグを許していないので POSTリンクは作れない。日記本文には POSTリンクを作れるけど、tDiaryでは、異なるユーザの日記は異なるホストに配置することになっているので、Refererでチェックできる。 大岩: リダイレクトでは起きないようになっているようですね。Ajaxはどうなってるんですか? XMLHTTPはヘッダがセットできるんじゃなかったでした? 高木: ヘッダがセットできることは新しくない。XMLHTTPとかはJavaアプレットと同類で、Javaアプレットでは90年代のころから、URLConnection に setRequestProperty というメソッドがあってヘッダをセットできるようになっていたんだけど、アプレットの置かれているホスト以外には接続できないよう、セキュリティ制限がかかっているので、問題は起きないようになっている。XMLHTTPも当然、同様の制限がかかっているはずだよね。 高木: AppletContextクラスの showDocument() メソッドのことかな? これは、ブラウザを指定されたURLにジャンプさせるだけの機能なので問題ない。アプレットで結果を受信できないからね。ヘッダをセットする方法も用意されてないし。 高木: というわけで、tDiaryの対策なんだけど、Refererチェックをデフォルトとして、Refererを止めてる人向けに、固定キーをユーザの責任で設定させてそれを使う方法も選べるようにするというのがよいと思う。 大岩: 了解、実装します。デフォルトは Refererの方にして、設定で変更するときだけ Refererオフを解除してもらうようにします。 二人は、修正案をtDiaryの開発元に伝えるとともに、tDiaryのCSRF脆弱性としてIPAに届け出た。 大岩: IEは信頼済みサイトゾーンだと、XMLHTTPは任意のサイトへ接続できるという話が話題になってますね。 高木: ほほう。セキュリティ設定の「ドメイン間でのデータソースのアクセス」が、信頼済みサイトゾーンでは「有効にする」がデフォルトになってるからかな。まあ、信頼済みサイトゾーンに登録する人の責任かな。 大岩: たしかにその設定だと任意サイトへ接続できるようですが、Refererはセットできないようですね。他にもセットできないヘッダがあるようです。 高木: ほほう。そういえば、TRACEメソッドも使えなくなったという話をどっかで見たよ。Microsoftはどういう理由で止めるようにしたんだろうね。 大岩: 例の、CGIでパスワードが取れないようになっている理由と同じじゃないですか? Mozillaはどうなってるんだろ。 大岩: ヘッダは禁止されてないようです。でも、Mozillaに信頼済みサイトゾーンはないし、任意サイトへの接続は禁止ですからね。 大岩: XMLHTTPの脆弱性を発見しましたよ。Mozillaで、リクエストヘッダのフィールド値に改行コードが入れられちゃいます。 大岩くんは見つけた脆弱性を説明し、脆弱性レポートをMozillaに報告した。さらにいくつかの発見をして、追加レポートをMozillaに報告した。 高木: その脆弱性を使うと、ドメインをまたがってリクエストを送れるので、Refererを偽装させることができるけど、ブラウザの脆弱性だね。 大岩: ところで、XMLHTTP以外にも同類のものに脆弱性があるかも? Flashとかスクリプトがあるんでしたよね? 高木: あるかもね。Flashは作ったことがないので知らないけど、JavaScriptのようなものがあるらしい。PDFとかもあり得るのかな。既に誰かが調べてるだろうね。 このように、前例に照らして、同一ホスト以外に任意のヘッダを送ることは、それを許すような製品があればそれは脆弱性であるというコンセンサスが業界にあると判断した。 まず、FlashのActionScriptには、任意の指定のURLへのアクセスを発生させるものとして、getURL() というAPIが古くからあったらしい。これは、Javaアプレットにおける showDocument() と同じで、ブラウザを指定のURLにジャンプさせるものらしい。(ただし、JavaのshowDocument()では POSTメソッドによるアクセスを生じさせることはできなかったのに対し、ActionScriptのgetURL()では、POSTメソッドも可能らしい。) このうち、load() と sendload() については、Javaにおける URLConnectionに相当するものと言え、ヘッダをセットする addRequestHeader() メソッドが用意されている(Flash Player 6以降)。と同時に、やはりJavaアプレットと同様に、同じホストへの接続しか許さないセキュリティモデルが採用されているようだ。 ところが、send() メソッドだけはこれらとは異なる動作をする。これは、getURL()と同じように、ブラウザをジャンプさせる機能(レスポンスをブラウザに表示させる機能)だ。ちょっと歪な設計だと感じるが、この動作を前提としていることからか、send() は getURL() と同様に任意のホストのURLを指定できるようになっている。そして、getURL() と異なるのは、addRequestHeader() メソッドを使ってヘッダをセットできることだ(Flash Player 5のXMLクラスには存在しなかったのが、Flash Player 6で導入されたようだ)。 リクエストヘッダを設定でき、かつ任意のホストへのアクセスを許すという機能は、同類のプラグイン等で他になかったと思うが、さすがにどんなヘッダもセットできてよいとは考えなかったようで、次のように制限されている。 CSRFは新しい脆弱性ではない。CSRFの名前が付いたのは2001年7月のことで、そのとき既にRefererチェックによる方法も挙げられていた*5。名前が付いたのはこのときだったが、それまでにも漠然とそれなりに知られていた(が、当時はまださほど重大な脅威とは評価されない状況があった*6)のであり、Refererによる対策をとっていたところはけっこうあったと思われる(参考: Bugzilla Bug 141641: disabling cross-site HTTPS referrers breaks sites)。この時点で既に、Refererは偽装させられないのがWebアプリケーションのセキュリティモデルであるという業界コンセンサスがあったと言える*7。 次に、HTTPのプロトコル規格への準拠性としてはどうなのか。上の会話の中で出てくる (1) の部分を詳しく書くと次のようになる。 (訳: Referer(原文ママ:"referrer" だが、ヘッダフィールドが綴りを間違えている)リクエストヘッダフィールドは、Request-URIが得られた出所のアドレス(URI)を、サーバの利便性のために、クライアントに明示させることを可能にする。) (訳: Request-URIが、それ自身のURIを持たない出所から得られたもの(例えばユーザのキーボード入力のような)である場合には、Refererフィールドは送信してはならない。) つまり、リンクをクリックしてのジャンプかどうかは規定にないものの、ジャンプ先のURLが書かれているページ がURLとして存在していない限り、Refererを送信してはいけない、つまり、少なくとも、任意のURLを Referer として送信することはしてはいけないことになっている。 そうすると、任意のURLをRefererとして送信してしまう FlashコンテンツやXMLHTTPを使うWebページは、HTTP 1.1に違反した通信をすることになる。だけども、だからといって、そのようなコンテンツを許すブラウザ(およびプラグイン)も、HTTP/1.1 の規格に違反しているとまで言えるかどうかだ。 たとえば、Javaアプレットを想定した場合、Socketクラスを使って任意のTCP通信ができる(ただし接続先はアプレットの置かれているホストのみに制限される)のだから、ここで、HTTP/1.1もどきの通信を実装することができる(アプレットで作られたブラウザ上ブラウザのようなものが実現可能)わけだが、そのプロトコルが HTTP/1.1の規格に違反するものとなることは当然起き得るわけで、それが許されているからといって、Socketクラスの使用を許すブラウザが HTTP/1.1の規格に違反するなどと言えるわけがない。ただし、これは、アプレットの置かれているサイトとの通信に限られた話だ。アプレットの置かれたサーバとクライアントは一体となっているので、アプレットが行う通信はサーバ側の意図に沿うものであるから、サーバ側としてはそれは HTTP/1.1でないことを認めているという考え方もできる。それに対して、アプレットの置かれているホスト以外のホストとの通信に関しては、showDocument() 以外は禁止されているとすれば、HTTP/1.1 の規格は結果として守られていることになる。 このように考えると、HTTPのプロトコル規格の面から見ても Flashの仕様は異端だと言うことができるだろう。 次に、一般的に言うと、ある脆弱性があるときに、修正すべき原因がサーバ側にあると言えるか、クライアント側にあると言えるかが、簡単には切り分けられない場合もある。その最たる例は、10月21日の日記「Session Fixation脆弱性の責任主体はWebアプリかWebブラウザか」に書いた、Session Fixationの問題だ。また、仮に原因がどちらかにあるとしても、両方で対策をとることが強く求められる場合もある。そうしたケースでは、個々の状況に応じて結論が導き出されている。以下にこれまでのそれらの前例を列挙し、どのような理由でどのような方針が出されてきたかを整理してみる。 Cookie Monster問題の解決が簡単でない。Set-Cookie:で指定できるdomain属性のドメインの範囲を、ドメイン登録されるドメインの単位で決定するべきであるが、トップレベルドメイン(TLD)によってその下位のドメイン構造が異なっており、各TLDごとの構造を公表する義務がその管理主体に課されているわけでもないため、公式な構造情報が存在しない。Mozillaプロジェクト内で独自にその構造を表すリスト作りが開始されたが、実用化に至っておらず、今後の成り行きも不明である。 RFC 2965で定められたCookie2を利用すればCookie Monster問題は解決するかもしれない(未確認)が、主要なブラウザで実装されておらず、現時点では現実的な解決策でない。またこの場合、Webアプリケーション側もCookie2を使用するように変更が必要となる。 他方、Webアプリケーション側での対策は比較的容易な場合が多いと思われ、また、かつては元々ログイン後にセッションIDを発行するのが普通だったところ、近年になって、自動セッション管理機能を持つWebアプリケーションサーバの普及とともに、ログイン前からセッションIDを発行するサイトが増えてきたことからこの問題が顕在化してきたという経緯があるので、ログイン後にセッションIDを発行するようにするという方針は自然な面がある。 以上のことから、責任の所在がサーバ側であるかクライアント側であるかが極めて不明確な事例であるものの、サーバ側で対策をとるのが妥当と考えられるようになってきているように思う。 URL上にセッションIDを乗せると、Refererによってリンク先にセッションIDが流出することになるが、リンク先を当該サイト内(もしくは信頼できる関係サイト)のみに限定しているならば流出とは言えず、問題ないとする考え方が存在するところ、SSLによる暗号化で情報を保護しているつもりのページが、セッションIDをURLに乗せており、かつ、http:// のページへのリンクが存在すると、パケット盗聴によりセッションIDを盗まれることになる。 https:// のページから http:// のページへのリンクにおいて、Refererを送出するか否かはブラウザによって異なるが、これは、RFC 2616のSecurity Considerationsの章に次のように書かれていることが影響しているものと思われる。 「SHOUD NOT」であって「MUST NOT」ではないこと、また、Security Considerationsにしか書かれていないことから、規格としてRefererを送出することが禁止されているわけではない。また、次の段落でこれと並置して、sensitive dataをGETで送るようにしないべき(SHOULD NOT)とサーバ側の責任にも触れていることから、ブラウザがその場合にRefererを送っても、ブラウザの脆弱性とみなすコンセンサスはできていないと思われる。 また、https:// ページから他のドメインの https:// ページへのReferer送信については、どのブラウザも送信するようになっている*8ため、「https:// のURLならセッションIDを乗せてもよい」ということにはならない。 したがって、セッションIDをURLに乗せることが許され得るのは、リンク先が当該サイト内(もしくは信頼できる関係サイト)のみに限定されていて、かつ、リンク先が https:// のページである場合だけとなり、ルールとしては複雑なものとなる。 また、(携帯電話向けサイトの場合を除いて)セッションIDをURLに入れざるを得ないとする理由がない。(1990年代にはユーザがcookieの受け入れを拒否するのが流行したが、現在はそうでもない。また、POSTでセッションIDを引き継ぐ方法もある。) 以上のことから、2005年3月当時、URLに埋め込むIDに頼ったセッション管理方式の脆弱性(2)− REFERER情報流出によるセッションハイジャック攻撃の問題 −の開発者向けのアドバイスとして、URLにセッションIDを乗せないことを推奨した*9。 という酷評も出た。なぜなら、TRACE単体で脆弱性になるわけではなく、XSS脆弱性という他の脆弱性が存在する場合にだけそれが起きるという話だったからだ。しかし、全く意味のない指摘ではなく、「Basic認証を使用している場合にXSS脆弱性があるとパスワードが漏れる」という、それまでには知られていなかったリスクが明らかになったものだった(参考 [memo:5237] )。 この発見が当時意味を持ったのは、当時はまだXSS対策が十分に普及しておらず、対策漏れの可能性を無視できない状況があり、その理由からcookieによるログイン管理自体にリスクがあると考えられ、Basic認証の方がより安全であるとする考え方が存在していたからであろう。それが、TRACEメソッドとXMLHTTPのTRACEサポートによって、Basic認証も同様のリスクがあるということが明らかになった。 これ以降、猫も杓子もHTTPサーバでTRACEメソッドを止めるという対策が流行した。脆弱性スキャナによっては、TRACEメソッドが応答するというだけで機械的に「脆弱性」としてカウントするものも現れた。それ自体は脆弱性ではないし、Basic認証を使用していないなら関係のないことなのにだ*10。 そのようになったのは、TRACEメソッドを止めることが極めて簡単であり(Apacheでは最近まで止める設定機能がなかったが)、通常のWebサイトでTRACEは無用の長物だと考えられたからであろう。 ところで、ブラウザからTRACEメソッドでのアクセスを発生させられるようになったのは、このMicrosoftのXMLHTTPが初であったのだから、これは本来、ブラウザ側の脆弱性だとみなすべきものだったかもしれない。つまり、「XMLHTTPでTRACEメソッドを許すべきでない」という主張もできたはずだ。しかしなぜか、最初の報告はそれを提案しておらず、サーバ側で止めることを推奨していた。 そして、IEはその時点ではTRACEを止めることはしなかった。それは、他にXSS脆弱性がない限りそのリスクは生じないからだろう。さらに言えば、最初の報告から数日後の2003年1月26日に「XS(T) attack variants which can, in some cases, eliminate the need for TRACE」という新たな指摘が出た。これは、バーチャルホストを利用しているサイトでは、TRACEを止めていても(XSS脆弱性があるなら)別の方法で同じ結果を招くことを指摘したものだった(参考 [memo:5419])。このことからも、TRACEを無効にするのがスタンダードだとするコンセンサスは得られなかったのだろう。 さらに、2006年1月に「Technical Note by Amit Klein: "XST Strikes Back"」という指摘が出たが、これは、「サーバで止めてもプロキシサーバがTRACEを応答しちゃうよ」という指摘で、他にXSS脆弱性がないかぎり問題でないのは変わらなかった。 しかし、IE 6 SP2ではTRACEを止めている(理由は不明)。そして、Mozillaは2005年に別の明確な理由でTRACEを止めた。今では、TRACEメソッドでリクエストを発行してレスポンスを取得できることが脆弱性であると考えられていると言ってよいだろう。 2000年ごろには、cookieがユーザに毛嫌いされており、cookieを使わないセッション管理の実装が流行しかけていた。後に、URLにセッションIDを乗せる方法は、Refererによって流出するという理由から不適切であるという考え方は普及した。それでもなお、cookieによるセッション管理は危ないとする意見がしばしば見られた。それは、2001年くらいまでは、Internet Explorerにcookieが漏洩する脆弱性がたびたび発見され、しかもなかなか修正されないうえ、Microsoft社が危ないサイトに行かなければ問題ないといった理由で重要視していなかった状況があり、現実問題としてcookie漏洩によるセッションハイジャックの危険性は無視できない状況にあった。そのため、Basic認証やSSLのクライアント認証を使うべきであるという主張もいくらか支持されていた。 しかし、Basic認証やSSLクライアント認証ではログアウト機能を実現できないといった理由から、そうした主張は受け入れられることはなかった。また、後になって、Microsoft社のセキュリティに対する対応の方針転換があり、受動的攻撃でcookieが漏れるタイプの脆弱性(クロスドメイン系の脆弱性)は、同社も危険度の高いものとして扱うようになった。 このような情勢から、現在では、cookieによるログイン管理は普通のものとして評価されるようになり、ブラウザ側のクロスドメイン系の脆弱性は修正が強く求められるようになっている。 HTTPの規格に違反する通信を処理してしまうのが原因のものについては、HTTPサーバ、CGIインターフェイス、プロキシサーバ、ブラウザのそれぞれが、規格に沿うように修正する責任があるだろう。ただし、規格に沿っても解決しない問題もあるそうだ(大岩さん談)。(以下、未整理) このように、ブラウザ側の脆弱性かサーバ側の脆弱性かが簡単には判断できず、総合的に評価せざるを得ない場合がある。その際に加味されることは、(1)解決策は規格に照らして自然か、(2)解決策は容易なものであるか、(3)解決策がもたらす副作用は十分に小さいか、(4)解決策の実施は現実的であるかなどであろう。 FlashのXML.send()がaddRequestHeader()で任意のサイトに指定のRefererを送信できてしまう今回話題の事例は、これらの微妙なケースと比較すれば、明白に Flash側(またはブラウザ)の責任であると言える。なぜなら、(1)その機能の存在は HTTP/1.1のMUST NOT規定に違反する通信を生じさせるし、(2)それを止めることは容易に実現できる(既製の禁止リストにRefererを追加するだけ)し、(3)止めても何ら不都合はないと思われるし、(4)Flashだけが解決すればよいことで現実的だからである。 このような評価に位置する問題において、「サーバ側の対策ですよ! Flashの仕様ですから!」などと呼びかけることは、製品を修正しないベンダーを認めることにもなることに注意したい。 Amit Klein氏はこれまでに数々の報告、特に、複合的要因によって生ずる問題について、BUGTRAQ等で公表しているが、いずれも、ベンダーに事前に通知した様子が見られない。彼はそういう方針なのだろう。Webアプリケーション側の脆弱性として新たな種類の問題を発見したことにすれば、ベンダーの応答を待つことなく、広く公表して注意を呼びかけることは正当なものとすることができる。明らかにクライアント側の脆弱性と言えるような部類の問題(例えば、XMLHTTPの引数値に対する改行やタブの注入等)であっても、あえてWebアプリケーション側での対応を呼びかけるようなことをしているし、古いバージョンのブラウザを前提(2006年の時点でIE SP1を前提とか)にしたexploitを示して、Webアプリケーション側の対応を呼びかけていたりする。 もちろん、古いバージョンのブラウザを使用しているユーザを想定することが必須の要件である環境(イントラシステムとか)もあるのだから、そうした場合に備えて、回避策としてこうした知識の蓄積も必要である(そうした話題は他にも無数にあるだろう)が、それは、デファクトスタンダードの形成(Referer送信の標準仕様)とは区別して議論するべきことだ。 たしかに、特定の作り方になっているWebアプリケーションの例(A)を挙げなければ、クライアント側のその挙動(B)を脆弱性と指摘できないケースでは、必然的に、(A)が危ないかのような話にもなってしまう。(A)の作り方を止めるべきだとすれば、(B)は直さなくてもよいということにもなる。ここで、全体のデファクトスタンダードのあり方として、どっちを直すのが自然で現実的かということを見極めて示すのが、Webアプリケーション脆弱性の専門家のなすべき仕事だろう。 ましてや、個人的な都合から「Refererはやっぱり駄目なんだ(ということにしたい)」と、感情に判断を左右されるようでは困る。 マスコミの記事でよく見かける表現に、「完全に○○ないわけではない」というものがあるが、これは断定できないことを言うときの逃げ口上だってことを知っておいたほうがよい。 と書いたが、「完全に○○ないわけではない」はもうちょと違う表現じゃなかったか?と思いつつもズバリの表現を思い出せなかった。それを思い出した。「完全に○○ないとは言い切れない」だ。「ないとは言い切れない」でGoogle検索するとマスコミの記事がワラワラと出てくる。 もしや自分も使ってはいないかと、念のため検索したところ、1996年に使っているものが1つみつかった。今の自分では考えられない文章だ。マスコミの文体が伝染していたのだろうか。 *4 市場競争の結果として生ずる標準という意味の「デファクトスタンダード」とは少し意味が異なるかもしれない。 *6 当時は、タブブラウザではなかったし、Windowsも毎日リブートしていたので、ルータの管理者画面などに対するログイン状態が長く続くことはなく、脅威は低く見積もられていた。最近では、ブラウザを立ち上げっぱなしで使うように変化してきたため、そのログイン状態が長く続くようになり、脅威は増した。また、SNSなどのようにログインしっぱなしで使うサイトで、脅威が無視できないサイトが増えてきたという情勢変化がある。(関連: 2005年7月3日の日記「クロスサイトリクエストフォージェリ(CSRF)対策がいまいち進まなかったのはなぜか」) *7 攻撃者本人による偽Referer送信がセキュリティ対策にならない話と嬉々として混同するせっかちな人はいただろうけども。 *8 Mozillaは一時期これも止めるようにしたが、「銀行のWebアプリが動かなくなる」といった指摘があり、RFCの記述に従って、デフォルトでは送信する(設定で止められる)ように変更された経緯がある。(Bugzilla Bug 141641) *9 この主張の理由として4番目に、「リンクされていないサーバへのReferer:の誤送出」としてブラウザのバグの可能性を挙げているが、これは補助的な理由にすぎず、これだけの理由ではこの主張をしていない。 *10 私も、TRACEメソッドが応答することをwarningとして出力する検査ツールを開発したことがあるが、Basic認証が使われている場合にだけ出力するようにしている。 はてなブックマークのホッテントリを見ていたところ、300を超えるユーザに登録された以下の記事があった。 攻撃者に役立つ情報を与えないために、不要なエラーメッセージ(データベースが出力するエラーなど)の表示を抑止 対策に「準備された文」(prepared statement) のことを書かないのは、どういうつもりなわけ? 「入力値をエスケープ」だあ? いまだにサニタイズ脳から抜けられないのかね君は。「サニタイズ」って書かなきゃいいってもんじゃない。言っていることはサニタイズそのものなんだよそれは。どうして入力値だけをエスケープするわけ? SQL文に埋め込むところで全部するよう解説しろって言ってるのに*1、まだわからんのかね。 この問題の対策としては、入力値には半角英数字のみを許可するよう制限する方法や、以下の例のようにSQLで使える特殊文字をエスケープして対処するという方法が一般的になっている。 そんな方法が「一般的になっている」なんて書くなって。そんなのは、はじめっから間違ってるって書くべきこと。 この対策自体の方向性は正しいのだが、SQLインジェクションを理解していないため、対策が漏れている場合がある。 「方向性は正しい」と言いながら「理解していないため」というのはどういう了見なわけ? 「方向性」って何? 方向性からして間違ってるんだって。 SQL インジェクション対策として、入力値を適切にエスケープするという対策を行うが、この「入力値」が何なのか間違えていたり、チェックが漏れている場合がしばしば見受けられる。また、HTMLを生成する段階でエスケープすればよいと考えている人も見受けられるが、それも間違いである。 「入力値が何なのか」なんてぜんぜん考えなくていいっての。「チェックが漏れている」? どこでチェックするの? 入力からSQL文までのデータフローパスのどこかでとでも言うのかい? 「HTMLを生成する段階でエスケープすればよいと考えている人」って何それ? HTML? むりやり勘違い例を捏造してどうすんの? 「SQL文を生成する段階でエスケープすればよい」が正しいのをわかってて、わざと違えているわけ? フォームに入力可能な部分だけが対策個所ではない。不正な入力の可能性を考える必要があるのは、GETやPOSTなどのクエリーやCookieの値、 HTTPヘッダなど、HTTP経由で送られてくるもの“すべて”と、それに加えてデータベースやファイルなどに保存されたデータを呼び出す際にも対策を怠ってはならない。ここに問題があると、セカンドオーダーSQLインジェクションと呼ばれる脆弱性を持つことになる。 ほら出た。ハッカー様の出番ってわけだね。利権構造ですかこれは。本当の解決方法を教えると出番がなくなるってか? セカンドオーダー云々なんてどうでもいいの。普通の開発者は覚えなくてよい用語。これは攻撃手法の用語であって、間違った方向性の対策がされているときにのみ意味のある話で、はじめから正しい対策を理解すればよいだけの話。 おいおい、「$age」を「'」で括っていない段階で「$age」が「適切にエスケープされている」って何言ってんの? 「'」をエスケープするという概念が生ずるのは「'」で括っている中においてだってことが、まだわからないのかね。 この問題は、ageの値がシングルクオーテーションで囲われていなかったことが原因である。以下のように囲われていれば、この問題は起きることがない(もちろん、数値以外は受け付けないという前段階の処理も欲しい)。 「囲われていなかったことが原因である」と簡単に言うが、なぜ囲われていなかったのかについては言わないの? 数値フィールドを文字列で比較するとSQLではどうなるの? 文字列が数値に自動変換されるのはSQLの仕様なの? それとも実装依存でたまたま動作するの? 「(もちろん、数値以外は受け付けないという前段階の処理も欲しい)」ってのは何なの? SQLインジェクション対策として言ってるのか、それとも別の話をしているの? 他の人がこの問題への対策にその手のことを書いてるから、なんとなく書かないとまずいと思った? PHPならばaddslashes()といった関数を使って、フォームから受け取った入力値に含まれる「'」を「\'」と置換するなどの処理をしてSQLインジェクションによる攻撃を回避しようとするかもしれない。(略) ポイントとなるのは「\x97'」の部分で、これの「'」をエスケープするために「\'」と置換すると「\x97\'」となる。(略) こんなのは PHPのバグでしょ。エンコーディングがShift_JISの文字列を addslashes() するときに、Shift_JISとして処理していない addslashes() のバグ。なぜそれを言わないで、Webアプリプログラマの責任であるかのように書くわけ? また、どれも1つだけで決定的な手段というわけではないので、対策の際には併用してセキュリティレベルを高めることをお勧めする。 SQL文の作成を正しく行うという「1つだけ」の方法で「決定的手段」なのに、なんで併用とか言い出すわけ? たくさんのSQL文があるときに漏れが生じるからということが言いたいなら、そう書けばいい。 この方法は簡単に実装できて比較的効果の高い方法である。しかし、リファラー情報はリクエスト発信者が自由に発行できる情報であるので、偽装されてしまう恐れもあり100%防ぐといった効果はない。 「100%」て何? 攻撃を防ぐ話をしているのだから、防げないなら対策じゃないでしょ。(しかも、CSRFの文脈でRefererは偽装できないと言ったのに、まだ直してないね。去年会ったときに、「直します」って約束してたよね?) マスコミの記事でよく見かける表現に、「完全に○○ないわけではない」というものがあるが、これは断定できないことを言うときの逃げ口上だってことを知っておいたほうがよい。マスコミには許されるが、技術文書には許されない。技術文書なら、前提を明らかにした上でその前提の上で何が言えるかを書くのであって、例外があるなら例外を書くようにする。 セキュリティの解説で「どれも完全じゃないからいろいろやっておこう」という表現が出てきたら、その著者は信頼するに値しないと判断してよい。書いてる当人がわかっていないから、問題を整理できていないから、そういう表現が出てくる。 *1 「 「サニタイズ言うなキャンペーン」とは何か」「「セカンドオーダーSQLインジェクション」ですって?」参照。 米国の複数のRFIDクレジットカードに欠陥:暗号処理なしにカード情報が読み取られ、傍受されるほか、リプレイ攻撃も可能 |