• 沒有找到結果。

網頁資料的自動安全檢查及回復

N/A
N/A
Protected

Academic year: 2021

Share "網頁資料的自動安全檢查及回復"

Copied!
69
0
0

加載中.... (立即查看全文)

全文

(1)

逢甲大學

資 訊 工 程 學 系 專 題 報 告

網頁資料的自動安全檢查及回復

學生:

盧勇廷(四乙)

楊易霖(四乙)

蘇永明(四乙)

指導教授:

李維斌

中華民國九十一年十二月

(2)

目錄

第一章 序論 1.1 研究動機 6 1.2 專題目標 7 1.2.1 Tripwire 軟體簡介 7 1.2.2 Tripwire 軟體實務操作 7 1.2.3 研究目標 13 1. 3 開發環境與設備 _ _ 14 第二章 網路安全簡介 2.1 網路安全的重要性 _______________________18 2.2 影響網路安全的因素 ___20 2.3 駭客入侵的方法 21 2.3.1 鎖 定 目 標 22 2.3.2 資 料 的 來 源 22 2.3.3 駭 客 入 侵 (清 查 ) 24 2.3.4 駭 客 入 侵 (資 源 分 享 ) 25 2.3.5 駭 客 入 侵 (攻 擊 ) 26 2.3.6 虛 構 的 網 頁 27 2.3.7 句 點 錯 誤 (dot bug) 29 2.3.8 網頁入侵 29 2.4 網路安全的目標 30 2.4.1 邁向網路安全的步驟 31

第三章 Apache Web Server 簡介 3.1 Apache Web Server 簡介 32

3.2 安裝 Apache Web Server 33

3.3 測試 Apache 伺服器 35 第四章 Secure Hash Algorithm -1技術簡介

4.1 SHA-1 簡介 _____ 36 演算法技術介紹與實做

(3)

4.2.1 SHA-1 演算法整體流程 37 4.2.2 Padding 原則 38 4.2.3 分割運算 ____ 38 4.2.4 單次運算 ____ 41 4.3 實做部分 43 第五章 網路存取資訊服務的機制 5.1 何謂 Socket 45 5.2 Socket 的分類 46 5.3 Socket 的運作機制 47 5.4 Perl 的 Socket 49 第六章 系統架構與設計 6.1 系統簡介 50 6.2 User 存取 Server 的行為 51 6.3 系統架構 52 6.4 對於 Web Server 的作業 54 6.5 FTP Backup Server 56 6.6 循環偵測及自動回復 57 第七章 專題感想與心得 7.1 心得 58 第八章 專題未來展望 8.1 安裝 Apache Module with C 59

8.2 安裝 Apache Module with Perl 64

Appendix Reference 67

(4)

圖表目錄

圖 1.2.1 Tripwire 作業流程圖 11 圖 2.3.1 常見駭客入侵之流程圖 20 圖 4.1.1 SHA-1 搭配 DSA 用法 35 圖 4.2.1 SHA-1 的演算法流程圖 36 圖 4.2.2 SHA-1 單次運算的流程圖 40 圖 5.3.1 Socket 於網路中的運作 47 圖 6.2.1User 存取 Server 的行為 50 圖 6.3.1 專題系統整體簡單架構圖 52 圖 6.4.1 目錄結構及檔案檢查後開始求特徵值 53 圖 6.4.2 對於 Web Server 作業架構 53

圖 6.5.1 Web Server 檔案備份到遠端 Server(LAN 內的 FTP Server) 53

圖 6.5.2 FTP Backup Server 內備份情形 53 圖 6.6.1 循環檢查檔案是否有遭到損壞或竄改 53 圖 6.6.2 下載備份檔自動復原 53 圖 8.1.1 Load Module 55 圖 8.1.2 AddModule 56 圖 8.1.3 設定 hello demo 網頁要求 57 圖 8.1.4 重新載入 Apache 58

(5)
(6)

第一章

序論

1.1 研究動機

在 2002 年的今天,因網路技術之蓬勃發展,電腦被廣泛使用, 網際網路對現在的人們已經是生活上不可或缺的一環,不論是個人的 資料、或是公司商業資料都可透過網路作為媒介來存取,因此各種伺 服器因需要而如雨後春筍般不斷地被架設,如網頁伺服器、資料庫伺 服器、FTP 伺服器等,但因現今網路普及化使得網路駭客也因此大量 倔起,惡意入侵、破壞電腦系統,竄改電腦內部資料及網頁,對網路 安全造成相當大的危害,至使企業因此而蒙受了越來越高的損失,故 各式各樣防火牆技術的設計便蘊育而生,為的是防止駭客以各種的手 法及管道來入侵破壞網頁的資料,但畢竟道高一尺、魔高一丈,防火 牆技術雖然能夠阻擋大部份非法駭客的入侵,但終究有少數了解網路 內部架構的駭客能夠找到方法進入電腦,進而竄改內部資料,因此防 火牆無法完全阻止網頁資料被竄改,故亡羊補牢便成了非常重要的工 作,如何快速的發現遭到竄改的資料進而將其回復則能彌補防火牆安 全防護不足之處。

(7)

1.2 專題目標

1.2.1 Tripwire 軟體簡介

Tripwire 為檢查檔案及目錄異動的工具,利用 Tripwire 可以很容易發現 日常使用的系統會發生下列的事情: 1 檔案內容被修改 2 檔案及目錄被增加 3 檔案及目錄被刪除 4 檔案及目錄的存取權限被修改

1.2.2 Tripwire 實務操作

1. 取得軟體 原始碼版本可至 http://sourceforge.net/projects/tripwire/ 取得,請下載 tripwire-2.3.1 以上的版本。編譯好的版本可至 http://www.openna.com/download/tripwire/tripwire-downl oad.htm 取得,下載 tripwire-2.3.1-1.i686.rpm。 PS:原本 www.tripwire.org 上提供的 tripwire-2.3-47 這個版 本有安全上的bug。 2.安裝 Tripwire (這邊使用 RPM 的版本來安裝) a.用 root,使用下列命令安裝 rpm -ivh tripwire-2.3.1-1.i686.rpm b.在使用 RPM 安裝後,再執行 /etc/tripwire/twinstall.sh 來完

(8)

成 tripwire 的安裝。

執行此script 時,其會詢問 site keyfile passphrase 與 local keyfile passphrase,並用兩個 key 來 sign policy 與設定檔,避 免入侵者改變 tripwire 的安裝設定,所以強烈建議您取個好的密 碼。site key 被用來 sign tripwire 的 policy 檔,sign 完後檔名 通常是tw.pol;local key 被用來 sign tripwire 的設定檔,sign 完後檔名通常是tw.cfg。再來請將 tw.cfg 拷貝到 /usr/sbin/ (v0.3 update) 。 PS: Tripwire 的相關檔案都放置在 /etc/tripwire 目錄下。 3.自定 policy file 由於 tripwire 安裝時是使用預設的 policy ,其中可能會因個人 Linux 系統的不同,而不能完全適用。所以需要自行修改 policy 來 滿足個人的需求。 tripwire 己經在 /etc/tripwire/twpol.txt 內有 存放一個純文字的 policy 檔,所以依這個檔案來修改。

記得修改 HOSTNAME=xxxx; <-- your hostname

另外,檔案內的$(SIG_HI) 或 $(SEC_BIN) 為預設的自定 property mask ,在此檔開始前面 @@section FS 就可找到。 例如我們有安裝 ssh ,則另外又因為 /usr/sbin 在前面己經有 設定了,所以不用加入 /usr/sbin/sshd 的 rule。

(9)

