網路與資訊安全

課程說明:

第一週:Windows 的一般保護:
  1. 資訊安全的目的在維護資訊的:保密性、完整性、可用性三種;

  2. 破壞資安的主要威脅:
  3. 一般攻擊:
  4. 軟體弱點的利用:不一定是軟體的錯誤,可能是藉由某些軟體的功能或者是合併數種功能,來達到攻擊的目的。 例如 SQL injection ,巨集病毒、電子郵件的附檔夾帶功能、電子郵件的通訊錄發信功能等。

  5. 惡意程式的種類:
  6. 怎麼防止惡意程式:
  7. 網路攻擊的手法:
    1. 偵察:送出偵測封包來收集你主機上面的資訊 (包括 WWW 的軟體版本等)
    2. 測試:依據這些回應的資訊,來分析可能可以攻擊的軟體
    3. 侵入:開始嘗試各種軟體攻擊,最終能夠掌握你的防火牆或植入木馬
    4. 控制:安插後門程式,建立一個控制入口
    5. 利用:利用妳主機上面的各種資源 (尤其是網路頻寬)
    6. 轉戰:當作跳板攻擊別人 (僵屍電腦)

  8. 最常使用的軟體:瀏覽器的相關功能分析:
  9. 強化個人電腦 Windows 系統:
    1. 強化 Windows 作業系統本身:
      • 透過 Windows Live Update 去更新!
      • 透過工作管理員去監看 CPU, RAM, 磁碟機的運作
      • 透過事件檢視器去觀察系統運作的資料

    2. 強化網路安全:
      • 網路協定與 NetBEUI:NetBIOS 或許可以關閉!請自行檢查有無啟動 port 139 ?
      • 透過 netstat 與管理介面去控制相關的服務功能。

    3. 強化應用程式:
    4. 備份 Windows 的重要資料:利用 Cwrsync 的超強備份功能 (按這裡下載)

    5. 瀏覽器功能的重新訂定:
      • 在 IE 上面制訂:(1)網際網路安全性重新調整為中/高安全性; (2)將崑山與相關的網站加入信任網站; (3)將 cookies 處理為『覆寫自動 cookie 處理,並於『第一方 cookies, 第三方 cookies 』選擇『提示』功能; (4)在工具/網際網路選項/進階中,調整多媒體的防護機制,取消播放聲音與影像功能。
      • 在 Firefox 上面制訂:(1)勾選『在網站試圖安裝附加元件時通知我』 (2)建議取消 Java 程式選項; (3)在『清理隱私資料』中,開啟選項,可移除敏感的資訊。


第二、三週:主機的安全防護入門 (課本第一、二章內容)
  1. 進行安全性相關方案的建立,我們需要考量的項目主要有:
  2. 資產中特定項目的保護主要分為:(1)保密性資料例如一些商業技術與 (2)可用性資料例如電子郵件服務

  3. 資產的風險主要有:(1)自然災害的發生 (2)資產濫用的風險 (3)用戶本身的錯誤 (4)虛假的訊息資訊 (5)火災與水災的發生。

  4. 通訊分析法:
  5. 常見的攻擊手法:
  6. 常見的網路安全威脅:
  7. 三種帽子:
  8. 建置伺服器時所需要考量的相關因素:
  9. 主機的安全防護步驟:
  10. 本週習題與實作:
    1. 說明 RAID 0, RAID 1, RAID 5 的容量、效能、容錯等機制

    2. 在你的 Linux 上面新建一個 Software RAID ,等級為 5 ,使用 3 個 partition 構成,且保留一個 spare-disk
      • 使用 fdisk -l 觀察你的系統磁碟分割表;
      • 使用 fdisk /dev/sda 開始進行分割,每個分割使用 1000MB ;
      • 使用 partprobe 或 reboot 整理好你的分割表
      • 使用 mdadm --create /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 /dev/sda... 建置 /dev/md0
      • 使用 mdadm --detail /dev/md0 觀察磁碟陣列
      • 使用 /etc/mdadm.conf 建置你的設定檔
      • 使用 mkfs -t ext3 /dev/md0 格式化你的磁碟陣列
      • 編輯 vim /etc/fstab 將 /dev/md0 掛載在你的 /raid 目錄中 (此目錄請自行建立)
      • 使用 mount -a 並搭配 df 測試掛載與觀察

    3. 模擬你的某個 partition 發生錯誤,並觀察錯誤情況,且熱拔插有問題的磁碟
      • 使用 mdadm --detail /dev/md0 觀察磁碟陣列,並模擬某個磁碟發生錯誤,假設為 /dev/sdaX
      • 使用 mdadm --fail /dev/md0 /dev/sdaX ,再使用 mdadm --detail /dev/md0 觀察錯誤發生
      • 使用 mdadm --remove /dev/md0 /dev/sdaX 取出錯誤的磁碟,再觀察 /dev/md0
      • 使用 mdadm --add /dev/md0 /dev/sdaX 再插入新的磁碟,並觀察 /dev/md0

    4. 在你們家的電腦主機上面,找到 BIOS 密碼設定項目並嘗試設定密碼在上頭

    5. 檔案系統的安全性:如何建置專題小組的共享目錄
      • 利用 useradd / groupadd 等指令,建立 dicgroup 群組,以及在此群組內的 dicuser1, dicuser2, dicuser3
      • 建立共享的 /srv/dicgroup 群組,注意權限功能
      • 將 /etc/shadow 複製到 /srv/dicgroup ,且需要讓 dicgroup 的人們可以進行讀寫動作

    6. 檔案系統的特殊權限設定: ACL (Access Crontrol List) 功能
      • 用預設值建立 dicteacher 帳號
      • 上述帳號在 /srv/dicgroup 內僅能讀取,不可寫入與修改

    7. 觀察你目前系統上面的服務資料:
      • 有沒有安裝 httpd 這支程式?
      • 這支程式預設有沒有開機啟動?
      • 如何立即啟動?
      • 如何觀察通訊埠口?
      • 如何觀察程序 (PID) ?

    8. 刪除掉不需要的服務吧!依據老師在白版上面的設定值,將你的服務進行處理。


