15
Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm Solution Midterm Solution 1 Traffic analysis using Wireshark (10 pt) Given the file traffic.pcapng, please answer the following questions: 1. Which devices had possibly been involved in port-scanning attack(s)? Find the IP addresses and MAC addresses of all attackers and victims. (3 pt) Ans: 共有兩起掃 port 事件,140.112.31.1 140.113.69.135 port192.168.48.85 140.112.30.32 portTCP UDP 理論上各有 65535 port,特定的 TCP UDP port 即對應到一項服務 (或一 項網路協定)。對某主機掃 port 指的是對該主機 TCP UDP port 做掃一遍,送訊息給該 主機等其回應,來確認該 port 是否開著,若有回應則某種程度上可表示該 port number 對應的 服務是開著,可以針對該服務(或該協定)進一步做惡意的嘗試。掃 port 通常不會 65535 port 全掃,如知名掃 Port 工具 NMAP 預設只掃 TCP 重要的 Port 1000 個。所以我們要找 的目標會通常有以下特徵:攻擊方對受害方發出上百到數萬個 TCP (UDP,但解法類似不贅 ) 封包,每個封包幾乎都針對不同的 Port,很少有重複;而受害方對於收到的封包則不一定 會做回應。 Step 1: 既然掃 Port 的進行依賴 IP + TCP,可將 Layer 3 IPLayer 4 TCP 的濾掉: eth.type == 0x800 || vlan.etype == 0x800 留下 Layer 3 IP 的封包。 ip.proto == 6 留下 Layer 4 TCP 封包。 Step 2: 既然攻擊者不太可能對單一主機的單一 port 送出太高的流量,我們反而可以將對單一 port 稍高的流量給濾掉,留下流量相對稀疏的 port。譬如:無論誰對誰送,牽涉到 TCP port 80 443 的流量通常稍高,而這是正常網頁傳輸協定所用的 Port,可將他濾掉: tcp.dstport != 80 && tcp.srcport != 80 多為正常 HTTP 網頁傳輸 tcp.dstport != 443 && tcp.srcport != 443 多為正常 HTTPS 網頁傳輸 tcp.dstport != 22 && tcp.srcport != 22 多為正常 SSH 連線 Step 3: 由觀察可發現,本次給的流量近一半是 Iperf 流量,用到 TCP port 5001,也可將之濾掉, 且用類似觀察,將某個 SRC port 到另一個 DST port 重複多次的傳送濾掉: tcp.dstport != 5001 && tcp.srcport != 5001 濾掉 Iperf 流量 tcp.dstport != 3306 && tcp.srcport != 6000 濾掉某 X11 一直往 Mysql 的流量 tcp.dstport != ??? && tcp.srcport != ??? 看你要不要濾的更仔細 Step 4: 到次為止應該剩下不到 8000 個封包。既然掃 port 通常需要上百至數萬個封包,則可以肉 眼觀察,尋找某台主機一直對另一台主機送 TCP SYN 的封包 (可以再加一條 tcp.flags == 2),且都是不同的 Port。符合者即為 Port-scanning 的攻擊方與受害方。 1

Midterm Solution 1 Traffic analysis using Wireshark (10 pt)hsinmu/courses/_media/nasa... · 2016-05-13 · Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Midterm Solution 1 Traffic analysis using Wireshark (10 pt)hsinmu/courses/_media/nasa... · 2016-05-13 · Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm

Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm Solution

Midterm Solution

1 Traffic analysis using Wireshark (10 pt)

Given the file traffic.pcapng, please answer the following questions:

1. Which devices had possibly been involved in port-scanning attack(s)? Find the IP addressesand MAC addresses of all attackers and victims. (3 pt)Ans:共有兩起掃 port事件,140.112.31.1對 140.113.69.135掃 port,192.168.48.85對 140.112.30.32掃 port。TCP 與 UDP 理論上各有 65535 個 port,特定的 TCP 或 UDP port 即對應到一項服務 (或一項網路協定)。對某主機掃 port 指的是對該主機 TCP 或 UDP 的 port 做掃一遍,送訊息給該主機等其回應,來確認該 port 是否開著,若有回應則某種程度上可表示該 port number 對應的服務是開著,可以針對該服務(或該協定)進一步做惡意的嘗試。掃 port 通常不會 65535 個port 全掃,如知名掃 Port 工具 NMAP 預設只掃 TCP 重要的 Port 約 1000 個。所以我們要找的目標會通常有以下特徵:攻擊方對受害方發出上百到數萬個 TCP (或 UDP,但解法類似不贅述) 封包,每個封包幾乎都針對不同的 Port,很少有重複;而受害方對於收到的封包則不一定會做回應。

Step 1: 既然掃 Port 的進行依賴 IP + TCP,可將 Layer 3 非 IP、Layer 4 非 TCP 的濾掉:eth.type == 0x800 || vlan.etype == 0x800 留下 Layer 3 為 IP 的封包。ip.proto == 6 留下 Layer 4 為 TCP 封包。

Step 2: 既然攻擊者不太可能對單一主機的單一 port 送出太高的流量,我們反而可以將對單一port 稍高的流量給濾掉,留下流量相對稀疏的 port。譬如:無論誰對誰送,牽涉到 TCPport 80 和 443 的流量通常稍高,而這是正常網頁傳輸協定所用的 Port,可將他濾掉:tcp.dstport != 80 && tcp.srcport != 80 多為正常 HTTP 網頁傳輸tcp.dstport != 443 && tcp.srcport != 443 多為正常 HTTPS 網頁傳輸tcp.dstport != 22 && tcp.srcport != 22 多為正常 SSH 連線

Step 3: 由觀察可發現,本次給的流量近一半是 Iperf 流量,用到 TCP port 5001,也可將之濾掉,且用類似觀察,將某個 SRC port 到另一個 DST port 重複多次的傳送濾掉:tcp.dstport != 5001 && tcp.srcport != 5001 濾掉 Iperf 流量tcp.dstport != 3306 && tcp.srcport != 6000 濾掉某 X11 一直往 Mysql 的流量tcp.dstport != ??? && tcp.srcport != ??? 看你要不要濾的更仔細

Step 4: 到次為止應該剩下不到 8000 個封包。既然掃 port 通常需要上百至數萬個封包,則可以肉眼觀察,尋找某台主機一直對另一台主機送 TCP SYN 的封包 (可以再加一條 tcp.flags== 2),且都是不同的 Port。符合者即為 Port-scanning 的攻擊方與受害方。

1

Page 2: Midterm Solution 1 Traffic analysis using Wireshark (10 pt)hsinmu/courses/_media/nasa... · 2016-05-13 · Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm

Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm Solution

2. Please filter out every ARP request in VLAN 5 between the time 2016-4-13 14:09:00 and 2016-4-13 14:10:00. Save the filtered packets to a separate .pcapng file. (4 pt)vlan.id==5 && frame.time > "2016-4-13 14:09:00" && frame.time < "2016-4-1314:10:00" && arp.opcode == 1 即可過濾出,用 export 可以將濾出的 Packet 存下來。

3. Please determine which device had pinged 8.8.8.8, successfully got the reply, and had loggedinto PTT server via SSH. Find its IP address and MAC address. (3 pt)Ans:[192.168.48.85], [140.112.31.1]

Step 1: 由 ip.dst==8.8.8.8 && icmp過濾出送往 8.8.8.8的 ICMP封包。符合者為 [192.168.48.84],[192.168.48.85], [192.168.48.86], [140.112.31.1]。但實際上 192.168.48.84這台送的 ICMP封包,出現 Destination Unreachable和 Port unreachable的訊息。該類封包其實並非由 ping送出,而可能是 firefox 或其他瀏覽器用來做 DNS prefetching 的封包。若不知道瀏覽器的機制,也可改成 ip.src==8.8.8.8 && icmp,來過濾出從 8.8.8.8 回來的 ICMP 封包,確認是否成功得到 Echo(ping) 的回應。

