電腦網路與作業系統 電腦網路與作業系統

電腦網路與作業系統上課教材 - 2018 年版

電腦網路與作業系統 > 課程內容 > 第 11 堂課 - 軟體安裝、線上升級與網路伺服器

第 11 堂課 - 軟體安裝、線上升級與網路伺服器

上次更新日期 2018/05/17

瞭解了網際網路的相關概念之後,再來就是需要理解一下你的主機是否需要上網。那不是廢話嘛?當然是要上網的~但是,上網前你的主機要不要進行防護呢? 防護什麼?當然是怕被人攻擊~那麼,最容易被人攻擊的項目是哪些?當然就是有漏洞的程式。那麼程式有哪些?當然是除了一般應用程式之外, 作業系統本身也可能會出問題~因此,漏洞修補是最重要的了。那還需要什麼安全強化呢?防火牆?帳號密碼?防毒軟體?防木馬軟體?其實通通都需要喔! 來來來,我們就來聊一聊。

  • 11.1: 系統與軟體透過網路連線的方式
  • 11.2: 軟體升級方式
  • 11.3: 防火牆的簡易操作
  • 11.4: 網路伺服器
  • 11.5: 課後練習

11.1: 系統與軟體透過網路連線的方式

你為什麼需要啟動防火牆?為什麼需要安裝防毒軟體?為什麼需要關閉不需要的服務?為什麼某些針對本機才放行的服務可以直接放行不用理他? 因為這都涉及到網路連線的功能所致。舉例來說,你的 windows 主機預設有針對內網放行網路磁碟機 (網路芳鄰) 的功能,這個預設是對內部區網放行喔! 那如果你不小心有啟用網路磁碟機,然後你的區網內的電腦有人不小心中了病毒或木馬,那麼你的系統預設就可能被攻擊! 而攻擊會不會生效?這就不一定了!

  • 網際網路上受主動攻擊的情況

一般來說,如果你的主機取得的是 public IP 的話,那麼等於是你的主機就是直接連網的,因此,你的主機就是直接暴露在 Internet 上面的意思。 任何人,只要知道你主機的 IP,他是可以嘗試主動的跟你發起連線的。除非你的上層 gateway 有加一些額外的保護 (例如在學校單位的計算機中心), 否則對方就是可以直接跟你的主機連線。這種方式也是比較適合架設網站的情況。

不過,也因為是直接連上 Internet 這個沒有王法的地方,所以任何在 Internet 上面的攻擊,都可能會嘗試到你的系統上! 所以,如果你沒有任何防護,那麼當你主機上面的軟體或者是系統有漏洞時,就可能會被攻擊而遺失資料或系統損毀,或變成殭屍電腦而被操控。 但注意,是『當你的主機有漏洞』的情況下才會發生!如果沒有漏洞,基本上,你的系統只會頻繁的收到攻擊碼,而不會有太嚴重的問題發生。

也因為直接暴露在 Internet 上面很容易直接遭受到攻擊,所以筆者的工作用主機或辦公室內主機,就很不喜歡直接使用 public IP, 而是喜歡將工作機放置於 IP 分享器後面,透過 IP 分享器連網。這有個好處,就是我只需要一個 public IP 即可,其他的設備可以躲在 IP 分享器後面, 包括網路印表機、notebook、手機等設備,都是透過 IP 分享器後端的 private IP 連網。因為是共用 IP 分享器的連網功能,因此 Internet 看到的我的連線, 其實是 IP 分享器,所以外界若嘗試要攻擊我的 IP,其實不是攻擊我的工作機,而是我的 IP 分享器。這種行為讓我的工作機有稍微好一點點的保護。

  • 區域網路內受主動攻擊的情況

底下是將工作機放置於 IP 分享器後端的簡單示意圖,在 IP share 後面 (右邊) 的所有設備透過 hub/switch 連接,再透過 IP share 發派的 private IP 後, 以 IP share 作為 gateway 上網。如此一來,你的所有設備都在同一個區網內,因此很容易溝通與設定,另外,也因為是 private IP, 所以基本上就有一些些保護的功能在。