第四週:加密演算與憑證使用 (課本第三章內容)
  1. 加密與解密:
  2. 對稱式金鑰演算法:
  3. 非對稱式金鑰系統:
  4. 雜湊演算法 (hash algorithm)
  5. 使用者的密碼保護:
  6. 憑證的使用:
  7. 安全連線機制:
  8. 本週習題與實作:
    1. 透過 mkpasswd 以及 md5sum 檢測你的系統指紋資料;

    2. 透過 ssh 的成對金鑰機制,建立免密碼的可登入功能:
      1. 在用戶端建立成對的金鑰: ssh-keygen;
      2. 在使用者的 ~/.ssh/ 內,將 .pub 的公鑰上傳到伺服器上,並且更名;
      3. 連線至伺服器上,將該檔案轉存成為 ~/.ssh/authorized_keys ;
      4. .ssh/ 必須是 700,而 authorized_keys 必須要是 644 。

    3. 利用 rsync 配合 ssh 連線通道,將你主機上面的資料映射到 192.168.42.41 那部主機去。並請留意:
      • 你得要使用 siteXX (XX 代表你的主機號碼) 作為帳號,登入到該機器中;
      • 使用 siteXX 帳號時,不需要用到密碼 (siteXX 的密碼與帳號相同);
      • 將你的 /etc 複製到遠端主機的 ~siteXX/backup/etc 去;
      • 每週日凌晨 1:15 進行此項作業。


