やかんです。

集中講義でとってる科目です。メモっていきます。

講義メモ

  • 明日明後日は外部講師の人来るらしい。
    • NRIの人の場合は演習もやってくれるらしい。
  • NAT, ファイアウォール
  • SIセンターというものが東大にある。大学院からの研究室だから、学部生は所属できないのか。
  • 情報セキュリティ白書ってものがあるのか。
  • ダークウェブの仕組みを説明できるくらい理解したいな。
    • 特殊なソフトウェアじゃないと繋げないらしい。これは、特定のソフトウェアのみが該当するサーバーに通信できるってことだよな。
    • 原理的には追跡困難なのか。なんでだ。
  • サイバーセキュリティの第一歩としては、「自分がアクセスできるということは、相手からもアクセスできるということである」ということの理解。
  • ダークウェブの仕組みって、本来民主主義的な事項の実現に寄与するものなのか。
    • cf. Torブラウザ
    • ↑まあ、危ないかもねこれは。

攻撃者による偵察など

  • ホストスキャン
    • ICMPプロトコルを利用して、ホストの存在を確認する。ICMP(Internet Control Message Protcol)はIPを補助するプロトコル。IPを利用して通信したいときに、IPで利用したいネットワークが正常な状態にあるか、などを確認する。
    • だから、これを利用すれば、ホストがいるかいないかがわかる。ホストというのは、ルーターでない通信相手くらいの理解で良いかと。
    • これに関しては、Smurf攻撃が関連話題だよな。
      • ping(ICMPを利用するソフトウェア)で用いられるICMPエコー要求の応答パケットを攻撃対象に大量に送りつける攻撃。
      • ↑これは、自分でICMPエコー要求の応答パケットを送信するんじゃなくて、特定のネットワークに送信もとIPを偽装してエコー要求を大量に送ることで実現。この場合、攻撃者は足がつかない。
  • ポートスキャン
  • OSスキャン / アプリケーションスキャン
    • ホストのOSがなんであるか特定する。
    • OS間で、OSが担当する階層の抽象化は統一されているが、実際には差異がある。この差異を収集して分析すれば、ホストがどのOSで動いているかわかる。
  • 脆弱性スキャン
  • DoS
    • WINNUKEは衝撃的な話だ。windowsがパケット1つで停止する。
  • ルートDNSサーバに対するDDoS攻撃も存在する。
    • ↑これ、最悪の場合「インターネットが落ちる」っていう意味がわからない状況になるわけか。

ネットワーク基礎について

  • 海底ケーブルか。
  • プロトコルは階層化されているものだ、というのを当然のように考えていたけど、階層を経ることでオーバーヘッドが生じてしまうわけか。
  • 物理層
    • cf. ツイストペアケーブル
    • ↑UTPケーブル、STPケーブル
    • 光ファイバ
  • データリンク層
    • NICなど。NICには固有のMACアドレスがある。また、NICにはIPアドレスもついているのか?
    • ↑MACはMedia Access Control
    • L2ネットワーク
  • ネットワーク層
    • ARP(Address Resolution Protocol)
    • ↑IPアドレスからMACアドレスを求めるためのプロトコル。ARPはIPv4でのプロトコルで、IPv6ではICMPv6がこの役割を担っているらしい。
    • arpコマンドというものがある。manで調べられる。
    • 経路制御とかはグラフ理論の応用なのか。これをプロトコルとして体系化するってどういうことだ、、天才だろ。
    • 経路制御プロトコルには2種類ある。EGPとIGP。
    • EGP:Exterior Gateway Protocol → AS間での通信における経路制御プロトコル。
    • IGP : Interior Gateway Protocol → AS内での通信における経路制御プロトコル。
    • tracerouteコマンドというものがある。
      • このコマンドを使うと、通信が経由したルーターを列挙することができる。ルーターを列挙とは、ルーターのIPを取得できるということ。
      • -aオプションをつけると、通信が経由したASを列挙することができる。
    • 関連で、whoisコマンドというものがある。これを使うと、IPアドレス付与の流れ(IANAから始まって、、、)やJPRSの管理者情報(お偉いさんのメアドとか書いてある)や、ドメインを取得した業者などを取得できる。
    • ↑このコマンドはドメインだけじゃなくてIPアドレスも調査できる。
  • トランスポート層
    • この層は当然だけどアルゴリズムの塊だよな。かなりソフトな性格が強い。
    • window size
    • フローコントロール
    • congestion control : 輻輳コントロール。バックオフの話かな?輻輳制御。
    • スロースタート : 送信パケット数を徐々に増やしていき、うまくいかない場合は減らして送信する仕組み。天才としか思えない、
    • TCPスループットの算出はどういうことだ?
