• 沒有找到結果。

安裝 Apache Web Server

第三章 Apache Web Server 簡介

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

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

3.3 測試 Apache 伺服器

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

執行 /etc/rc.d/init.d/httpd restart 使用 SOURCE 安裝:

執行

/usr/local/apache/bin/apachectl restart

第四章 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) ,對於資料安全性提供了有效的保障。

下圖 4.1.1 為原發展 SHA-1 演算法搭配 DSA 的流程圖:

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

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

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

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

4.2.2 Padding 原則:

代號為 W0,W1、、、W15,再利用這 16 個單

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

4.2.3 單次運算:

接下來的依相同方法依序執行 t0~t79 共 80 次,下圖為單次所經的流 程:

圖 4.2.2 SHA-1 單次運算的流程圖

圖 4.2.2 過程的輸入輸出皆為 A、B、C、D、E,若是 Y1 執行的第一 次,這是用 SHA-1 演算法預設的定義值,若不是,就用上一次執行的 輸出。

以下為轉換過程:

一回合單位使用(若這回合單位是 Y1,下一回合單位指的就是 Y2,

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;

print "\n"," " x 10,"Total files: $filecount\n";

第五章 網路存取資訊服務的機制 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)亦可以支援。此外,其亦 提供機器碼的相容性,因此在不同的作業系統上移植時並不需要做任 何修改。

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 可 能會收到資序錯誤的資料,且其中部分資料亦可能會遺失。

Sockets 在產生時便需指定其種類,且唯有同類之 sockets 才能彼此溝

5.3 Socket 的運作機制:

訊的重要觀念。在結合中的資訊可識別及引導封包通過網路,從這一 端的程式傳至另一端。

所有的網路應用程式皆可分為五個步驟:

1. 開啟一個 socket 2. 為 socket 命名

3. 與另一個 socket 結合 4. 在 sockets 間收送資料 5. 關閉 socket

圖 5.3.1 Socket 於網路中的運作

5.4 Perl 的 Socket 模組:

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

第六章 系統架構與設計

6.1 系統簡介

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

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 的行為

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 發出命令,要求抓取備 份的檔案來復原遭到竄改損毀的檔案。

圖 6.3.1 專題系統整體簡單架構圖

6.4 對於 Web Server 的作業

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

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

圖 6.41 目錄結構及檔案檢查後開始求特徵值

(Web SERVER)

6.5 FTP Backup Server

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

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

圖 6.5.2 FTP Backup Server 內備份情形

6.6 循環偵測及自動回復

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

圖 6.6.1 循環檢查檔案是否有遭到損壞或竄改

圖 6.6.2 下載備份檔自動復原

第七章 專題感想與心得

7.1 心得

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

Apache Web Server、SHA-1 求特徵值等由淺而深的認識,全依賴著老師, 每個星期不斷的督促、解惑、提點,以及助教不厭其煩地替我們找尋相 關資料、訊息,雖然一直遇到技術上、程式設計上的瓶頸,但他們未 曾放棄,仍是在我們一籌莫展時伸出援手,使得我們心中感動不已。

這專題讓我們這小組習得的,我想不只是表面上的技術以及團隊 精神,更讓我們驚覺過去所學得的不過是資訊的一部份,真正應用層 面,有著更多未觸及的領域,光一個模組製作便讓我們摸不著頭序,

再加上使用以前未曾習過的 perl 語言寫程式,深深體會到,在資工一 途,若是不懂得時時求知、求新、求進步,是很快就被淘汰,而且一 門技術往往不是一個人單打獨鬥,亦或短期內可以一窺全豹,必得許 多認知與意見之交流方能有所作為,因此,在往後的日子中,我們將 記取此次難得的專題經驗,並且靈活地應用在課業、工作等各方面上。

第八章 專題未來展望

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

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

8.1 安裝 Apache Module with C

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

Step1.LoadModule:

圖 8.1.1 LoadModule

Step2.AddModule:

圖 8.1.2 AddModule

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

圖 8.1.3 設定 hello demo 網頁要求

#重新載入 Apache:

圖 8.1.4 重新載入 Apache

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

圖 8.1.5 執行結果

8.2 安裝Apache Module with Perl

# 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。在前面的例子中,我們使用了

http://localhost/hello作為訪問用C語言編寫模組的請求。 對Perl模塊,

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

這就把Hello World模塊放到Apache名稱空間中,確保不會發生衝突。

此時, Apache和mod_perl都已經設置好,可以運行Hello World了。我 們可以重啟動服務器。一旦服務器重啟動,在瀏覽器位置欄打入 http://localhost/hello_perl,就可以看到如下信息:

Hello, I see you see me with Lynx/2.8.3dev.8 libwww-FM/2.14

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.

[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.

[14] http://safe.ip-market.com/article.php?sid=38•

http://sourceforge.net/projects/tripwire/

Tripwire 介紹

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

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

[17] Apache 2 Server Bible 徹底研究,作者:Mohammed J.Kabir,譯

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

[18] http://www.fanqiang.com/a4/b3/20011224/08100017_b.html 永遠的 UNIX mod_perl 技術

相關文件