將工作機器放在區網內

理論上,在區網內的主機是不會被 Internet 主動攻擊到的!這是因為別人根本不知道你的 IP 是什麼!即使知道那也是知道 public IP,就是 IP share 那一台, 根本就攻擊不到你啊!但是,為什麼你還是可能會被打擊到呢?其實,大多數是由於內部網路先有人不小心中毒或中木馬的緣故! 區網內中毒的電腦會透過宿主機器的網路去搜尋區網內或外網的其他主機,然後主動的發起攻擊!此時,區網內的主機還是會被主動攻擊! 而主動攻擊的兇手,其實是你的室友或同事...並不是直接來自於 Internet 喔

  • 連線行為的問題

那麼為什麼有的人就是會『不小心』呢?這是因為網路是『雙向』的!當你去瀏覽別人的網站時,或前去抓取別人的資料時,那是你主動發起連線去連接別人的伺服器電腦, 然後別人的伺服器電腦將資料傳輸到你本機的連線軟體。以網頁來說,是你用瀏覽器去要求網站給你資料,而給你的資料你可接受也可不接受, 不過,通常瀏覽器預設都是接受的!因此,當你連線到有問題的網站時,那表示是你要求別人將有問題的資料直接傳輸給你的瀏覽器的意思! 此時就很可能會受到攻擊!這也是為啥大家都說,要保持良好的網路使用行為!不要亂點不知名的連結!

如果你安裝某些莫名其妙的軟體,這些軟體也很可能將你的資訊暴露到 Internet 上!例如好久以前有個 foxy 的軟體, 他很容易將你的資料上傳/下載到本地端電腦,然後...當然很可能將你的資訊或者是別人放在 foxy 平台上面的有問題的檔案傳輸到你的電腦上, 如果你還不小心的點開這些檔案,那就嘿嘿嘿嘿~

也就是說,其實以工作機的角度來看,大部分的中毒、中木馬、被攻擊、被安裝側錄軟體、被取得系統管理員操作權限,大部分的問題, 都在於使用者的網路連線行為不佳所致。如果不點擊莫名其妙的連結,不下載莫名奇妙的軟體,不因好奇而點擊或安裝某些怪異的檔案, 基本上,你的系統是不容易出問題的!

  • 網路封包進入你系統的流程

雖然如此,但前面談到,即使在區網內,你是有可能被區網內的其他同事攻擊的!那...你明明沒有連線,為啥會被攻擊呢?來來來,瞧一瞧底下的圖示:

封包進入主機的流程

無論是伺服器還是工作機,你都要先有 IP 位址才行!然後,當有封包連線來的時候,(1)他得要先經過你本機的防火牆, (2)然後跟你的某個服務做連動~之後(3)透過你的服務來取得所需要的資源。當你的防火牆有放行對方的連線,加上你的某個軟體本身就有問題, 此時當然就會被攻擊成功!

你可能會說:『老師!我的工作機沒有啟用任何服務啊!』真的假的?請使用底下的方法確認一下你有沒有啟動任何服務!

完成底下的實做練習:
  1. 在 windows 底下啟用 cmd 界面,輸入『 netstat -ano 』之後,查詢輸出的結果中,出現『 TCP ... LISTEN 』關鍵字的的資料, 以及『 UDP ... *:* 』的資料,那個就是你的系統正在監聽的埠口
  2. 在 Linux 底下,輸入『 netstat -tulnp 』出現的連線就是正在監聽中的埠口。

從上面的實做行為,你會發現到其實預設的情況下,系統就有很多服務在提供網際網路來的連線需求!而這些服務如果出問題,那你的系統就很可能被綁架了! 那為何系統會出問題呢?這是因為許多程式設計師當初設計程式的時候,沒有考慮到還有其他用戶會有特殊的用法,因此導致程式出現問題。 好一點的只是讓該軟體出錯,糟一點的,就有可能被透過這樣的機制來取得該程序的控制權,並可能被進一步的取得系統的操作權! 讓你的電腦就此變成殭屍電腦!

