伺服器架設篇 - RedHat 9

第十章、認識網路安全

認識 iptables 與 TCP_Wrappers 的概念!

最近更新時間: 2003/08/23

本文資料主要針對 RedHat 9 的系統進行說明,要注意的是,RedHat 9 與 Red Hat Enterprise Linux (RHEL) 是完全不同的東西!RedHat 9 在 2003 年推出,在 2004 年就不再維護了!這部份網站更新到 2005 年,也沒有再維護過! 因此,建議您前往本站查詢最新版本的 Linux distribution 文章來閱讀,比較不會浪費時間。那為何還需要編輯 RedHat 9 的資料呢? 鳥哥只想要做個自己曾經撰寫過的文件內容保存而已囉! ^_^!最新文章請前往鳥站首頁查閱囉!
在介紹了『網路基礎』、『限制連線 port number 』、『網路升級套件』之後,再來準備要上 Internet 了嗎?!如果只是想要上 Internet 去瀏覽,那麼自然沒有問題,如果是想要對 Internet 開放網路服務,那麼最好還是先認識一下網路安全會比較好一些。什麼?套件也更新了, port 也關閉了,還需要認識什麼網路安全啊?!呵呵!當然啦!因為難保我們的主機不會被新的套件漏洞以及阻斷式攻擊(DoS)所困擾啊!在這個章節裡面,我們會稍微介紹一些基礎的網路防護觀念,尤其是系統管理員應該要做的事情吶!