東大生やかんのブログ
やかん

↑1、2層についてはスライドで自学した。3層から授業受けてた。

↑自学したところは後日録画で復習します。

改めてネットワーク層

  • MACアドレスは物理、IPアドレスから論理。
    • MACはイーサネット上の識別子。
  • IPv4アドレスの使い回しが発展している。IPv6の利用は進んでるのか?
  • IPアドレスについて、プライベートIPとして利用可能な範囲が事前に定義されている。
  • 原則的に、大陸ごとにIPアドレスが管理されている。
  • IPアドレスを割り振ってもらえるのは、AS番号が付与されている(つまり自律したネットワークだと認められている)機関だけ。
    • あるいは、AS番号が付与されている機関のみが、付与されていない個人などに対してIPアドレスを割り振ることができる。
  • でかいネットワークは、ちゃんと設定しないと管理がめんどくさくなる。端末数がシンプルに多いから。
  • 基本的だが重要なこととして、NATは一方通行。プライベートからネットワークに出る際に、セッション時間単位でグローバルIPとプライベートIPの管理を行う。これに関して、外から内の通信についてNATという規格は使われない。

データリンク層について

  • 3層以上のプロトコルは、「IPアドレスというものが、なんらかのデバイスに対応づけられることを盲信して通信を行う」ということではないだろうか?
    • あるいは、3層以上ではIPアドレスが何にも実質が対応づけられていない。2層のデータリンク層で初めて、IPアドレスが物理的なデバイスに対応づけられる。IPアドレスに実質が与えられる。
  • データリンク層では、フレーミングが行われる。フレームとは、データリンク層以下で用いられる固有の単位である。3層以上ではパケットという単位が用いられる。
    • このとき、パケットという単位は、「物理的に送信されること」を想定していない。物理的な送信には関心がない。この無関心なパケットという単位から、物理的な送信に関心があるフレームという単位に変換する役割をデータリンク層が担っている。
    • このとき、フレーム自体のエラーチェックが必須になるからその役割ももちろんデータリンク層には持たされている。
  • ↑これらの、「物理的に送受信されること」に関心がないパケットというものを、物理的に送受信されることに関心を持ったフレームという単位に直すという役割を担うのがデータリンク層で、この役割がまるっと搭載された技術としてEthernetとかwifiとかの技術がある。
  • 原則的に、1つのLANは1つのEthernetから構成されるはず。
    • でもVLANとか使えば、1つの物理的なLAN内で複数の論理的なLANを構成することが可能。

ASについて

ASについて、tracerouteという観点から見ていきます。例えば、checkinn.jpというドメインを例に見てみます。

まずはtracerouteに-aオプションをつけて実行しますが、その前にtracerouteコマンドの-aオプションについてmanコマンドで見てみましょう。

-a      Turn on AS# lookups for each hop encountered.

らしいです。AS番号も出力するぜ、みたいな意味ですね。

で、traceroute -a checkinn.jpを出力してみます。

traceroute -a checkinn.jp
traceroute to checkinn.jp (118.27.125.243), 64 hops max, 40 byte packets
 1  [AS0] 10.100.0.1 (10.100.0.1)  6.861 ms  16.009 ms  8.932 ms
 2  [AS0] 10.99.0.2 (10.99.0.2)  6.055 ms  5.617 ms  5.295 ms
 3  [AS2501] 157.82.124.249 (157.82.124.249)  8.640 ms  16.039 ms  14.277 ms
 4  [AS2501] ra57-vlan5.nc.u-tokyo.ac.jp (133.11.127.93)  12.196 ms  7.335 ms  7.992 ms
 5  [AS2907] 150.99.190.97 (150.99.190.97)  6.756 ms  4.656 ms  5.719 ms
 6  [AS2907] 150.99.11.33 (150.99.11.33)  7.807 ms  12.978 ms  8.651 ms
 7  [AS0] 210.171.224.65 (210.171.224.65)  8.398 ms  8.359 ms  7.642 ms
 8  * * *
 9  * * *