所以說:

  • 關閉沒有用到的網路服關閉
  • 讓你操作的軟體隨時保持在最新的狀況下

只要符合上述兩點,那就具有最基礎的保護!不過你得要特別注意,在 windows 工作機上面,許多的網路服務預設似乎是不能關閉的! 所以,反而要跟大家說,不能隨便關閉 windows 的這些服務喔!除非你知道你在幹麻!

嘗試關閉 Linux 環境中不重要的或者是暫時用不到的網路服務:
  1. 使用 netstat -tunlp 找到監聽中的埠口,將所有埠口稍微記憶一下
  2. 查詢 /etc/services 這個檔案,找到每個 port number 對應的服務名稱為何
  3. 以 port 111 為例,對照 /etc/services,你應該要查詢的服務名稱可能是什麼?
  4. 使用『 systemctl {stop|disable} 服務名稱 』進行立刻關閉 (stop) 以及下次不啟動 (disable) 的行為
  5. 再次使用『 netstat -tunlp 』看看該埠口是否已經關閉了?
  6. 不過,你必需要注意的是,有時候該服務會有 2~3 腫啟動的方式,若確定要關閉,每種啟動的方式都需要關閉才行。

11.2: 軟體升級方式

我們的工作機或 Linux 伺服器的軟體可能有很多的來源,包括之前談到轉檔或者是其他工作時,會使用到許多的免安裝軟體等,而最重要的系統檔案, 當然都是來自於作業系統的官方網站所提供的。由上一小節我們也知道,事實上軟體是否保持在最新的狀態,也是一個很重要的影響。因此,對於軟體, 你應該是要這樣想:

  • 作業系統最好選擇還在持續更新的版本,例如目前 (2018) 的 windows 10, CentOS 7 等版本
  • 非作業系統官方提供的軟體,應該要有些紀錄,方便未來持續查詢是否需要更新。
  • 盡量不要安裝未知來源的軟體
  • 即使是綠色軟體 (不用安裝直接執行) ,盡量也從對方的官網下載較佳。
  • 盡量不要讓軟體開機就自行啟動,有需要才啟動比較好。
  • 觀察 Windows 10 的自動升級功能

事實上 windows 以及 Microsoft 的軟體,大多具有自動升級的功能!自動升級的觀察可以由底下的方式來處理:

  • 啟動『控制台』-->『更新與安全性』就會看到 Windows Update 的字樣
  • 如果有任何可更新的資訊,你可以選擇立即更新。如果沒有,也能選擇立即檢查去看看有沒有更新!
  • 某些非常非常特殊的情況底下,可能需要關閉更新,也在這裡進行關閉!

那如果想要觀察非作業系統軟體的容量、安裝的時間呢?可以這樣做:

  • 啟動『控制台』-->『App』就會出現應用程式的相關畫面。
  • 你可以點選『排列方式』讓排列方式分別以日期及容量去排序,可以了解每種軟體的特性
  • Windows 10 預設安裝好多怪遊戲,你可以將他移除!直接按下軟體,就可以看到『解除安裝』,按下去就搞定了!
  • Linux 的自動更新

事實上,CentOS 7 的圖形界面環境下,預設是會啟動自動更新機制的!不過,得要管理員確認才能夠進行升級。我們也能夠透過手動的方式來升級。 升級的方式非常的簡單!如果不考慮軟體來源,直接使用 yum 指令就好了!

了解 Linux 更新的方式:
  • 若要單純的更新一個軟體而已,例如 openssh 的話,可以使用『 yum update openssh 』
  • 若要全系統升級,就得要『 yum update 』了!
  • 若想要在未來持續的處理軟體的自動升級,可以透過 6.5 章介紹的 crontab 來處理。例如每天凌晨 2 點進行一次自動升級, 該怎麼設計比較好?
  • 升級過後需要重新開機嘛?

