鳥哥的 Linux ADSL 私房菜


認識網路安全
本文已不再維護,更新文章請參考此處
最近更新日期:2003/08/23
 
在介紹了『網路基礎』、『限制連線 port number 』、『網路升級套件』之後,再來準備要上 Internet 了嗎?!如果只是想要上 Internet 去瀏覽,那麼自然沒有問題,如果是想要對 Internet 開放網路服務,那麼最好還是先認識一下網路安全會比較好一些。什麼?套件也更新了, port 也關閉了,還需要認識什麼網路安全啊?!呵呵!當然啦!因為難保我們的主機不會被新的套件漏洞以及阻斷式攻擊(DoS)所困擾啊!在這個章節裡面,我們會稍微介紹一些基礎的網路防護觀念,尤其是系統管理員應該要做的事情吶!
 
TCP/IP 封包進入主機的基本流程
  :認識 TCP/IP
  :TCP 進入本機簡易流程
一些常見的攻擊手法
主機防護計畫
網管人員的技能
被入侵後的修復工作
重點回顧
參考資料
課後練習

TCP/IP 封包進入主機的基本流程:
一些常見的攻擊手法:
主機防護計畫:
在網路上面( 尤其是 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!那麼系統管理員的主要任務是什麼呢?

網管人員的技能:
從上面的情況來看,嘿嘿嘿嘿!要作為一個稱職的網管人員,還真是難呀!基本上,您必需要具備這些能力才行呢: 反正呦,就是要花蠻多心力在上面的就是了!不然,真的會一天到晚接到您的主管、您的用戶、您的客戶哇哇大叫的呦! ^_^""!而為了讓您這個管理的工作可以做的比較輕鬆,學習 BASH Shell 以及會使用到的程式語言,尤其是 Linux 上面慣用的 C ,則也是挺重要的吶!

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

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

    4. 被入侵之後,決不是只要重新安裝就好,還需要額外分析『為什麼我的主機這一次會被入侵,對方是如何入侵的?』,如果您能夠找出問題點,那麼不但您的 Linux 功力立刻增強了,主機也會越來越安全喔!而如果您不知道如何找出被入侵的可能途徑,那麼重新安裝後,下次還是可能被以同樣的方法入侵啊!粉麻煩的啦!好了,那該如何找出入侵的途徑呢?  
    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 上面一些老手的經驗,好讓您的主機可以更安全一些!

重點回顧
參考資料
課後練習
認識網路安全

2002/08/12:第一次完成日期!
2003/08/23:重新編排與增加重點回顧、課後練習


Designed by VBird during 2001-2004.  Aerosol Lab.