第五週:防火牆建置與安裝 (課本第四、五、六、七、八章內容)
  1. 觀察埠口的指令: netstat ,常用選項有:
  2. 埠口掃瞄指令: nmap ,簡易使用方式:『nmap localhsot』後面加上 IP 或主機名稱就是了!
  3. 基本的防火牆類型:
  4. TCP Wrappers 的防火牆機制:
  5. 封包過濾式的防火牆通常可以管理的資料有:
  6. iptables 的規則觀察:iptables-save

  7. iptables 中,針對本機所需要通過的常見鏈 (屬於 filter 表格)
  8. iptables 的基本語法 - 清除規則:
  9. iptables 的基本語法 - 訂定政策:
  10. iptables 的基本語法 - 最基礎語法簡介:
  11. iptables 的基本語法 - 重要的模組:
  12. 利用程式控制作為防火牆,以代理伺服器 proxy 為例:
  13. 關於 NAT (Network Address Translation, NAT) :
  14. 本週習題與實作:
    1. 觀察路由表,找到路由器,並檢測一下,該路由器有啟動什麼 TCP 與 UDP 的埠口?

    2. dovecot 為收信功能的軟體,假設我們今天想要啟動 pop3 這種收信機制:
      1. 檢查有無安裝 dovecot ,若無安裝請安裝他;
      2. 編輯 /etc/dovecot.conf ,找尋 protocol ,請啟動 pop3 機制即可;
      3. 啟動 dovecot ,並且會開機會自動啟動
      4. 觀察 pop3 的埠口有沒有啟動;
      5. 檢查 dovecot 有沒有支援 TCP Wrappers ?
      6. 現在要讓 172.25.0.0/16 沒有辦法使用 POP3 ,該如何處理?

    3. 依據底下行為,製作你的防火牆腳本,並將防火牆腳本覆寫至正確的規則制訂檔中
      1. 清除所有規則
      2. INPUT 為 DROP 其餘為 ACCEPT
      3. lo 為信任裝置
      4. 來自 eth0 且為 192.168.42.0/24 的封包,均是信任網域
      5. 只要是自己發出的回應封包,通通予以接受
      6. 來自 172.16.0.0/16 的來源,均可使用你的 POP3 服務;
      7. 來自 172.17.0.0/16 的來源,均可使用你的 SSH 功能;
      8. 你的 http 有對全世界開放;
      9. 你的 FTP 只對 172.18.0.0/16 的來源開放服務
      10. 執行腳本,觀察之,若沒有問題,請覆寫到正確的規則檔中

    4. 設定代理伺服器 squid
      1. 安裝好 squid 並且啟動 squid ,且設定為每次開機均啟動
      2. 設定 squid 的啟動埠口為 8080
      3. 設定 cache_dir 預設值修改一下,假設使用了 500MB 的容量;
      4. 讓 192.168.42.0/24 以及 192.168.1.0/24 均可使用你的 proxy
      5. 讓你的用戶不可以使用 www.bing.com 這個網域
      6. 讓你的用戶不可以使用 .sexy.com 這個網域
      7. 設定用戶端瀏覽器,指定這個 proxy ,並且進行測試
      8. 檢查登錄檔,看看是否有正確的給予記錄資料?

    5. 實作 squid 的身份認證!不需要加入 IP 網段的信任值,直接給予帳號/密碼即可使用你的 Proxy 。
      1. 在 squid.conf 內加入如下的參數:
        • 密碼所在檔案:auth_param digest program /usr/lib/squid/digest_pw_auth /etc/squid/proxy_passwd
        • 啟動程序數量:auth_param digest children 5
        • 顯示在視窗字:auth_param digest realm This is squid web proxy
        • 清空暫存時間:auth_param digest nonce_garbage_interval 5 minutes
        • 驗證回應時間:auth_param digest nonce_max_duration 30 minutes
        • 最多嘗試次數:auth_param digest nonce_max_count 50
        • 允許驗證acl :acl allowed_users proxy_auth REQUIRED
        • 允許驗證通過:http_access allow allowed_users
      2. 將 /etc/squid/proxy_passwd 內加入帳號密碼的相關資訊,例如:
        • dic:itisdic
        • qdd:iamqdd
      3. 最後得要重新啟動 /etc/init.d/squid restart
      4. 最終再測試看看,啟動你的瀏覽器設定試看看。(你可能還得要將自己的 Intranet IP 取消在 squid.conf 內才行!)


第六週:入侵偵測系統 (課本第九章)
  1. 入侵偵測 (Intrusion Detection) ,透過一些主機記錄的證據來查驗是否被攻擊的情境

  2. 網路監控系統: tcpdump 純文字介面

  3. 網路監控系統:透過 ntop 軟體功能

  4. 最簡單方便的入侵偵測檢測系統: rootkit hunter
  5. 製作系統的指紋碼: Tripwire 軟體