所謂的『軟體升級』其實很簡單!官網會將有問題的程式碼修改成沒問題,之後重新編譯成為可執行檔,然後包裝成為安裝軟體包,讓使用者下載安裝。 然後,所謂的『安裝』其實只是將舊的檔案刪除,然後放上新的檔案,通常檔名是不變得。由於檔案不能在開啟的時候刪除或覆蓋, 因此通常安裝/升級過程中,軟體都會主動告知某個程式或檔案正在運作,你得先關閉後才能處理。

Linux 跟 Windows 比較不一樣,你可以直接升級軟體檔案,但是該檔案可能正在執行中~不過,現在的 linux 也變得聰明了!在你安裝完畢後, 這些軟體通常會自動的關閉後重新啟動。因此,軟體就會在最新的狀態,此時你是不需要重新開機的!

但是等等,核心可以關閉再開嘛?呵呵!當然不行!因為核心關閉代表關機了啊!所以,如果有升級過核心 (kernel) 就得要重新 reboot 才行。 另外,還記得四個同心圓嘛?如果許多的應用程式有呼叫到同一個函式庫,而函式庫有升級過,此時,你可以將呼叫這個函式庫的所有軟體通通 restart 即可! 不過,通常我們不會知道哪些軟體有呼叫呢!因此,最簡單的方式,也是 reboot 刷新一次。

在 Linux 底下回答下列問題與實做:
  1. 通常哪些軟體更新後,最好重新開機讓系統刷新一次比較好?
  2. 如何查詢核心所在目錄?
  3. 如何知道目前的核心版本?
  • 作業系統版本的意義

事實上,目前各大主流的作業系統,漸漸的將自己的作業系統版本以釋出年月來作為版本的規劃。例如以 CentOS 來說,如下的連結點選看看:

你會發現到目前 (2018 年中) 最新的 CentOS 7.5 使用的版本編號為 7.5.1804,那個 1804 代表 2018 年的 04 月份的意思。不過,該連結是網路上最新的版本! 你的系統上面最新的版本資訊就要觀察 /etc/centos-release 這個檔案的內容來了解了!『 cat /etc/centos-release 』就可以看到作業系統的版本囉。

同樣的,如果是 windows 的核心版本,你也可以查底下的連結來了解目前最新的 windows 核心版本 (或以『 windows 週期資料表 』查詢):

你會發現到目前最新的應該是 1803 這個版本,由上述連結的『可用期限日期』你大概也會知道這個版本的釋出年月就是了。不過,你的工作機版本是什麼呢? 可以透過『控制台』的『系統』裡面左下角的『關於』,再向下拉動到 windows 版本的地方,就能夠查詢到相關的核心版本資訊了!

11.3: 防火牆的簡易操作

先恢復一下印象,要注意網路是雙向的,雖然有防火牆,不過,通常『自己發出的連線,回覆的連線會主動的放行』,什麼意思? 我們連線到 google 去查資料,google 會將查詢的結果送回來!這條送回來的連線封包,就會讓防火牆自動的收下來 (因為 ACK 的關係), 所以,回覆的連線我們的防火牆根本不會擋!因此:『防火牆對於操作系統習慣不良者來說,一點屁用也沒有』, 不要幻想防火牆可以幫你擋住壞人了!

既然防火牆擋不住我們主動發出的連線,那麼人家主動攻擊我們的,我們就能隔絕吧?沒錯啊!理論上是的。不過,這種防火牆機制還是有點問題的! 針對伺服器的角度來說,讓我們回到 11.1 那張流程圖,基本上你會知道用戶端主動連線到伺服器時,封包是如何進入伺服器內取得資料的?

  1. 先要通過 TCP/IP 的相關規範才能夠連線到本機的網路門口
  2. 要先通過防火牆的規則管制,才可以進入到本機使用本機的服務
  3. 能否取得服務與這個服務是否啟用與相關設定有關 (發生問題可以查登錄檔)
  4. 能否實際存取資料,首先要看有沒有啟動 SELinux 這個細部權限設定項目?
  5. 全部都放行後,最後能不能存取資料,還是跟資料檔案的權限 (rwx) 有關!