Step 2: 由 nslookup可以查出 PTT主機 (ptt.cc)的 IP有六個,140.112.172.1~5和 140.112.172.11。ssh && ip.dst >= 140.112.172.1 && ip.dst <= 140.112.172.11 可以濾出曾和 PTT主機建立 SSH 連線者,[192.168.48.84], [192.168.48.85], [140.112.31.1]。

Step 3: 比對前兩步篩出的名單,重疊者 [192.168.48.85], [140.112.31.1] 即為答案,再挑個封包找出他們的 MAC Address 即可。

2

Page 3: Midterm Solution 1 Traffic analysis using Wireshark (10 pt)hsinmu/courses/_media/nasa... · 2016-05-13 · Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm

Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm Solution

2 Cisco Basics (20 pt)

以下 <tid> 為組別編號 (01-19),請自行取代成自己的組別。請以 SSH 連線到 10.8.0.4,帳號密碼皆為 team<tid>,登入後進行以下操作:

1. 修改自己的密碼 (只要不是預設密碼就可以)(4 pt)(config)#username teamXX secret somePasswordor(config)#username teamXX secret 0 somePassword

2. 對於 interface Gi0/<tid> 做以下設定:

• 移除原本的設定 (4 pt)(config)#defaults interface Gi0/XXor(config)#interface Gi0/XX(config-if)#no switchport access vlan(config-if)#no switchport mode access (不一定要)(config-if)#no description (不一定要)

• 將介面敘述設為 team<tid> (在 user mode 及 privileged mode 可以用 show interfacesstatus 指令看到) (4 pt)(config-if)#description teamXX

• 將該介面設為 trunk (4 pt)(config-if)#switchport mode trunk

• trunk 只允許 VLAN <100 + tid> 以及 VLAN 252 通過 (4 pt)(config-if)#switchport trunk allowed vlan 1XX,252

3

Page 4: Midterm Solution 1 Traffic analysis using Wireshark (10 pt)hsinmu/courses/_media/nasa... · 2016-05-13 · Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm

Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm Solution

3 Firewall and DNS (60 pt)

3.1 Firewall (30 pt)

你是一家公司的網管。每天員工們都可以在上班時間愉快的上網。有一天老闆覺得員工上班用facebook 的問題頗為嚴重,要求你不讓員工連上 facebook(www.facebook.com)。不過因為生意上的需要,老闆還是要能上 facebook。

1. 切 vlan2(192.168.2.254/24) for 員工和 vlan99(192.168.99.254/24) for 老闆。VLAN 和之前作業一樣是 802.1Q 的 tagged VLAN,一樣要自己在 Lubuntu 上生 interface。(3 pt)

2. vlan2 與 vlan99 都能正常上網,不必背 IP,也不必設定自己電腦的 IP。但是 vlan2 不能用https 連上 facebook,vlan99 可以。(9 pt)

3. 為了維護老闆電腦的機密資料,vlan2 碰 (ping and ssh) 不到 vlan99 的電腦。但是 vlan99 碰的到 vlan2 的電腦。(6 pt)3.1.1 ~3.1.3 基本上作業都做過了。唯一需要注意的是 block facebook 是可以建一個 alias 打網址 www.facebook.com 的,不一定要用 nslookup 把所有 IP 都查完。

4. 老闆想從國外也能連回自己的電腦工作。請嘗試使 windows 可以 ssh 到防火牆後面 vlan99 老闆的電腦。(12 pt)因為 pfSense 有做 NAT,所以這題是要求要在 pfSense 做 port forwarding,把 pfSense 對外的12345 port forward 到 192.168.99.10(boss 的 IP) 的 22 port。這樣一來只要 Windows 碰的到pfSense,當 ssh pfSense IP 的 12345 port 時,它就會自動幫你轉送到 boss 的 22 port。設定的頁面在 firewall -> NAT -> port forward。注意不能讓 WAN 的 default block rule 擋住 ssh 的封包。以下提供各個頁面設定完後的結果:

