在局域網(wǎng)絡(luò)上可能你聽過所謂“廣播模式”的資料發(fā)送方法,此種方法不指定收信站,只要和此網(wǎng)絡(luò)連結(jié)的所有網(wǎng)絡(luò)設(shè)備皆為收信對象。但是這僅僅在局域網(wǎng)絡(luò)上能夠?qū)嵭?因為局域網(wǎng)絡(luò)上的機器不多(和Internet比起來 )。如果象是Internet上有數(shù)千萬的主機,本就不可能實施資料廣播(至于IP Multicast算是一種限定式廣播Restricted Broadcast,唯有被指定的機器會收到,Internet上其他電腦還是不會收到)。假設(shè)Internet上可以實施非限定廣播,那隨便一個人發(fā)出廣播訊息,全世界的電腦皆受其影響,豈不世界大亂?因此,任何局域網(wǎng)絡(luò)內(nèi)的路由器或是類似網(wǎng)絡(luò)設(shè)備都不會將自己區(qū)域網(wǎng)絡(luò)內(nèi)的廣播訊息轉(zhuǎn)送出去。萬一在WAN Port收到廣播訊息,也不會轉(zhuǎn)進自己的LAN Port中。
而既然網(wǎng)絡(luò)皆有發(fā)信站與收信站,用以標(biāo)示信息發(fā)送者與信息接收者,除非對方使用一些特殊的封包封裝方式或是使用防火墻對外連線,那么只要有人和你的主機進行通訊(寄信或是telnet、ftp過來都算) 你就應(yīng)該會知道對方的位址,如果對方用了防火墻來和你通訊,你最少也能夠知道防火墻的位置。也正因為只要有人和你連線,你就能知道對方的位址,那么要不要知道對方位置只是要做不做的問題而已。如果對方是透過一臺UNIX主機和你連線,則你更可以透過ident查到是誰和你連線的。
在實行TCP/IP通訊協(xié)定的電腦上,通??梢杂胣etstat指令來看到目前連線的狀況。
(各位朋友可以在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, 雖然是不同的作業(yè)系統(tǒng),但netstat是不是長得很像呢?
通信過程的紀(jì)錄設(shè)定
當(dāng)然,如果你想要把網(wǎng)絡(luò)連線紀(jì)錄給記錄下來,你可以用cron table定時去跑:
netstat>>filename
但是UNIX系統(tǒng)早已考慮到這一個需求,因此在系統(tǒng)中有一個專職記錄系統(tǒng)事件的
Daemon:syslogd,應(yīng)該有很多朋友都知道在UNIX系統(tǒng)的/var/adm下面有兩個系統(tǒng)紀(jì)錄檔案:
syslog與messages,一個是一般系統(tǒng)的紀(jì)錄,一個是核心的紀(jì)錄。但是這兩個檔案是從哪邊來的,又要如何設(shè)定呢?
系統(tǒng)的紀(jì)錄基本上都是由syslogd (System Kernel Log Daemon)來產(chǎn)生,而syslogd的控制是由/etc/syslog.conf來做的。syslog.conf以兩個欄位來決定要記錄哪些東西,以及記錄到哪邊去。下面是一個 Linux系統(tǒng)所附上的yslog.conf檔案,這也是一個最標(biāo)準(zhǔn)的syslog.conf寫法:
格式就是這樣子,第一欄寫「在什么情況下」以及「什么程度」。然后用TAB鍵跳下一欄繼續(xù)寫「符合條件以后要做什么」。這個syslog.conf檔案的作者很誠實,告訴你只能用TAB來作各欄位之間的分隔(雖然看來好像他也不知道為什么)。第一欄包含了何種情況與程度,中間小數(shù)點分隔。另外,星號就代表了某一細項中的所有選項。詳細的設(shè)定方式如下:
1.在什么情況:各種不同的情況以下面的字串來決定。
auth 關(guān)于系統(tǒng)安全與使用者認(rèn)證方面
cron 關(guān)于系統(tǒng)自動排程執(zhí)行(CronTable)方面
daemon 關(guān)于背景執(zhí)行程式方面
kern 關(guān)于系統(tǒng)核心方面
lpr 關(guān)于印表機方面
mail 關(guān)于電子郵件方面
news 關(guān)于新聞討論區(qū)方面
syslog 關(guān)于系統(tǒng)紀(jì)錄本身方面
user 關(guān)于使用者方面
uucp 關(guān)于UNIX互拷(UUCP)方面
上面是大部份的UNIX系統(tǒng)都會有的情況,而有些UNIX系統(tǒng)可能會再分出不同的項目出來。
2.什么程度才記錄:
下面是各種不同的系統(tǒng)狀況程度,依照輕重緩急排列。
none 不要記錄這一項
debug 程式或系統(tǒng)本身除錯訊息
info 一般性資訊
notice 提醒注意性
err 發(fā)生錯誤
warning 警告性
crit 較嚴(yán)重的警告
alert 再嚴(yán)重一點的警告
emerg 已經(jīng)非常嚴(yán)重了
同樣地,各種UNIX系統(tǒng)可能會有不同的程度表示方式。有些系統(tǒng)是不另外區(qū)分crit與alert的差別,也有的系統(tǒng)會有更多種類的程度變化。在記錄時,syslogd 會自動將你所設(shè)定程度以及其上的都一并記錄下來。例如你要系統(tǒng)去記錄 info等級的事件,則notice、err.warning、crit、alert、emerg等在info等級以上的也會一并被記錄下來。把上面所寫的1、2項以小數(shù)點組合起來就是完整的「要記錄哪些東西」的寫法。
例如 mail.info表示關(guān)于電子郵件傳送系統(tǒng)的一般性訊息。auth.emerg就是關(guān)于系統(tǒng)安全方面相當(dāng)嚴(yán)重的訊息。 lpr.none表示不要記錄關(guān)于列表機的訊息(通常用在有多個紀(jì)錄條件時組合使用)。另外有三種特殊的符號可供應(yīng)用:
1.星號(*) 星號代表某一細項中所有項目。例如mail.*表示只要有關(guān)mail的,不管什么程度都要記錄下來。而*.info會把所有程度為info的事件給記錄下來。
2.等號(=)等號表示只記錄目前這一等級,其上的等級不要記錄。例如剛剛的例子,平常寫下info等級時,也會把位于info等級上面的notice、err.warning、crit、alert、emerg等其他等級也記錄下來。但若你寫=info則就只有記錄info這一等級了。
3.驚嘆號(!) 驚嘆號表示不要記錄目前這一等級以及其上的等級。
記錄到哪邊去?
一般的syslogd都提供下列的管道以供您記錄系統(tǒng)發(fā)生的什么事:
1.一般檔案
這是最普遍的方式。你可以指定好檔案路徑與檔案名稱,但是必須以目錄符號「/」開始,系統(tǒng)才會知道這是一個檔案。例如/var/adm/maillog表示要記錄到/var/adm下面一個稱為maillog的檔案。如果之前沒有這個檔案,系統(tǒng)會自動產(chǎn)生一個。
2.指定的終端機或其他設(shè)備
你也可以將系統(tǒng)紀(jì)錄寫到一個終端機或是設(shè)備上。若將系統(tǒng)紀(jì)錄寫到終端機,則目前正在使用該終端機的使用者就會直接在螢?zāi)簧峡吹较到y(tǒng)訊息(例如/dev/console或是/dev/tty1.你可以拿一個螢?zāi)粚iT來顯示系統(tǒng)訊息 )。若將系統(tǒng)紀(jì)錄寫到印表機,則你會有一長條印滿系統(tǒng)紀(jì)錄的紙(例如/dev/lp0)。
3.指定的使用者
你也可以在這邊列出一串使用者名稱,則這些使用者如果正好上線的話,就會在他的終端機上看到系統(tǒng)訊息( 例如root,注意寫的時候在使用者名稱前面不要再加上其他的字)。
4.指定的遠端主機
這種寫法不將系統(tǒng)訊息記錄在連接本地機器上,而記錄在其他主機上。有些情況系統(tǒng)碰到的是硬碟錯誤,或是萬一有人把主機推倒,硬碟摔壞了,那你要到哪邊去拿系統(tǒng)紀(jì)錄來看呢?而網(wǎng)絡(luò)卡只要你不把它折斷,應(yīng)該是比硬碟機耐摔得多了。因此,如果你覺得某些情況下可能紀(jì)錄沒辦法存進硬碟里,你可以把系統(tǒng)紀(jì)錄丟到其他的主機上。如果你要這樣做,你可以寫下主機名稱,然后在主機名稱前面加上「@」符號(例如@ccunix1.variox.int,但被你指定的主機上必須要有syslogd)。
在以上各種紀(jì)錄方式中,都沒有電子郵件這項。因為電子信件要等收件者去收信才看得到, 有些情況可能是很緊急的,沒辦法等你去拿信來看(BSD的Manual Page寫著「when you got mail,it’s already too late...」 :-P)。以上就是syslog各項紀(jì)錄程度以及紀(jì)錄方式的寫法,各位讀者可以依照自己的需求記錄下自己所需要的內(nèi)容。但是這些紀(jì)錄都是一直堆上去的,除非您將檔案自行刪除掉,否則這些檔案就會越來越大。有的人可能會在syslogd.conf里面寫:*.*/var/log/everything要是這樣的話,當(dāng)然所有的情況都被你記錄下來了。但是如果真的系統(tǒng)出事了,你可能要從好幾十MB甚至幾百MB的文字中找出到底是哪邊出問題,這樣可能對你一點幫助都沒有。因此,以下兩點可以幫助你快速找到重要的紀(jì)錄內(nèi)容:
1.定期檢查紀(jì)錄
養(yǎng)成每周(或是更短的時間,如果你有空的話)看一次紀(jì)錄檔的習(xí)慣。如果有需要將舊的紀(jì)錄檔備份,可以 cploglog.1,cploglog.2...或是cploglog.971013,cploglog.980101...等,將過期的紀(jì)錄檔依照流水號或是日期存起來,未來考察時也比較容易。
2.只記錄有用的東西
千萬不要像前面的例子一樣,記錄下*.*。然后放在一個檔案中。這樣的結(jié)果會導(dǎo)致檔案太大,要找資料時根本無法馬上找出來。有人在記錄網(wǎng)絡(luò)通訊時,連誰去ping他的主機都記錄。除非是系統(tǒng)已經(jīng)遭到很大的威脅,沒事就有人喜歡嘗試進入你的系統(tǒng),否則這種雞毛蒜皮的小事可以不用記錄。可以提升些許系統(tǒng)效率以及降低硬盤使用量(當(dāng)然也節(jié)省你的時間)。
地理位置的追蹤
如何查出入侵者的地理位置?光看IP地址可能看不出來,但是你??吹脑挘瑫l(fā)現(xiàn)也會發(fā)現(xiàn)規(guī)律的。在固接式的網(wǎng)絡(luò)環(huán)境中,入侵者一定和網(wǎng)絡(luò)提供單位有著密切的關(guān)系。因為假設(shè)是局域網(wǎng)絡(luò),那么距離絕對不出幾公里。就算是撥接好了,也很少人會花大筆錢去撥外縣市甚至國外的撥接伺服器。因此,只要查出線的單位,入侵者必然離連線單位不遠。
撥接式的網(wǎng)絡(luò)就比較令人頭疼了。有許多ISP為了吸引客戶,弄了很多什么網(wǎng)絡(luò)卡。
User這邊只要買了固定的小時數(shù),不需須另外向ISP那邊提出申請,就可以按照卡片上的說明自行撥接上網(wǎng)。這樣當(dāng)然可以吸引客戶,但是ISP就根本無從得知是誰在用他們的網(wǎng)路。也就是說,雖然以網(wǎng)絡(luò)卡提供撥接服務(wù)給撥接使用者帶來相當(dāng)大的便利,但卻是系統(tǒng)安全的大敵,網(wǎng)絡(luò)管理員的惡夢。如果入侵你的人是使用網(wǎng)絡(luò)卡來上網(wǎng),那……,要從撥號的地點查嗎?入侵者可以不要用自己家里的電話上網(wǎng)。管它是偷是搶,或是盜打王八機,反正查到的發(fā)話來源絕不是入侵者自己的電話。