看起來沒有問題啊!那防火牆真的有用嘛?其實是這樣的:

  1. 防火牆是沒屁用的,對正常提供的服務來說:
    從前一個項目的圖示來看,如果你是 WWW 伺服器,那一定就是要放行 port 80,因此,若 port 80 出問題, 那你的防火牆當然一點用處也沒有。
  2. 防火牆是很有用的,對需要保護的服務來說:
    如果你的服務中,例如 ssh 的服務,僅放行給部份的來源 IP 位址,則此時防火牆保護危險的服務,就很有用處了!
  3. 軟體更新是一定要的,對連上 Internet 的伺服器來說:
    一般來說,軟體如果沒有問題,或沒有加入新功能,是不會隨意升級的。因此,如果官網有公告最新的軟體升級資訊, 當然最好就是一定要升級到最新!至少能夠預防一大堆可能的系統漏洞
  4. 軟體更新是非必要的,對提供給內部特定用途的軟體來說:
    崑山資傳系主要透過自建的 DRBL 搭配 Clonezilla 以及 partclone 再加上 PHP 的功能來進行電腦教室的佈建。 過去曾經因為 clonezilla 不同版本所支援的參數不同,導致 PHP 程式無法順利呼叫 clonezilla 的困擾。鳥哥自己的 cluster 跑模式用 Linux Server, 也因為內部的環境已經建置妥當,而且該系統基本上是不連網的,所以,此時你的系統應該『不要隨便升級』! 或者是說:『不要隨便升級特定的內部服務軟體』!
  5. 權限設定的理解是基礎中的基礎:
    如果你的網路服務僅提供讀取的功能,那麼即使你的檔案權限放行 777 可能都還不會出事。但是如果你的這個服務設定錯誤呢? 如果你的這個服務因為漏洞所以被攻破呢?那麼你的檔案如果是 777 ,很好!那就是完全的被拿走了...
  • 針對區域網路自己的攻擊與防禦

如果對方想要連接到你的 port 80,但是你的 port 80 根本就沒有啟用埠口在監聽,那麼對方無論如何是無法連接到你的服務的! 所以減少網路服務是很重要的! (底下會用到的軟體,如果不存在的話,請自行使用 yum whatprovides "*bin/???" 找到軟體後自行安裝!)

  1. 可使用 netstat -utlnp 來查詢自己本機所啟動的服務
  2. 可使用 nmap IP 來查詢某個 IP 有啟動的 TCP 埠口有哪些 (不可隨意攻打別人)
  3. 可使用 nmap -sTU IP 來查詢某個 IP 啟動的 TCP/UDP 埠口
完成底下的練習:
  • 分別使用 nmap 查詢一下 自己的 lo 與 eth0 的 IP 所啟動的服務有哪些?
  • 使用 nmap 查詢一下 gateway 這個 IP 所啟動的服務可能有哪些?
  • Linux 防火牆設定

接下來我們可以開始嘗試放行本機的防火牆!

完成底下的練習:
  1. 假設我的 Linux 伺服器想要作為 web 、加密的 web、FTP、加密的 pop3,請找出這些埠口對應的服務是什麼 (查詢 /etc/services)
  2. 使用 firewall-cmd --get-services (請使用 tab 按鍵) 查防火牆預設支援的服務有哪些?
  3. 上述資料出現的畫面中有個名為 pop3s 的服務,這個服務的埠口是幾號? (firewall-cmd --info-service pop3s)
  4. 最終一行一個將 http, https, ftp, pop3s 加入防火牆列表中。
  5. 最終 firewalld restart 之後再 firewall-cmd --list-all 查詢服務是否正常?
  6. 若有非正規埠口開啟在 TCP port 3312 時,針對這個埠口設定的方式處理
  • Windows 防火牆設定

Windows 防火牆除了根據傳統的 layer 2, 3, 4 來開/關封包的使用之外,其實 windows 系統也經常針對不同的程式與服務來進行該程式/服務的放行與否喔! 所以 windows 防火牆可以根據:

  • 直接放行或抵擋某些程式軟體的網路功能
  • 透過分析 Layer 2, 3, 4 的封包來決定放行與否

