インターネット概論 第9回12月11日 Webって、どんなシステム? WWW World Wide Web の略 語源:世界規模の蜘蛛の巣 世界中の情報を蜘蛛の巣状に関連付けた情報 ネットワークサービス WWWの起源 1989年、CERN(欧州合同原子核研究機関) で文書情報のやり取りを目的として開発された 互いに公開可能な情報を持っていたが、その情報 を円滑に共有しあう手段がなかった Tim Berners-Lee氏が文書情報を簡単に共有で きるシステムを開発した 関連付け(Hyper Link) 1989年に開発された情報共有機構の特徴 他のコンピュータにある情報に対してLinkを張れる この情報は こっちにあるよ 初期型WWW NeXT社のSTEPでしか動作しなかった 考案者は仕様をインターネットで公開した HTML言語など 瞬く間にみんなが作った 今日では、どんなOSでもWWWが見れる Webを実現する コンピュータネットワーク WWWの普及には異種OS間通信の実現がある ネットワーク上のプロトコルだけが決まっている OSが違っていても通信可能 LinuxとWindowsでも通信できる WindowsとMacでも通信できる UnixとWindowsでも通信できる どんなOSでもプロトコルに沿って通信をすれば通信 できる 通信プロトコル 「こういう風に聞いてきたら、こういう風に答えな さい」みたいな決まりの集合 例えば、WWWでは、 GET /index.html HTTP/1.0 というと index.html というファイルの中身が見れる プロトコル プロトコル:議定書、条件などの原案 共通のコミュニケーションルール 全員が同じルールで通信をするのでお互いに理解が 可能 日本語と日本語だと理解し合えるが、日本語とスワヒ リ語だと会話が成り立たない インターネットとWWW インターネットの通信プロトコルは公開されている 異種OS間で通信ができた WWWのプロトコルも公開されていた インターネットの代表的なアプリケーションになった WWWは爆発的に広がった WWWはWebサーバの集合体 インターネットは膨大な数のコンピュータが互い に手を取り合う世界規模のネットワーク Webサーバは個別にデータを持っている 私たちはWebサーバの一つ一つにアクセスしている Webを構成する3つの重要な概念 URL: Universal Resource Locator HTTP: HyperText Transfer Protocol 情報オブジェクト(リソース)の位置を記述するための シンタックスあるいはその記述 トランスポートプロトコル HTML: HyperText Markup Language マークアップ(プレゼンテーション)記述言語 11 Webサーバの動作 WWW = ‘‘クライアント・サーバ’’ アプリケーション Web ブラウザからのドキュメント取得要求を受け付 ける 個々の要求から必要なファイル(オブジェクト)や動 作を決定する 結果を送る サーバ Request クライアント Response 12 サーバ・クライアントプロトコル HTTP http://www.ics.uci.edu/pub/ietf/http /draft-ietf-http-v10-spec-01.txt Webのブラウザは、クライアントとして動く Webは、他のインターネットアプリケーションも包 含する FTP, Gopher, WAIS, NNTP and telnet 13 HTTPとHTMLの関係 HTTP メッセージ リクエスト レスポンス Request Line Status Line HTTP Headers CRLF Payload (Entity Body) HTTP Headers CRLF Payload (Entity Body) ペイロードがHTML (ハイパーテキスト ドキュメントの場合) 14 Webサーバとデータ形式 Web Server Knows: HTTPのリクエストの受け付けかたと返事の仕方 サービスに必要なドキュメントの探しかた Does Not Know: ドキュメント間のハイパーテキストのリンクの意味 インライン イメージ ドキュメントの作者が正しくMIMEタイプをつけている か ほかのWebサーバのこと(Proxyサーバは、唯一ほ かのサーバも知っている 15 Webドキュメントのいろいろ ドキュメントタイプ HTML Plain ASCIIテキスト 整形済みのドキュメント(PS) 静止画(GIF, JPEG) 音声(AU, AIFF) 動画像(Quicktime, MPEG) 3次元空間(VRML) Java ‘applet’ ... 16 HTTPにとってのWebドキュメント どんなタイプのドキュメントもバイナリデータとし て保管、転送される ブラウザ側で正しく処理するためにタイプ情報を 用いる Webサーバはドキュメントの内容に関知しない データを送る前にデータに関する情報を送っている タイプは、Content-typeを使って送る サーバがタイプ情報を知る方法 ファイル名の拡張子からのマッピング HTMLドキュメン: .html GIFフォーマット: .gif 17 タイプと拡張子 html, htm PostScript GIFイメージ JPEGイメージ wrl, vrml VRMLシーン記述 TIFFイメージ mpeg Audio (Sun) tiff フォーマットなしASCIIテキスト au jpeg txt gif HTML ドキュメント ps MPEGイメージ java JAVAアプレット 18 HTML Hypertext Markup Language WWWの基本言語 ブラウザは、必ず処理できなければいけない Anchorをいれることができる http://www.w3.org/hypertext/WWW/M arkUp/html-spec/html-spec.ps.gz 19 外部プログラム ブラウザの取り扱えない動作や知らないタイプ の情報を扱う方法 helperプログラム 外部ビューワ イメージや音の再生など 20 Content-Encoding 型(ドキュメントのタイプ)とは別に、データストリームのエン コーディングをヘッダ中で指定することが可能 圧縮がかけられているドキュメント Content-type: application/postscript Content-encoding: gzip HTTPヘッダ gzipで圧縮 されている PSデータ HTTPペイロード 21 HTTP: Hypertext Transfer Protocol 単純なRequest/response クライアントは、サーバとコネクションを設定する クライアントがサーバにリクエストを投げる サーバがリクエストにしたがってリプライを返す TCP上で実装されていることが多い。 22 リクエスト (クライアントから サーバへ) HTTPリクエストの構成要素 Method: 可能な動作のうち一つ URI: Universal Resource Identifier プロトコルバージョン (Optionally) その他の情報(ヘッダ情報) 23 URLと URI 3つの部分から構成されている 転送に用いるプロトコルの識別子 サービス(サーバプロセス)識別子 ドキュメントの名前 URI: URLのサブセット サービス = サーバ名 + ポート番号 (TCP/IPの場合) ドキュメント名 = ファイルシステム上のパス名 http://ds.internic.net:80/rfc/rfc1630.txt メソッド サーバ名+ポート番号 フルパス名 24 TCPポート80 ! HTTPのデフォルトポート番号: 80 http://www.server.org/sample.html (port 80) http://www.server.org:8000/sample.html (port8000) 25 HTTPメソッド = リクエストの種類 GET: HEAD: (e.g.: タイムスタンプ)のみを返し、オブジェクトそのものは返さ ない。 POST: オブジェクトを返す。つまり情報を引き出す。 オブジェクトに関する情報 サーバへデータを送る。 普通はスクリプトへの入力に用いる。 データの蓄積を目的としてサーバへデータ を送る。 DELETE: データを削除する。 Other PUT: 26 クライアントからサーバに送る (ヘッダ)情報 User-Agent If-Modified-Since キャッシュのファイルのタイムスタンプを送り、変更さ れていた場合にのみファイルを受け取る Accept ブラウザ名 ブラウザが受け取れるMIME-type Authorization パスワードやその他の認証子 27 リクエストの例 GET /Staff/Funny/silly.html HTTP/1.0 User-agent: NCSA Mosaic for the X Window System/2.5 Accept: text/plain Accept: text/html Accept: application/postscript Accept: image/gif (Accept: */* ) 28 レスポンス (サーバからクライアント) ステータス 要求が成功したか失敗したか HTTP-version Status-code Reason メタ情報 返送する情報の情報 コンテント・タイプ コンテント・エンコーディング 実際のデータ 29 HTTPのステータスコード (抜粋1) 200: Document follows 301: Moved Permanently 指定されたドキュメントは新しいURLに移動した 302: Moved Temporarily リクエストは受け付けられた。続いてデータの転送が 行われる 指定されたドキュメントは一時的に新しいURLに移動 している 304: Not Modified 指定されたドキュメントは、リクエストのパラメータで 指定された日付より後に変更されていない 30 HTTPのステータスコード (抜粋2) 401: Unauthorized 403: Forbidden アクセスは禁止されている 404: Not Found 情報へのアクセスは制限されており、正しい認証が 行われる必要がある 指定された情報が見つからないか、アクセス制限が 働いた 500: Server Error サーバの内部エラーが発生した 31 HTTPトランザクション例 Telnet リクエスト is26e0s00[3] telnet shinoda-www.jaist.ac.jp 80 Trying 150.65.190.124 ... Connected to shinoda-www.jaist.ac.jp. Escape character is '^]'. リクエストライン GET / HTTP/1.0 CRLF レスポンス HTTP/1.0 200 OK (HTTPヘッダ+Entity Body = 空) ステータスライン Date: Sat, 30 Nov 1996 11:07:39 GMT Server: Apache/1.1b2 Content-type: text/html HTTPヘッダ (空) Content-length: 975 Last-modified: Fri, 08 Nov 1996 07:28:11 GMT CRLF <HTML> <HEAD> <TITLE>Shinoda Lab. Home Page (In English)</TITLE> </HEAD> ... Telnet </BODY> </HTML> Connection closed by foreign host. 32 ダイナミックドキュメント CGI --- Common Gateway Interface SSI --- Server Side Include 独立したプログラムが起動 リクエストの入力はプログラムの入力へ プログラムの出力がクライアントに渡される html中にコメントの形でプログラム実行を記述 プログラムの出力は、元のドキュメントに埋め込まれる Other サーバ拡張API: NSAPI, Apache Modules, ... Remote Program Execution: Java, JavaScript, mBED... 33 WWWサーバ: 基本中の基本 GET methodのみを処理する簡単なWebサー バ コネクションを受け付ける リクエストラインを入力し、URI(パス名)を取り出す 適当なステータスラインとヘッダを出力する URIで指定されたオブジェクトを出力する 掃除をしてから最初に戻る もっともコンパクトなサーバの大きさはどれくらい か 34 #!/usr/local/bin/perl use IO::Socket; sub endProg () { $sockNew->close (); $sock->close (); $sock = new IO::Socket::INET (LocalAddr => "localhost:8007", Listen => 5); exit; die "can not create socket : $!\n" unless $sock; } $sockNew = $sock->accept (); sub errMsg () { $message = <$sockNew>; $date = `date`; $message2 = <$sockNew>; print $sockNew <<ERRMSG print $message; HTTP/1.0 404 Not Found Date: $date chop $message; Server: SIMPLE SAMPLE SERVER (Unix) @msg = split (" ", $message); Connection: close Content-Type: text/html if ($msg[0] eq "GET") { if ($msg[2] eq "HTTP/1.0") { open (FILE, $msg[1]) || &errMsg(); ERRMSG while (<FILE>) { &endProg(); print $sockNew $_; } close (FILE); } } ERROR MESSAGE } WWW Webサーバに問い合わせることにより実現 この情報 見せて DATA 表示 DATA Java、ActiveXなど WWW上で動作なども記述できるようになった WWWの用途の多様化 しかし、できることが多くなった分、セキュリティ ホールも増えた 無防備に使っていると問題が発生する事もある WWWまわりで危険なこと 知らないうちに個人情報を抜き取られる 知らないうちにウィルスに感染する 手元のコンピュータが停止させられる ウィルスに感染し、自分自身が知らない間に加 害者になっている WWWでサーバに送信される情報 実は、WWWクライアントからもサーバに情報は 送信されている クライアントのIPアドレス WWWブラウザの種類 直前まで見ていたWWWページの場所 その他 それらからわかること 例えば、REMOTE_HOSTが 「paexxxx.tokyont01.so-net.ne.jp」だった場合 WWWページを見にきた人は SO-NETに入会している 東京から接続している フレッツISDNユーザである といった感じのことがわかります 例 http://www.sfc.wide.ad.jp/InternetGairon2001/printenv.cgi 自分のマシンのIPアドレスがば れて何が嫌か? 例えば、WWW上の掲示板などで悪態をついて、 恨みを買ったとする 自分のIPアドレスがばれると、恨みを持った人達 が徒党を組んで攻撃してくる 不正進入を試みたり DoSアタックをかけたり DoS(Denial of Service) サービスを中断させる 簡単なDoS パケットを大量に送信する 防ぐことが難しい 例えば、128kpbsの回線に100Mbps分のパケッ トを送信する 回線は混雑しすぎて何もできなくなる IPアドレスが分かってしまう問題 対応策 IPアドレスを分からないようにすることは、“基本 的には出来ない!!” 信頼できそうもないようなWebサーバにはアクセ スしない 他人に迷惑や不快な思いはさせない システムとしては、分からないような情報を不用 意に入力しない ソフトウェアのバグ ウィルスなどはソフトウェアのバグを利用してい る 全てのソフトウェアにはバグがある 中には悪用できるものもある 本来あり得ない情報を送り込むことでユーザ情報を 取得する ページを見るだけでシステムハングアップさせる バグ ソフトウェアのバグの修正プログラムの多くは配 布されている しかし、修正プログラムを使わない人も多い 皆様 Windows Update してますか? IEのバグを悪用した例 IEの新しいウィンドウを数千個(もしくは無限に) 出す メモリがなくなって、システムが止まってしまう 「このページは見てはいけません」と書いたリン クを作ってそれをクリックした人がはまる Java, javascript, activeX 便利な機能を備えている HTMLだけでは実現できないことができる しかし、危険も伴う 得体の知れないファイルを勝手にダウンロードされて、 実行される ウィルスを注入される 防衛策 「インターネットオプション」の「セキュリティ」項目 でセキュリティレベルを「中」以上にする セキュリティレベル「低」は使わない やばそうな場所を見るときには「高」にする その他の危険 WWWを見なくても、ネットワークに接続している だけでも侵入される ネットワークにつながるということは、他のマシン もこちらを見れるということ インターネットにつなげているだけ で進入される例 Nimdaなどのワームに攻撃される IISというWWWサーバをWindows上で起動している と侵される IISは、マイクロソフトの特定のソフトウェアをインス トールすると勝手にインストールされるので注 意!!! 研究室に対する攻撃数 Nimdaだけで、大体、1日8000件ぐらい Nimda IIS、メール、共有、WWW閲覧などを通じて感染 マイクロソフトの Well Known セキュリティホー ルを惜しまず使ったウィルス 自己増殖型ウィルス 万能型ウィルス Nimda Nimdaに感染すると、数万個のホストからIISが 起動しているものを探し始める 大量にWWWコネクションを張りにいく IISを発見するとセキュリティホールをついて侵入を試 みる 成功すると自分自身をコピーする 侵入されたホストは、また、インターネット上のIISを探 し始める Nimda Nimdaは、ウィンドウズの「共有」も利用する 感染すると、同じセグメントのマシン全部を攻撃 し始める 攻撃が成功すると自分自身を対象のホストにコ ピーする Nimda Outlookも利用する Nimdaに感染すると、アドレス帳上のメールアド レスに対してウィルスを添付して送信する メールを受け取った先がOutlookでメールを読ん でいると、感染する Nimda NimdaにやられたマシンがWWWサーバだった 場合、WWWページにウィルスが仕込まれる WWWページを古いIEで見ると見た人が感染す る まとめ こまめにWindows Updateをする 自分が通信できるということは、他人も自分のと ころまで通信できるということであることを忘れな い 注意を怠らない インターネットは匿名性があると言われるが、必ずし もそうとは言い切れない
© Copyright 2024 ExpyDoc