4

Page 5: Midterm Solution 1 Traffic analysis using Wireshark (10 pt)hsinmu/courses/_media/nasa... · 2016-05-13 · Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm

Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm Solution

3.2 DNS (30 pt)

1. 老闆突發奇想請你架一台公司自己的 DNS 伺服器,請幫助他架設並且設定讓老闆的電腦和員工電腦使用這台 DNS 伺服器。(公司資源有限,沒有多的伺服器可以用,所以聰明的網管你只好幫老闆把 DNS 伺服器架在老闆的電腦上。) (9 pt)安裝 bind9,考試時給的 VM 已經裝好了幫你們節省時間$ sudo apt-get update (視需要)$ sudo apt-get install bind9

設定使用的 DNS 伺服器$ sudo vim /etc/resolv.confnameserver <DNS server IP>由於 Lubuntu下有用 resolvconf管理 resolv.conf所以要修改/etc/resolvconf/resolv.conf.d/base,不然 resolv.conf 的變更之後會被 resolvconf 蓋掉

檢測在 boss、employee 兩台 dig 都應該可以順利查到,且回傳 server 是自己架的 server$ dig www.google.com;; Query time: 0 msec;; SERVER: <your DNS server IP>#53

2. 為了避免往後可能產生不必要的麻煩,請不要讓 vlan2, vlan99 網段以外的 IP 可以透過這台做DNS 查詢。(Hint: allow-recursion) (9 pt)

$ sudo vim /etc/bind/named.conf.optionsoptions {

#略allow-recursion {192.168.2.254/24; 192.168.99.254/24; localhost; };

}

注意變更完 bind9 設定都要記得$ sudo service bind9 reload

檢測

5

Page 6: Midterm Solution 1 Traffic analysis using Wireshark (10 pt)hsinmu/courses/_media/nasa... · 2016-05-13 · Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm

Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm Solution

依然要能通過第一題的檢測不在 vlan2也不在 vlan99的機器使用這台DNS server只能查到後面小題會建立的 nasagroup[GroupID].com 下的 domain name,不能做 recursion query(透過這台幫忙查其他的)因為本次環境沒有 vlan2, vlan99 以外的機器所以無法測試

3. 老闆受夠難記的 ip 了,請幫他在 DNS server 上設定“boss.nasagroup<Group ID>.com”指向老闆的電腦,以及“employee.nasagroup<Group ID>.com”指向員工的電腦 (6 pt)在/etc/bind/named.conf.local 新增 zone "nasagroup[Group ID].com" 並建立 zone file、加入 SOA record (可參考上課投影片)加入下兩項 recordboss IN A <boss IP>employee IN A <employee IP>record 變更 serial number 也要記得更新,雖然這次的環境應該是沒有影響

檢測$ dig boss.nasagroup[Group ID].com$ dig employee.nasagroup[Group ID].com

4. 老闆請你幫員工的電腦設一個別名叫做”e.nasagroup<Group ID>.com”,想必是因為老闆想要節省寶貴的時間而不是記不得 employee 怎麼拼。你有種預感,性格古怪的老闆之後很有可能會再請你幫他設定其他別名,為了維護方便,請將別名全部指向最初設定的 domain name 而不是IP 位址。(6 pt)加入下列 recorde IN CNAME employee

檢測$ dig e.nasagroup[Group ID].com

MAC flapping 問題

這次似乎有人在匯入 VM(.ova 檔案) 時忘記勾選” 重設 MAC 位址”MAC 位址相同的 VM 透過設定成 bridge 接上 204 switch 的不同 port 的話就會發生 MAC flapping進而導致你們未重設 MAC 的 VM 網速很慢、ping 大量 packet loss 等等現象