你使用『控制台』、『系統』、『關於』、『請參訪 Windows Defender 中的詳細資料』。之後再出現的新視窗中,點選『防火牆與網路保護』, 再點選『進階設定』之後,就會出現如下的視窗,等待你的查詢與修改了。

Windows 防火牆

windows 防火牆規則設定的左側你會發現有兩個最主要的連結,就是『輸入規則』與『輸出規則』,會有兩個規則,當然就是網路為雙向的緣故。 上圖是筆者先點選『輸入規則』的功能來觀察的效果。從中間大框架當中的資訊裡面,你可以查看到『名稱』的項目,其實就是很多程式的通行與否的規則! 你可以發現包括 Firefox 瀏覽器的通行、HP 印表機的通行等等,都是與程式本身有關~跟封包過濾無關~如果再看往右邊有個『程式』的欄位, 還能進一步去發現該軟體的程式檔案呢!

從前幾章的資訊,你應該也會知道網路封包有 Layer 2, 3, 4 ,其中 Layer 3 為 IP 封包與 ICMP 封包, TCP 與 UDP 為資料傳輸用的封包。而 ICMP 的重點在於網路狀態的偵測~其中就包含了 ping 的回應。但即使 ICMP 的封包回應功能被取消了, 其實還是可以偵測到 ARP 的 MAC 位址的。

請啟用 windows 的 cmd 界面以及防火牆界面,同時防火牆界面請先點選『輸入規則』,中間的框架中,請點選『通訊協定』來排序, 讓『 ICMPv4 』的通訊協定可以放置到最上方。然後完成底下的練習。
  1. 先使用『 ipconfig /all 』查詢一下你的與同學的 IP 位址,並互相分享。
  2. 使用『 ping 同學的IP 位址』看看有沒有回應?無論有沒有回應,最後請使用『 arp -a 』查看是否有同學 IP 位址定位的 MAC 位址。
  3. 現在回到防火牆視窗,找到『檔案及印表機共用(回應要求 - ICMPv4-In)』在設定檔為『私人』的規則中, 按下滑鼠右鍵,有啟用的將他停用,有停用的將他啟用。
  4. 重複 1, 2 的動作,看看回應的情況變成如何了?

透過上述的預設規則設定,就可以讓你的 ping 的 ICMP 封包回應功能具有開啟/關閉的能力。那你剛剛也會發現到有『私人、公用、網域』等特殊的設定檔吧? 那個是什麼?為了方便管理,所以 windows 將設定的規則嚴謹度分為三層,最嚴格的當然是私人,然後是公用,最後是幾乎全部放行的網域。 所以,上面我們是針對私人 (針對本機網域的區域網路) 來設定的。

那如果我想要改變預設規則呢?舉例來說,網芳 (網路磁碟機) 就是剛剛使用的『檔案及印表機共用』的功能中,實際檔案資料的傳輸是透過 port 139 及 port 445 這兩個, 亦即是 windows 防火牆中的『 檔案及印表機共用 (NB-Session-In) 』以及『 檔案及印表機共用 (SMB-In) 』這兩個! 你先點選 SMB-In 那個『私人』網域的規則,會發現有點像底下的圖示:

Windows 防火牆

你可以發現這個服務主要是管理 port 445 的 TCP 的!那如果要查詢到底針對哪些來源放行檔案的使用權,可以點選『領域』頁面, 然後會出現如下的圖樣:

Windows 防火牆

上面的圖示中,對於接收端的我們 (本機 IP 位址) 當然是選擇本機的任何 IP,但是遠端 IP 位址 (就是想要連線我們系統的), 你會發現到其實只有提供本機子網路 (區域網路內) 的來源而已。因此,如果你想要再放行某些固定 IP 位址的話,可以點選『新增』, 就可以開始撰寫你要提供的 IP 或網域,如下所示:

Windows 防火牆