10  * * *
11  [AS0] 118-27-125-243.virt.lolipop.jp (118.27.125.243)  8.774 ms !Z  6.646 ms !Z  7.616 ms !Z

こうなりました。

これを元に、あるAS番号についてwhoisしてみましょう。

whois AS2907

と入力してもなぜか何も表示されないので、

whois -h whois.radb.net AS2907

これで実行してみます。これは、whois.radb.netというホストを指定しているわけですが、このドメインはRouting Assets Database(RADb)という経路制御に関するデータベースを指します。なので、先のコマンドは、「RADbというデータベースからAS番号がAS2907の情報を引きたい」という意味になります。出力が以下。

whois -h whois.radb.net AS2907

aut-num:        AS2907
as-name:        JPNIC-2Byte-ASBLOCK-AP
descr:          for assignment to JPNIC members
country:        JP
admin-c:        JNIC1-AP
tech-c:         JNIC1-AP
remarks:        Authoritative information regarding AS Number
remarks:        assignments made from within this block can be
remarks:        queried at whois.nic.ad.jp.  To only display English output,
remarks:        add '/e' at the end of command,
remarks:        e.g. 'whois -h whois.nic.ad.jp xxx/e'.
mnt-by:         MAINT-JPNIC
mnt-irt:        IRT-JPNIC-JP
last-modified:  2016-10-17T00:32:11Z
source:         APNIC

aut-num:        AS2907
as-name:        SINET-AS
descr:          National Institute of Informatics
admin-c:        JP00006158
tech-c:         JP00006158
mnt-by:         MAINT-AS2907
changed:        [email protected] 20240301
source:         JPIRR

AS0というのは、AS番号がわからなかったという意味。大学からのネットワークはすべて文科省を通るらしい。

以下、メモです。

  • 通信はASを経由して行われる。ASをノードとみなすことでこれはグラフ理論の応用になる。
  • 存在しないASに対して通信が飛ばされると、パケットは迷子になる。
    • だから、ASが生きているか死んでいるか常に生存確認を発信する必要があるのか。
  • whoisコマンドで何も表示されない場合は何が起きているの?
    • whoisコマンドはwhoisプロトコルを使っている。東大からやると繋がらないけど、みんなが一気にこのコマンドを飛ばしたからか?
    • NATの弊害か。
  • ルーターを経由するということは、ASを経由するということだよな。

トランスポート層

  • ポート番号って、アプリケーションフレンドリーな値なのでは?
    • webページごとに通信するサーバーは違う。1つの端末で、同時にいろんなところに対して通信を行う。
    • ↑これを実現するためには、やっぱコネクション確立ってことで3way handshakeが必要だよね。
  • ポート番号は、OSが管理してくれる。
  • NATは、ポート番号を上書きする場合に何を何に書き換えたかを押さえておく必要があるわけか。
    • てか、NATはポート番号も書き換えるんだな。
  • どのアプリケーションがどのポートを使うかがすでに決まっている?
    • etc/servicesに書いてある。
    • ↑これは共有されているの?
    • ↑well known portってわけか。
#
# Network services, Internet style
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
#
# The latest IANA port assignments can be gotten from
#
#       http://www.iana.org/assignments/port-numbers
#
# The Well Known Ports are those from 0 through 1023.
# The Registered Ports are those from 1024 through 49151
# The Dynamic and/or Private Ports are those from 49152 through 65535
#
# $FreeBSD: src/etc/services,v 1.89 2002/12/17 23:59:10 eric Exp $
#       From: @(#)services      5.8 (Berkeley) 5/9/91
#
# WELL KNOWN PORT NUMBERS
  • パケットとかいうけど、結局送信されるのはフレームだよね?
    • パケットという言葉の定義は曖昧なんだよなっていう印象。
  • これは、いつのコネクションに対して輻輳が行われるわけだけど、Chromeでタブめっちゃ開くと、一つのタブごとに輻輳が行われるわけか。
  • てかアクセスポイントの数は有限だよな。駒場の食堂とかは悲劇的らしい。めっちゃみんなのデバイスが繋がれるけど、アクセスポイントが有限だから捌ききれないと。
  • NATについては、一つのNAT(ゲートウェイ)が1つのグローバルIPアドレスしか利用できないというわけではない。

ネットワーク演習