6

Page 7: Midterm Solution 1 Traffic analysis using Wireshark (10 pt)hsinmu/courses/_media/nasa... · 2016-05-13 · Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm

Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm Solution

4 SSH (40 pt)

1. SSH public key authentication (6 pt)使用 SSH 連線到遠端主機時,除了可以使用密碼登入,也可以使用公鑰認證登入。在這個題目裡,我們要用公鑰認證登入工作站。請產生一組公鑰和私鑰,其中公鑰必須要上傳到工作站上,而私鑰則要妥善保管,不可以讓別人知道。

• 金鑰類型必須是 RSA 3072-bit 以上,或是 ECDSA 256-bit 以上,不可以用 DSA。ssh-keygen -t rsa -f 3072 -f <檔名> 產生 RSA 金鑰或是 ssh-keygen -t ecdsa -f 256 -f <檔名> 產生 ECDSA 金鑰接著把<檔名>裡的內容寫進工作站上的 ~/.ssh/authorized_keys 檔案最後 ssh -i <檔名> user@host 即可成功用公鑰認證登入工作站。

• 三個人分別要產生三組金鑰,分別用於登入三個人的工作站帳號。以上指令換檔名執行三次即可。

• 私鑰檔名不可以是 ~/.ssh/id_rsa 或 ~/.ssh/id_ecdsa。記得產生金鑰時要指定檔名。

• 私鑰必須設定密碼,不可以明文存在硬碟上。出現 Enter passphrase 提示,記得要輸入密碼不要直接按 Enter 跳過。

為什麼要用公鑰認證?

• 可以關閉伺服器上的密碼認證功能,避免暴力猜密碼攻擊。• 密碼認證時伺服器會收到你的密碼,公鑰認證時伺服器不會收到你的私鑰。因此即使要連線的主機已經被攻陷,SSH 伺服器被替換成攻擊者的版本,也不需要擔心密碼因為登入而被竊取。

2. SSH local forwarding (10 pt)SSH 除了可以在遠端主機上執行指令,也可以將遠端主機才能連上的 port 轉回給本機,讓本機的程式透過遠端主機間接連上服務。在這個題目裡,我們要使用本機的 telnet 程式連上只有工作站才能使用的 echo server。

• 使用 SSH 連線到工作站上。ssh -L 4907:intern.csie.ntu.edu.tw:7 user@host本機 port 必須大於 1023,因為數字較小的 port 預設是保留給 root 使用的。

• 在本機執行 telnet localhost <某個自己指定的 port> 必須要能透過工作站連到intern.csie.ntu.edu.tw:7。telnet localhost 4907 按 Ctrl-] 回到 telnet 指令提示,輸入 q 離開 telnet 程式。

為什麼要使用 local forwarding?

• 有些 client 程式需要大量圖形資源,不適合直接在伺服器上執行。• 避免把程式使用或產生的機密資料放置在公開的伺服器上,降低被攻擊而造成機密資料外洩的風險。

主機 intern.csie.ntu.edu.tw 上用什麼方法來限定只有工作站可以連線?這臺主機設定了 nftables 規則,設定檔如下:

table inet filter {set workstations {type ipv4_addr

elements = {

7

Page 8: Midterm Solution 1 Traffic analysis using Wireshark (10 pt)hsinmu/courses/_media/nasa... · 2016-05-13 · Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm

Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm Solution

140.112.30.32, # linux1140.112.30.33, # linux2... 以下省略

}}chain input {

type filter hook input priority 0;ct state { established, related } accept;ct state invalid drop;iif lo accept;ip protocol icmp accept;ip6 nexthdr icmpv6 accept;ip saddr @workstations tcp dport echo accept;reject;

}chain output {

type filter hook output priority 0;}chain forward {

type filter hook forward priority 0;}

}