等到填寫完畢然後按下確定,系統就會出現針對該 IP 位址或網域的來源給予放行網芳的使用權了!所以,網芳只是預設對外關閉使用權, 但是你也不要啟用設定檔為『網域』的規則,否則你的網芳就沒有保護,會讓全世界都能使用...筆者覺得不太妥當啦!

Windows 防火牆

至於輸出規則筆者倒是建議不太需要擔心~除非你的 windows 不是工作機,而是伺服器,且是多人共用的環境,否則輸出可以暫時忽略。

透過上述的動作,將 windows 防火牆增加底下的修改動作:
  1. 修改『檔案及印表機共用 (SMB-In)』在『公用』的規則,請先點選該規則,然後請觀察『進階』以及『領域』頁面。
  2. 在『領域』頁面中,增加 172.25.0.0/16 的可用來源。
  3. 假設 120.114.140.0/24, 120.114.141.0/24, 120.114.142.0/24 也是可用範圍,請加入。

透過上述的設計,你就可以在系上的任何主機連線到這部 windows 進行網芳的存取了!

11.4: 網路伺服器

架設 Linux 很多人的目的都是需要使用到網路伺服器的!那如何處理呢?其實我們在第六章已經稍微提過,網站的建置就是:

  • 安裝
  • 啟動
  • 開機啟動
  • 防火牆
  • 測試與上傳資料

這樣就搞定!唯一需要注意的就是安裝什麼軟體而已。我們先來了解一下很重要的 ssh 伺服器!

  • ssh 連線伺服器

先來觀察一下 sshd 這個服務是否存在!

觀察 Linux 的 sshd 伺服器
  1. 記得身份必須要是 root 才可以!
  2. 先以『 systemctl status sshd 』查看是否啟動了 sshd 這個服務!
  3. 使用『 netstat -tlunp 』查看一下 sshd 的埠口是幾號呢?
  4. 使用『 firewall-cmd --list-all 』看看這個服務有沒有放行。
  5. 使用『 ifconfig 』看看網路是否正確,以及取得自己的 IP 位址。

若你的 sshd 有啟動,然後防火牆也放行了 ssh 的連線,那麼現在我們可以請用戶端來嘗試使用這個服務了! 使用服務的手段為透過底下的語法來進行連線:

[student@localhost ~]$ ssh 對方用戶@對方IP位址
[student@localhost ~]$ ssh student@172.24.0.24

在出現的畫面中,如果是第一次登入對對方的主機,那就可以使用 yes 來回覆驗證指紋,然後輸入遠端主機帳號的密碼, 就可以登入人家的系統了!此時你按下 w ,就會看到對方與你的資訊,然後在你自己的系統上面使用底下的指令來查詢連線狀態:

[student@localhost ~]$ netstat -antp

如果你覺得對方登入你的系統很討厭時,透過 root 的權限,使用『 kill -9 PID 』就可以將對方踢掉了!

完成底下的練習
  1. 除了自己登入對方的系統之外,也請對方登入你的系統一下。
  2. 使用 netstat -antp 查詢一下自己與他人所使用的網路,並判斷對方的連線應該是哪一條?
  3. 找到對方的 PID 之後,輸入『 kill -9 PIDnumber 』,並查看對方是否被你踢出去了。
  • https 網頁伺服器

現在網路世界大概都要求你要使用 https 來連線的,那麼你的 Linux 如何支援呢?很簡單,只要安裝 mod_ssl 即可! 之後重新啟動 httpd 就能夠支援 https 了!

完成底下的練習:
  1. 先安裝好 httpd, mod_ssl 等軟體
  2. 重新啟動 httpd,同時確認有 enable 的狀態,下次開機才會自動啟動
  3. 確認埠口有啟動 port 80 及 port 443 (什麼指令呢?)
  4. 確認防火牆有啟動 http 及 https (什麼指令呢?)
  5. 使用瀏覽器,輸入 https://your.IP 來嘗試連線!

透過上述的連線功能,就能夠知道你的 Linux 能不能啟動 https 的伺服器支援了。接下來,如果要支援 PHP 的網頁程式語言呢?

  • 支援 PHP 網頁程式語言