ネットワークを作る演習。

  • ネットワークを作った瞬間に攻撃がくるような想定らしい。
  • ネットワーク作って、攻撃を発見して攻撃から守る

めも

01-230119GNS3-004https://user004.gns3.sekiya-lab.info/https://weblogin2.si.u-tokyo.ac.jp/guacamole/student004Jugyou@L4(k10.0.1.544404
  • いや、エミュレータえぐい。
interfaces {
    ethernet eth0 {
        hw-id 0c:96:48:1a:00:00
    }
    ethernet eth1 {
        hw-id 0c:96:48:1a:00:01
    }
    ethernet eth2 {
        hw-id 0c:96:48:1a:00:02
    }
    loopback lo {
    }
}
protocols {
}
system {
    config-management {
        commit-revisions 100
    }
    conntrack {
        modules {
            ftp
            h323
            nfs
            pptp
            sip
            sqlnet
            tftp
        }
    }
    console {
        device ttyS0 {
            speed 115200
        }
    }
    host-name vyos
    login {
        user vyos {
            authentication {
                encrypted-password ****************
                plaintext-password ****************
            }
        }
    }
    ntp {
        server time1.vyos.net {
        }
        server time2.vyos.net {
        }
        server time3.vyos.net {
        }
    }
    syslog {
        global {
            facility all {
                level info
            }
            facility protocols {
                level debug
            }
        }
    }
}
  • pingコマンドでping floodを行うことが可能なのか。
vyos@vyos# show interfaces 
 ethernet eth0 {
+    address 192.168.10.1/24
     hw-id 0c:89:c7:fb:00:00
 }
 ethernet eth1 {
+    address 192.168.30.1/24
     hw-id 0c:89:c7:fb:00:01
 }
 ethernet eth2 {
+    address 172.16.10.1/24
     hw-id 0c:89:c7:fb:00:02
 }
 loopback lo {
 }
  • ospfの設定か。