3. SSH remote forwarding (10 pt)SSH 不只可以將遠端的服務轉回給本機的服務使用,也可以將本機的服務轉給遠端主機使用。在這個題目裡,我們要讓遠端主機可以連線回本機。

• 本機安裝並啟動 SSH 伺服器。sudo apt install openssh-server

• 使用 SSH 連上到工作站上。ssh -R 10022:localhost:22 user@host

• 能在工作站透過自己指定的 port 用 SSH 連線回本機。ssh -oPort=10022 localuser@localhost

為什麼要使用 remote forwarding?

• 本機如果在 NAT 之後,可以利用這個功能把本機的 port 轉送到遠端主機上,透過遠端主機就能讓本機的服務在外面能夠存取。

4. SSH SOCKS proxy (14 pt)如果我們有很多服務必須要透過遠端主機的網路才能存取,透過 local forwarding 功能把每個要使用的 port都轉送回本機是一大麻煩。這時候可以請 SSH client在本機啟動一個 proxy server,這樣我們只要指定要使用的 proxy server 就能連上遠端服務。

• 使用 SSH 連上到工作站上。ssh -D 14011 user@host

• 設定瀏覽器使用本機上 SSH 啟動的 proxy server 來對外連線。Firefox開啟「偏好設定」->「進階」->「網路」->「設定」->「手動設定 Proxy」->「SOCKS主機」填入 localhost,「Port」填入 14011。

• 連線到 https://icanhazip.com/,確認顯示的 IPv4 位址是工作站的。直接在網址列輸入 https://icanhazip.com/。

8

Page 9: Midterm Solution 1 Traffic analysis using Wireshark (10 pt)hsinmu/courses/_media/nasa... · 2016-05-13 · Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm

Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm Solution

Bonus!! (20 pt)

5. 透過 SSH 使用 Git 版本管理軟體 (8 pt)現在有很多應用程式支援透過 SSH 來加密傳輸資料,但是這也代表有些時候你無法控制 SSH指令執行使用的參數,因為 SSH 是由應用程式啟動,而不是你手動輸入指令執行的。這時候為了讓 SSH 能用正確的設定執行,就必須要將設定值存在設定檔才行。

• 三個人分別在自己的工作站家目錄開新資料夾並建立空白的 git repo (git init --bare)。mkdir ~/midterm-git-repocd ~/midterm-git-repogit init --bare

• 修改本機的 ~/.ssh/config,指定不同使用者執行時要使用的公鑰。在 ~/.ssh/config 填入以下設定:Host hostUser userIdentityFile <私鑰檔名>

• 在本機執行 git clone ssh://user@host/path/to/git/repo 指令,三個人的 git repo都必須能成功下載到本機,而且是用公鑰認證連線到工作站。git clone [email protected]:midterm-git-repo 或是git clone [email protected]/ /midterm-git-repo

6. SSH agent (6 pt)你可能已經開始覺得,每次都要輸入私鑰密碼才能連線到遠端主機,使用起來很不方便。事實上我們可以透過一種稱為 SSH agent 的程式,把解密後的私鑰暫時存著在記憶體中。我們只需要事先告知 SSH agent 會使用到私鑰和密碼,SSH agent 就能在 SSH 執行時協助完成認證,而不需要每次連線都輸入解密密碼。

• 在本機執行 SSH agent,並確認存放 socket 檔的資料夾只有現在的使用者可以存取。ssh-agent -a $XDG_RUNTIME_DIR/ssh-agent-socketexport SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/ssh-agent-socket

• 將可連線到工作站的私鑰加入 SSH agent。ssh-add <私鑰檔名>

• 確定可以不用輸入任何密碼就連上工作站。ssh user@host

為什麼要使用 SSH agent?

• 即使私鑰檔案有加密,也可以輕鬆免密碼使用。• 使用 SSH agent 時,實際上連網的 SSH client 不會把私鑰讀進記憶體裡,即使 SSH client被發現可洩漏記憶體內容的安全漏洞,也不容易讓私鑰被惡意的伺服器竊取。可以參考幾個月前公佈的 CVE-2016-0777 和 CVE-2016-0778。