範例: (

rulename = "My Customer rule", severity = $(SIG_HI) ) { # ssh2 /etc/ssh -> $(SEC_BIN) ; } 4.初始 tripwire 資料庫 /usr/sbin/twadmin -m P /etc/tripwire/twpol.txt /usr/sbin/tripwire -m i 5.精簡 policy file 使用下列命列,找出 policy file 中有定義,但這台機器卻沒有此 檔案或目錄的 rule ,將它從 policy file 中去除。

/usr/sbin/tripwire -m c | grep Filename >> twnotfound.txt

當編輯完 policy file 後,需要重新安裝 policy,可使用下列命令 重建 Database:

/usr/sbin/twadmin -m P /etc/tripwire/twpol.txt /usr/sbin/tripwire -m i

6.移除純文字的 policy 與 設定檔

由於 tripwire 己經利用 key 將 policy 與設定檔 加密成 tw.pol,tw.cfg 了,所以原始的 policy 與設定檔便可移除了。

(10)

rm /etc/tripwire/twpol.txt rm /etc/tripwire/twcfg.txt

7.排程執行 tripwire 分析(每小時一次)

在 /etc/cron.hourly/ 下新增一個可執行的 script,內容如下: #!/bin/sh

/usr/sbin/tripwire -m c | mail -s "Tripwire Report from {some_host}" root@localhost 8.資料庫更新 若系統有安裝或修改檔案,需要更新 tripwire 的資料庫,不然會 一直收到警告的信。 使用下面命令: /usr/sbin/tripwire -m u -r /var/lib/tripwire/report/{最後時 間}.twr 之後會進入 vi 編輯報表,Tripwire 的報表會在每一個違反策略檔 案中所定義的規則的地方加上一個選擇框。可保留選擇框中的"x", 表示接受這個變化。如果把選擇框中的"x"移掉,表示資料庫不會更 新這個變化。等結束編輯器並輸入本地的passphrase(密碼)之後, Tripwire 就會更新並存檔資料庫。 9.更新 policy 檔 先將現有的 policy 內容匯出成純文字檔 twpol.txt,

(11)

/usr/sbin/twadmin -m p > /etc/tripwire/twpol.txt 再修改 /etc/tripwire/twpol.txt,修改完再更新回去, /usr/sbin/tripwire -m p /etc/tripwire/twpol.txt 更新回去後,再執行一次完整性檢查,看看 policy 是不是想要的。 /usr/sbin/tripwire -m c 記得還要刪除 /etc/tripwire/twpol.txt PS:當然也可以使用 twadmin -m p /etc/tripwire/twpol.txt 來更新策略檔,但更新完後還需要重新初始化tripwire 資料庫。所 以不建議使用。 2. 10.更新設定檔 取出現有的設定內容匯出成純文字檔 twadmin -m f > twcfg.txt 修改 twcfg.txt ,再更新回去

twadmin -m F --site-keyfile /etc/tripwire/site.key twcfg.txt

刪除 twcfg.txt 文件參考:

1. Tripwire Open Source 官方網站說明文件 http://www.tripwire.org/

2.Getting Started with Tripwire (Open Source Linux Edition)

http://www.linuxsecurity.com/feature_stories/tripwire-print er.html

(12)

3. Tripwire Operation Process

(13)

1.2.3 研究目標

經研究過 Tripwire 之後,發現 Tripwire 有幾項無法作的事 1 無法即時杜絕不當的存取 2 無法即時偵測出檔案的異動 3 無法偵測出誰修改了檔案 4 無法特別得知那個部份被修改(卻可以偵測出重要檔案的存取權限被 修改過) 5 不是自動檢查資料庫的變動的工具 6 沒有檔案自動還原的功能 針對第六項 Tripwire 無法對遭竄改的檔案做自動還原的功能加以改 良,我們特別設計能夠偵測出某一檔案遭竄改,還要將遭到竄改的檔 案還原,以降低因遭到駭客入侵的破壞程度,減少各項的損失。

(14)

1.3 開發環境與設備

本專題主要利用 Perl 寫成。 Perl 介紹及優點

Perl 是 Practical Extraction Report Language 的縮寫,是一種能掃視任意文 字檔,並且能從中取出資訊製成報表的解譯語言(Interpreter)。如果你懂 UNIX 的話,它的目的就是用來取代 UNIX 原有的 sed、awk 與 shell script 的組合,用來匯集資訊、產生報表的一個工具語言(程式)。Perl 的作者 是 Larry Wall <lwall@netlabs.com>。他曾經貢獻過好幾個很有用的 Public Domain 程式給大家使用,包括 patch 和 rn。他設計 Perl 時的哲學是以實 用為第一優先(所謂的實用就是語言容易使用、有效率,而且完整),而 不是設計一個看起來很漂亮的語言(漂亮就是程式非常的小,語法幽 雅,而且只由最少的語法基本元素構成)。 Perl 包含了 C、sed、awk 和 sh 這幾個工具最好的特色,而且主要的語 法很接近 C 語言,對原本熟悉 C 語言的人來說非常容易上手。就一般 而言,除了 C 以外,如果能再懂 shell script 的語法是最好不過了,因為 Perl 中一些符號的使用和 shell script 是一致的。當然如果又懂得 awk 和 sed 那就更好了。Larry Wall 說過一句話:「Perl 是懶人用的工具」。如

(15)

果 Perl 不是比其它語言更好更簡單更容易上手,恐怕很少人願意去學 習新的程式語言。

正由於 Per 易於處理字串參數傳遞的特性,自然成了某些特殊用途的新 寵,尤其是 CGI,彷彿 Perl 天生是為了 CGI 而設計的! 事實上 CGI 本 身定義是和使用的程式語言種類無關的,你可以用 C、Fortran、甚至 Visual Basic、Delphi 來寫 CGI 程式。那為什麼大家現在都採用 Perl 呢? 原 因有下面幾點: • Perl 有非常傑出的文字處理能力,能輕易地產生 HTML 文件,尤 其它具有完整的 Regular Expression 語法,使得在 C 語言看來必 需要寫一大串程式碼的功能,Perl 幾行就解決了。 • Perl 是一種直譯式語言,因此可以避免在各種不同系統上,還需 要重新編譯的麻煩。

• Perl 的檢查旗標(-T)可以保護你的 Web Server,避免被未經授權 的 client 破壞。

一個語言的好壞,我想我們可以從三個方向來看:資料型態(data type)、 流程控制敘述(control statements)、特殊功能。

(16)

(pointer,Perl5 以後才支援),所以也可以和 C 語言一樣組合出很 複雜的資料結構(data structure)。特別的是 Perl 有一種新的 data type:相關陣列,它和一般陣列沒什麼不同,差別只在它的索引 值是用字串,而非一般常用的整數值,因此相關陣列不像一般陣 列一樣有次序的概念,它沒有所謂的第一項資料這種說法。我個 人認為如果能善用這種 data type 會帶給你意想不到的收獲哦。 • Perl 的條件控制敘述(conditional control statements)與迴圈控制敘

述(loop control statements)幾乎和 C 語言一模一樣,甚至語法和一 些常用的指令也和 C 語言很類似,這對一般使用者而言是很方便 的,可以很快的讓使用者進入狀況,進一步了解 Perl 的精華。而 在 Perl5 中又引進了模組化和區域變數(local variables)的觀念,大 大的增強了 Perl 的能力,使 Perl 幾乎變得無所不能。

• Perl 處理字串的能力是眾所皆知的,除了它的純量變數(scalar variable)可以很輕易的存取字串,特別的是 Perl 提供和 UNIX 很 相近的 Regular Expressions 語法,這種格式辨認(pattern-matching) 的語法很複雜但十分強大,大大地增強了 Perl 處理字串的能力, 要善用 Perl 處理字串的能力,就得先對 Regular Expressions 痛下 一番功夫不可。這個東東實在不好懂,不過只要用上了手,真的 是如虎添翼,每次使用時都會為它強大的功能竊喜,反而覺得 C

(17)

平淡無奇。另外 Perl 有一堆特殊的全域變數(global variables),用 來設定程式的執行環境和其他細節,可能小到陣列索引的起始 值,大到輸出欄位的分隔符號都有影響。這麼多的特殊變數對大 多數的人而言是只是個困擾,但是若要深入了解 Perl、善用 Perl, 最好多了解這些特殊變數的意義。

(18)

第二章

網路安全簡介

2.1 網路安全的重要性

不管是腳踏車、摩托車、還是汽車,大部分的人買了之後,幾乎 都還會再加買一把鎖。大部分的人寫信都會用信封,信寫完了,將信 封口封住後,才會丟到郵筒裡。但是今天我們用的的電腦,不論軟、 硬體,都沒有鎖,都缺乏安全性。 電子郵件,除了需要密碼以便從主機取信、寄信外,我們的電子郵件 幾乎和寄明信片一樣透明,只要是有心人,都可輕而易舉地看到信件 的內容。我們的電腦也沒有「鎖」,大部分在公司上班的人都讓電腦 開著就離開,這些電腦和電腦裡的資料就這樣擺在那兒,等這有心人 士來拿。 事實上,不論在哪兒(政府單位、銀行、公司行號、研究單位、家 裡),電腦裡的資料都是最珍貴的,最值得保險的。 整個電腦界或是網路社會對於電腦資料之安全性都沒有辦法提出 解決方案,大部分的人或公司都認為電腦和網路還不是一個很安全的 地方,對於網路也還沒到完全信賴的程度。但是電腦和網路增加了資

(19)

訊的傳輸,許多交易也漸漸地利用電腦及網路來完成,因而增加了陌 生人破壞電腦及網路的機會。 以前只有銀行用電腦,現在幾乎所有的公司、醫院、政府單位、 百貨公司、倉儲、工廠、所有的金融體系都用電腦了,甚至連電梯、 電話也都用電腦來控制。電腦儲存了太多個人資料,太多工作程序, 當電腦和傳輸資料的網路的安全性不足時,該怎麼辦呢?而所謂的安 全性,來自各種威脅,天災人禍、停電、系統本身的錯誤...。但是這些 安全顧慮並不是個人或是幾家公司可解決的問題,有些可以靠政府立 法維護,有些則是社會責任與道德。

(20)

2.2 影響網路安全的因素

網路實體為電話線、電纜、或是光纖的組合,「網路」本身沒有什 麼危險性。網路安不安全的問題在於:用網路傳遞資料是否很容易遺 失、毀損、或是被人截取。用網路傳輸資料到彼端之後,彼端電腦如 何保管這些資料,這些安全性題,基本上牽涉到的因素很多:軟、硬體 的技術問題,以及使用者的觀念和使用方式。 基本上網路安全的因素主要是來自兩點。 1. 人為疏忽:自己本身自闢其他不安全路徑使整體網路有缺口、漏洞。 2. 惡意入侵:如駭客入侵(密碼破解、木馬) 人為疏忽或是不清楚如何設定網路導致不安全部份,通常來自於自 身對網路安全不夠熟悉,其實駭客也正針對這一點,一一探查漏洞並使 網路之安全亮起紅燈,只要明瞭駭客的用意及手法,自然可以將漏洞一 一填補。

(21)

2.3 駭客入侵的方法

(22)

2.3.1 鎖定目標

當 一 個 駭 客 在 想 入 侵 之 前 , 一 定 會 先 對 攻 擊 的 目 標 做 好 完 整 的 資 料 收 集 , 就 像 強 匪 想 洗 劫 銀 行 , 不 會 貿 然 走 進 銀 行 , 而 去 強 奪 財 物 , 他 們 會 事 前 做 好 演 練 , 規 畫 犯 案 路 線 , 收 集 有 關 銀 行 的 資 訊 一 包 括 守 衛 交 班 時 間、監 視 器 的 位 置、櫃 台 人 數 .… . 等 一 切 相 關 資 料 。 駭 客 也 是 如 此 , 他 們 必 須 先 勘 查 目 標 的 網 路 架 構 、 系 統 漏 洞 之 後 , 才 會 發 動 一 次 致 命 的 攻 擊 , 並 且 有 系 統 地 從 眾 多 情 報 中 去 分 析 , 找 出 關 鍵 性 的 缺 口 , 然 後 再 從 缺 口 自 由 進 出 。

2.3.2 資料的來源

通 常 駭 客 會 先 從 網 頁 上 找 資 料 : 總 公 司 住 址 、 電 話 號 碼 、 E-MAIL 文 件、相 關 新 聞 之 類 約 有 關 文 件。再 來 網 路 上 有 很 多 開 放 式 的 資 料 庫 , 也 是 駭 客 收 集 資 料 的 天 堂 , 如 : 臺 灣 的 TWNIC 資 料 庫 (www.twnic.net)或 是 國 外 由 Network Solutions(http://networksolutions.com)所 架 設 的 InterNIC 資 料 庫 。 這 些 資 料 庫 都 可 以 利 用 whois 的 搜 尋 功 能,在 輸 入 公 司 行 號 的 網 域 名 稱 後 , 就 可 以 得 到 公 司 所 註 冊 網 域 相 關 資 料 , 如 : 登 記 者

(23)

名 稱 、 住 址 、 電 話 、 聯 絡 人 , … ‥ 等 資 訊 。 得 到 相 關 資 料 後 , 駭 客 就 可 以 進 一 步 利 用 DNS 搜 集 更 多 的 資 訊 , 我 們 都 知 道 DNS 是 分 散 式 的 資 料 庫 , 主 要 是 負 責 IP 和 主 機 名 稱 之 間 對 應 查 詢 , 假 設 DNS 設 定 有 漏 洞 , 就 很 有 可 能 造 成 資 料 外 流 。 舉 例 來 說 , 通 常 系 統 管 理 者 都 會 有 兩 個 DNS 伺 服 器 , 也 就 是 說 有 一 個 主 DNS 和 一 個 次 DNS。而 次 DNS 的 任 務 就 是 從 主 DNS 取 得 新 的 資 料 庫 進 行 更 新 的 動 作 , 或 是 萬 一 主 DNS 故 障 時 , 可 以 作 為 替 代 之 用 。 但 是 , 問 題 就 出 在 這 裡 , 如 果 DNS 設 定 有 問 題 , 駭 客 可 以 偽 裝 成 次 DNS,向 主 DNS 提 出 更 新 資 料 庫 的 動 作,如 此 一 來, 駭 客 就 可 以 得 到 公 司 內 部 主 機 所 有 的 IP 位 置 , 也 就 是 把 自 己 國 家 的 戰 略 地 圖 給 予 敵 人 一 般 。 而 駭 客 是 如 何 向 DNS 取 得 這 些 資 料 ? 其 實 很 簡 單 , 在 WINDOWS NT 底 下 (或 是 UNIX)有 一 個 nslookup 程 式,透 過 交 談 模 式,就 可 以 得 到 豐 富 的 重 要 資 訊。當 駭 客 找 到 "地 圖 "之 後,就 開 始 去 觀 察 地 形 -檢 查 它 存 取 路 徑 (access path)和 網 路 拓 樸 (network topology),利 用 最 簡 單 的 tracert 指 令 (在 windows nt 和 unix 或 route 底 下 叫 traceroute),它 會 利 用 封 包 (packet) 中 的 TTL(time-to-live),每 經 過 一 台 路 由 器 (route)時,TTL 值 會 被 減 去 1 直 到 0。 因 此 , tracert 指 令 就 像 一 個 計 數 器 , 每 經 過 一 個 節 點 (路 由 器 )就 計 算 一 次,這 樣 一 來 就 很 容 易 知 道 封 包 所 行 進 路

(24)

線 圖 , 作 為 探 測 目 標 網 路 拓 樸 最 好 的 方 式 。 不 過 , 有 些 企 業 會 加 裝 防 火 牆 來 攔 劫、阻 擋 這 些 traceroute 的 探 測 封 包,造 成 ICMP 或 UDP 的 封 包 沒 有 辦 法 ECHO 回 來 , 就 會 出 現 星 號 (*)的 字 樣 。

2.3.3 駭客入侵--清查

假 設 資 料 收 集 就 像 是 銀 行 搶 匪 在 做 地 形 勘 查 , 清 查 就 是 去 找 銀 行 所 有 的 出 入 口 、 門 窗 以 及 任 何 有 破 綻 的 地 方 。 駭 客 透 過 資 料 的 收 集 已 經 得 到 一 個 初 步 的 輪 廓 , 進 一 步 就 是 要 去 找 出 哪 些 系 統 主 機 是 有 用 的、哪 些 有 正 常 運 作 (alive),透 過 ping 的 清 查 和 通 訊 埠 的 掃 瞄 (port scan)及 其 他 駭 客 工 具 , 就 可 以 發 現 很 多 主 機 重 要 的 漏 洞。利 用 ping 的 指 令 可 以 找 一 個 網 路 區 段 IP 裡 有 哪 些 主 機 在 運 作 , ping 一 般 會 對 目 標 送 出 一 個 封 包 , 如 果 對 方 主 機 是 存 在 的 就 會 自 動 送 回 一 個 回 應 封 包 (echo packet), 這 樣 就 可 證 明 目 標 主 機 正 在 運 作 。 不 過 , 也 有 例 外 的 情 況 發 生 , 遇 到 具 有 安 全 觀 念 的 系 統 管 理 者,就 會 將 這 個 封 包 ICMP 攔 下,不 會 有 任 何 回 應 封 包 , 製 造 主 機 不 存 在 的 假 象 。 這 時 候 , 駭 客 也 不 是 省 油 的 燈 。 依 然 可 以 用 別 的 方 式 來 證 明 主 機 是 否 存 在 。 使 用 通 訊 埠 的 掃 瞄 試 著 去 連 結 電 腦 主 機 的 TCP 和 UDP 的 所 有 埠,檢 驗 它 所 提 供 的 服 務 種 類 或 是 有 在 聽 (Listen)的 狀 態 。 只 要 找 到 某 幾

(25)

個 在 聽 的 埠,通 常 主 機 一 定 是 存 在 的,而 且 是 攻 擊 的 最 佳 缺 口 , 通 常 TCP80 埠 都 是 存 在 的 , 因 為 它 是 一 個 常 用 的 埠 , 大 部 份 網 域 都 會 准 許 它 經 過 路 由 器,甚 至 於 進 入 核 心 區 域,所 以 利 用 TCP PING 掃 瞄 就 會 向 主 機 送 出 TCP ACK 的 封 包 。 如 果 對 方 TCP 通 訊 埠 沒 關,是 正 常 運 作 就 會 回 應 一 個 TCP SYN/ACK 的 封 包,然 後 攻 擊 者 電 腦 會 自 動 送 出 一 個 ACK 封 包 。 如 此 一 來 就 建 立 一 個 TCP 的 連 線 。 最 後 , 駭 客 會 清 查 出 所 有 潛 在 的 目 標 主 機 , 為 下 一 個 階 段 作 準 備 。

2.3.4 駭客入侵-資源分享

當 銀 行 搶 匪 收 集 完 所 有 的 資 訊 , 決 定 好 搶 奪 與 逃 亡 的 路 線 之 後 , 進 一 步 地 就 是 針 對 銀 行 保 險 庫 裡 的 現 金 、 黃 金 、 股 票 , 做 一 個 完 整 的 搜 查 , 去 確 認 保 險 庫 何 時 啟 動 、 裡 面 到 底 有 多 少 有 價 值 的 東 西 等 。 此 時 的 駭 客 也 是 如 此 , 他 們 要 去 對 目 標 系 統 作 查 詢 的 工 作 , 找 出 可 以 分 享 的 資 源 和 使 用 者 群 組 以 及 其 應 用 程 式 和 標 誌 。 在 微 軟 的 作 業 系 統 裡 , 對 於 網 路 的 資 源 共 享 部 份 , 給 予 很 大 的 方 便 , 其 用 意 也 是 希 望 大 眾 能 互 相 交 換 資 源 , 想 不 到 的 是 , 也 正 好 給 駭 客 一 個 入 侵 的 管 道 。 駭 客 使 用 WINDOWS 底 下 的 NET VIEW 的 命 令 就 可 以 列 出 相 關 的 網 域 和 網 域 上 所 有 的 機 器 , 更 進 一 步 地 建 立 連 線 之 後 , 透 過 NetBIOS 可 以 去 列 舉

(26)

遠 端 電 腦 系 統 上 的 資 源 分 享 , 就 可 以 清 楚 的 看 到 分 享 的 檔 案 資 料 , 甚 至 於 修 改 或 刪 除 這 些 資 料 。 此 外 , 利 用 nbtstat 的 命 令 也 可 以 找 出 遠 端 系 統 的 NetBIOS 表 , 分 析 其 中 的 使 用 者 資 訊 , 如 果 運 氣 好 的 話 , 很 快 地 就 可 以 將 使 用 者 帳 號 密 碼 抓 回 來 , 好 好 的 享 用 了 ! 當 然 要 防 堵 這 些 資 源 外 洩,最 好 的 方 法 就 是 關 閉 TCP 和 UDP 埠 從 port 135-139 全 部 濾 掉,就 可 以 避 免 駭 客 從 NetBIOS 的 漏 洞 侵 入。在 UNIX 底 下 也 有 類 似 的 指 令 -finger,這 算 是 UNIX 系 統 中 最 老 掉 牙 的 招 數 。 仍 然 是 有 駭 客 嘗 試 去 用 它 , 對 付 一 些 不 負 責 任 且 無 知 的 網 路 管 理 員 , 透 過 figer 指 令 會 自 動 列 出 使 用 者 資 訊 , 讓 攻 擊 者 很 清 楚 猜 測 知 道 root 的 動 態 。 唯 一 的 解 決 之 道 , 就 是 將 finger 的 功 能 關 掉 , 就 能 省 下 很 多 不 必 要 的 麻 煩 。

2.3.5 駭客入侵-攻擊

駭 客 入 侵 的 方 式 多 的 可 以 寫 成 一 本 厚 厚 的 書 。 在 前 一 陣 子 , 駭 客 所 採 用 的 一 種 新 攻 擊 方 式 -分 散 式 阻 斷 服 務 攻 擊 (Distributed Denial of Service Attack)造 成 許 多 知 名 網 站 如 : Yahoo、 Amazon、 CNN 的 網 路 在 短 時 間 內 攤 瘓 。 其 實 在 早 期 就 有 所 謂 的 拒 絕 服 務 (DOS)攻 擊 程 式,它 具 有 兩 種 攻 擊 方 式,一 是 頻 寬 的 消 耗,就 是 發 送 大 量 封 包 給 予 目 標 主 機 , 進 一 步 造 成 對 方 主 機 無 法 負 荷 而 掛 掉。二 是 資 源 的 消 耗,等 於 是 消 耗 系 統 的 資 源:CPU、記 憶 體

(27)

等 , 可 能 就 導 致 系 統 當 機 或 是 應 用 系 統 無 法 處 理 。 不 過 , 分 散 式 阻 斷 服 務 攻 擊 更 為 厲 害 , 其 基 本 的 原 理 , 就 是 駭 客 先 去 控 制 一 些 具 有 高 速 頻 寬 或 是 位 於 交 通 要 道 的 主 機 , 安 裝 好 DDOS 的 攻 擊 套 件 , 然 後 選 定 目 標 IP, 對 於 不 同 的 通 訊 埠 , 發 送 大 量 的 UDP 封 包 。 由 於 駭 客 在 短 時 間 內 啟 動 被 控 制 的 主 機 , 然 後 發 動 一 波 又 一 波 的 攻 勢,網 路 上 是 沒 有 一 台 主 機 能 承 受 得 住。而 且 , 更 厲 害 的 是 DDOS 會 去 偽 造 來 源 IP, 受 害 者 可 能 會 看 到 很 多 偽 造 IP,使 得 被 攻 擊 的 目 標 主 機 很 難 去 查 駭 客 的 行 蹤。像 這 種 DOS 攻 擊 , 並 不 需 要 太 多 的 技 術 , 因 為 很 多 駭 客 網 站 都 提 供 現 成 的 程 式 , 提 供 網 友 下 傳 , 造 成 網 路 社 會 更 加 的 混 亂 。

2.3.6 虛構的網頁

另 外 一 種 著 名 的 駭 客 入 侵 方 式 , 就 是 駭 客 會 去 設 計 一 套 虛 構 的 網 頁 和 真 實 網 頁 一 模 一 樣 , 假 設 是 某 家 銀 行 的 首 頁 , 然 後 將 它 們 丟 在 網 路 上 的 搜 索 引 擎 中 , 一 般 的 使 用 者 不 可 能 會 去 熟 稔 銀 行 的 網 址 , 大 部 份 的 人 或 許 會 到 搜 索 引 擎 裡 去 尋 找 相 關 的 網 頁 , 當 使 用 者 不 小 心 誤 入 了 駭 客 虛 構 的 網 頁 中 , 如 果 沒 有 仔 細 去 看 網 址 , 直 覺 就 是 到 某 銀 行 首 頁 不 曾 發 現 有 什 麼 不 同 , 這 時 候 駭 客 會 給 予 使 用 者 一 個 JavaScript 提 示 使 用 者 輸 入 其 帳 號 與

(28)

密 碼 , 然 而 使 用 者 輸 入 之 後 就 會 將 資 料 回 傳 到 駭 客 的 資 料 庫 中 , 而 駭 客 虛 構 的 網 頁 又 馬 上 超 連 結 到 原 本 真 實 的 網 頁 之 中 , 此 時 使 用 者 或 許 會 覺 得 奇 怪 網 頁 又 重 新 整 理 一 次 , 而 直 覺 只 會 認 為 自 己 輸 入 密 碼 可 能 有 錯 或 是 有 其 他 問 題 , 而 再 輸 入 一 次 , 即 可 進 入 到 真 實 銀 行 的 網 頁 裡 , 使 用 者 完 全 不 會 發 現 有 任 何 異 狀 。 就 這 樣 駭 客 輕 輕 鬆 鬆 的 等 著 帳 號 和 密 碼 上 門 , 再 利 用 這 些 戶 頭 做 一 些 為 非 做 歹 的 事 情 。 類 似 情 況 在 國 內 , 由 於 網 友 對 網 路 銀 行 使 用 並 不 十 分 普 遍 , 因 此 少 鮮 有 聽 過 此 種 情 況 發 生 。 不 過 國 內 卻 曾 經 有 家 銀 行 因 為 駭 客 入 侵 銀 行 將 錢 轉 帳 至 國 外 之 後 , 再 將 它 提 領 一 空 的 例 子 。 像 這 種 網 頁 入 侵 手 法 , 唯 一 的 防 治 之 道 就 是 不 要 隨 便 在 網 路 上 輸 入 任 何 帳 號 或 密 碼 包 括 信 用 卡 卡 號 之 類 的 東 西 , 雖 然 各 家 的 銀 行 網 路 安 全 機 制 (SET)目 前 來 說 還 算 不 錯 , 但 是 難 保 不 會 出 現 有 假 網 真 的 情 況 發 生 , 使 用 者 仍 然 還 是 要 注 意 自 己 所 在 的 網 真 是 不 是 真 實 的 網 頁 。 最 好 的 方 式 就 是 將 它 們 加 入 到「 我 的 最 愛 」裡 面,就 不 怕 會 走 入 "歧 途 "的 危 險 。

(29)

2.3.7 句點錯誤(dot bug)

其 他 攻 擊 網 頁 的 手 段 還 有 ASP 的 句 點 錯 誤 (dot bug),這 個 軟 體 漏 洞 使 得 駭 客 可 以 去 大 方 地 檢 視 ASP 的 原 始 碼 , 只 要 在 IIS3.0 之 下 將 ASP 檔 的 URL 後 面 多 加 一 個 或 兩 個 句 點,就 可 以 看 到 ASP 檔 的 原 始 碼 。 整 個 程 式 設 計 都 完 全 曝 光 , 更 可 怕 的 是 , ASP 資 料 庫 裡 的 機 密 如 帳 號 或 密 碼 都 也 有 可 能 會 洩 漏 。 對 於 這 項 ASP 的 句 點 錯 誤 , 值 得 安 慰 的 是 微 軟 已 經 對 此 提 出 了 修 正 方 案 , 您 有 興 趣 的 話 可 以 到 微 軟 的 FTP 站 台 (ftp://np.microson.com)找 到 這 一 個 修 正 檔 案 。 除 此 之 外 還 有 很 多 駭 客 工 具 也 會 自 動 去 尋 找 網 頁 程 式 上 的 弱 點。著 名 約 有 SiteScan 軟 體,只 要 您 輸 入 某 一 個 網 頁 IP 位 址,SiteScan 就 會 自 動 去 檢 查 這 一 個 網 頁 的 弱 點 如 PHP、 PHF、 FINGER 等 等 。 當 駭 客 發 現 有 任 何 漏 洞 時 , 就 會 根 據 這 些 漏 洞 去 輸 入 一 些 特 殊 字 元 字 串 , 其 中 夾 帶 有 命 令 或 參 數 , 送 到 網 頁 伺 服 器 上 執 行 。

2.3.8 網頁入侵(Homepage Hack)

網頁的無遠弗介與廣告力量可以說是任何傳播媒體無法比擬。不過, 網頁對駭客而言可是最喜歡的遊戲。近年來,總是有很多大陸駭客將 臺灣政府網頁一再竄改,貼上五星旗圖片寫下一些反動字眼。而臺灣 的駭客也不干勢弱,將大陸官方網頁也貼上青天白日的國旗,飄揚在

(30)

海峽的對岸,兩岸網友互駭的情況就這樣經常發生,因此網頁安全就 成為一個重要課題。在網路上網頁的通訊埠為 80、81、8000、8001 和 8010 等等,大部份的駭客都是利用此通訊埠來攻擊,因為這些是唯一 可以進入您網頁的節點,所以只要守住這道防線就可以防止駭客入 侵。理論上是如此,但是事實上確沒有我們想像中的容易。在網頁資 料裡,駭客可以很容易的從瀏覽器中的原始檔 HTML 文件,去獲得一 大堆豐富資訊,包括電子信箱號碼、個人資料、電話號碼甚至於一些 有價值的注解和 Java 原始檔案。一旦駭客得到這些資訊之後,便可以 加以分析找出網頁密碼,進一步竄改網頁或是入侵電腦偷取重要資 料。防範的對策就是盡量不要將一些重要資訊遺留在自己的 HTML 的 原始檔中,注解只要用自己看的懂的方式來處理,就可以避免駭客從 中獲取任何的情報。

2.4 網路安全的目標

• 保護資料免遭意外 • 保護資料免遭蓄意破壞 • 維持資料在需要時可取得

(31)

2.4.1 邁向網路安全的步驟

網路安全系統的基本目標與任何一種電腦系統的安全目標十分地相 像 : 1.保護資訊免遭意外破壞或修改 2.保護資訊免遭蓄意破壞或修改 3.當已授權之使用者需要資料時,就確保其可取得,而且是使用者可 使用的格式

(32)

第三章 Apache Web Server 簡介

3.1 Apache Web Server 簡介

Internet 最近幾年成為極熱門的話題之一, 造成這股熱潮的主因便是 World Wide Web(以下簡稱 WWW or Web). 世界各地的 Web Page 的製 作者將自己精心製作的網頁放到網站上, 讓所有其他的人參觀, 透過 這種互動, 整個 Internet 形成一個龐大的資料庫, 我們可以在上面找 到各式各類我們想要的資訊.

那麼如何建立一個網站呢? 除了主機, 作業系統與使用者所製作的網 頁外, 我們還需要安裝一套能將網頁放到網路上讓其它人來存取的軟 體, 也就是所謂的 Web Server. Web Server 比較有名的有免費的 Apache, Microsoft 的 Internet Information Server, Netscape 的 Enterprise Server 等等.

我們介紹的是在 Unix 系統上最受歡迎的 Apache Web Server, Apache 也有 Windows 的版本.,免費的 Apache Web server 具有比商業 Web server 不惶多讓的功能與速度, 同時安裝與設定也十分地容易, 由於這 些特性使得 Apache 成為佔有率最高的 Web Server 軟體.

(33)

3.2 安裝 Apache Web Server

安裝 Apache Web Server

1 使用 RPM 來安裝:

如果是使用 RPM 的檔案,只要打安裝檔案的指令即可。

root@suse: > rpm -ivh apache-1.3.xx.i386.rpm ( xx 代表 Apache

Web Server 版本 )

2 使用 SOURCE 來安裝:

如果使用的是 Apache Web Server 的 Source,那麼必需對 Source 進行 編 譯並且加以安裝:

root@suse: > tar zxvf apache_1.3.xx.tar.gz

root@suse: > cd apache_1.3.20

root@suse:

>./configure --prefix=/usr/local/apache --enable-module=so root@suse: / apache_1.3.20 > make ; make install

(34)

會看到一段歡迎的選單,表示已經把 Aache 給安裝好囉! +---+

| You now have successfully built and installed the

| Apache 1.3 HTTP server. To verify that Apache actually | works correctly you now should first check the

| (initially created or preserved) configuration files |

| /usr/local/apache/conf/httpd.conf |

| and then you should be able to immediately fire up | Apache the first time by running:

|

| /usr/local/apache/bin/apachectl start |

| Thanks for using Apache. The Apache Group | http://www.apache.org/

+---+

(35)

3.3 測試 Apache 伺服器

首先重新啟動 Apache Web Server 使用 RPM 安裝:

執行 /etc/rc.d/init.d/httpd restart

使用 SOURCE 安裝:

(36)

第四章

Secure Hash Algorithm -1 技術簡介

4.1 SHA-1 簡介:

SHA-1(Secure Hash Algorithm)是美國國家標準局

(National Institute of Standard and Technology NIST)為了配合數位簽章 演算法(Digital Signature Algorithm DSA)的使用所發佈的聯邦資訊處 理標準-FIPS PUB 180-1(Federal Information Processing Standard

Publication 180-1),而 SHA-1 則是 SHA(FIPS180)的改良版,現今與 MD5 皆廣被使用拿來做密碼驗證功能。其設計的方法是根據 MD4, 來對輸入的資料訊息(Message)產生出一個 160 位元的訊息摘要

(Digest) ,對於資料安全性提供了有效的保障。

(37)

4.2 SHA-1 演算法技術介紹與實做:

4.2.1 SHA-1 演算法整體流程:

下圖 4.2.1 為 SHA-1 的演算法過程圖。

整體流程就是將 Message(Data)經過 Padding 動作,再分別切割後做運 算,最後產生 Digest 值。

(38)

4.2.2 Padding 原則: 將資料位元數除以 512,情況有: a.餘數若未滿 448 位元,則將原始資料填入 填充位元(第一個位元為 1,其餘都為 0)在 未端以致其餘數剛好為 448 位元。 b.餘數若剛好 448 位元,則將原始資料填 入 512 個填充位元(第一個位元為 1,其餘 都為 0)在未端。 c.餘數若超過 448 位元,則將原始資料填入 填充位元(第一個位元為 1,其餘都為 0)在 未端以致其餘數剛好為 448 位元。再把資料 位元數除以 2^64,餘數的大小就是我們要再 將原始資料填入填充位元(全部為 0)在未端。 4.2.3 分割運算: 將填充完的資料以每 512 位元為一單位加以分 割,在上圖中的代號為 Y0,Y1、、、YL-1。 依照 Y0,Y1、、、YL-1 的數量大小 YL-1 決定 執行壓縮核心的回合數。將每一單位(Y0,Y1、、、 YL-1)分割成 16 個小單位,每個單位 32 位元,

(39)

代號為 W0,W1、、、W15,再利用這 16 個單 位,以 Wt-16,Wt-14,Wt-8,Wt-3 為四個變數, 而 t=16 ~ 79,而這四個變數執行 XOR 以產 生 Wt。因此有了 80 個小單位(W0,W1、、、 W79)。 在程式執行過程中,我們會引用一些變數和函 數,根據 SHA-1 定義: SHA-1 變數定義表 1: 變數名稱 定義數值 A 67452301 B EFCDAB89 C 98BADCFE D 10325476 SHA-1 變數定義表 1 為 SHA-1 演算法流程圖中 的 IV,只對 Y0 而言,其餘 Y1、Y2、、、YL-1,則是將上一個回合單

位(若這回合單位是 Y1,上一回合單位指的就是 Y0,若這回合單位是

Y17, 上一回合單位指的就是 Y16)的 160 位元輸出,依序以每 32 位 元為一單位,分成 A、B、C、D、E 等 5 個變數,成為這次回合的 A、 B、C、D、E。

(40)

SHA-1 變數定義表 2: 變數名稱 定義數值 K1 5A827999 K2 6ED9EBA1 K3 8F1BBCDC K4 CA62C1D6 SHA-1 運算定義表: 函數名稱 運算傳回 F1 (B^C)v(B^D) F2 B♁C♁D F3 (B^C)v(B^D)v(C ^D) F4 B♁C♁D

(41)

4.2.3 單次運算: 接下來的依相同方法依序執行 t0~t79 共 80 次,下圖為單次所經的流 程: 圖 4.2.2 SHA-1 單次運算的流程圖 圖 4.2.2 過程的輸入輸出皆為 A、B、C、D、E,若是 Y1 執行的第一 次,這是用 SHA-1 演算法預設的定義值,若不是,就用上一次執行的 輸出。

(42)

以下為轉換過程: -輸入的 B、C、帶入函數(執行第 1 ~ 20 次呼叫 F1,執行第 21 ~ 40 次呼叫 F2,執行第 41 ~ 60 次 呼叫 F3,執行第 61 ~ 80 次呼叫 F4),其回傳值再 和輸入的 E 執行 XOR,其結果再和經過左旋轉 5 位元的輸入 A 執行 XOR,其結果再和 Wt(t 為執 行的次數)執行 XOR,其結果再和 Kt(t 為執行 的次數)執行 XOR,其結果便是輸出的 A。 -輸入的 A 是輸出的 B。 -輸入的 B 經過左旋轉(每個位元接向高位元移 位,最高位元遞補到最低位元)30 位元是輸出的 C。 -輸入的 C 是輸出的 D。 -輸入的 D 是輸出的 E。 以上過程為圖 4.2.2 的上半部,4 個灰諧部分。

經過 80 次得轉換以後輸出的 A、B、C、D、E,再和在做 SHA Operation 前的 A、B、C、D、E 各自相加(A+A、B+B、C+C、D+D、E+ E、F+F),然後在相加後除 2^32 取餘數, 再依序合成一個 160 位元 的資料(A 為最高位元,B 為次高位元、、、, F 最低位元),以備下

(43)

一回合單位使用(若這回合單位是 Y1,下一回合單位指的就是 Y2, 若這回合單位是 Y16, 下一回合單位指的就是 Y17),其過程為圖 4.2.2 的下半部。 當所有單位(Y1,Y2、、、Yn)都執行完後,最後的 160 位元輸出 就是 SHA-1 的特徵值(Digest)了。 4.3 實作部份:

在 Web Server 抓取 Local 端所有檔案的路徑,並呼叫 SHA-1 演算法求 出特徵值,並顯示計錄目前時間,特徵值等相關資訊。

以下為程式片段:

use Digest::SHA1;

find sub {push(@path,$File::Find::name) if!-d},"c:/perl/eg"; for ($i=0;$i<=$#path;$i++)

{

my $file = shift || "$path[$i]";

open(FILE, $file) or die "Can't open '$file':(Please Check again!) $!"; binmode(FILE); $sha = Digest::SHA1->new; while (<FILE>) { $sha->add($path[$i]); close(FILE); } ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =

(44)

localtime(time);

$weekday = (qw(Sun Mon Tue Wed Thu Fri Sat))[$wdau]; $month = $mon + 1;

$year = $year+ 1900; print "\n";

print "$weekday $month $mday $hour:$min:$sec $year"; print "\nSource File: $file\n";

print "Digest(Hexadecimal Form):"," " x 2 .$sha->hexdigest; print "\n";

}

$filecount=$#path+1;

(45)

第五章

網路存取資訊服務的機制

5.1 何謂 Socket:

從網路的角度來看,socket 就是通訊連結的端點;從 程式設計者的角度來看,socket 提供了一個良好的介面使程式設計者不 需知道下層網路協定運作的細節便可以撰寫網路通訊程式。

Socket 是以實作於 Berkeley Software Distribution (BSD, release 4.3)中的 UNIX sockets 為基礎所發展出來的一套 API,其不僅支 援 TCP/IP,對於 XeroxR Network System (XNS), Digital Equipment

Corporation’s DECNet? protocol, NovellR Corporation’s Internet Packet Exchange/Sequenced Packed Exchange (IPX/SPX)亦可以支援。此外,其亦 提供機器碼的相容性,因此在不同的作業系統上移植時並不需要做任 何修改。

(46)

5.2 Socket 的分類:

在 TCP/IP 架構下,sockets 可分為下面兩類:

(1)Stream sockets(connection-oriented)

資料在 stream sockets 間是利用 TCP 封包來傳送,因此接收端 socket 可 以收到順序無誤、無重覆、正確的資料。此外,TCP 傳送時是採資料 流的方式,因在傳送時會所有資料會視情況被分割在數個 TCP 封包中。

(2)Datagram sockets(connectionless)

資料在 datagram sockets 間是利用 UDP 封包傳送,因此接收端 socket 可 能會收到資序錯誤的資料,且其中部分資料亦可能會遺失。

(47)

5.3 Socket 的運作機制:

每個網路應用程式都有一個通訊端點,一種端點是用戶端,另一種是 伺服器。根據定義,用戶端會先送出第一個封包,由一個伺服器接收。 在初步接觸後,用戶端和伺服器均能開始收送資料。 依據 socket 所提供的服務來將它分類,然而在用戶端和伺服器上的這 兩個 sockets 必須是同一類才能互相通訊,也就是說,他們必須都是 stream (TCP)或都是 datagram (UDP)。用戶端的應用程式必須要能找到並 識別伺服器的 socket,而伺服器會將它的 socket 命名以讓用戶端識別, 就 TCP/IP 而言,一個 socket name 包括了 IP 位址、連結埠編號、以及協 定本身。用戶端可用 Windows Sockets 的名稱伺服函式來查到標準伺服 器的連結埠編號,而如果知道伺服器的主機名,則可以 Windows Sockets 的主機名稱分析函式來查得伺服器的 IP。當用戶端 socket 成功地聯繫 上伺服器端之 socket 後,這兩者便形成一個 “結合” (association)。在 此時,每個 socket 都可以由它的名字及對方的名字所形成的組合加以 識別。這個結合包括五個要素:所用的協定、用戶端 IP 位址、用戶端 連結埠號碼、伺服器端 IP 位址、伺服器端連結埠號碼。這個 ”結合” 的觀念並不只是 Windows Sockets 程式設計的基礎,它也是一般網路通

(48)

訊的重要觀念。在結合中的資訊可識別及引導封包通過網路,從這一 端的程式傳至另一端。 所有的網路應用程式皆可分為五個步驟: 1. 開啟一個 socket 2. 為 socket 命名 3. 與另一個 socket 結合 4. 在 sockets 間收送資料 5. 關閉 socket 圖 5.3.1 Socket 於網路中的運作

(49)

5.4 Perl 的 Socket 模組:

Perl 內 Socket 模組為機器間通訊的主要模組。它提供了伺服器與客戶 端所需的常數,例如指定位址的 AF_*,指定協定的 PF_*,以及工具函 式。Socket 模組是由 h2ph script,轉換 socket.h 檔案後所得的訊息版本。

(50)

第六章

系統架構與設計

6.1 系統簡介

隨著網際網路的發達,網路安全的機制也變的越來越重要。雖然 說道高一尺魔高一丈,偵測防範駭客的任侵可以說是越來越不易 了,本系統主要的功能為當伺服器系統遭到不明原因竄改或損毀 時,利用 SHA-1 演算法,使系統有能力可以偵測出來遭竄改損毀 的檔案資料為何,並且進一步快速自動回復到未遭竄改損毀前的 狀態,以降低損失。

(51)

6.2 User 存取 Server 的行為

User 於 Client 端透過瀏覽器輸入網址,送出 Request 給 Web Server, Web Server 會回應 User,並依照 User 的要求提供所需的資料,並將 User 存取時所做的行為紀錄於 Apache 的 Access.log 中。 (Request) (user) (Web Server) (user) (Request) (user) 圖 6.2.1

User 存取 Server 的行為

(52)

6.3 系統架構

本系統一開始會先執行目錄結構安全檢查,檢查是否存在動機有 問題的目錄,通常這些目錄內常可能藏著特若伊木馬或其他後門 程式。接下來嘗試開啟檔案,檢查檔案是否有無損壞,一切沒問 題後就分析檔案所在 Server 端的 local 路徑,依路徑抓出檔案 傳送給 SHA-1 演算法,SHA-1 演算法便會產生出 160 Bits 位元的 特徵值,我們設定讓這些特徵值存於記憶體的 Array 中。再來將 Apache Web Server 轉換成 FTP 的 Client 端,將 Web Server 內 所有的檔案備分至遠端的 FTP Backup Server(使用者需提供 IP、 Name、Password…等資訊),往後設定每隔多久來掃描,求出檔 案特徵值,與存在於 Memory 中的特徵值一一作比對,一旦比對 發生錯誤就對遠端的 FTP Backup Server 發出命令,要求抓取備 份的檔案來復原遭到竄改損毀的檔案。

(53)
(54)

6.4 對於 Web Server 的作業

主機本身於一開始事先自行檢查本身檔案目錄,判斷是否有定義為錯 誤或不合理的目錄存在,如已知後門程式所存放之目錄型態,亦為定 義之不合理目錄。

目錄檢查通過後,便進行檔案檢查,判斷是否有錯誤的檔案,如目錄與 檔案有錯,將停止活動並回報 Web Server Administrator,最後由所有檔 案的路徑將檔案經由 SHA-1 演算法,計算出所有檔案之特徵值。

(55)

(Web SERVER) 檢查檔案目錄 判斷是否有不 合理目錄存在 錯誤 正確 (將特徵值存放於記憶體陣列) (錯誤回報,發 出警告) 檢查檔案本身, 判斷是否有錯 誤檔案存在 錯誤 正確 分析並抓取所有檔案路徑 SHA-1 演算 法計算特徵 值 圖 6.4.2 對於 Web Server 作業的架構

(56)

6.5 FTP Backup Server

求出 Web Server 內檔案特徵值後,開始備份到遠端的 FTP Backup Server。

圖 6.5.1 Web Server 檔案備份到遠端 Server(LAN 內的 FTP Server)

(57)

6.6 循環偵測及自動回復

系統會利用 ICMP 檢查 Server 狀態提供管理員參考後,開始依設定的 時間間隔循環檢查檔案是否有遭到損壞或竄改,若出錯就直接向 Backup Server 發出命令,下載備份檔自動復原。 圖 6.6.1 循環檢查檔案是否有遭到損壞或竄改 圖 6.6.2 下載備份檔自動復原

(58)

第七章 專題感想與心得

7.1 心得

從一開始茫然無知,連個著手點都沒有,到後來對 mod_perl、

Apache Web Server、SHA-1 求特徵值等由淺而深的認識,全依賴著老師, 每個星期不斷的督促、解惑、提點,以及助教不厭其煩地替我們找尋相 關資料、訊息,雖然一直遇到技術上、程式設計上的瓶頸,但他們未 曾放棄,仍是在我們一籌莫展時伸出援手,使得我們心中感動不已。 這專題讓我們這小組習得的,我想不只是表面上的技術以及團隊 精神,更讓我們驚覺過去所學得的不過是資訊的一部份,真正應用層 面,有著更多未觸及的領域,光一個模組製作便讓我們摸不著頭序, 再加上使用以前未曾習過的 perl 語言寫程式,深深體會到,在資工一 途,若是不懂得時時求知、求新、求進步,是很快就被淘汰,而且一 門技術往往不是一個人單打獨鬥,亦或短期內可以一窺全豹,必得許 多認知與意見之交流方能有所作為,因此,在往後的日子中,我們將 記取此次難得的專題經驗,並且靈活地應用在課業、工作等各方面上。

(59)

第八章 專題未來展望

由於時間上的不允許,我們所設計出來的功能無法達到即時的狀 態,意即在使用者要求網頁後在Apache Server將使用者所要求的網頁 送出去前檢查使用者所以求的檔案是否遭到竄改,要達到即時的地步 便要將程式碼寫成module並掛上Apache 中,以下便是將一簡單

hello_world module 掛上Apache 中的步驟及說明,由此我們往後如要 對程式改良有很大的幫助,也是今後要努力的目標。

8.1 安裝 Apache Module with C

#於 conf 子目錄下的 httpd.conf 設定 Apache Module,並用 GIMP 抓圖: Step1.LoadModule:

(60)

Step2.AddModule:

(61)

3. 設定對任何 "/hello_demo" 網頁的請求,都要交由 hello 模組

(62)

#重新載入 Apache:

(63)

#執行結果:(列出預設於程式中的文字)

(64)

8.2 安裝Apache Module with Perl

現在,我們需要設置Apache伺服器,以便它可以找到我們希望使 用的模組。一開始,便要使用mod_perl,我們需要創建一個名為startup.pl 的文件,該文件將為mod_perl所使用,將會告訴mod_perl所有已安裝程 序的位置。我們將創建一個最小的startup.pl 文件,可以用它來訪問要 運行的Hello World模組,要使得對其他模組來說,也能夠正常工作, 就需要修改startup.pl 文件。在startup.pl 文件中,應包含如下內容:

# Always a good thing to put at the top of every mod_perl script. This will # save many headaches as you work.

use strict;

# Tell mod_perl where to find Hello.pm module use lib qw(path/to/module)

# The name of the module to load using mod_perl use Apache::Hello;

# This script must return TRUE, and this line accomplishes that, and conveniently

# also checks to ensure that we are actually running mod_perl with our version

# of Apache.

$ENV{MOD_PERL} or die "not running under mod_perl!";

下一步,要使得Hello World模組可以運行,就要對Apache伺服器進行 配置,以便使用 mod_perl。在前面的例子中,我們使用了

(65)

http://localhost/hello作為訪問用C語言編寫模組的請求。 對Perl模塊, 我們使用hello_perl。要設置得正確,就需要編輯httpd.conf 文件。在 AddModule行面的某處添加如下內容: PerlRequire /path/to/startup.pl. <Location /hello_perl>. SetHandler perl-script. PerlHandler Apache::Hello. </Location> . PerlRequire行告訴mod_perl到何處去尋找我們先前已經創建的startup.pl 文件。標記為Location 的一節將告訴Apache服務器,對/hello_perl的請求 應該用一個特殊的方式進行處理。在該節裡,存在兩個指示語: SetHandler和PerlHandler。SetHandler指示語將告訴Apache,把所有的 訪問請求發送到mod_perl,PerlHandler 就指示mod_perl應該把這些請 求轉發到Hello World的Perl模組。 僅剩下最一個步驟了:把Hello.pm文件複製到適當的位置。一旦創建了 startup.pl文件,我們就規定好了Hello.pm模組的位置。我們需要在那個 位置創建一個目錄,把Hello.pm文件複製到該Apache目錄中,所以,如 果要在startup.pl 文件中把path/to/module設置為 /usr/local/apache/perl/modules,就可以執行如下命令: mkdir /usr/local/apache/perl/modules/Apache cp Hello.pm

(66)

/usr/local/apache/perl/modules/Apache

這就把Hello World模塊放到Apache名稱空間中,確保不會發生衝突。 此時, Apache和mod_perl都已經設置好,可以運行Hello World了。我 們可以重啟動服務器。一旦服務器重啟動,在瀏覽器位置欄打入 http://localhost/hello_perl,就可以看到如下信息:

(67)

Appendix

Reference

[1] [180-1] Federal Information Processing Standards (FIPS) Publication 180-1, Secure Hash Standard (SHS), U.S. DoC/NIST, April, 1995.

[2] [180-2] Federal Information Processing Standards (FIPS) Publication 180-2, Secure Hash Standard (SHS), U.S. DoC/NIST, April, 2001.

[3] RFC959 by J. Reynolds, October 1985 --- File Transfer Protocol (FTP)

[4] Lincoln Stein & Doug MacEachern,” Writing Apache Modules with Perl and C,” O'Reilly, March 1999.

[5] Apache 技術手冊第二版,作者:Ben Laurie & Peter Laurie,譯者: 呂維毅、陳建勳,O'Reilly 出版,February 2000.

[6] Perl 多平台環境系統管理,作者:David N. Blank-Edelman,譯者: 蔡憶懷、蔣大偉、林長毅,O'Reilly 出版,April 2001.

[7] Tripwire for Linux 系統稽核,作者:伊原 秀明,譯者:蘇秉豐, O'Reilly 出版,November 2001.

[8] Perl 模組:Win32,作者:Erik Olson,譯者:詹韋佐、孫民承, O'Reilly 出版,July 1999.

(68)

[9] Perl 學習手冊 第二版,作者:Randal L. Schwartz & Tom

Christiansen, Foreword by Larry Wall,譯者:李國熙,O'Reilly 出版, January 1999.

[10] 精通 Perl,作者:蕭世文,文魁 出版,December 2001.

[11] Perl 程式設計,作者:Larry wall, Tom Cbristiansen & Randal L. Scbwartz.

[11] http://perl.apache.org/

Apache Server 提供 mod_Perl 的相關支援.

[12] http://safe.ip-market.com/ Linux 安全交流網 介紹安全的伺服器環境與其他安全相關文章 及技術. [13] http://fetag.dhs.org/ 飛鷹工作室 駭客相關技術文件與安全防護. [14] http://safe.ip-market.com/article.php?sid=38• http://sourceforge.net/projects/tripwire/ Tripwire 介紹

[15] RED HAT LINUX7 指令參考手冊.

[16] Linux7.3 實務應用,作者:施威銘研究室,旗標 出版.

(69)

者:陳建勳譯,博碩文化 出版.

[18] http://www.fanqiang.com/a4/b3/20011224/08100017_b.html

數據

圖 2.3.1 常見駭客入侵之流程圖
圖  6.41  目錄結構及檔案檢查後開始求特徵值
圖  6.5.1  Web Server 檔案備份到遠端 Server(LAN 內的 FTP Server)
圖 8.1.1  LoadModule
+5

參考文獻

相關文件

《小偵探》 :小朋友,你知道誰是歐巴馬嗎?請你查一查他的資料,與全班分

●報名資料填寫完畢後,於首頁可點選欲列印之報名表,即可進入列印檢視頁面,請利用瀏覽器列

Flash 動畫與視訊產生互動,例如加上字幕、音 效…等,也能以 ActionScript 來控制視訊的播放 效果,甚至藉由 ActionScript

學習語文必須積累。語文能力是在對語文材料大量反復感受、領悟、積累、運用的過程中

 培養具有檔案學基礎知識與文化知識,掌握現代資訊技術的基 本技能,能在檔案館、國家機關和企事業單位的檔案機構、資

Flash 動畫網頁時,會先偵測電腦的 Flash Player 版本,如果是可接受的 Flash Player 版本,SWF 就會順利播放;如果電腦中沒有檢視 SWF 所需的

比較多樣的 視覺及文字 資料,選擇 符合主題適 切性及具美 感的表現形 式,並採用 自我的語言 及角度進行 創作 8.

這次是我第一次踏足日本,以往只能從學校的日文課或網上資源暸解日本文