你得要安裝 php 這個軟體,由於 php 是 Apache 裡面的一個模組,因此,安裝完畢也是需要重新啟動 httpd 的!

完成底下的練習:
  1. 安裝 php 軟體之後,重新啟動 httpd 服務
  2. 前往 /var/www/html 首頁目錄後,建立名為 phptest.php 的檔案,內容大致如下:
    [root@localhost ~]# cd /var/www/html
    [root@localhost html]# vim phptest.php
    <?php
    	phpinfo();
    ?>
    
  3. 使用 http://your.ip/phptet.php 來呼叫這個檔案的執行,若成功看到許多資料,那就表示你的網頁伺服器成功支援 PHP 了!

下個學期我們會透過連線到 FTP 來使用系上提供的網頁伺服器,主要的特色也就是透過上述的功能來建置的!

11.5: 課後練習

請使用 word 檔案 (.doc 或 .docx) 進行下列題目的撰寫(某些題目需要加上圖檔),且檔案容量請不要超過 2MBytes 以上, 以 1Mbytes 為宜,亦即你的圖檔需要限制解析度,並請注意:

  • 首次使用上傳系統時,務必使用 pietty 更改一次密碼,並請將密碼自己記憶下來,未來不能隨時變更密碼的。
  • 檔名請設定為: os_4XXXCYYY_unit11.doc (4XXXCYYY 是你的學號,請填正確,有分大小寫,請確認)
  • 請使用 filezilla 搭配 FTP 協定 (port 21) 上傳
  • 請上傳到你家目錄底下的 os 目錄中 (若不存在,請自行建立該目錄)

開始本章節題目:

  1. 嘗試說明,為什麼你的主機放置在 IP 分享器後面,會比直接用 public IP 連網來的好?
  2. 嘗試說明,為什麼你放在 IP 分享器後端的 windows 工作機,還是可能會被攻擊或者是植入木馬?原因為何?
  3. 嘗試說明,即使你的 windows 工作機是放置於 IP 分享器後端,卻還是建議需要做一些保護,原因為何? (以操作態度、室友與同事的機器等討論)
  4. 從本章的網路封包進入系統的流程中,分析一下,為什麼為什麼你的軟體需要進行升級避免發生 bug 而被攻擊成功的情況?
  5. 在 windows 底下,『檔案與印表機共用』所啟動的資料傳輸埠口,是 TCP 或 UDP 的幾號 port (有兩個喔)
  6. 請更新你的 Linux 系統,更新完畢務必重新開機。然後輸入『 uname -r; ll /lib/modules/ 』將結果拍照上傳。
  7. 將 http, https, ftp, port 5353 (tcp) 加入防火牆列表中,然後輸入『 systemctl restart firewalld ; firewall-cmd --list-all 』 並將結果拍照上傳
  8. 在你的 windows 防火牆的設定中:
    • 在最右邊『動作』的地方按下『新增規則』來增加一條規則設定
    • 選擇放行『連接埠』
    • 選擇『 TCP 』的類型,然後特定的連接埠口請輸入 5353 這一個
    • 使用『允許連線』的動作
    • 僅套用於『私人』的規則類型
    • 最後名稱與描述均填寫『 check 』即可!
    • 最終你就會在中間的大框架中發現到 check 的規則名稱。
    • 點選兩下 check,點選『通訊協定及連接埠』的頁面,將該頁面拍照上傳即可。
  9. 在你的 windows 防火牆中,『檔案與印表機共用』的 SMB-In 的『私人』規則中,增加放行 192.168.0.0/16 的網域,並將結果拍照上傳。
  10. 確認你的 httpd 是支援 mod_ssl 以及 PHP 的,請在課程內容實做完畢後,輸入『 systemctl status httpd 』,拍照上傳, 然後啟動 firefox ,網址列輸入 http://your.ip/phptest.php (必須是 private IP,不可以是 127.0.0.1),並將結果拍照上傳。