網路是個大舞臺,這個舞臺中不光有安全人員也有駭客份子所組成。芳擊與防守自然就成了兩者之間相互論辯的話題。對於一些重要的部門,一旦網路遭到攻擊,如何追蹤網路攻擊,追查到攻擊者並將其繩之以法,是十分必要的。下麵的文章分本地追蹤和網路追蹤兩部份。

 
本地追蹤方法
 
追蹤網路攻擊就是找到事件發生的源頭。它有兩個方面意義:一是指發現IP位址、MAC位址或是認證的主機名稱;二是指確定攻擊者的身份。網路攻擊者在實施攻擊之時或之後,必然會留下一些蛛絲馬跡,如登錄的紀錄,檔許可權的改變等虛擬證據,如何正確處理虛擬證據是追蹤網路攻擊的最大挑戰。
 
在追蹤網路攻擊中另一需要考慮的問題是:IP位址是一個虛擬位址而不是一個物理位址,IP位址很容易被偽造,大部分網路攻擊者採用IP位址欺騙技術。這樣追蹤到的攻擊源是不正確的。使得以IP位址為基礎去發現攻擊者變得更加困難。因此,必須採用一些方法,識破攻擊者的欺騙,找到攻擊源的真正IP位址。
 
netstat命令----即時察看文擊者
 
使用netstat命令可以獲得所有聯接被測主機的網路使用者的IP位址。Windows系列、Unix系列、Linux等常用網路作業系統都可以使用“netstat”命令。
 
使用“netstat”命令的缺點是只能顯示當前的連接,如果使用“netstat”命令時攻擊者沒有聯接,則無法發現攻擊者的蹤跡。為此,可以使用 Scheduler建立一個排程,安排系統每隔一定的時間使用一次“netstat”命令,並使用netstat>>textfile格式把每次檢查時得到的資料寫入一個文字檔中,以便需要追蹤網路攻擊時使用。
 
日誌資料--最詳細的攻擊記錄
 
系統的日誌資料提供了詳細的使用者登錄資訊。在追蹤網路攻擊時,這些資料是最直接的、有效的證據。但是有些系統的日誌資料不完善,網路攻擊者也常會把自己的活動從系統日誌中刪除。因此,需要採取補救措施,以保證日誌資料的完整性。
 
Unix和Linux的日誌
 
Unix和Linux的日誌檔較詳細的記錄了使用者的各種活動,如登錄的ID的使用者名、使用者IP位址、埠號、登錄和退出時間、每個ID最近一次登錄時間、登錄的終端、執行的命令,使用者ID的帳號資訊等。通過這些資訊可以提供ttyname(終端號)和源位址,是追蹤網路攻擊的最重要的資料。
 
大部分網路攻擊者會把自己的活動記錄從日記中刪去,而且UOP和基於X Windows的活動往往不被記錄,給追蹤者帶來困難。為了解決這個問題,可以在系統中運行wrapper工具,這個工具記錄使用者的服務請求和所有的活動,且不易被網路攻擊者發覺,可以有效的防止網路攻擊者消除其活動紀錄。
 
Windows NT和Windows 2000的日誌
 
Windows NT和Windows 2000有系統日誌、安全性記錄檔和應用程式日誌等三個日誌,而與安全相關的資料包含在安全性記錄檔中。安全性記錄檔記錄了登錄使用者的相關資訊。安全性記錄檔中的資料是由配置所決定的。因此,應該根據安全需要合理進行配置,以便獲得保證系統安全所必需的資料。
 
但是,Windows NT和Windows 2000的安全性記錄檔存在重大缺陷,它不記錄事件的源,不可能根據安全性記錄檔中的資料追蹤攻擊者的源位址。為了解決這個問題,可以安裝一個協力廠商的能夠完整記錄審計資料的工具。
 
防火牆日誌
 
作為網路系統中的“堡壘主機”,防火牆被網路攻擊者攻陷的可能性要小得多。因此,相對而言防火牆日誌資料不太容易被修改,它的日誌資料提供最理想的攻擊源的源位址資訊。
 
但是,防火牆也不是不可能被攻破的,它的日誌也可能被刪除和修改。攻擊者也可向防火牆發動拒絕服務攻擊,使防火牆癱瘓或至少降低其速度使其難以對事件做出及時回應,從而破壞防火牆日誌的完整性。因此,在使用防火牆日誌之前,應該運行專用工具檢查防火牆日誌的完整性,以防得到不完整的資料,貽誤追蹤時機。
 
網路入侵追蹤方法
 
 入侵者的追蹤(Intruder Tracing)在區域網路上可能你聽過所謂「廣播模式」的資料發送方法,此種方法不指定收信站,只要和此網路連結的所有網路設備皆為收信物件。   
 