TCP/IP 封包進入主機的基本流程:

    這一章的主要內容是在介紹網路安全與基礎防護方面的觀念與建議,既然是與網路安全有關,那麼主要用在網路傳輸時的 TCP 封包就不能不知道咯。這裡就要來討論一下,當有一個 TCP/IP 的封包要進入您的主機系統時,那個 TCP 封包應該會經過哪些關卡呢!?知道這些關卡之後,才會知道有哪些入侵的管道呀!然後才能知道如何去防禦他!OK!那麼首先自然就要來瞭解一下,什麼是 TCP/IP 囉!
     

    認識 TCP/IP:
     
    網路基礎 裡頭我們可以知道目前的網路連線協定以 TCP/IP 為主要的架構,而其中相當重要的則是 TCP 封包,詳細的 TCP 封包請再回到網路基礎篇去看個仔細,我們這裡再來簡單的複習一下:
     
    • 主機的 IP 可以想成是地址;
    • 而主機啟動的 port 可以想成是窗口或樓層;
    • 至於在兩個 IP 之間傳送資料的 TCP 封包則可以被想成是包裹
     
    好了,既然 TCP 是個包裹,那麼想當然爾,真正的資料是在包裹裡面的 Messages/Data ,但是由於要將包裹傳送到正確的地點去,所以就有個表頭 (Header) ,亦即在包裹不是都需要有填寫資料的那一面嗎?在這一面上面必須要填寫正確的來源與目的之地址以及該地址的樓層,才能夠正確的將這個包裹傳送到正確的地方!當然囉,由於可能會收到回信,所以自然那個包裹上面,寄信的地址與樓層也需要填寫正確囉!^_^。所以呢,您可以簡單的將 TCP 封包想成有兩個主要的部分,一個是放置資料的 Messages/Data ,另一個則是表頭( Header )資料填寫區,在這個 Header 區域中,有相當多的資料,您可以回到網路基礎去瞧一瞧 TCP 封包的完整格式,我們這裡將 TCP 封包的 Header 簡化成為來源與目的之 IP 及傳送的 port !所以基本的 TCP 封包可以由下圖來表示囉:
     
     
    由上圖我們可以清楚的發現到,您的主機能不能接收這個 TCP 封包,就需要合乎 TCP 封包的 IP 與 port 的規定囉!
     

    簡易 TCP 封包進入主機之流程:
     
    好了,現在我們知道主機收不收的到資料跟 TCP 上面的表頭資料( Header )是有關係的!那麼假如有個 TCP 封包要進入到您的主機時,他會經過哪些步驟呢?基本上會有底下這些手續的啦:
     

    圖一、TCP 封包進入本機要通過的管制步驟
     
    1. 首先, TCP 封包會先經過所謂的封包過濾機制 ( IP Filtering 或稱為 NetFilter ),這是 Linux 提供的第一層保護。IP Filter 可以將 TCP 封包進行分析,並依據您所訂定的過濾規則來將該封包進行處理。舉例來說,我們知道 TCP 封包的表頭有 Port 與 IP 的資訊,假如您知道有個駭客網站,因為惡名昭彰所以您不想要允許該網站的任何資料進入到主機的話,可以透過設定 IP Filter 的機制,命令 IP Filter 只要分析到 TCP 封包是來自該駭客網站的 IP 時,就將該 TCP 封包丟棄 (Drop) !這也是 Linux 本機的最外部的防火牆囉。任何 TCP 封包要能進入到本機,就得先經過 IP Filter 這一關,如果能夠通過您所設定的機制之後,TCP 封包就會進入到下一關;

    2.  
    3. 通過 IP Filter 之後,TCP 封包會開始接受 Super daemons 及 TCP_Wrappers 的檢驗,那個是什麼呢?呵呵!說穿了就是 /etc/hosts.allow 與 /etc/hosts.deny 的設定檔功能囉。這個功能也是針對 TCP 的 Header 進行再次的分析,同樣您可以設定一些機制來抵制某些 IP 或 Port ,好讓來源端的封包被丟棄或通過檢驗;

    4.  
    5. 經過了上兩道基本的防火設施之後,再接下來則是每一項服務的個別設定功能!舉例來說,如果是以 FTP 連線的話,那麼在 ftp 的設定檔案當中,可能會經由 PAM 模組( 未來在網路安全當中會提及)來抵擋特殊的 users ,當然也會以特別的設定來抵擋某些 TCP 封包!另外,以 WWW 伺服器的設定來看,在 WWW 的設定檔 httpd.conf 裡頭也有類似的 deny 功能呦!不過要注意的是,當 TCP 到達這個步驟時,其實已經算是進入到本機的服務範圍內了,所以,要小心您的套件是否有漏洞啊

    6.  
    7. 假使上面的幾道火牆都通過了,那麼才能進入主機來登入!此時,一經登入就會被系統記錄在『登錄檔』當中,藉以瞭解主機的歷史歷程!
     
    注意一下,上面的步驟是 Linux 預設具有的防備功能,當然您還可以在 IP Filter 之前外加硬體防火牆設備!不過,在這裡我們主要以 Linux 系統本身具有的功能來進行說明喔!好了,那麼如何利用 Linux 所提供的這些功能來防備我們的主機呢?您可以嘗試這樣做:
     
    • 封包過濾( IP Filter ):

    • 封包過濾是 Linux 提供的第一道防火牆呦!但是不同的核心版本會有不一樣的封包過濾機制!以 2.2.xx 為核心的 Linux 主要以 ipchains 作為過濾機制,至於目前新版的 2.4.xx 則以 iptables 為機制!OK!既然我們的新版 Linux  為 kernel 2.4.xx ,所以自然以 iptables 來進行 IP 抵擋的工作啦!那麼由於 TCP 封包裡頭有 IP 及 port 嘛!所以要抵擋來源 IP 或者是自身的 port ,嘿嘿!自然就很容易來進行啦!您目前只要曉得, iptables 可以經由 TCP 的封包 Header 資料來進行分析的工作,並設定『特殊動作』,例如:符合我們 iptables 的設定規則,就讓他可以經過防火牆,若是該 TCP 封包在我們的不歡迎 IP 的行列,那就將他丟棄,他就沒有辦法進入 Linux 主機啦!
       
    • Super daemons 與 TCP_Wrappers:

    • 目前新推出的 Linux 所使用的 super daemons 是以 xinet 為主,至於抵擋封包的工作則可以讓 TCP_Wrappers 來進行!Wrappers 是包裹的意思,那麼 TCP_Wrappers 自然就是要對 TCP 這個包裹進行解析的工具啦!嘿嘿!沒錯,他可以再次的分析 TCP 的封包啊!利用每個服務的特色,來將 TCP 封包抵擋,這個 TCP_Wrappers 主要以『 服務 , services』為主的抵擋方針,例如 FTP, Telnet, SSH 都可以經由他來進行 IP 分析的動作呦!
       
    • 服務過濾:

    • 每個服務還有特別的自訂的防火機制,例如 Apache 這個 WWW 的套件裡頭,就含有『 deny from IP 』來抵擋某些不受歡迎的 IP 機制,而 ssh 也可以在設定檔裡頭決定是否要開放 root 的登入權限!FTP 當然也可以制定一些規則來擋掉不受歡迎的 IP 啦!不過,到這一步時,該封包已經進入主機的服務之內囉,是經由服務來關閉該 IP 的連線的呦!而由於某些服務天生就有些小漏洞,呵呵, Cracker 相當的容易利用這些漏洞來進行破壞的行為!由於該封包已經進入主機了,萬一服務真的有漏洞,那可就慘了......所以,雖然我們可以利用每個伺服器軟體來設定抵擋的功能,但是如果該伺服器軟體本身就有漏洞的話,那麼這一步就會行不通囉!
       
    • 登入主機:

    • 上面提到的大多是在某些服務裡頭來取用我們主機系統的資源,那麼如果該封包是想要直接登入我們的主機呢( login )?這個時候就需要取得我們主機的『帳號與密碼, ID & PasswdWord』的權限啦!如果通過 ID & pass word 的驗證之後,就可以進入我們的主機啦!最常見的就是 SSH 或者是 telnet 以及 FTP 等軟體了,這些軟體在 Client 端的封包資料經過上面數道手續而進入後,再來就會要求 client 端的使用者輸入帳號與密碼,藉以分析對方的身份來開放權限給 Client 的使用者登入。所以啦,在這個手續裡面,最重要的就是密碼啦!如果您的密碼設定的太簡單,或者是為了方便您的使用者,而讓他們可以將密碼設定的相當的簡易,例如密碼設定為 123 之類的,那麼您的系統的密碼就很容易被猜出來!很危險吶!
       
    • 登錄檔記錄:

    • 『為了防止世界的破壞.....』喔!不!那個是皮卡丘的裡頭壞人的台詞....這裡要談的是,『為了防止主機的破壞....可愛又迷人的角色...』那就是 登錄檔 啦!為了記錄歷史歷程,以方便管理者在未來的錯誤查詢與入侵偵測,良好的分析登錄檔的習慣是一定要建立的,尤其是 /var/log/messages/var/log/secure 這些個檔案!雖然各大主要 Linux distribution 大多有推出適合他們自己的登錄檔分析套件,例如 Red hat 的 logwatch ,不過畢竟該套件並不見得適合所有的 distributions ,所以 VBird 嘗試自己寫了一個 logfile.sh 的 shell script,目前在 Red Hat, Mandrake, 及 Openlinux 都可以進行登錄檔的分析呢!您可以在底下的網址下載該程式:http://linux.vbird.org/download/index.php#logfile
     
    好了,底下我們來談一談幾個常見的 Cracker 攻擊手法。