Nmap done: 1 IP address (1 host up) scanned in 0.31 seconds
Starting Nmap 7.80 ( https://nmap.org ) at 2024-08-05 07:46 UTC
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers
Nmap scan report for 172.16.10.10
Host is up (0.0056s latency).
All 1000 scanned ports on 172.16.10.10 are closed
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
07:50:19.732997 IP 172.16.30.1 > 224.0.0.5: OSPFv2, Hello, length 44
07:50:29.733026 IP 172.16.30.1 > 224.0.0.5: OSPFv2, Hello, length 44
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth3, link-type EN10MB (Ethernet), capture size 262144 bytes
07:51:24.408317 ARP, Request who-has 192.168.122.1 tell 192.168.122.2, length 28
07:51:25.432333 ARP, Request who-has 192.168.122.1 tell 192.168.122.2, length 28
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
07:52:40.570391 IP 192.168.20.2 > 224.0.0.5: OSPFv2, Hello, length 48
07:52:40.825714 IP 192.168.20.1 > 224.0.0.5: OSPFv2, Hello, length 48
07:52:50.570319 IP 192.168.20.2 > 224.0.0.5: OSPFv2, Hello, length 48
07:52:50.825721 IP 192.168.20.1 > 224.0.0.5: OSPFv2, Hello, length 48

↑こいつらどういう意味だ?こいつらは正常なわけだ。えぐいのきたわ。

07:54:59.913901 IP 127.82.34.68.18134 > 172.16.20.10.22: Flags [S], seq 212848925, win 512, length 0
07:54:59.913902 IP 157.145.54.90.18135 > 172.16.20.10.22: Flags [S], seq 1645304866, win 512, length 0
07:54:59.913902 IP 215.243.69.110.18136 > 172.16.20.10.22: Flags [S], seq 454976427, win 512, length 0
07:54:59.917926 IP 35.57.98.231.18145 > 172.16.20.10.22: Flags [S], seq 1568740006, win 512, length 0
07:54:59.919977 IP 220.193.171.155.18147 > 172.16.20.10.22: Flags [S], seq 1613305629, win 512, length 0
07:54:59.921721 IP 220.222.16.162.18149 > 172.16.20.10.22: Flags [S], seq 297058995, win 512, length 0
07:54:59.923880 IP 172.16.10.10.83 > 172.16.30.10.35632: Flags [R.], seq 0, ack 3067688445, win 0, length 0
07:54:59.932034 IP 172.16.10.10.1028 > 172.16.30.10.35632: Flags [R.], seq 0, ack 3067688445, win 0, length 0
07:54:59.934934 IP 143.123.225.102.18162 > 172.16.20.10.22: Flags [S], seq 1510495172, win 512, length 0
07:54:59.936958 IP 35.9.42.229.18164 > 172.16.20.10.22: Flags [S], seq 739892025, win 512, length 0
07:54:59.938408 IP 170.247.42.143.18165 > 172.16.20.10.22: Flags [S], seq 375941268, win 512, length 0
07:54:59.951909 IP 172.16.10.10.900 > 172.16.30.10.35632: Flags [R.], seq 0, ack 3067688445, win 0, length 0
07:54:59.953848 IP 42.194.142.172.18181 > 172.16.20.10.22: Flags [S], seq 761064740, win 512, length 0
07:54:59.957025 IP 162.138.225.23.18183 > 172.16.20.10.22: Flags [S], seq 1928670768, win 512, length 0
07:54:59.958580 IP 88.139.150.49.18185 > 172.16.20.10.22: Flags [S], seq 83781015, win 512, length 0
07:54:59.960505 IP 172.16.10.10.49152 > 172.16.30.10.35632: Flags [R.], seq 0, ack 3067688445, win 0, length 0
07:54:59.968935 IP 149.189.151.180.18191 > 172.16.20.10.22: Flags [S], seq 315984367, win 512, length 0

大量にospfきてんな。

ファイアウォール設定してるはずだがなんも攻撃防御できないんだけどおー。どういうことー。

firewall {
    name block-on-eth0-1 {
        default-action drop
        rule 10 {
            action reject
            destination {
                address 172.16.20.10/24
            }
            protocol tcp
            source {
                address 172.16.30.10/24
            }
        }
        rule 20 {
            action reject
            destination {
                address 172.16.10.10/24
            }
            protocol tcp
        }
        rule 30 {
            action reject
            protocol tcp
            source {
                address 172.16.30.10/24
            }
        }
    }
}
interfaces {
    ethernet eth0 {
        address 172.16.30.1/24
        firewall {
            in {
                name block-on-eth0-1
            }
        }
        hw-id 0c:d5:99:29:00:00
        offload {
            gro
            gso
            sg
            tso
        }
    }
    ethernet eth1 {
        address 192.168.10.2/24
        hw-id 0c:d5:99:29:00:01
        offload {
            gro
            gso
            sg
            tso
        }
    }
    ethernet eth2 {
        address 192.168.20.2/24
        hw-id 0c:d5:99:29:00:02
        offload {
            gro
            gso
            sg
            tso
        }
    }
    ethernet eth3 {
        address 192.168.122.2/24
        hw-id 0c:d5:99:29:00:03
        offload {
            gro
            gso
            sg
            tso
        }
    }
}

結局できんかったな。。

質問

  • ちょっと話戻ってしまいすみません。理解が浅いのですが、u-tokyo wifiが巨大なネットワークであるということは、この巨大なネットワークにゲートウェイが1つしかないということですか?
    • そうらしい。ファイアウォールもとんでもない数のトラフィックをリアルタイムに捌いている。NATも。ゲートウェイも。えぐい数のトラフィックをリアルタイムに捌くのか。
    • ↑東大の場合、ファイアウォールにめっちゃお金積んでるみたい。
    • wifiという技術は、大人数には向いていないらしい。それなりの広さの空間にそれなりの人数という場合は向いている。が、狭い空間に大量の人数という場合はwifiが向いていない。電波干渉するし。一定程度を超えると、アクセスポイントを増やしても効率が上がらないらしい。
  • ファイアウォールにお金を積むというのは、スペックの高いサーバーにファイアウォールを持たせるということですか?ぽこぽこ質問すみません。。

今後やりたいこと

  • ダークウェブの仕組みを説明できるくらい理解したいな。
  • ICMPとか、知ってはいるが理解してはいない。
  • 階層モデルの物理層が理解できたらめっちゃ嬉しいよな。。
  • 光ファイバを勉強して理解したい。
  • NICについて理解したい。
  • データリンク層について、それがなんなのかとか全然理解できていない。

てな感じで今日を終えました。お疲れ様でしたー、最後までお読みいただきありがとうございます。