Ethernet LANとWAN接続
前回の物理層のLANの話に引き続き、WANの話を説明。
前回の復習
10BASE5, 10BASE2 では、同軸ケーブルにPCが接続。
10BASE5 トランシーバ
10BASE2 とT型分岐コネクタ
10BASE-T
Ethernet と通信速度
10BASE 5/2/-T といった 10BASE は、通信速度の上限が 10Mbps (bit per second) を意味する。100BASE-T といった 100BASE は、100Mbps を意味する。最近では、1000BASE-T は、1000 Mbps = 1Gbps の通信速度となる。最近では、10G BASE-T といった記載であれば、10Gbps を意味する。
バス接続(LAN)と転送速度
基本的な Ethernet の接続では、1本の通信路を共有するバス型接続のため、1本の信号線をパケット単位の通信の短い時間に区切って、送信を交代しながら行う時分割多重方式で行い通信を行う。パケット(イーサネットフレーム)とは、通信データを送る単位で最大1500byteとなっている。(MTU値:Maximum Transmission Unit)
例えば、10BASE のネットワークでつながった4台のパソコンで、A-B間、C-D間で同時に通信を行おうとすると、A-Bの通信中は、通信路が使用中のため、C-D間の通信はできない。このため、A-B間、C-D間の通信をパケットを送る毎に交代しながら通信路を利用する。これにより、見かけ上は A-B, C-D 間が同時に通信しているようにみえる。
-
- 10BASE/5の PC-AとPC-Bの間で、音楽CD1枚のデータ(700MB)をを送る場合、通信時間はどの位かかるか?
- →答え:
700M[byte] = 5.6G[bit] なので、10M[bit/sec]で送ると、560[sec]
- →答え:
- 同じく、A-B間、C-D間で同時に送る場合は、通信時間はどのくらいかかるか?
- →答え:
短時間的には同時に通信ができないので、通信路を切り替えながら送るため、倍の時間がかかる。よって、1120[sec]
- →答え:
- 10BASE/5の PC-AとPC-Bの間で、音楽CD1枚のデータ(700MB)をを送る場合、通信時間はどの位かかるか?
10BASE/T, 100BASE-T, *BASE-T では、HUBの内部構造に注意が必要。基本的には、見かけ上は木構造のように分配しているように見えるけど、内部はバス型の通信路に変わりはない。10BASE/5/2と異なり、データの送信用,受信用の2つの信号のペアとなっている。10BASE/T を利用している頃は、HUBは高価であり単純なバス型接続のHUB(Dumb HUB)であれば、短時間的にみればC-D間通信中はE-F間通信ができない。(前述のようにパケットに小分けして通信するので見かけ上は並行して通信しているように見える)
しかしこれでは、通信速度が無駄になるので、最近はスイッチングHUBが利用される。このHUBは、通信相手に応じてHUB内部の通信路を切り分けるので、A-B間通信中でも、C-D間通信が可能となる。送り先を区別するためには通信機器ごとに固有値が割り振られているMACアドレスを使う。
理解確認
- 前述の2つのカスケード接続されたDumb HUBで、A,B,C,D,E,Fのコンピュータが繋がっている時、A-C間、B-D間で音楽CD700MBのデータを送る場合、通信時間はどうなる?
電話線接続
同じ敷地内のネットワーク接続のLANどうしを、ネットワークで相互接続するWAN(Wide Area Network)では、昔は電話線を用いていた。電話は、本来音声を伝えるためのものであるため、0/1のデジタル信号を、音の信号に変換(変調)し、受信側は音をデジタル信号に(復調)する。これらを行う機器は、変復調装置(モデム)と呼ばれる。
変調の際には、0/1信号を、音の強弱(振幅変調/AM),音程の高低(周波数変調/FM),位相の前後(位相変調/PM)の組み合わせによって、送受信を行う。参考:ダイヤルアップ接続音(YouTube)
当初は、300bps程度であったが、最終的には64Kbps 程度の通信速度が得られた。(電話線は元々10kHzの音を送るために開発されていたため、64Kbpsが限界だった)
これらの通信速度の改善のため、電話線にデジタル信号で送る ISDN , 電話線の音の信号の高帯域を使った通信 ADSLなどが用いられた。(ADSLでは高周波帯を使うので、自宅から交換機までの距離が長い時は通信速度が速くできなかったりした)
最近では、光ファイバによる FTTH(Fiber To The Home) が広く普及し、1Gbps を越える通信が可能となっている。このほかには、ケーブルテレビ事業者による回線を利用した HFC(Hybrid Fiber-Coaxial) も普及している。HFCでは幹線部分を光ケーブルで接続し、地域の拠点から家庭までは同軸ケーブルで配線することで、テレビ放送とインターネット接続を実現している。
光ファイバ
光ファイバでは、内側(コア)に屈折率の高い透過材料と、外側に屈折率の低い透過材料でケーブルを使い、屈折率の違う断面で全反射することを利用して光を遠くまで運ぶ。中身がガラス繊維なので、中の繊維が折れない工夫や、コネクタで光が減衰しないような工夫が重要。
光ファイバで自宅までネットワーク回線が引かれている場合、光ファイバと自宅内インターネットの間には、ONU(Optical Network Unit/光回線終端装置)が設置されている。一般的にモデムが音の信号を電気的なデジタル信号に変換するのに対し、ONU は光信号をデジタル信号に変換する。音声電話を使う場合には、音声信号をデジタル化して、これをインターネットで通信する VoIP(Voice over IP network) 技術が使われる。
通信速度の理解と、古い時代の通信速度を体験してもらうため、試しに「2000ドット✕1500ドットのRGB画像(1ドット3byte)のデータ(無圧縮)を、9600bps で通信したら、どの程度の時間を要するか、いくらかかるのか?」を計算してみよう。ちなみに2000年頃は、携帯電話では、1Kbyteあたり10円の通信料がかかった。
→答え:
データ量 2000✕1500✕3✕8 [bit] = 72 M[bit]
通信速度 9600[bps] であれば、72 M / 9600 = 7500[sec] = 約2時間(1/5に圧縮されても24分)
通信費 72M[bit]/8/1000 = 9000[Kbyte]、
通信料金 9000[Kbyte]=9000[パケット]、1パケット(1KB)10円だから90,000円 😥
# 画像が320✕240✕RGB(16bit)で圧縮で1/5であれば、それでも100円超え
J-PHONE(J-SH04,200年発売)で始めてカメラ付き携帯が登場。(解像度の低い自撮り写真をスマホで1枚送れば100円かかった時代)
ネットワークトポロジ
ネットワークに機器を接続する形態をネットワークトポロジと言う。
1本の線を共有するバス型、機器どうしがリング型に接続するリング型、中央の機器を通して接続されるスター型が基本となる。
基本的に、Ethernet は 1本の線を機器で共有するバス型。ただし、10BASE-T,100BASE-TX などの HUB で繋がることから、HUB を中心に広がるスター型とも言える。それぞれれのネットワークは相互につながることから、木の枝状に見えるものはツリー型と呼ばれる。また、上流ネットワークでは、機器が故障した場合に一切の通信ができなくなるのは問題があるため、複数のネットワークで相互に接続される。この場合、網が絡むような構造になることから、ネットワーク型と呼ばれる。
情報ネットワーク基礎・ガイダンス
情報ネットワーク基礎では、インターネットがどのような仕組みなのか、どのようにして動いているのかを説明する。TCP/IPって何? IPアドレスって何? セキュリティって何?
あなたが使っているネットワーク機能は?
まずは、Teams にて「あなたが使っているネットワーク機能は?」を返信にて書き込んでください。
ただしネットワークを使うことでコンピュータがどう動いているかの視点で答えてほしい。
共有:ネットワークプリンタ、ファイル共有… – サービスを利用する視点
(ハードウェアや情報を共有)
分散:大量のコンピュータで負荷分散、リスク分散… – サービスを提供する視点
(仕事を分散し全体で高速化, 沢山のコンピュータの1台が壊れても全体は動く)
ネットワークの歴史
昔のコンピュータは、開発にお金がかかるため1台のコンピュータを全員で使うもの(TSS: Time Sharing System/時分割システム)だった。冷戦の時代、軍の重要な処理を行うコンピュータでは、コンピュータのある所に核攻撃を加えられ、軍の機能がすべて動かなくなることは問題だった。1970年頃にアメリカ国防総省ARPANETがインターネットの原型(TCP/IP)を作る。
1980年代には、パソコンが同じ組織内でネットワークで繋がるようになるLAN(Local Area Network)が使われるようになる。1990年代には、LANどうしを遠隔地接続をするWAN(Wide Area Network)が発達し、Internet(広域コンピュータネットワーク)という言葉が広く普及していった。欧州原子核研究機構(CERN)で、ティム・バーナーズ=リーがWorld Wide Web/httpを開発(1989)。1995年、マイクロソフトの家庭用パソコンのOS Windows95の普及と共にWWWが普及する。
- 1980年代:パソコン通信※
- 1997年:weblog(blog:自分で作るwebページの拡大)
- 1998年:Google検索
- 1999年:2ch
- 2003年:SNSの誕生(2004:mixi)
- 2006年:Twitter,Facebook(一般開放)
コンピュータインタフェースとネットワーク(物理層)
ネットワークにおける情報伝達において、伝送媒体(電気信号,光)にて0/1を伝えるための取り決めは、物理層という。まずは、コンピュータと機器の接続について考えると、シリアル通信とパラレル通信に分類できる。(シリアル通信は時間を細かく区切って複数の信号を送ることから時分割多重通信と呼ぶこともある)
通信の高速化に伴い、伝送の配線はコンデンサやインダクタンスを考慮したインピーダンスマッチングが重要となる。このため、高速通信のインタフェース両端は終端抵抗(ターミネータ)が必要だった。
1本の信号線で単位時間あたりのデータ通信速度が同じであれば、パラレル通信の方が高速であるが、長い通信路ではノイズ対策が重要でありノイズ対策をきちんとした線が複数本あるとケーブルが太くなることから、長い通信路ではシリアル通信が使われる。少ない信号線に対してノイズ対策をきちんと施すことができるので、長い通信路ではシリアル通信の方が高速となる。
パラレル通信の例:パラレルポート(プリンタ用)IEEE 1284、ハードディスクATA(IDE)、計測器GP-IB
シリアル通信の例:RS-232C、IEEE1394(FireWire)、ハードディスク(SATA)、USB1.1, USB2.0, USB3.0, USB3.1 Gen2, USB3.2 Gen2x2…、有線LAN/Ethernet
有線LAN/Ethernetの種別
- 半二重通信 – 送信/受信を1本の信号線でおこなう。
- 全二重通信 – 送信用の信号線、受信用の信号線がそれぞれ別。送信受信を同時にできる。
- 複信 Simplex(一方的な放送), Half Duplex(半二重), Full Duplex(全二重)
- 10BASE/* – 10Mbit/sec
- 10BASE/5 – ケーブルに針を刺して増設 – 半二重通信/ターミネータが必要
- 10BASE/2 – T型BNCケーブルで延長 – 半二重通信/ターミネータが必要
- 10BASE/T – HUBで分配(終端抵抗などの問題はHUBが解決してくれる) – 全二重通信
- 100BASE-T – 100Mbit/sec / CAT5
- 信号線のノイズ対策は、シールドで覆う、信号線を“より線”(ツイストペア)にするなどの対策が重要
- シールドや”より線”の方式でカテゴリー CAT5,CAT6,CAT7 などで分類される
- 信号線のノイズ対策は、シールドで覆う、信号線を“より線”(ツイストペア)にするなどの対策が重要
- 1000BASE-T ギガビット – 1000Mbit/sec = 1Gbit/sec / CAT6
- 10000BASE , 10GBase – 10Gbit/sec / CAT7
![]() 同軸ケーブル |
![]() ツイストペアケーブル |
ツイストペアケーブルがノイズに強い理由
理解確認
- ネットワークにおける共有と分散について例をあげて説明せよ。
- TSSのような通信によるコンピュータと、TCP/IPによる通信網を比べ何がどう良いのか?
- シリアル通信とパラレル通信、それぞれの利点欠点は?
- 10BASE/5,10BASE/2,10BASE/Tのそれぞれの問題点は?
- CD1枚のデータを1000BASE-Tのネットワークで転送するのに何秒かかる?
- サンプリングレート44.1kHz,16bit,ステレオ2ch,74分
授業アンケート 2023 後期
情報工学演習(2EI)
84.3 ポイントと高い評価であった。プログラミングコンテストを用いた演習内容の発表では、こちらが想定してた難易度の高い問題について説明したものが少なく、来年度は制約などを設けたいと思った。
情報ネットワーク基礎(3EI)
情報構造論(4EI)
データベース(5EI)
セキュリティ対策
セキュリティ
バッファオーバーフロー
クラッカーがサーバを攻撃する場合、サーバ上のプログラムの脆弱性を利用する。
サーバプログラムの脆弱性を利用する最も典型的な攻撃方法には、バッファオーバーフローがある。
こういった問題が含まれるアプリケーションは危険であり、こういった脆弱性が見つかったらプログラムの更新が重要である。
マルウェア
ウィルスとは、パソコン利用者の上で動く、感染能力のある悪意のあるプログラム。機械語で書かれたものや、オフィスソフトのマクロ機能で動くものもある。パソコン内の情報を利用して、ウィルス付きメールを自動的に送ることが多い。(メールソフトを使うなど、人の操作が必要なもの)
ウィルスは元々、愉快犯によるものが一般的であったが、感染したパソコンのファイルを暗号化し、暗号化を復元するために、ネットバンキングへのお金の振り込みを要求(身代金=ransom)するようなランサムウェアが増えている。
ウォームとは、脆弱性のあるネットワークプログラムに、バッファオーバーフローを引き起こすようなデータを送りつけて、ウィルスを送りつけたり、そのコンピュータを踏み台にしてネットワークを利用した攻撃をさらに行うもの。(ネットワークを介して悪意のあるプログラムを起動させるもの)
通常、インターネットからの攻撃を防ぐために、各組織ではFireWall(後述)を設置している。一方、FireWallの内側では、防御されていることから内部のコンピュータからの攻撃に甘く、無防備であることが多い。そこで、FireWall の内側のコンピュータに、メールなどの添付ファイルでマルウェアを送付・感染させることで、FireWall内で被害が拡大することもある。
このような、FireWall 内部での感染・被害拡大を狙ったマルウェアは、トロイの木馬型と呼ばれる。
ネットワークを介した攻撃では、攻撃対象のコンピュータを乱数で得られたIPアドレスや、そのアドレスを1つづつ増やしながら攻撃を行うことが多い。こういった攻撃は絨毯攻撃と呼ぶ。
ボットとはロボットを略した単語で、ウォームの中で「外部からの命令で動くもの」を指す。マルウェアのボットの中には感染しても表面上は何もせず、クラッカーの動かすインターネットの掲示板などを監視し、そこに書かれた命令を見て spam 送信や、DoS攻撃を行うものがある。
DoS攻撃(Denial of Service attack) – サーバなどに大量のデータを送りつけたりすることで、サーバがその処理に手間取り、他の利用者のサービスに悪影響を引き起こさせる攻撃。ボットからのDoS攻撃は、インターネットの様々なIPアドレスから攻撃を受けるためFireWallで防ぐことも困難である。分散DoS攻撃(Distributed DoS Attack)
最近では、ウィルスやウォームの区別が難しいため、マルウェアと呼ぶ。
ファイアウォール
サーバで動かしているプログラムにバッファオーバーフローのような不備が残っていて、全世界のどこからでもこういった不備があるプログラムに簡単に接続できたとしたら、極めて危険である。
サーバで動くプログラムは、接続するためのポート番号が決まっているので、相手のコンピュータのIPアドレスが分かったら攻撃を仕掛けてくるかもしれない。
FireWall は、これらの接続をできなくするための方法で、例えば学内のWebサーバへの攻撃を防ぎたいのなら、ルータで「宛先ポート番号が80のパケットは廃棄」といった設定をすればよい。また、危険な攻撃を加えてくるコンピュータのIPアドレスがわかっている場合は、「送信元IPアドレスXX.XX.XX.XXのパケットは廃棄」という設定をすればよい。こういった、ポート番号やIPアドレスを見てパケットを遮断するルータは、FireWall(防火壁)と呼ばれる。
よくある設定であれば、ポート番号23(telnet),137,139(Windows ファイル共有),513(リモートデスクトップ)を禁止など(拒否リスト型/ブラックリスト型)、基本は全面禁止だけどポート番号22(ssh)は許可(許可リスト型/ホワイトリスト型)など。
セキュリティ対策
- OSの更新・インストールアプリケーションの更新
バッファオーバーフローのような脆弱性が無いようにソフトウェアを更新することが重要。
Windows で、インストールされているソフトの更新では、winget が便利!!
- 不審なメールは開かない
添付ファイルにマルウェアがしかけられている可能性。リンクや画像ファイルを開くと、実際に使われているメールアドレスとして迷惑メールが増える可能性がある。 - 危険なWebサイトをアクセスしない
OSやブラウザの脆弱性から、マルウェア被害の可能性。 - パソコンで不要なサービスを動かさない
ファイル共有や、リモート接続のサーバを不用意に動かさない。 - ウィルス対策ソフトをインストール&更新
ウィルス対策ソフトは、新しく発生したマルウェアの命令などのパターンを保存しておき、同じパターンのものをマルウェアとして判定する。- マルウェアは日々新しいものが作られるため、ウィルス対策ソフトのメーカーから、常に新しいマルウェアのパターンをダウンロード&更新が重要。
- OSの脆弱性が見つかった場合、ウィルス対策ソフトのメーカーがマルウェアパターンを登録する前にマルウェアが届く場合がある。ゼロディ攻撃
- 特定の企業を攻撃する場合は、その企業専用のウィルスを作る場合もある。このためマルウェアパターンが無いため、ウィルス感染の可能性がある。標的型攻撃
- 最近では、ブラウザによるWebアクセスからの感染を防ぐために危険なURLへのアクセスを監視したり、危険なIPアドレス・ポート番号へのアクセスを監視する機能も含まれている。パーソナルファイアウォール機能
- このパソコンは重要な情報が入っていないから、ウィルスに感染しても放置するのは危険。他のコンピュータを攻撃する踏み台、DoS攻撃のボット、トロイの木馬となって危険の元となる。
一般的に、Apple社のiPhone iOS では、ウィルス対策ソフトは不要である。これは、App Store でアプリを公開するためには、プログラムのソースコードを提出した上での審査があり、デバイスも、App Store 以外からのアプリをインストールできないため、マルウェアのインストールがほぼ不可能なためである。一方、Google 社の Android は、アプリの審査が甘く、Google Play アプリ以外からのソフトのインストールも可能であり、ウィルス対策ソフトが必要である。
理解度確認
- Formsによる理解度確認テスト
- 標的型攻撃メールがウィルス対策ソフトでは防ぐことが難しい理由を述べよ。
- ファイアウォールでは、どういった処理を行うのか説明せよ。
暗号化とパスワード
暗号化
有線LANで1本のケーブルを共有したり無線でデータをやりとりする場合、通信の盗聴が行われると危険である。
前回の授業で紹介したように、簡単な置換式暗号などでは暗号の解読ができてしまう。
暗号化アルゴリズム
1980年頃には DES(Data Encryption Standard) がアメリカでの標準的な暗号化として使われていたが、コンピュータの性能があがると共に解読される危険性が高まってきた。そこで2000年頃にはAES(Advanced Encryption Standard) が使われるようになった。どちらも共通鍵を用いてデータをブロック(固定長のデータ)単位で暗号化する共通鍵ブロック暗号方式であり、暗号の鍵の長いものは暗号解読が困難となっている。
1980年頃に開発された RSA 暗号(開発者の名前より) は、巨大な数字の素因数分解が困難なことを利用した、公開鍵暗号方式の1つである。
最近、量子コンピュータを用いた暗号解析が話題となっている。量子力学の原理を計算に応用したコンピュータで、スーパーコンピュータで1万年かかる暗号解読のような処理が200秒で終わってしまうかもしれないと言われている。
公開鍵暗号方式とは…
以前に使われていた暗号化の方式は、暗号化の鍵と復号化の鍵に同じものを用いる共通鍵方式であった。
しかし、この鍵をどうやって相手に渡すか…が問題となっていた。(鍵を相手に渡す瞬間のデータを盗聴されると危険)
このため、最近では公開鍵暗号方式が中心となっている。この方式は「暗号化するため専用の公開鍵」と、「暗号化を復号するための秘密鍵」をペアにして用いる。公開鍵は、暗号化するため専用なので、この鍵が他の人に見られても、暗号を復号することはできない。
公開鍵だけでは成り済ました別人と通信してしまう可能性[1]がある。そこで通信相手が本物かどうかを、認証局とよばれる第三者機関によって証明書で確認する。HTTPを暗号化したHTTPSでは、SSL証明書と呼ばれる。最近のブラウザでは、URLの左側の鍵マーク🔒からSSL証明書を確認することができる。
[1] DNSサーバの脆弱性を利用して、間違ったIPアドレスを教えさせる DNSポイズニング が行われると、利用者を間違ったサーバに接続させることが可能。
パスワード解読方法
ログインなどで使われるパスワードは、どのように破られるのだろうか?
- ブルートフォース攻撃:単純に全ての文字を試す方式。文字の組み合わせ問題なので、パスワード文字列長をNとした場合、数字だけ(10N)とか英字だけ(26N)といった組み合わせでは、短時間に解読されてしまう。数字,大文字,小文字,記号などを交えたパスワードが理想。
- 英単語辞書を用いた辞書攻撃:パスワードが長い場合、文字列の全ての組み合わせを試すには長い時間が必要となる。しかし、パスワードはユーザが記憶して使うことから覚えやすい単語が使われる。このため英単語辞書の文字を組み合わせることで、解読時間を短くできる場合がある。
- 漏えいパスワードによる辞書攻撃:サーバへのリモート接続などができてしまった場合、パスワード情報が盗まれる場合がある。この時、別なサイトに同じパスワードを使っていると、その漏えいしたパスワードで別のサイトも接続ができてしまう。これらのことから、同じパスワードを使いまわすことは避けるべきである。
- ソーシャル攻撃:パスワードには、簡単に覚えられるように自宅の電話番号、誕生日、家族の名前といったものを使う人が多い。このため、SNS で相手に友達登録をしてもうことで、こういった情報を手に入れ、パスワードを破る方法。最近の有名人の個人情報漏洩はこの手の攻撃が多い。
ソーシャル攻撃は、”元クラッカー” ケビン・ミトニックが有名
- パスワードスプレー攻撃:login 画面などにブルートフォース攻撃を加えて簡単にパスワードが破られるのは問題となる。このため、短時間に何度も login 操作をできないように、数回のパスワード入力に失敗すると一定時間 login ができなくなるような対策が取られる。しかし、プログラムを使ってブルートフォース攻撃をするのであれば、攻撃間隔を空ければいい。攻撃者は、その代わりにネットワークの別のコンピュータでブルートフォース攻撃をすればいい。時間当たりの攻撃回数が少ないため、通常ユーザのパスワード間違いと区別ができないので、気づかないうちにパスワード破りに成功するかもしれない。このため、長期間パスワードを変更しないユーザは、不正利用被害が発生する可能性がある。
攻撃が難しいパスワードへ
先に述べたような、login に使うパスワードなどは、ブルートフォース攻撃をうけると解読は時間の問題となる。これらの対策として毎回違う鍵(パスワード)を使えばいい。
- ワンタイムパスワード:使い捨てのパスワードをあらかじめ沢山作っておき、接続の度に次のパスワードを用いる方式。あるいは、時間から特殊な計算方法で生成されるパスワード。時間と共に変化するのでその度毎に違うパスワードとなる。毎回違うパスワードを入力するため、パスワード表を常に持ち歩いたり、入力が面倒なので数字だけを使うことが多く、この方法だけでは使いにくい。(次週に多要素認証などの解説も行う)
多要素認証
パスワードはブルートフォース攻撃をうければ、いつかはパスワードが破られる危険性がある。こういった対策で最も重要な方法が、多要素認証(2段階認証)である。
この方式では、通常のパスワード入力の後に、以下の様な方式でワンタイムパスワードを入力することでログインが可能となる。
- 携帯電話にテキストメッセージ(SMS)でワンタイムパスワードを送る。
- かかってきた電話の機械音声のワンタイムパスワードを伝える。
- 時間で変化するワンタイムパスワード生成アプリの数字を入力する。
- メールで送られてきたワンタイムパスワードを含んだURLにアクセスする。
- 認証画面に表示されたQRコードのURLにアクセスする。
SMSやワンタイムパスワードアプリは、携帯電話などを常に持ち歩いていることが本人確認となっている。このような方式では、携帯電話などを失くすとシステムが使えなくなるので、バックアップコード(非常時用のパスワード)の保存や、login先とは別のメールアドレスを登録してあることが重要となる。
CAPTCHA
最近では、フリーで取得できるメールアドレスをプログラムで動くロボットで自動生成し、そのアカウントを使ってspamを送るなどの手口が問題となっている。このため、接続してきた相手が人間か判定することがある。判定には、読みづらく加工された英字を入力させたり、パズルを解かせるといった方法が使われる。
元々は、読みづらい文字はコンピュータでは画像解析しづらいことから、CAPTCHA が使われるが、最近では機械学習によって解析ができるようになってきた。
セキュリティキー
SMSやメールを使ったワンタイムパスワードによる多要素認証も、間にネットワークを挟むと多要素認証では問題となる。そこで、もっと複雑な暗号で多要素認証を行うために、セキュリティキーが使われる。
多要素認証が必要になると、パソコンにセキュリティキーを差し込むことで認証が行われる。現在では FIDO(Fast IDentity Online)や FIDO2 といった規格のものが普及している。
ハッキング
インターネットの用語でハッカー(Hacker)は、コンピュータを使って悪いことをする人という意味でよく使われている。しかし元々は「主にコンピュータや電気回路一般について常人より深く高度な技術的知識を持ち、その知識を利用して技術的な課題をクリアする人々のこと」(Wikipedia引用)という意味で使われていた。このため本来は「優秀なエンジニアへの最大級の誉め言葉」として使われており、ハッカー以上の技術者を ウィザード/wizard や グル/guru と呼称することもある。
しかしながら一部のハッカーの中で、その技術を悪用する人も出てきたことから、インターネットで悪いことをする人という意味で使われることも増えてきた。そこで、悪いことをする人は別な呼び方をしようということで、攻撃を加えるひとはクラッカーと呼ぶことが多い。最近では、正義のためのハッカー = ホワイト・ハッカー、悪いハッカー = ブラック・ハッカー という表現も使われるが、黒人差別主義につながる用語ということで、正義のためのハッカーには最近はエシカル・ハッカー(高い倫理観と道徳心を兼ね備えている高い技術を持ったハッカー)という言葉を使う。
理解度確認
- Formsによる理解度確認テスト
- 標的型攻撃メールがウィルス対策ソフトでは防ぐことが難しい理由を述べよ。
- ファイアウォールでは、どういった処理を行うのか説明せよ。
リモート接続と暗号化
リモート接続
サーバなどの管理をしていると、インターネットの先にあるコンピュータを操作したい場合が多い。こういった場合には、リモート接続機能を用いる。
リモート接続による相手側のコンピュータを操作する場合、相手側のコンピュータには リモート接続 用のサーバプログラムを起動しておく。こういったリモート接続を利用するのは、”unix” の利用者が多いが、”unix” では、サーバ のプログラムは、一般的にデーモン(daemon/守護神)と呼ばれる。[daemonとdemonの違い]
telnet と rlogin
telnet は、最も基本的なリモート接続の方法であり、TCP の 23 番ポートを使う。telnetのサーバ(telnetd – telnet daemon)は、送られてくるタイプされた文字を unix の shell (キーボードでの命令を実行するプログラム) に渡し、shell の実行結果の文字を接続元に送り返す。
telnet のクライアントの基本的動作は、タイプされた文字を送って、受信した文字データを表示するだけなので、通信の動作の確認にもよく使われる。
例えば、Webサーバは、80番ポートに”GET /ページの場所”を送ると、HTMLデータが受信できる。この手順を telnet で行う場合は、以下の様に行う。
rlogin は、TCP の 513 番ポートを使うリモート接続用のソフトで、サーバで rlogind を起動しておく。unix で rlogin クライアントを使うと、リモート側で命令を実行したりファイルをコピーすることができる。
こういったリモート接続ができると、ネットワークの向こう側のコンピュータを自由に操作できる一方で、login のパスワードが破られるとコンピュータを悪用されたり情報を盗まれる可能性がある。
特に、telnet , rlogin では、通信の内容が暗号化されないため、パケット盗聴(後述)されると、サーバを悪用されてしまう。このため telnet や rlogin による遠隔処理は、使うべきではない。
どうしても使うのであれば、ルータや firewall で、ポート番号 23 , 513 などは、遮断し接続するネットワークを限定するのが一般的である。
ssh(secure shell)
暗号化されない rlogin の通信を暗号化により安全に実行できるようにしたものが、ssh (secure shell) である。
ssh は、通常では TCP の 22 番ポートを使う。しかし、暗号化されていたとしてもパスワード破りなどの危険性があるため、ポート番号を変更したり、特定のコンピュータに対してのみ接続許可を与え、安全対策を行う。
リモートデスクトップ
Windows では、コンピュータの操作では、マウス操作が中心(GUI: Graphical User Interface)となる。これに比べ、telnet,rlogin,ssh などの方法では、キーボードによる操作が中心(CUI: Character User Interface)であり、初心者には難しい。遠隔地のコンピュータの操作においてマウス操作などが必要であれば、リモートデスクトップ(remote desktop)が用いられる。
remote desktop では、サーバのディスプレイ画面の情報をクライアントに送り、クライアントの操作(キーボード入力やマウス操作)がサーバに送られ、サーバのコンピュータを自由に操作ができる。
VPN
VPN(Virtual Private Network)とは、物理的に離れた場所にある拠点間を暗号化通信をつかって、仮想的に同じネットワーク内で繋がっているような安全なデータ通信を作るもの。「仮想プライベート・ネットワーク」と呼ばれ、ルータにVPN機能が内蔵されていたり、パソコンではVPNに接続するためのソフトウェアが内蔵されている。VPNで利用されるプロトコルには、SSH/TLS(SSL)/IPsec/PPTP/L2TP/L2F/MPLSなどの種類がある。
[Wikipediaより引用]
バックドア
ssh, リモートデスクトップ, VPN といったリモート接続は、遠隔地のコンピュータを自由に操作できることから、様々なコンピュータを管理している場合、広く使われている。しかしながら、クラッキングなどの悪用の危険があるため、sshサーバ、リモートデスクトップサーバなどのソフトは、通常利用者は起動しないこと。
クラッキングなどを行う場合、ウィルスを使ってリモート接続のためのソフトを動かされると、相手のコンピュータを自由に使える。このような、本来の使い方ではない侵入経路は、バックドアなどと呼ばれる。
クラウド・コンピュータ
インターネットのサービスを構築する時には、自分のコンピュータをインターネットからアクセスさせる(オンプレミス)のではなく、企業などがリモート接続機能を使って、貸し出し用に提供されているコンピュータを利用する場合も多い。こういうコンピュータを利用してサービスを提供する場合、利用者にしてみればどこにあるかよくわからないコンピュータ資源を使うことから、クラウド・コンピューティングと呼ばれる。有名なクラウド サービスとしては、Amazon AWS, Microsoft Azure, Google Cloud がある。
[Wikipediaより引用]
クラウドコンピュータを借りる場合、以下のような形態がある。
- SaaS (Software as a Service) : リモートサーバ上でアプリケーションを事業者側が用意してあるものを借りる
- PaaS (Platform as a Service) : 事業者側が準備した Web サーバなどを借りて、サービス提供者がソフトウェアなどを準備してサービスを提供する
- IaaS (Infrastucture as a Service) : 事業者側がコンピュータやネットワークなどの提供する環境(インフラ)を借りて、その上に利用者が OS, Webサーバ(ミドルウェア), アプリケーションを準備してサービスを提供する
形態 | コンピュータ, ネットワーク |
OS (Linux,Windows…) |
ミドルウェア (Web,DB…) |
アプリケーション | ユーザ |
---|---|---|---|---|---|
SaaS | クラウド事業者が提供 | ||||
PaaS | クラウド事業者が提供 | サービス提供者が準備 | |||
IaaS | クラウド事業者が提供 | サービス提供者が準備 |
暗号化
Ethernet では1本の通信線を共有したり、WiFiのような無線通信では、通信データの盗聴が簡単にできてしまう。クラッカーは、通信データの中から”login, password” といった文字を検索し、その近辺の文字を探すことでパスワードを盗み出す。
このようなことを防ぐために通信データの暗号化は重要な方法である。
暗号化アルゴリズム
暗号化の最も原始的な方法が、置換式 と呼ばれる方法で、特定の文字を別な文字に変更する。rot13は、A→N,B→Oに置き換える暗号。コナン・ドイル原作のシャーロック・ホームズに出てくる踊る人形などもこれに相当する。これらの方法では、アルファベットの文字の出現頻度から元の文を想像することで解読されてしまう。
エニグマ(Enigma)は、第2次世界大戦でナチス・ドイツが用いたロータ式暗号機であり、置換式の解読方法が不可能であった。しかし、イギリスのアラン・チューリングが電気式の解読器(ボンブ)を開発することで暗号解読が可能となった。この解読器が現在のコンピュータの原型となっている。
チューリングによる暗号解読は、映画「イミテーションゲーム」を参照。
最近では、様々な暗号化アルゴリズムが開発されており、古くは “DES, AES“といったアルゴリズムが使われていたが、コンピュータの性能の向上と共に、解読に必要な時間が短くなったことから、RSA といった新しい暗号化方式が考えられ、さらに暗号化の鍵を長くすることで解読に要する時間を長くするようになっている。
(暗号化アルゴリズムについては、次週の講義でもう少し詳しく解説する。)
パスワード解読方法
ログインなどで使われるパスワードは、どのように破られるのだろうか?
- ブルートフォース攻撃:単純に全ての文字を試す方式。文字の組み合わせ問題なので、パスワード文字列長をNとした場合、数字だけ(10N)とか英字だけ(26N)といった組み合わせでは、短時間に解読されてしまう。数字,大文字,小文字,記号などを交えたパスワードが理想。
- 英単語辞書を用いた辞書攻撃:パスワードが長い場合、文字列の全ての組み合わせを試すには長い時間が必要となる。しかし、パスワードはユーザが記憶して使うことから覚えやすい単語が使われる。このため英単語辞書の文字を組み合わせることで、解読時間を短くできる場合がある。
- 漏えいパスワードによる辞書攻撃:サーバへのリモート接続などができてしまった場合、パスワード情報が盗まれる場合がある。この時、別なサイトに同じパスワードを使っていると、その漏えいしたパスワードで別のサイトも接続ができてしまう。これらのことから、同じパスワードを使いまわすことは避けるべきである。
- ソーシャル攻撃:パスワードには、簡単に覚えられるように自宅の電話番号、誕生日、家族の名前といったものを使う人が多い。このため、SNS で相手に友達登録をしてもうことで、こういった情報を手に入れ、パスワードを破る方法。最近の有名人の個人情報漏洩はこの手の攻撃が多い。
ソーシャル攻撃は、”元クラッカー” ケビン・ミトニックが有名
攻撃が難しい暗号化へ
先に述べたような、login に使うパスワードなどは、ブルートフォース攻撃をうけると解読は時間の問題となる。これらの対策として毎回違う鍵(パスワード)を使えばいい。
-
- 暗号表:置換式で読み取られるのを防ぐために、置換する文字の表を沢山作っておき、別の方法でその度毎に置換表を変更する
- ワンタイムパスワード:使い捨てのパスワードをあらかじめ沢山作っておき、接続の度に次のパスワードを用いる方式。あるいは、時間から特殊な計算方法で生成されるパスワード。時間と共に変化するのでその度毎に違うパスワードとなる。毎回違うパスワードを入力するため、パスワード表を常に持ち歩いたり、入力が面倒なので数字だけを使うことが多く、この方法だけでは使いにくい。(次週に多要素認証などの解説も行う)
理解度確認
- ファイアウォールの仕組みを説明せよ。
- つぎの利用形態は、PaaS, SaaS, IaaS のどれにあたるか?
- Microsoft が準備した Teams を使って、授業アンケートを取る。
- 福井高専は、Microsoft Azure 環境の上に、Linux, Webサーバ, PHP, MySQL, WordPress をインストールして HP を運営。
WWWとhttpとサーチエンジン
WWWとhttp
WWWとは、ティム・バーナーズ=リーによって作られたサービスであり、元々は研究データの論文やデータの共有のために作られた。この際のWebサーバのデータのやり取りのためのプロトコルがhttp(Hyper Text Transfer Protocol)であり、ポート番号80のTCPを用いたものであり、最近では通信を暗号化したhttps(ポート番号443)も多く使われる。
httpでは、文字データの中に画像や音声といった情報に加え、他のデータへのリンクを埋め込むことができる HTML(Hyper Text Markup Language) のデータがやりとりされる。このHTML形式のデータを表示するためのソフトは、ブラウザと呼ばれる。
URL
WWWのデータの場所を示すものが、URL(Uniformed Resource Locator)であるが、最近ではインターネットが複雑化しLocator という表現が難しいため、URI(Uniformed Resource Identifier)と呼ぶようになってきた。
URLは基本的に、スキーマ://コンピュータ名/サーバ内ファイル位置 といった文字で構成される。URL は、HTTP だけでなく、インターネットの情報の場所を記述するために使われており、httpやhttps以外にも使う。
最近のブラウザは、スキーマ欄の”https://”やコンピュータ名の先頭の”www.”を省略することができる。また http は暗号通信を使わず危険であることから、警告メッセージが表示されたり、可能であれば https の通信に切り替えを試みられる。
http (Hyper Text Transfer Protocol) の流れ
httpのサーバ(Webサーバ)とブラウザでは、以下のような手順で処理が行われる。例えば http://www.ei.fukui-nct.ac.jp/~t-saitoh/index.html のページが表示されるまでを考えると、
- ブラウザのURL欄に、目的サイトのURLを入力。
- 基本的には、スキーマ欄に記載されたプロトコル(http)名から、ポート番号と通信方法(http)を決める。一般的な http 通信では、ポート番号には 80 を使う。
- コンピュータ名部分(www.ei.fukui-nct.ac.jp)を DNS に問合せして、得られたIPアドレスのコンピュータに接続。
- httpの最も簡単な GET メソッドでは、Webサーバに、サーバ内のファイル位置(/~t-saitoh/index.html)を伝えると、Webサーバは応答ヘッダ情報と応答本文の指定された場所のファイルの内容を返送する。(下図参照)
- HTML形式のデータが指定された場合、ブラウザはその HTML をどの様に表示するか判断しながら表示する。
このような予め保存されているWebページを返送する場合は静的ページと呼ばれる。サーバのデータベースなどを参照しながらページ内容を返送する場合は、動的ページと呼ばれ、Webサーバ内部でプログラムを動作させ、その結果のデータをブラウザに返す。
動的ページを生成するためのプログラム言語としては、様々な方法がある。(バックエンド言語)
- 言語 Perl による CGI(Common Gateway Interface)
- Webに特化した言語PHP
- サーバで 言語 Java を使ってページデータを生成(Apache Tomcat)
- サーバで 言語 JavaScript を使ってページデータを生成(Node.js)
また、最近のブラウザでは JavaScript を使って、Webページに表示される内容を動的に変化させることが多い。(フロントエンド)
https
httpでは、通信が平文で行われるため、同じサブネット内であれば通信内容を盗み見られる可能性がある。この通信を暗号化しながら行われるものが https である。ポート番号には一般的に 443 が使われる。暗号化通信は次週以降に説明を行う。
サーチエンジン
インターネットでは、大量のWebページが出現してきたため、自分の目的に応じてWebページを探す機能が必要となってきた。このような目的のWebページを検索してくれるシステムは、サーチエンジンと呼ばれる。
ディレクトリ型
最初に現れた検索システムは、ページ作者が自分のページのURLと内容となるキーワードをサーチエンジンに登録しておき、内容のカテゴリー別に、ページの紹介文章が表示されるディレクトリ型であった。(初期のYahoo)
しかし、登録するキーワード以外の文字で探そうとすると、情報を見つけることができない。
ロボット型
これらの問題を解決すべく登場したのが、Google のようなロボット型サーチエンジンである。
ロボット型の検索システムでは、クローラーとかロボット(あるいはボット)とか呼ばれるプログラムを使い、Webページの内容をダウンロードし、そこに記載された文字を使ってURLのデータベースを作成する。
- 与えられた URL の先のページをダウンロードする。
- ページ内の文字を単語に切り分けして、それぞれの単語とURLを関連付けてデータベースに保存
- ページ内にリンクが含まれていたら、そのURLで、この作業を再帰的に繰り返す。
サーチエンジンで検索が行われると、クローラーの処理で作られたデータベースに問い合わせ、見つかったURLの情報を表示する。
Googleなどでは、多くのユーザが探したいページを提供するために、たくさん使われている単語を重要語としたり、たくさんのページからリンクされているページを表示順上位に表示するような工夫をしている。
ページランキングを上げるためのWebページの工夫をすることを、SEO (Search Engine Optimization) という。しかし逆にページランキングを不当に上げようと特殊なテクニックのページ作りをする人もいるが、最近では不当なページ作りは逆にランキングが落とされるようになっている。
理解度確認
- URLが与えられてページが見れるまでに行われることを説明せよ。
- サーチエンジンのディレクトリ型とロボット型の違いを説明せよ。
ポート番号とファイアウォールとメール
ポート番号
サーバとなるコンピュータでは、1台のコンピュータで様々なサービスを提供することから、サービスを区別する必要がある。このためにポート番号が使われる。1台毎のコンピュータに割り当てられたIPアドレスを電話番号に例えるなら、ポート番号は内線電話番号に例えることができる。
サーバと通信する場合、サービスを提供するプログラムに応じて標準的なポート番号が決められている。サーバに届いたパケットは、ポート番号に応じてサービスプログラムを起動する。以下の表によく使われるポート番号の一例をあげる。
ポート番号 | プロトコル | 概要 |
20 | ftp | ファイル転送(データ) |
21 | ftp | ファイル転送(命令) |
22 | ssh | リモート接続(暗号対策あり) |
23 | telnet | リモート接続(暗号化なし) |
25 | smtp | 電子メール送信 |
465 | smtps | 電子メール送信(暗号化) |
53 | DNS | ドメインネームサービス |
80 | http | Web |
443 | https | Web(暗号化) |
110 | pop3 | メールダウンロード |
995 | pop3s | メールダウンロード(暗号化) |
143 | imap | メール閲覧 |
993 | imaps | メール閲覧(暗号化) |
137,138,139 | netbios | Windows のファイル共有 |
通信パケットには、送信元IPアドレス、送信元ポート番号、送信先IPアドレス、送信先ポート番号の情報がある。
パソコンがサーバと通信する場合は、(1)自分のIPアドレスを送信元IPアドレス、(2)その時に使われていないポート番号をランダムに選び、送信元ポート番号とする。(3)通信相手のIPアドレスと、(4)通信先のサービスのポート番号をセットして、パケットを送付する。サーバは、サービスを要求してきたクライアントの送信先ポート番号をみて、対応するサーバのプログラムが動作する。プログラムの結果を送り返す時は、送信元と送信先のIPアドレス、ポート番号を入替えてパケットを送信する。
1024未満のポート番号(ウェルノウンポート番号)は、サービスを受けとるために用途が決められているので、通常の通信プログラムでは使われない。これ以外のポート番号は、通信の送信元のポート番号として使われ、エフェメラルポート番号と呼ばれる。
ファイアウォール
ネットワークのサービスの中には、組織外に見せたくないものも多い。また、インターネットでは、悪意のあるプログラマが通信して攻撃を加えてくるかもしれない。基本的には個々のサーバのプログラムで、送信元のプログラムのIPアドレスを見て接続を拒否することもできるが、末端のサーバで設定がいい加減だと攻撃をうけてしまうかもしれない。そこで、組織全体でネットワークを守る必要がでてくる。そこでルータなどの機能で、パケットの送信相手のポート番号や、送信元のIPアドレスをみて、パケットを廃棄する場合がある。こういう、ネットワークからの攻撃を防ぐ装置は、ファイアウォール(防火壁)と呼ばれる。
データベースサーバの保護するためにファイアウォールを設置する例を示す。Webサービスを提供するためのデータベースだけど、インターネットから接続されると情報漏洩が発生するかもしれない。そこでデータベースサーバ(mysql)に接続するための3306ポートは、ファイアウォール(ルータ)で組織外からは接続させない。
許可リスト方式と拒否リスト方式
ファイアウォールの設定では、信頼できる人だけを接続させる許可リスト方式と、怪しい人を除外する拒否リスト方式がある。
許可リスト方式は、接続していい相手のIPアドレスや、ポート番号だけをFireWallを通過させる方式。以前はホワイトリスト方式と呼ぶことが多かった。これとは逆に、攻撃をしてきそうな怪しいIPアドレスや、怪しいポート番号のパケットを捨てて接続させない方式は拒否リスト方式とよぶ。以前はブラックリスト方式と呼ぶことが多かった。学校のサーバは、学内への攻撃を防ぐため、ポート番号については http, https など以外の受信は許可リスト方式となっている。
メールが届くまで
電子メールは、非常に迅速にメッセージを相手に届けることができ、そのメッセージを蓄積・加工・編集・転送できる。また、音声や画像といった情報も、複雑な文字情報に置き換えることで、転送できるようになっている。
メールは、利用者のコンピュータに直接届けられるわけではなく、多くの場合はメールを蓄積するメールサーバに送られる。利用者がメールを読む場合、メールサーバから自分の端末に蓄積されたメッセージを読み込み、メッセージを確認する。このメールのやり取りにおいて、メールを送る時、あるいはメールサーバ間でメールを中継するときには、SMTP(Simple Mail Transfer Protocol) が用いられる。一方、メールサーバからメール
を読み出すときには、POP(Post Office Protocol) やIMAP(Internet Message Access Protocol) と呼ばれるプロトコルが用いられる。最近では、IMAPを使ったメールの読み書きをブラウザの中で実行できる WebMail が使われることが増えている。
メールが届くまでの流れは、aさんが”foo@bar.jp“に送る場合、
- aさんは、自分の組織のメールサーバに、SMTPでメールを送る。
- メールサーバは、メールアドレスのコンピュータ名部分”bar.jp“をDNSに問合せ、そのIPアドレスを調べ、そのコンピュータにSMTPでメールを送る。※
- “bar.jp“のメールサーバは、メールアドレスのユーザ名”foo“を取り出し、各ユーザ毎にメールを保存する。
- “foo”さんは、自分宛のメールを確認するために、POPまたはIMAPで自分のメールサーバ”bar.jp”に接続し、ユーザ名,パスワードで認証して自分宛のメールを受け取る。
※上記の手順2で、相手のメールサーバに直接送れない場合は、コンピュータ名のMXレコードをDNSに問合せを行い、そこで得られたメールサーバに中継を依頼する。
$ nslookup -query=MX fukui-nct.ac.jp. Non-authoritative answer: fukui-nct.ac.jp mail exchanger = 10 fukuinct-ac-jp01c.mail.protection.outlook.com.jp
上記手順4で自分のメールを読みだす際のプロトコルで、POPは一般的に、メールサーバから自分のメール閲覧ソフトに自分宛のメールをダウンロードして削除する。このため、様々なコンピュータでメールを読む人には不便となってきた。IMAPでは、メールを読んでも、既読の目印をつけサーバに残しておく方式であり、別のコンピュータでメールを閲覧したい時にもサーバ上のメールを読むことができる。メールをフォルダに分類して保存することもできる。最近利用される Webメール では、自分が利用しているメールサーバまでは Web の機能で接続し、Webサーバとメールサーバにて IMAP を使う。
通常、SMTPでメールを送る際には、ユーザ認証が行われない。このため、ウィルスに感染したプログラムから迷惑メール(spam)を出すことに利用されることが多い。そこで、SMTP送信の前にPOP/IMAP接続しユーザ認証を行った時だけメールを送ることができる、POP before SMTP(or IMAP before SMTP)といった方式をとる場合も多い。
POP, IMAP, SMTPでは、暗号化されない平文が使われることから、通信内容を暗号化して通信する POPS, IMAPS, SMTPS といったプロトコルも使用される。
理解度確認
- メールの送信から受信までの処理を、それに使われるプロトコルを交えて説明せよ。
- Forms による理解度確認
ドメイン名とDNS
ドメイン名とDNS
インターネットでの通信では、IPプロトコルでコンピュータを指定するが、IPアドレスは無機質で覚えるのが大変であり、コンピュータに名前をつけて利用する。この際に、コンピュータの所属などが分かるようにしたものをドメイン名と呼ぶ。
例えば、電子情報工学科のドメイン名 www.ei.fukui-nct.ac.jp は、ピリオド部分で区切られ、以下のような意味を持つ。
- .jp – 国ドメイン(.uk イギリス,.ch 中国,アメリカは無し)
- .ac – 種別ドメイン(.co.jp,.com:会社,.ne.jp,net:ネットワーク系)
- fukui-nct – 組織ドメイン
- .ei. – サブドメイン(組織内が細分化されている場合)
- www. – ホスト名※
このような省略されていない、対象となるコンピュータを指定するためのドメイン名は、FQDN(Fully Qualified Domain Name)と呼ばれる。FQDNでの名前を ホスト名※ と呼ぶことも多い。
ただしアメリカでは、国ドメインを一般的に使わない※。また最近では、世界的な企業では国ドメインが意味をなさないので、アメリカ以外でも .com や .net といった、汎用トップレベルドメイン(gTLD)が使われる。様々なサービスを展開している企業では、組織種別が意味をなさないため、toyota.jp といった種別ドメインがないドメイン名も増えてきた。高専機構のドメイン名 kosen-ac.jp も、”kosen-ac” が高専機構の組織ドメイン名なので注意。
以下に、主要な組織ドメイン・国ドメインをあげる。
|
※はgTLD |
DNSのしくみ
DNSは、Domain Name Service であり、コンピュータ名(ドメイン名)から、IPアドレスを調べるサービスで、ポート番号53,UDPを使っている。
インターネットに接続する際には、最も身近なDNS※の情報が与えられ、ユーザがコンピュータ名を問い合わせると、身近なDNSがコンピュータのIPアドレスを返してくれる。この際に、検索結果はキャッシュとして一定期間保存される。身近なDNSがそのコンピュータ名を知らない場合は、上位のDNSに問い合わせを行い、DNSルートサーバもコンピュータ名をキャッシュしていない場合は、管理元の組織のDNSに問い合わせが行われる。このようにすることで特定のDNSサーバに問い合わせが集中しないようになっている(負荷分散)。 DNSサーバの情報は DHCP サーバからIPアドレスなどと一緒に取得することができる。

DNSと正引きと逆引き
DNSの使い方としては、一般的な使い方は、ドメイン名からIPアドレスを調べる正引きが多い。ブラウザは http://www.fukui-nct.ac.jp/ というURLが与えられたら、DNSに www.fukui-nct.ac.jp を問い合わせ、104.215.53.205 の結果が得られることで、http://104.215.53.205/ のコンピュータに接続を試みる。
これとは逆に、サーバ側では接続してきた相手のコンピュータが信頼できる相手か調べたい時がある。この時には IPアドレスからドメイン名を調べる逆引きを行う。これにより、IP アドレスをきちんと管理している組織であれば、ドメイン名が分かるのでどの組織から接続されているのか確認ができる。
DNSの情報を調べるためのコマンドは、nslookup を用いる。(詳細は以前の講義資料で確認)
DNSと様々な情報
DNS では、様々な情報が取得できる。IPアドレス以外にも、メールを送ってもらうサーバのIPアドレス(MXレコード)なども取得できる。
((( 正引きの例 ))) $ nslookup www.google.com Server: 172.31.208.1 Address: 172.31.208.1#53 Non-authoritative answer: Name: www.google.com Address: 142.250.206.228 # 調べる度に異なる値が返ってくるかも Name: www.google.com Address: 2404:6800:400a:804::2004 ((( 逆引きの例 ))) $ nslookup 142.250.206.228 228.206.250.142.in-addr.arpa name = kix06s10-in-f4.1e100.net. # 正引きと逆引きが一致していない例 Authoritative answers can be found from: ((( MX レコードを調べる例 ))) $ nslookup -query=MX fukui-nct.ac.jp # MXレコード = そのドメイン宛のメールはどのコンピュータに送ればいい? Non-authoritative answer: fukui-nct.ac.jp mail exchanger = 10 fukuinct-ac-jp01c.mail.protection.outlook.com. ((( AAAA レコードを調べる例 ))) $ nslookup -query=AAAA www.google.com # AAAAレコード = IPv6アドレスを指定した正引き Non-authoritative answer: Name: www.google.com Address: 2404:6800:400a:813::2004
DNSとセキュリティ
DNSは、コンピュータ名とIPアドレスを対応付けるものであり、これには正引き(コンピュータ名からIPアドレスを求める)と、逆引き(IPアドレスからコンピュータ名を求める)がある。セキュリティ対策が厳しい場所では、
- 正引きを使うことで、特定の組織のドメイン名を持つコンピュータからのアクセスを許可/禁止する。(例:国ドメイン.xxからは接続拒否)
- 正引きで、コンピュータ名が登録されている所からのみ許可する。(例:組織ドメイン.fukui-nct.ac.jpからは接続許可)
- IPアドレスから逆引きして求めたコンピュータ名をさらに正引きして同じIPアドレスが求まるかを確認
といった対策を行う。
- DNSのドメイン名は、当初は最初に申請した人に割り当てられる。このため、nintendo.com といったドメイン名を、関係ない人が取得するといったトラブルがあった。(サイバースクワッティング)
- DNSを用いたクラッキングでは、ウィルスに感染させたパソコンに偽物のIPアドレスを教えることで、偽装した別コンピュータに誘導し個人情報を盗む手口がある。(DNSポイズニング)
- 他にもウィルスに感染させた大量のパソコンから、同時にルートサーバに大量のDNSの問合せを送ることで、処理能力を低下させると、インターネット全体でDNS参照ができなくなる攻撃もある。(DNSルートサーバへの分散DoSアタック)
- DNSは、他のコンピュータに接続するための重要な情報だが、独裁国家などでは国にとって不都合な情報が得られるドメイン名のIPアドレスを改ざんしアクセスできないようにすることもある。このため、Google 社では 覚えやすい 8.8.8.8 という IPアドレスの DNS サーバを提供している。この 8.8.8.8 は、DNS の返答速度も速いことから、ブラウザの表示速度を高速化するために自分のPCに設定する人も多い。