一些常見的攻擊手法:

    粗略瞭解了 TCP 封包如何進入到本機之後,再來我們先提供幾個可能的入侵方法,然後才來聊一聊怎樣防備我們的主機呢:
     
    • 使用工具程式入侵您的主機:

    • 千萬不要懷疑,目前網路上面有太多的入侵偵測型態的攻擊軟體了!只要您主機上面的防護作的不夠好,他就可以經由攻擊軟體提供的功能,取得您主機上面的 root 權限,並進一步操縱您的主機!並且,為了怕被您的一些工具程式發現他的 PID,所以一般來說,他會去修改您的主機裡面的幾個檔案,例如:who, w, last, top, ps, netstat, find 等等,讓您永遠找不到他是否在您的系統當中!怕了吧?!不過,這些工具程式主要都是利用『您的 Linux distribution 所提供的套件的漏洞』來設計的,咦!為什麼各主要的 distribution 要提供有問題的套件啊!?呵呵!並不是這樣的啦,因為當一個新版的 Linux distribution 釋出後,他就會開始接受 Internet 的檢驗,很多的『盈盈美黛子』(台語,閒閒沒事幹之意)就會分析該 distribution 所提供的套件是否有漏洞來讓他們有可趁之機?!如果發現了 distribution 提供的套件有漏洞,功力高強的就會寫成駭客軟體,然後只要有人拿到該軟體,嘿嘿!您曉得會發生什麼事了~所以囉,當您安裝了 Linux 之後,立刻請進行套件升級啊!才能避免被這一類的工具程式所害!(很多人都會問到說:咦!怎麼 Linux 這麼多漏洞啊?!好可怕?!其實,目前每一套作業系統上面都有很多的漏洞的,例如您可到 Windows 的漏洞通報網站:http://www.microsoft.com/taiwan/download/ 就能知道為什麼了!所以,安全防備並不止於 Linux 系統,如果您剛剛完成 Windows 系統的安裝,最好也是要立刻到 Windows 所提供的 update 網站去更新 Windows 的套件啊!)
       
    • 蠕蟲或木馬程式 ( Trojan horse ):

    • 取自木馬屠城記的意思,木馬程式會主動的將您的主機開一個後門 ( 可以想成是 port 被啟動了 ),讓攻擊者可以輕輕鬆鬆的進出您的主機呢!那麼木馬程式怎麼會在您的系統上面呢?很簡單呀!如果今天您下載了一個不明程式,而且就安裝了他,他就可能會常駐在您的記憶體當中了!所以不要隨意安裝不明來源的檔案,或者是不要隨意安裝不明網站的檔案呀!例如前一陣的那個有名的某個軟體,在自家的網站上面還被放置了有木馬的程式在原套件中~呀!真可怕~那麼電腦蠕蟲是什麼?其實他也是一支程式,可以透過自我繁殖來感染其他網站或網域內的主機,最可怕的是,因為他會自我繁殖,並且會大量的發送封包到某個地方去,因為大量發送封包,所以就會佔用到整個網路媒體的頻寬,哇!網路就會停頓的厲害了!例如前2001-2003年間相當有名的 Nimda 與 Code Red 病毒,會讓您的網路頻寬被吃光光!!要避免這類型的攻擊,那就不要隨便下載不明的檔案,並且,下載的檔案如果原始網站有提供 MD5 的資訊,那就務必以 md5sum 這個指令來檢驗該軟體是否被修改過,然後才能比較放心的安裝喔!
       
    • DoS 攻擊法 ( Denial of Service ):

    • 這類型的攻擊中文翻譯成『阻斷式攻擊』,這種攻擊法也很要命,而且方法有很多,最常見的就屬 SYN Flood 攻擊法了!還記得我們在網路基礎裡面提到的,當主機接收了一個帶有 SYN 的 TCP 封包之後,就會啟用對方要求的 port 來等待連線,並且發送出回應封包 (帶有 SYNACK 旗標的 TCP 封包),並等待 Client 端的再次回應。好了,在這個步驟當中我們來想一想,如果 cient 端在發送出 SYN 的封包後,卻將來自 Server 端的確認封包丟棄,那麼您的 Server 端就會一直空等,而且 Client 端可以透過軟體功能,在短短的時間內持續發送出這樣的 SYN 封包,那麼您的 Server 就會持續不斷的發送確認封包,並且開啟大量的 port 在空等~呵呵!等到全部主機的 port 都啟用完畢,那麼.....系統就掛了!這種 DoS 的攻擊手法比較類似『玉石俱焚』的手段,他不是入侵您的系統,而是要讓您的系統掛點呢!
       
    • IP 欺騙:

    • 這個是比較高竿的人搞出來的把戲,他把送到您主機的封包的檔頭資料改過了,並宣告成為您內部網路的一份子!如果您沒有擋掉這樣的封包的話,那麼通常就會變成『接受他』!結果就是對方又可以輕而易舉的進入您的主機了....唉!真難防~
       
    • Port scan:

    • 這個最討厭了!因為目前很多的 distribution 為了自身測量自己的漏洞,都會附上類似 nmap 這一類的掃瞄軟體!這種軟體自己玩自己還無所謂,可以檢查一下自己的主機開了哪些 port !但是一旦被使用來攻擊別人的主機,那可就不好玩了....如果您有這種機會的話,也不要隨意去偵測別人的主機呦!很是危險呢!
       
    當然,攻擊的手法還不只如此,這裡僅不過列出一些比較常見的攻擊手段而已~而由上面的攻擊手段看起來,呵呵!套件的升級應該是最重要的預防工作了

主機防護計畫:

在網路上面( 尤其是 BBS )最常聽到的就是這樣的哀嚎聲音:『阿!!救命哪!我被入侵了!要怎麼辦?』真是傷腦筋的很!我也不知道要怎麼幫助您呢!因為這真是......『自作自受』吶!一些老人家常常在講,架設一個『網站』很容易,因為目前的線上教學實在是太多了,市面上的『教戰手冊』之類的書籍也真是多如過江之鯽,然而,大家都只知道『我要架設網站』卻不知到『我要架設的是一個安全的網站』,這就是我們老人家的心聲哪!因為『架設一個安全的網站,真的很難....』!其中,維護的心力更難哪!為什麼呢?由上面的 TCP/IP 的封包路線圖,我們可以發現,嘿嘿!目前的入侵您的主機的管道實在是太多了!而一個良好的防火系統又不是只要上述的其中一層就可以做好的!而是複合式的整體規劃,並且要『持續不斷的』監測您的主機系統,才能夠較為完善的保護好您的主機呢!唉~還真是不容易吶!底下我們來談一談,如果由主機內部到外部來規劃,要怎樣來加強主機的安全性呢?
  1. 建立完善的登入密碼規則限制:

  2. 要做好主機的防護,第一步就是要建立完善的密碼規則啦!因為這個咚咚常常是 cracker 嘗試入侵的第一步!您必須要建立好主機的密碼規則,請參考 鳥哥的 linux 私房菜--基礎學習篇之帳號管理 那一篇文章,裡頭提到的 /etc/shadow 檔案格式,還有 /etc/login.defs 這個檔案的內容,都是相當重要的密碼規則訂定的所在!另外,有些 cracker 軟體會利用套件的漏洞而主動的在您的系統上面新增一個可以讓遠端 cracker 登入的帳號,所以,如果您的帳號更動並不會很頻繁時,可以嘗試以 chattr 來將 /etc/passwd 及 /etc/shadow 做成不可變更的檔案!較為安全啦!
     
  3. 完善的主機權限設定:

  4. 換個角度來想,如果搞破壞的人是您系統上面具有可以登入的使用者呢?呵呵!那麼主機的權限設定就顯的相當的重要了!還記得 SUID 與 SGID 吧!?如果您的系統上面具有很多這樣權限的執行檔,那麼一般身份的使用者就可以很輕易的取得系統管理員的執行權限了!很麻煩的~所以,主機的權限需要好好的管理,千萬不可掉以輕心~
     
  5. 升級與修補套件漏洞、及移除危險套件:

  6. 這個真的相當的重要的!那就是因為您的服務套件的安全性啦!例如有名的 wu-ftpd 這個 ftp 套件,被說了很多次,好像不怎麼安全哩!那麼就好就不要啟動他,或者是雖然啟動,但是限制他的使用網域,這樣最起碼可以達到一點保護的效果!此外,定時的升級與不定時上網查看危險通告,是很重要的態度呢!那麼從那裡知道這些安全資訊?底下的網站記得要常常觀看: 如果想要讓系統自動升級套件的話,那麼前一篇『Linux 套件的網路更新』就不能不去看一看。
     
  7. 每項系統服務的安全設定項目:

  8. 每個伺服器軟體都有自己開發的功能,有些功能很強大,強大到可以讓 Client 端取得 root 的權限來操作。這些功能都是便利管理者來進行主機的管理,不過,卻也可能造成一些為網路安全的疑慮。舉例來說,SSH 這個提供遠端登入的伺服器軟體,可以提供 root 這個帳號來登入,但是,由於每個 Linux 系統都有 root 這個帳號,所以,只要有人知道您的系統啟動了 SSH ,那麼他就可能會以 root 這個帳號來猜測您主機上的密碼,並據以登入您的系統!很危險,不是嗎?!所以,可能的話,盡量將伺服器軟體的較為危險的功能取消,例如拿掉 SSH, FTP, Telnet 等軟體的 root 登入權限!另外,大部分的伺服器軟體也會提供安全設定的項目,例如 SSH 就具有 deny 某些 IP 或是使用者身份的設定項目呢!所以,發現危險人士,就加入拒絕往來名單當中吧!
     
  9. TCP_Wrappers 的基礎防火設定:

  10. 這是最基礎的防火牆了!您可以訂定某些比較危險的服務僅針對內部網路開放,例如 FTP 與 Telnet 這兩個極度危險的服務,讓他們僅能在內部私有網域使用,那麼 TCP_Wrappers 就可以達到這樣的功能咯!因為 TCP_Wrappers 主要是針對服務來設計的,他可以針對某些服務的服務 IP 網段來進行通過與否的檢查呢!這個我們會在下一章繼續說明。
     
  11. iptables 的防火規則設定:

  12. 這個是 Linux 核心支援的工作咯!可以利用一行一行的規則訂定,來設定防火牆的安全規則,如此則可以抵擋掉大部分的不受歡迎的 TCP 封包囉!這部份我們也會在下個章節中繼續說明。
     
  13. 主機資源偵測系統( MRTG ):

  14. 當主機受到不明原因的攻擊時,通常會有一些端倪可以瞧出來,例如最明顯的是 CPU 的 loading 會飆到 90 ~ 100% 左右!還有,當有內部無聊人士在大量下載資料時,網路流量頻寬被他佔光了!這個時候主機的資源偵測系統就顯的重要了,我們也可以用簡易的 snmp 配合 MRTG 來捉取資料,以即時的角度來觀察主機的現況!
     
  15. 登錄檔案分析系統:

  16. 還是要再說一遍,登錄檔的良好的分析習慣,對於系統管理員來說,是真的很重要的一件事情!
基本上,主機的防護至少需要達到上面的要求,多多觀察網路上面的安全通報是真的很重要的事情,此外,由於系統管理員或許無法全天都在主機前面管理,此時自動分析的系統就很重要了!例如我們可以透過 apt 或 urpmi 之類的套件管理進行網路自動套件升級、利用類似 logwatch 之類的套件來進行登錄檔的仔細分析等等,都可以幫助系統管理員有效率的管理主機吶!OK!那麼系統管理員的主要任務是什麼呢?

網管人員的技能:

從上面的情況來看,嘿嘿嘿嘿!要作為一個稱職的網管人員,還真是難呀!基本上,您必需要具備這些能力才行呢:
  • 瞭解什麼是需要保護的內容:

  • 我的天吶,還要知道什麼是需要保護的呀!?呵呵!沒錯,就是如此!由剛剛我們知道的主機入侵方法當中,不難瞭解,只要有人坐在您的主機前面,那麼任何事都有可能會發生!因此,如果您的主機相當的重要,請『不要讓任何人靠近!』您可以參考一下湯姆克魯斯在『不可能的任務』裡面要竊取一部電腦內的資料的困難度!! ^_^""
    • 硬體:能鎖就鎖吧!
    • 軟體:還包含最重要的資料呢!!
  • 預防黑客( Black hats )的入侵:

  • 這可不是開玩笑的,什麼是黑客呀!這是因為原本在西部電影當中,壞人都是戴黑色帽子的,所以之前的人們就稱網路攻擊者為 Black hats 啦!在預防這方面的攻擊者時,除了嚴格管制網路的登入之外,還需要特別控制原本您的主機中的人物!就我們小網站來說,不要以為好朋友就隨便他啦!他說要指定密碼是跟他的帳號相同比較好記,您就答應他!等到人家用他的密碼登入您的主機,並破壞您的主機,那可就得不償失了!如果是大企業的話,那麼員工使用網路時,也要分等級的呢! ^_^
  • 主機環境安全化:

  • 沒什麼好講的,除了多關心,還是多關心!仔細的分析登錄檔,常常上網看看最新的安全通告,這都是最基礎的!還包含了以最快的速度更新有問題的套件!因為,越快更新您的套件,就越快可以杜絕黑客的入侵!
  • 防火牆規則的訂定:

  • 這部份比較麻煩一些啦!因為您必需要不斷的測試測試再測試!以取得最佳化的網路安全設定!怎麼說呢?要曉得的是,如果您的防火牆規則訂定得太多的時候,那麼一個資料封包就要經過越多的關卡才能完整的通過防火牆,以進入到主機內部!嘿嘿!這可是相當的花費時間的!會造成主機的效能不彰!特別留意這一點呢!
  • 即時維護您的主機:

  • 就像剛剛說的,您必需要隨時維護您的主機,因為,防火牆不是一經設定之後就不用在再他了!因為,再嚴密的防火牆,也會有漏洞的!這些漏洞包括防火規則設定不良、利用較新的偵測入侵技術、利用您的舊軟體的服務漏洞等等!所以,必需要即時維護您的主機呀!這方面除了分析 log files 之外,也可以藉由即時偵測來進行這個工作!例如 PortSentry 就是蠻不錯的一套軟體呢!
  • 良好的教育訓練課程:

  • 不是所有的人都是電腦網路高手,尤其雖然現在資訊爆炸,但是仍然有很多的機會會遇到電腦白癡呀!這個時候,要曉得的是,我們對於內部網域通常沒有太多的規範,那如果他用內部的電腦去做壞事怎麼辦?!有時候還是無心的~挖哩~所以說,需要特別的教育訓練課程呀!
  • 完善的備份計畫:

  • 天有不測風雲,人有旦夕禍福呀!什麼人都不知道什麼時候會有大地震、我們也都不知道什麼時候會突然的硬碟掛掉去~所以說,完善的備份計畫是相當重要的!!這一部份請參考一下 鳥哥的 linux 私房菜--基礎學習篇之Linux 主機備份 的內容吧!
反正呦,就是要花蠻多心力在上面的就是了!不然,真的會一天到晚接到您的主管、您的用戶、您的客戶哇哇大叫的呦! ^_^""!而為了讓您這個管理的工作可以做的比較輕鬆,學習 BASH Shell 以及會使用到的程式語言,尤其是 Linux 上面慣用的 C ,則也是挺重要的吶!

被入侵後的修復工作:

    所謂『百密一疏』啊,人不是神,總會有考慮不週的情況,萬一您的主機就因為這『一疏』導致被入侵了,那該怎麼辦?由上面的說明當中,我們知道『木馬』是很嚴重的,因為他會在您的系統下開個後門(Back door)讓攻擊者可以登入您的主機,而且還會竄改您 Linux 上面的程式,讓您找不到該木馬程式!怎麼辦?很多朋友都習慣『反正只要將 root 的密碼改回來就好了』這樣的觀點,事實上,那樣一部主機還是有被做為中繼站的危險啊!所以,萬一您的主機被入侵了,最好的方法還是『重新安裝 Linux 』會比較乾淨!那該如何重新安裝呢?很多朋友一再地安裝,卻一再地被入侵~為什麼呢?因為他沒有『記取教訓』啊!呵呵!底下我們就來談一談,一部被入侵的主機應該如何修復比較好?
     
    1. 立即拔除網路線:

    2. 既然發現被入侵了,那麼第一件事情就是拿掉網路功能!拿掉網路功能最簡單的作法自然就是拔掉網路線了!事實上,拿掉網路線最主要的功能除了保護自己之外,還可以保護同網域的其他主機。怎麼說呢?舉個最近 (2003/08) 發病的疾風病毒好了,他會感染同網域之內的其他主機喔!所以,拔除網路線之後,遠端的攻擊者立即就無法進入您的 Linux 主機,而且您還可以保護網域內的其他相關主機啊!
       
    3. 分析登錄檔資訊,搜尋可能的入侵途徑:

    4. 被入侵之後,決不是只要重新安裝就好,還需要額外分析『為什麼我的主機這一次會被入侵,對方是如何入侵的?』,如果您能夠找出問題點,那麼不但您的 Linux 功力立刻增強了,主機也會越來越安全喔!而如果您不知道如何找出被入侵的可能途徑,那麼重新安裝後,下次還是可能被以同樣的方法入侵啊!粉麻煩的啦!好了,那該如何找出入侵的途徑呢?
      • 分析登錄檔:低級的 Cracker 通常僅是利用工具軟體來入侵您的系統,所以我們可以藉由分析一些主要的登錄檔來找出對方的 IP 以及可能有問題的漏洞。可以分析 /var/log/messages, /var/log/secure 還有利用 last 指令來找出上次登入者的資訊。
      • 檢查主機開放的服務:很多 Linux 使用者常常不曉得自己的系統上面開了多少的服務?我們說過,每個服務都有其漏洞或者是不應該啟用的增強型或者是測試型功能,所以,找出您系統上面的服務,並且檢查一下每個服務是否有漏洞,或者是在設定上面有了缺失,然後一個一個的整理吧!
      • 查詢 Internet 上面的安全通報:透過安全通報來瞭解一下最新的漏洞資訊,說不定您的問題就在上面!
       
    5. 重要資料備份:

    6. 主機被入侵後,顯得問題相當的嚴重,為什麼呢?因為主機上面有相當重要的資料啊!如果主機上面沒有重要的資料,那麼直接重新安裝就好了!所以,被入侵之後,檢查完了入侵途徑,再來就是要備份重要的資料了。好了,問個問題,什麼是『重要資料』? who, ps, ls 等等指令是重要資料嗎?還是 httpd.conf 等設定檔是重要資料?又或者是 /etc/passwd, /etc/shadow 才是重要資料?呵呵!基本上,重要的資料應該是『非 Linux 系統上面原有的資料』,例如 /etc/passwd, /etc/shadow, WWW 網頁的資料, /home 裡面的使用者重要檔案等等,至於 /etc/*, /usr/, /var 等目錄下的資料,就不見得需要備份了。注意:不要備份一些 binary 執行檔,因為 Linux 系統安裝完畢後本來就有這些檔案,此外,這些檔案也很有可能『已經被竄改過了』,那備份這些資料,反而造成下次系統還是不乾淨!
       
    7. 重新全新安裝:

    8. 備份完了資料,再來就是重新安裝 Linux 系統了。而在這次的安裝中,您最好選擇適合您自己的安裝套件即可,不要全部套件都給他安裝上去啊!挺危險的!
       
    9. 套件的漏洞修補:

    10. 記得啊,重新安裝完畢之後,請立即更新您的系統套件,否則還是會被入侵的啦!我喜歡先在其他比較乾淨的環境下將 Internet 上面的漏洞修補套件下載下來,然後燒錄起來,然後拿到自己的剛剛安裝完成的系統上面,mount CD 之後全部給他更新,更新之後,並且設定了相關的防火牆機制,同時進行下一步驟『關閉或移除不需要的服務』後,我才將網路線插上主機的網路卡上!因為我不敢確定在安裝完畢後,連上 Internet 去更新套件的這段時間,會不會又受到入侵攻擊說....
       
    11. 關閉或移除不需要的服務:

    12. 這個重要性不需要再講了吧?!啟用越少的服務,系統當然可以被入侵的可能性就比較低。
       
    13. 資料回復與恢復服務設定:

    14. 剛剛備份的資料要趕緊的複製回來系統,同時將系統的服務再次的重新開放,請注意,這些服務的設定最好能夠再次的確認一下,避免一些不恰當的設定參數在裡頭喔!
       
    15. 連上 Internet:

    16. 所有的工作都進行的差不多了,那麼才將剛剛拿掉的網路線接上來吧!恢復主機的運作了!
     
    經過這一連串的動作後,您的主機應該會恢復到比較乾淨的環境,此時還不能掉以輕心,最好還是參考防火牆的設定,並且多方面的參考 Internet 上面一些老手的經驗,好讓您的主機可以更安全一些!

重點回顧

  • 要管制登入主機的 Client ,得要瞭解 TCP 封包。 TCP 封包分為 Header 與 Messages 兩部份,其中, Header 裡面最重要的資訊包含目的端與來源端的 IP 與 Port ,還有一些旗標,例如 SYN/ACK 等等;
  • TCP 封包要進入我們 Linux 本機,至少需要通過 IP Filter, super daemon/TCP Wrappers, Daemons, 密碼驗證功能 等等步驟;
  • 一些所謂的黑客軟體,都是透過您的 Linux 上面的套件漏洞來攻擊 Linux 主機的;
  • 套件升級是預防被入侵的最有效方法之一;
  • 良好的登錄檔分析習慣可以在短時間內發現系統的漏洞,並加以修復。

參考資料


課後練習

  • 我老是發現我的系統怪怪的,似乎有點停頓的模樣,懷疑可能是 CPU 負荷太大,所以要去檢查一下系統相關的資訊。請問,我該以什麼指令去檢查我的系統相關的資訊?
  • 我懷疑我的系統上面有過多的具有 SUID 的檔案存在,導致一般使用者可以隨意的取得 root 的權限,請問,我要如何找出這些具有 SUID 權限的檔案?
  • 我由國內一些 ftp 網站上下載了 Red Hat 公司釋出的套件,我想安裝他,但又不知道該套件檔案是否被修改過!請問我該如何確定這個套件的可用性?
  • 良好的密碼規劃是防備主機的第一要務,請問 Linux 系統當中,關於密碼相關的檔案與規則設定在哪些檔案裡面?
  • 簡易說明,當一部主機被入侵之後,應該如何處理?

  • 前往參考用解答
修改歷史:
2002/08/12:第一次完成日期!
2003/08/23:重新編排與增加重點回顧、課後練習
其他連結
環境工程模式篇
鳥園討論區
鳥哥舊站

今日 人數統計
昨日 人數統計
本月 人數統計
上月 人數統計