入侵者的追蹤(Intruder Tracing)在區域網路上可能你聽過所謂「廣播模式」的資料發送方法,此種方法不指定收信站,只要和此網路連結的所有網路設備皆為收信物件。但是這僅僅在區域網路上能夠實行,因為區域網路上的機器不多(和Internet比起來 )。如果像是Internet上有數千萬的主機,本就不可能實施資料廣播(至於IP Multicast算是一種限定式廣播Restricted Broadcast,唯有被指定的機器會收到, Internet上其他電腦還是不會收到)。假設Internet上可以實施非限定廣播,那隨便一個人發出廣播訊息,全世界的電腦皆受其影響,豈不世界大亂?因此,任何區域網路內的路由器或是類似網路設備都不會將自己區域網路內的廣播訊息轉送出去。萬一在WAN Port收到廣播訊息,也不會轉進自己的LAN Port中。而既然網路皆有發信站與收信站,用以標示資訊發送者與資訊接收者,除非對方使用一些特殊的封包封裝方式或是使用防火牆對外連線,那麼只要有人和你的主機進行通訊(寄信或是telnet、ftp過來都算) 你就應該會知道對方的位址,如果對方用了防火牆來和你通訊,你最少也能夠知道防火牆的位置。也正因為只要有人和你連線,你就能知道對方的位址,那麼要不要知道對方位置只是要做不做的問題而已。如果對方是透過一台UNIX主機和你連線,則你更可以透過ident查到是誰和你連線的。在實行TCP/IP通訊協定的電腦上,通常可以用netstat指令來看到目前連線的狀況。(各位朋友可以在win95、Novell以及UNIX試試看(注一),在下麵的連線狀況中,netstat指令是在win95上實行的,以看到目前自己機器(Local Address處)的telnetport有一台主機workstation.variox.int 由遠端(Foreign Address處)連線進來並且配到1029號tcp port.而cc unix1主機也以ftpport連到workstation.variox.int去。所有的連線狀況看得一清二楚。(如A、B)
 
A.在UNIX主機(ccunix1.variox.int)看netstat
 
B.另一端在Windows95(workstation.variox.int)看netstat,

 

netstat>>filename,但是UNIX系統早已考慮到這一個需求,因此在系統中有一個專職記錄系統事件的 Daemon:syslogd,應該有很多朋友都知道在UNIX系統的/var/adm下麵有兩個系統紀錄檔案:syslog與messages,一個是一般系統的紀錄,一個是核心的紀錄。但是這兩個檔案是從哪邊來的,又要如何設定呢?

系統的紀錄基本上都是由syslogd (System Kernel LogDaemon)來產生,而syslogd的控制是由/etc/syslog.conf來做的。syslog.conf以兩個欄位來決定要記錄哪些東西,以及記錄到哪邊去。一個最標準的syslog.conf,第一欄寫「在什麼情況下」以及「什麼程度」。然後用TAB鍵跳下一欄繼續寫「符合條件以後要做什麼」。這個syslog.conf檔案的作者很誠實,告訴你只能用TAB來作各欄位之間的分隔(雖然看來好像他也不知道為什麼)。第一欄包含了何種情況與程度,中間小數點分隔。另外,星號就代表了某一細項中的所有選項。詳細的設定方式如下:

1.在什麼情況:各種不同的情況以下面的字串來決定。

auth 關於系統安全與使用者認證方面

cron 關於系統自動排程執行(CronTable)方面

daemon 關於背景執行程式方面

kern 關於系統核心方面

lpr 關於印表機方面

mail 關於電子郵件方面

news 關於新聞討論區方面

syslog 關於系統紀錄本身方面

user 關於使用者方面

uucp 關於UNIX互拷(UUCP)方面

上面是大部份的UNIX系統都會有的情況,而有些UNIX系統可能會再分出不同的專案出來。

2.什麼程度才記錄:

下面是各種不同的系統狀況程度,依照輕重緩急排列。

none 不要記錄這一項

debug 程式或系統本身除錯訊息

info 一般性資訊

notice 提醒注意性

err 發生錯誤

warning 警告性

crit 較嚴重的警告

alert 再嚴重一點的警告

emerg 已經非常嚴重了

同樣地,各種UNIX系統可能會有不同的程度表示方式。有些系統是不另外區分crit與alert的差別,也有的系統會有更多種類的程度變化。在記錄時,syslogd 會自動將你所設定程度以及其上的都一併記錄下來。例如你要系統去記錄 info等級的事件,則notice、err.warning、crit、alert、emerg等在info等級以上的也會一併被記錄下來。把上面所寫的1、2項以小數點組合起來就是完整的「要記錄哪些東西」的寫法。例如mail.info表示關於電子郵件傳送系統的一般性訊息。auth.emerg就是關於系統安全方面相當嚴重的訊息。

lpr.none表示不要記錄關於清單機的訊息(通常用在有多個紀錄條件時組合使用)。另外有三種特殊的符號可供應用:

1.星號(*)

星號代表某一細項中所有專案。例如mail.*表示只要有關mail的,不管什麼程度都要記錄下來。而*.info會把所有程度為info的事件給記錄下來。

2.等號(=)

等號表示只記錄目前這一等級,其上的等級不要記錄。例如剛剛的例子,平常寫下info等級時,也會把位於info等級上面的notice、 err.warning、crit、alert、emerg等其他等級也記錄下來。但若你寫=info則就只有記錄info這一等級了。

3.驚嘆號(!)

驚嘆號表示不要記錄目前這一等級以及其上的等級。

一般的syslogd都提供下列的管道以供您記錄系統發生的什麼事:

1.一般檔案

這是最普遍的方式。你可以指定好檔案路徑與檔案名稱,但是必須以目錄符號「/」開始,系統才會知道這是一個檔案。例如/var/adm/maillog表示要記錄到/var/adm下麵一個稱為maillog的檔案。如果之前沒有這個檔案 ,系統會自動產生一個。

2.指定的終端機或其他設備

你也可以將系統紀錄寫到一個終端機或是設備上。若將系統紀錄寫到終端機,則目前正在使用該終端機的使用者就會直接在螢幕上看到系統訊息(例如/dev/console或是/dev/tty1.你可以拿一個螢幕專門來顯示系統訊息 )。若將系統紀錄寫到印表機,則你會有一長條印滿系統紀錄的紙(例如/dev/lp0)。

3.指定的使用者

你也可以在這邊列出一串使用者名稱,則這些使用者如果正好上線的話,就會在他的終端機上看到系統訊息( 例如root,注意寫的時候在使用者名稱前面不要再加上其他的字)。

4.指定的遠端主機

這種寫法不將系統訊息記錄在連接本地機器上,而記錄在其他主機上。有些情況系統碰到的是硬碟錯誤,或是萬一有人把主機推倒,硬碟摔壞了,那你要到哪邊去拿系統紀錄來看呢?而網路卡只要你不把它折斷,應該是比硬碟機耐摔得多了。因此,如果你覺得某些情況下可能紀錄沒辦法存進硬碟裡,你可以把系統紀錄丟到其他的主機上。如果你要這樣做,你可以寫下主機名稱稱,然後在主機名稱稱前面加上「@」符號(例如 @ccunix1.variox.int,但被你指定的主機上必須要有syslogd)。

電子郵件追蹤方法

在以上各種紀錄方式中,都沒有電子郵件這項。因為電子信件要等收件者去收信才看得到, 有些情況可能是很緊急的,沒辦法等你去拿信來看(BSD的Manual Page寫著「when you got mail,it’s already too late...」 :-P)。以上就是syslog各項紀錄程度以及紀錄方式的寫法,各位讀者可以依照自己的需求記錄下自己所需要的內容。但是這些紀錄都是一直堆上去的,除非您將檔案自行刪掉,否則這些檔案就會越來越大。有的人可能會在syslogd.conf裡寫:*.*/var/log/everything,要是這樣的話,當然所有的情況都被你記錄下來了。但是如果真的系統出事了,你可能要從好幾十MB甚至幾百MB的文字中找出到底是哪邊出問題,這樣可能對你一點説明都沒有。因此,以下兩點可以説明你快速找到重要的紀錄內容:

1.定期檢查紀錄

養成每週(或是更短的時間,如果你有空的話)看一次紀錄檔的習慣。如果有需要將舊的紀錄檔備份,可以cploglog.1,cploglog.2...或是cploglog.971013,cploglog.980101...等,將過期的紀錄檔依照流水號或是日期存起來,未來考察時也比較容易。

2.只記錄有用的東西

千萬不要像前面的例子一樣,記錄下*.*。然後放在一個檔案中。這樣的結果會導檔案太大,要找資料時根本無法馬上找出來。有人在記錄網路通訊時,連誰去 ping他的主機都記錄。除非是系統已經遭到很大的威脅,沒事就有人喜歡嘗試進入你的系統,否則這種雞毛蒜皮的小事可以不用記錄。可以提升些許系統效率以及降低硬碟使用量(當然也節省你的時間)。地理位置的追蹤如何查出入侵者的地理位置?光看IP位址可能看不出來,但是你常看的話,會發現也會發現規律的。在固接式的網路環境中,入侵者一定和網路提供單位有著密切的關係。因為假設是區域網路,那麼距離絕對不出幾公里。就算是撥接好了,也很少人會花大筆錢去撥外縣市甚至國外的撥接伺服器。因此,只要查出線的單位,入侵者必然離連線單位不遠。

撥接式的網路就比較令人頭疼了。有許多ISP為了吸引客戶,弄了很多什麼網路卡。User這邊只要買了固定的小時數,不需須另外向ISP那邊提出申請,就可以按照卡片上的說明自行撥接上網。這樣當然可以吸引客戶,但是ISP就根本無從得知是誰在用他們的網路。也就是說,雖然以網路卡提供撥接服務給撥接使用者帶來相當大的便利,但卻是系統安全的大敵,網路管理員的惡夢。如果入侵你的人是使用網路卡來上網,那……,要從撥號的地點查嗎?入侵者可以不要用自己家裡的電話上網。
 
當然,如果你想要把網路連線紀錄給記錄下來,你可以用cron table定時去跑:
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()