為什麼題目裡說 SSH agent 是「一種」程式而不是「一個」程式?

• 因為除了 OpenSSH Project 官方提供的 ssh-agent 指令,也有其他相容的實做。例如GNOME 桌面環境內建的 GNOME Keyring 軟體就有提供 SSH agent 功能。

7. SSH agent forwarding (4 pt)有些時候我們會需要在遠端的機器上使用 SSH,但是我們通常不會想要把本機的私鑰傳送到遠端主機上,因為對外開放的機器比較容易遭受攻擊,系統安全設定也不一定是我們可以控制的。這時候我們有一種風險較低的處理方法:將本機 SSH agent 的 socket 暫時轉送給遠端機器使用,讓遠端機器在無法存取私鑰檔的情況下仍能使用 SSH。

9

Page 10: Midterm Solution 1 Traffic analysis using Wireshark (10 pt)hsinmu/courses/_media/nasa... · 2016-05-13 · Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm

Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm Solution

• 在本機執行 SSH 並將可連線到工作站的私鑰加入。ssh-add <私鑰檔名>

• 在工作站上可以免密碼登入其他臺工作站。ssh -A user@host 登入工作站ssh-add -L | grep <私鑰檔名或註解> > wskey.pub 取出公鑰檔ssh -i wskey user@host 成功免密碼登入另外一臺工作站。雖然實際上私鑰檔 wskey 不存在,只有公鑰檔 wskey.pub 有真正存在遠端主機上,但是 SSH 因為會使用 SSH agent而不會嘗試去讀取私鑰檔。

轉送 SSH agent 有什麼風險?

• 遠端主機的管理者如果不可信任,或是主機已經被攻破,則可以利用這個轉送的 SSHagent socket 盜用帳號,連線到原本他們無權限存取的系統。因此使用這項功能之前,一定要確認遠端主機的管理者是自己信任的人,而且有經常維護和檢查系統。

• 即使如此,使用 SSH agent 轉送功能還是比直接把私鑰上傳到遠端主機好,因為 SSHagent 只能用來登入和讀取公鑰清單,不能取得私鑰。

8. SSH askpass (2 pt)有些使用 GUI 的應用程式雖然有支援使用 SSH,但是並沒有提供輸入登入用密碼或解鎖私鑰密碼的視窗。如果我們沒有事先設定好 SSH agent,就可能會因為 SSH 無法讀到密碼而登入失敗。這時候我們可以請 SSH 使用指定程式顯示視窗,改用 GUI 輸入密碼。

• 關閉 SSH agent。unset SSH_AUTH_SOCK

• 執行 setsid ssh user@host -- cat /etc/motd,不可自行增減任何參數。• 可以在不透過終端機輸入密碼的情況下成功登入,並看到工作站的登入訊息。

export SSH_ASKPASS=/path/to/ssh-askpasssetsid ssh user@host -- cat /etc/motd 即會跳出視窗。

10

Page 11: Midterm Solution 1 Traffic analysis using Wireshark (10 pt)hsinmu/courses/_media/nasa... · 2016-05-13 · Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm

Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm Solution

5 System Administration (50 pt)

5.1 Shell Script (20 pt)

#!/bin/sh

# sol 1ps -el | sed -e '1d' | awk '{

if ($3 in count) {count[$3]++

} else {count[$3] = 1

}} END {

for (uid in count) {print uid, count[uid]

}}'

# sol 2ps -el --no-headers | awk '{print $3}' | sort | uniq -c | awk '{print $2, $1}'

5.2 Storage (30 pt)

假設用於製作 raid 的磁碟是 /dev/sdb, /dev/sdc用於製作加密磁碟的是 /dev/sdd.另假設希望的掛載點分別是 /mnt/raid 和 /mnt/crypt.

