在介紹了『網路基礎』、『限制連線 port number 』、『網路升級套件』之後,再來準備要上 Internet 了嗎?!如果只是想要上 Internet 去瀏覽,那麼自然沒有問題,如果是想要對 Internet 開放網路服務,那麼最好還是先認識一下網路安全會比較好一些。什麼?套件也更新了, port 也關閉了,還需要認識什麼網路安全啊?!呵呵!當然啦!因為難保我們的主機不會被新的套件漏洞以及阻斷式攻擊(DoS)所困擾啊!在這個章節裡面,我們會稍微介紹一些基礎的網路防護觀念,尤其是系統管理員應該要做的事情吶! |
在網路上面( 尤其是 BBS )最常聽到的就是這樣的哀嚎聲音:『阿!!救命哪!我被入侵了!要怎麼辦?』真是傷腦筋的很!我也不知道要怎麼幫助您呢!因為這真是......『自作自受』吶!一些老人家常常在講,架設一個『網站』很容易,因為目前的線上教學實在是太多了,市面上的『教戰手冊』之類的書籍也真是多如過江之鯽,然而,大家都只知道『我要架設網站』卻不知到『我要架設的是一個安全的網站』,這就是我們老人家的心聲哪!因為『架設一個安全的網站,真的很難....』!其中,維護的心力更難哪!為什麼呢?由上面的 TCP/IP 的封包路線圖,我們可以發現,嘿嘿!目前的入侵您的主機的管道實在是太多了!而一個良好的防火系統又不是只要上述的其中一層就可以做好的!而是複合式的整體規劃,並且要『持續不斷的』監測您的主機系統,才能夠較為完善的保護好您的主機呢!唉∼還真是不容易吶!底下我們來談一談,如果由主機內部到外部來規劃,要怎樣來加強主機的安全性呢?
基本上,主機的防護至少需要達到上面的要求,多多觀察網路上面的安全通報是真的很重要的事情,此外,由於系統管理員或許無法全天都在主機前面管理,此時自動分析的系統就很重要了!例如我們可以透過 apt 或 urpmi 之類的套件管理進行網路自動套件升級、利用類似 logwatch 之類的套件來進行登錄檔的仔細分析等等,都可以幫助系統管理員有效率的管理主機吶!OK!那麼系統管理員的主要任務是什麼呢?
- 建立完善的登入密碼規則限制:
要做好主機的防護,第一步就是要建立完善的密碼規則啦!因為這個咚咚常常是 cracker 嘗試入侵的第一步!您必須要建立好主機的密碼規則,請參考 鳥哥的 linux 私房菜--基礎學習篇之帳號管理 那一篇文章,裡頭提到的 /etc/shadow 檔案格式,還有 /etc/login.defs 這個檔案的內容,都是相當重要的密碼規則訂定的所在!另外,有些 cracker 軟體會利用套件的漏洞而主動的在您的系統上面新增一個可以讓遠端 cracker 登入的帳號,所以,如果您的帳號更動並不會很頻繁時,可以嘗試以 chattr 來將 /etc/passwd 及 /etc/shadow 做成不可變更的檔案!較為安全啦!
- 完善的主機權限設定:
換個角度來想,如果搞破壞的人是您系統上面具有可以登入的使用者呢?呵呵!那麼主機的權限設定就顯的相當的重要了!還記得 SUID 與 SGID 吧!?如果您的系統上面具有很多這樣權限的執行檔,那麼一般身份的使用者就可以很輕易的取得系統管理員的執行權限了!很麻煩的∼所以,主機的權限需要好好的管理,千萬不可掉以輕心∼
- 升級與修補套件漏洞、及移除危險套件:
這個真的相當的重要的!那就是因為您的服務套件的安全性啦!例如有名的 wu-ftpd 這個 ftp 套件,被說了很多次,好像不怎麼安全哩!那麼就好就不要啟動他,或者是雖然啟動,但是限制他的使用網域,這樣最起碼可以達到一點保護的效果!此外,定時的升級與不定時上網查看危險通告,是很重要的態度呢!那麼從那裡知道這些安全資訊?底下的網站記得要常常觀看:如果想要讓系統自動升級套件的話,那麼前一篇『Linux 套件的網路更新』就不能不去看一看。
- 台灣電腦危機處理小組:http://www.cert.org.tw/
- Mandrake security:http://www.mandrakesecure.net/en/docs.php
- Red Hat update:http://www.redhat.com/apps/support/errata/
- 每項系統服務的安全設定項目:
每個伺服器軟體都有自己開發的功能,有些功能很強大,強大到可以讓 Client 端取得 root 的權限來操作。這些功能都是便利管理者來進行主機的管理,不過,卻也可能造成一些為網路安全的疑慮。舉例來說,SSH 這個提供遠端登入的伺服器軟體,可以提供 root 這個帳號來登入,但是,由於每個 Linux 系統都有 root 這個帳號,所以,只要有人知道您的系統啟動了 SSH ,那麼他就可能會以 root 這個帳號來猜測您主機上的密碼,並據以登入您的系統!很危險,不是嗎?!所以,可能的話,盡量將伺服器軟體的較為危險的功能取消,例如拿掉 SSH, FTP, Telnet 等軟體的 root 登入權限!另外,大部分的伺服器軟體也會提供安全設定的項目,例如 SSH 就具有 deny 某些 IP 或是使用者身份的設定項目呢!所以,發現危險人士,就加入拒絕往來名單當中吧!
- TCP_Wrappers 的基礎防火設定:
這是最基礎的防火牆了!您可以訂定某些比較危險的服務僅針對內部網路開放,例如 FTP 與 Telnet 這兩個極度危險的服務,讓他們僅能在內部私有網域使用,那麼 TCP_Wrappers 就可以達到這樣的功能咯!因為 TCP_Wrappers 主要是針對服務來設計的,他可以針對某些服務的服務 IP 網段來進行通過與否的檢查呢!這個我們會在下一章繼續說明。
- iptables 的防火規則設定:
這個是 Linux 核心支援的工作咯!可以利用一行一行的規則訂定,來設定防火牆的安全規則,如此則可以抵擋掉大部分的不受歡迎的 TCP 封包囉!這部份我們也會在下個章節中繼續說明。
- 主機資源偵測系統( MRTG ):
當主機受到不明原因的攻擊時,通常會有一些端倪可以瞧出來,例如最明顯的是 CPU 的 loading 會飆到 90 ~ 100% 左右!還有,當有內部無聊人士在大量下載資料時,網路流量頻寬被他佔光了!這個時候主機的資源偵測系統就顯的重要了,我們也可以用簡易的 snmp 配合 MRTG 來捉取資料,以即時的角度來觀察主機的現況!
- 登錄檔案分析系統:
還是要再說一遍,登錄檔的良好的分析習慣,對於系統管理員來說,是真的很重要的一件事情!
從上面的情況來看,嘿嘿嘿嘿!要作為一個稱職的網管人員,還真是難呀!基本上,您必需要具備這些能力才行呢:
- 瞭解什麼是需要保護的內容:
我的天吶,還要知道什麼是需要保護的呀!?呵呵!沒錯,就是如此!由剛剛我們知道的主機入侵方法當中,不難瞭解,只要有人坐在您的主機前面,那麼任何事都有可能會發生!因此,如果您的主機相當的重要,請『不要讓任何人靠近!』您可以參考一下湯姆克魯斯在『不可能的任務』裡面要竊取一部電腦內的資料的困難度!! ^_^""
- 硬體:能鎖就鎖吧!
- 軟體:還包含最重要的資料呢!!
- 預防黑客( Black hats )的入侵:
這可不是開玩笑的,什麼是黑客呀!這是因為原本在西部電影當中,壞人都是戴黑色帽子的,所以之前的人們就稱網路攻擊者為 Black hats 啦!在預防這方面的攻擊者時,除了嚴格管制網路的登入之外,還需要特別控制原本您的主機中的人物!就我們小網站來說,不要以為好朋友就隨便他啦!他說要指定密碼是跟他的帳號相同比較好記,您就答應他!等到人家用他的密碼登入您的主機,並破壞您的主機,那可就得不償失了!如果是大企業的話,那麼員工使用網路時,也要分等級的呢! ^_^
- 主機環境安全化:
沒什麼好講的,除了多關心,還是多關心!仔細的分析登錄檔,常常上網看看最新的安全通告,這都是最基礎的!還包含了以最快的速度更新有問題的套件!因為,越快更新您的套件,就越快可以杜絕黑客的入侵!
- 防火牆規則的訂定:
這部份比較麻煩一些啦!因為您必需要不斷的測試測試再測試!以取得最佳化的網路安全設定!怎麼說呢?要曉得的是,如果您的防火牆規則訂定得太多的時候,那麼一個資料封包就要經過越多的關卡才能完整的通過防火牆,以進入到主機內部!嘿嘿!這可是相當的花費時間的!會造成主機的效能不彰!特別留意這一點呢!
- 即時維護您的主機:
就像剛剛說的,您必需要隨時維護您的主機,因為,防火牆不是一經設定之後就不用在再他了!因為,再嚴密的防火牆,也會有漏洞的!這些漏洞包括防火規則設定不良、利用較新的偵測入侵技術、利用您的舊軟體的服務漏洞等等!所以,必需要即時維護您的主機呀!這方面除了分析 log files 之外,也可以藉由即時偵測來進行這個工作!例如 PortSentry 就是蠻不錯的一套軟體呢!
- 良好的教育訓練課程:
不是所有的人都是電腦網路高手,尤其雖然現在資訊爆炸,但是仍然有很多的機會會遇到電腦白癡呀!這個時候,要曉得的是,我們對於內部網域通常沒有太多的規範,那如果他用內部的電腦去做壞事怎麼辦?!有時候還是無心的∼挖哩∼所以說,需要特別的教育訓練課程呀!反正呦,就是要花蠻多心力在上面的就是了!不然,真的會一天到晚接到您的主管、您的用戶、您的客戶哇哇大叫的呦! ^_^""!而為了讓您這個管理的工作可以做的比較輕鬆,學習 BASH Shell 以及會使用到的程式語言,尤其是 Linux 上面慣用的 C ,則也是挺重要的吶!
- 完善的備份計畫:
天有不測風雲,人有旦夕禍福呀!什麼人都不知道什麼時候會有大地震、我們也都不知道什麼時候會突然的硬碟掛掉去∼所以說,完善的備份計畫是相當重要的!!這一部份請參考一下 鳥哥的 linux 私房菜--基礎學習篇之Linux 主機備份 的內容吧!