第七週:重要服務的資料加密功能
  1. ftp 的 chroot 功能:
  2. ftp 轉為 ftps 的功能:(http://www.brennan.id.au/14-FTP_Server.html)
    1. 建立 SSL 的憑證檔:
      #cd /etc/pki/tls/certs
      # make vsftpd.pem
    2. 修改 vsftpd.conf 的內容:
      ssl_enable=YES
      allow_anon_ssl=NO
      force_local_data_ssl=NO
      force_local_logins_ssl=YES

      ssl_tlsv1=YES
      ssl_sslv2=NO
      ssl_sslv3=NO

      rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
  3. apache 的 SSL 功能
  4. apache 的重要資料認證功能 (.htaccess)
  5. ftp / apache 的使用者帳號磁碟配額 (quota) 功能

第八週:期末考題總整理
  1. 你系統的 SELinux 請將他調整成 Permissive 的模式;

  2. 我想要讓你的系統更加安全,所以軟體的更新是很重要的。請依序進行:
    1. 先修改 yum 設定檔,讓你前往 http://ftp.ksu.edu.tw/ 取得 os 及 updates 這兩個 repository
    2. 請進行全系統的更新,且在更新完畢後,使用新的核心開機;
    3. 設定每天的凌晨 3:10 進行一次全系統更新。

  3. 我想讓系統具有基本的防火牆,因此請依據如下的規則順序,設定好你的防火牆規則:

    政策給予方面:
    1. 清除所有規則 (包括 filter 與 nat 表格)
    2. INPUT 為 DROP 其餘為 ACCEPT

    規則順序方面:
    1. lo 為信任裝置
    2. 來自 eth0 且為 192.168.42.0/24 的封包,均是信任網域
    3. 只要是自己發出的回應封包,通通予以接受
    4. 放行所有的 icmp 封包
    5. 來自 172.16.0.0/16 的來源,均可使用你的 POP3 服務;
    6. 來自 172.17.0.0/16 的來源,均可使用你的 SSH 功能;
    7. 你的 http 有對全世界開放;
    8. 你的 FTP 對全世界開放

    執行腳本,觀察之,若沒有問題,請覆寫到正確的規則檔中

  4. 建立一個 Software RAID ,所需要的參數如下:
    1. 確認 /dev/sda8 以前的 partition 必須要保留,底下新增 /dev/sda9 以後分割槽
    2. 共有 5 個相同容量的裝置,每個裝置 1.2GB (partition 的大小);
    3. 四個一組建置成為一個 level 5 的軟體磁碟陣列,且額外含有一個 spare disk ,所以總共花費 5 個裝置之意;
    4. 這個磁碟陣列被格式化成為 ext3 的檔案系統;
    5. 這個新的磁碟陣列被掛載到 /home 這個目錄下,且加入 acl 控制參數;
    6. 這個新的檔案系統在每次開機後都會自動掛載 (/etc/fstab)

  5. 帳號建置,我需要的帳號如下,請依序幫我建立他:
    1. 建立一個群組,名稱為 examgroup
    2. 建立三個帳號,這三個帳號的有加入 examgroup 群組,三個帳號名稱為: examuser1, examuser2, examuser3
    3. 這三個帳號的密碼均為 password
    4. 這三個帳號的共享目錄設定在 /home/examdir/ 中,請自行處理正確的權限喔!

  6. 帳號建置,我需要的特殊帳號與功能如下:
    1. 建立一個獨立的帳號,名稱為 examcheck,密碼為 password ,不屬於 examgroup 群組;
    2. 這個帳號要能夠進入與察看 /home/examdir/ (需有 r,x 權限)。

  7. 帳號控管,我需要將所有帳號的磁碟配額設計成為如下模樣:
    1. 主要控制 /home 這個 filesystem 的磁碟配額 (請處理 /etc/fstab 等動作)
    2. examuser1, examuser2, examuser3 的磁碟配額,管制的是容量,且 soft 為 100MB ,hard 為 200MB
    3. examcheck 的磁碟配額則為 soft 50MB, hard 100MB

  8. 異地備援,你需要的是 rsync 這個指令,且你有一個帳號名稱為 guestXX 在 192.168.42.42 那部主機上,然後:
    1. 你需要可以自動的使用 ssh 以 guestXX 帳號登入該系統,不需要密碼
    2. 你需要將你的 /home, /etc 備份到 192.168.42.41:/home/guestXX/backup/ 當中 (透過 rsync)
    3. 你需要每天凌晨 5:10am 進行上述動作。

  9. 你需要啟動代理伺服器,啟動的重點如下:
    1. 你需要啟動 proxy 埠口為 3128
    2. 這部 proxy 可以提供 192.168.42.0/24 來使用代理伺服器的功能。

  10. 系統偵測功能:你需要每天 3:30am 進行 rootkit hunter 的自動偵測功能喔!(不用進行)

  11. examuser1 等人均可使用 ftp ,但每個用戶都預設被鎖住在家目錄內 (chroot)

  12. 當有人使用 http://你的IP/secure/ 時,螢幕會出現需要輸入帳號密碼的資訊,且只要輸入帳號為 exam ,密碼為 password , 他就會看到螢幕出現:『 You can access this directory 』的字樣了!