1. 請在 Virtualbox 新增兩個 1GB 磁碟,並建立一個符合以下條件的 RAID:

• RAID 1• ext4

磁碟中的資料必須要在移除一個磁碟後仍然可以正常存取。$ mdadm --create /dev/md0 --level=1 --raid-device=2 /dev/sdb /dev/sdc$ mkfs.ext4 /dev/md0

2. 新增另一個 1GB 磁碟,並加密它。$ cryptsetup -y -v luksFormat /dev/sdd$ cryptsetup luksOpen /dev/sdd secretdisk$ mkfs.ext4 /dev/mapper/secretdisk

3. 設定使得前二題中的磁區能在開機時被 mount。Mount 的目錄請自行決定並創建。RAID part$ blkid | grep /dev/md0找出 /dev/md0 的 UUID 在 /etc/fstab 中加入一行UUID=<UUID> /mnt/raid ext4 defaults 0 2

Encryption part$ blkid | grep /dev/sdd

11

Page 12: Midterm Solution 1 Traffic analysis using Wireshark (10 pt)hsinmu/courses/_media/nasa... · 2016-05-13 · Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm

Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm Solution

找出 /dev/sdd 的 UUID 在 /etc/crypttab 中加入一行secretdisk UUID=<UUID> none luks在 /etc/fstab 中加入一行/dev/mapper/secretdisk /mnt/crypt ext4 defaults 0 2

12

Page 13: Midterm Solution 1 Traffic analysis using Wireshark (10 pt)hsinmu/courses/_media/nasa... · 2016-05-13 · Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm

Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm Solution

6 Debug!? (20 pt)

6.1

Known

Switch 在 VLAN 11, IP 為 192.168.11.99Port- 1 為 tag 11

Goal

ssh [email protected] pw:guest

Configuration

兩張網卡: 192.168.11.1/24, 192.168.11.99/24

Purpose

發現網卡 2 是來亂的,把它關掉在網卡 1 開個 VLAN 11 的 Virtual interface 然後設對 IP, mask…進去 switch

6.2

Known

Switch IP 為 192.168.12.99Port- 2 為 tag 12

Goal

ssh [email protected] pw:guest

Configuration

用 alias 把 ifconfig 無效化一張網卡: 192.168.12.222/25

Purpose

用 ip 把網卡 config 好

6.3

Known

Switch IP 為 192.168.13.99Port-3 為 untag 13

13

Page 14: Midterm Solution 1 Traffic analysis using Wireshark (10 pt)hsinmu/courses/_media/nasa... · 2016-05-13 · Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm

Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm Solution

Goal

ssh [email protected] pw:guest

Configuration

一張網卡: 192.168.13.2/24routing table 加入 192.168.13.0/25 -> 192.168.13.88

Purpose

發現 routing table 被搞爛了,把它整理好

6.4

Known

Switch IP 為 192.168.14.99Port-4 為 untag 14

Goal

ssh [email protected] pw:guest

Configuration

開 192.168.14.1/24, 10.2.1.4/26routing table 加入 192.168.14.0/25 via 10.2.1.7

Purpose

把 ip 網卡 config 好

6.5

Known

Switch IP 為 192.168.15.99, mac 為 2C:23:3A:82:73:A6Port-5 Port-6 為 untag 15Q5-2 為同一網段機器

Goal

ssh [email protected] pw:guest

Configuration

在 Q5 arp table 加入 static entry 把 192.168.15.99 指向 Q5- 2 機器的 mac

14

Page 15: Midterm Solution 1 Traffic analysis using Wireshark (10 pt)hsinmu/courses/_media/nasa... · 2016-05-13 · Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm

Network Administration/System Administration (NTU CSIE, Spring 2016) Midterm Solution

Purpose

Config 好 Q5 的網卡發現 Q5- 2 做了 ARP spoofing, delete entry 就沒事

15