您好,欢迎访问三七文档
99-1前言維護系統的安全,是系統管理人員最重要的工作,FreeBSD在預設的時候就制定一套基本的安全防護機制,但是基本的防護機制絕對是不夠的,而系統管理人員的工作就是在於繼續增加新的安全機制,來加強系統的安全性。當然,使用者在選擇安全性的時候,就必需要降低方便性,愈方便的系統,就愈危險,正是這個道理。在以往的時代,電腦主機通常都是只有少數幾個人在使用,但隨著資訊時代的到來,電腦愈做愈小,而且愈來愈普遍,每個人都開始擁有屬於自已的個人電腦。而網路愈加發達,伺服器也就愈來愈多,如Unix系統的每一台伺服器都可以提供許多的服務,與網路上廣大的使用者通訊,而企業的應用,像是E-mail、File-Server及SQL等存放使用者資料的服務,對於企業來說是最重要的資產,此時安全就開始變的愈來愈重要。安全的概念就像一個洋蔥一樣,一層一層的保護,系統管理人員可以使用各式各樣的方式,用來保護整個系統的核心,或是使用監控的方法,來觀察在系統的外部或是內部是否有不正常的動作發生。當然即使到了現在,還是沒有人可以完全的保証系統的安全是否為無虞的狀態,只能時常對系統進行升級,或是對所發現的漏洞進行修補,勤勞才是安全的不二法門。系統安全9-2FREEBSD實務手冊安全是用來防護各種不同種類的攻擊型態,而攻擊的型態包括了讓系統癱瘓,或是讓系統無法使用等,主要包括以下幾個部份:1、拒絕服務攻擊(Denialofserviceattacks,DoS)。所謂的DoS就是去奪取系統所需要的資源,使系統無法進行服務的動作。一般來說,DoS攻擊就是試圖要讓伺服器因為過載或是處理大量不正常的網路動作而當機,或是無法進行服務的攻擊型態,有些DoS的攻擊只需要使用一個封包,利用已知的漏洞就可以使得伺服器無法動作,而另外也有利用不完整的封包,讓系統一直進行回應的動作,直到系統當掉為止。這種攻擊型態簡直是不可能停止的,除非管理者對封包的存取進行一些必要的限制。2、使用者帳號的洩露。使用者帳號的洩露比DoS攻擊更為常見,許多系統管理人員仍然在利用標準明碼的伺服器(telnetd,rlogind,rshd,ftpd)進行管理的動作,這是非常危險的,這些伺服器在連結的時候,預設都是沒有進行加密(encrypted)的動作,這樣會導致使用者在進行連結的時候,會被另一個從外部連結進來的有心使用者利用一些封包擷取的軟體(例如:sniffer)來取得使用者的帳號及密碼。3、經由正在運行中的服務來取得root的權限。通常入侵者會利用網路連線,經過root來運作的服務中的漏洞來取得root的權限,或是藉由攻擊其他具有suid的程式漏洞,一樣可以取得root的權限,一旦入侵者取得了root的權限的話,那麼連後門程式也不用安裝,直接就取得系統管理的權限了。第9章系統安全9-34、經由一般使用者的帳號來取得root的權限。當入侵者取得了一般使用者的帳號時,也可以利用該帳號來取得系統上的資訊,例如:密碼檔的檔案內容,一旦知道該檔的內容的話,就會得知目前系統上有多少的使用者的資料,利用這種方式,在比較舊且沒有修補的系統中很容易取得root的權限。5、後門的建立。雖然說取得root的權限一樣可以取得管理權,但是許多的root的漏洞通常在發現後就會被修補,所以許多的入侵者還是選擇在系統上安裝後門程式。後門程式可以讓入侵者簡單的就變成了root,而去存取系統上任何的資源,但是如果是防備有佳的系統的話,那麼可能就會被偵測到這種入侵行為了。想要建立安全的的系統應該要有多方面的認知及做法,主要可以分為下列幾項:1、強化root及管理者帳號的安全。2、強化及修補各種運行的服務的安全及漏洞。3、強化使用者帳號的安全。4、強化密碼檔的安全。5、強化核心程式、raw裝置及檔案系統的安全。6、建立快速偵測系統異常變動的機制。9-4FREEBSD實務手冊在這個章節中,將會提供一些基本的系統安全的概念介紹及幾種建議常用的機制,在FreeBSD中有許多的方式可以用來增強系統及網路的安全。網路是一個非常不安全的環境,有各式各樣的人想要取得讀者的系統使用權,所以強化系統安全,並保護使用者的資料,防止其他入侵者來奪取,是件很重要的事。FreeBSD提供了很多的工具及機制來確保系統的安全,在讀完這個章節後,讀者會知道下列的東西:FreeBSD系統基本的安全概念。Sniffit。加密機制DES、MD5。如何設定one-timepassword。記錄檔及記錄檔工具。Kerberos5。在FreeBSD使用IPFW建立防火牆。OpenSSL。在IPsec架構上實行VPN。OpenSSH。MandatoryAccessControl(MAC)。如何使用檔案系統存取控制列表(ACLs)。GPG/PGP。在閱讀這個章節前,請讀者必需先了解基本的FreeBSD系統架構及網路。第9章系統安全9-59-2FreeBSD的系統安全基本概念9-2-1強化root及管理者帳號的安全假設還沒有先強化root帳號的話,那麼請先不要去強化其他管理者的帳號,如何才可以強化root帳號的安全呢?首先,讀者要先確認無法直接使用root帳號登入,FreeBSD在預設的狀態下,telnet就無法使用root來登入,假設是使用ssh的話,那麼請確認在/etc/ssh/sshd_config這個檔案中,PermitRootLogin這個選項的設定值必需為NO,不過FreeBSD的預設值也是設定為無法直接使用root來登入。請確認每一種存取的方式,像是FTP這種常用的服務,是否可以直接使用root帳號來登入。root帳號在安全的政策中只允許在本機console的模式中直接使用,或是在遠端連線中,使用su的方式來轉變成為root的身份。當然,假設從遠端無法直接取得root的權限的話,那麼就要使用su的方式來取得。首先要先建立一個一般使用者的帳號,並設定使用者的密碼,然後將這個帳號的名稱加入wheel這個群組中,那麼這個帳號就可以成為管理者的群組了,而要加入帳號的檔案是放在/etc/group這個檔案中,加入過後的內容如以下所示:#$FreeBSD:src/etc/group,v1.282003/04/2705:49:53impExp$#wheel:*:0:root,linuldaemon:*:1:kmem:*:2:sys:*:3:tty:*:4:…………9-6FREEBSD實務手冊其中linul就是筆者要加入到管理者群組的帳號,那麼以後linul這個帳號就可以利用su指令,而取得root的權限了,當然,還得輸入root的密碼才行,但千萬不要在使用者的密碼檔中將這些使用者的群組設定為wheel。讀者可以將所有管理者歸類成同一個群組,再將這一個群組加入到wheel群組中,那麼就只有這些成員才可以在執行su後,擁有root的權限。假設是使用像是Kerberos這種的認証機制的話,那麼就可以使用放在root目錄中的Kerberos的.k5login檔,利用ksu指令來取得root的權限了,這個方式可能會比在wheel群組中加入管理者帳號的機制要來的適當,因為入侵者可能在入侵一個帳號或是取得了密碼檔後,而用來破解root,而得到權限,雖然wheel機制要比什麼都沒有要好的多,但也不是最好的選擇。有另外的方式可以強化使用者的帳號安全,一般使用者的帳號密碼都會存放到/etc/master.passwd這個檔案中,使用root帳號登入後,使用vipw這個指令就可以看到所以使用者帳號的密碼及檔案:#vipw………shie:$1$zdcMJujk$Hm5vctddCnzAX16qPzj6X1:1005:1005::0:0:User&:/home/shie:/usr/local/bin/bashlinul:$1$Or8lGqvk$QcgoU2YuCAWMq1vUBQbOo1:1006:1006::0:0:User&:/home/linul:/usr/local/bin/bash……….將使用者帳號中的密碼欄位使用*符號來替代:linul:$1$Or8lGqvk$QcgoU2YuCAWMq1vUBQbOo1:1006:1006::0:0:User&:/home/linul:/usr/local/bin/bash修改過後,變成:linul:*:1006:1006::0:0:User&:/home/linul:/usr/local/bin/bash第9章系統安全9-7利用vipw修改過後的內容會同步到/etc/master.passwd這個檔案中,經過這樣的變更之後,就可以預防一般的登入動作。比方說是使用者常用的telnet及sshd的認証動作,改變之後,使用者就必需使用其他的機制來完成認証,例如使用kerberos或是ssh的公開/私有鑰匙對的方式。如果是使用Kerberos的話,就必需確保Kerberos伺服器及使用者工作站的安全,若是使用ssh的公開/私有鑰匙機制的話,那麼就必需確保工作站的安全。在使用ssh-keygen建立這個鑰匙對的時候,還可以增加一個額外的密碼保護到這個鑰匙對中。強制所有使用者使用安全、加密的方法來進行連結,意味著關閉了一個被入侵者使用的一個重要的漏洞,就是從網路中得到使用者的資訊。9-2-2強化root運行的服務及suid/sgid程式的安全性謹慎的系統管理者只會在機器上運行著必要的服務,不多也不少,要知道第三方的伺服器經常會有很多的漏洞,例如運行一個舊版本的imapd或是popper就像是給了一個root的入場券給外部世界一樣,絕不要在沒有確定的狀態下運作任何的伺服器。也有很多服務不需要使用root來執行,像是ntalk,comsat及finger等daemon,這些可以讓特殊的使用者來運行即可,這些特殊的使用者沒有完整的功能,除非遇到了很大的問題,但安全層級的模式仍然支援:如果能夠透過運行在一個特殊使用者上的一個伺服器來侵入的話,那麼仍然必須要先攻破這個特殊使用者的帳號,攻擊者必須通過很多的安全層,這樣侵入的可能性就大大的減少了,有很多運行在root帳號的伺服器漏洞已經被找到了,包括基本的系統服務,如果使用者只有使用sshd的方式來登入的話,那麼其他的登入方式如telnetd、rshd或是rlogind等服務就應該關閉。9-8FREEBSD實務手冊FreeBSD目前預設會用sandboxes去運作ntalkd,comsat及finger,還有一個是叫做named的程式,/etc/defaults/rc.conf中包含了必需在sandboxes中運行named的註解參數,在安裝或是升級了一個新的系統後,被sandboxes使用的特殊使用者帳號可能沒有被安裝,精明的系統管理者應該會研究並使用這些為伺服器所使用的sandboxes。其他可能比較大的潛在性漏洞就是安裝在系統中的suid-root及sgid的二進制檔案,大部份的這些檔案,像是rlogin,放置在/bin、/sbin、/usr/bin或是/usr/sbin目錄中。沒有任何的系統是100%安全的,root的漏洞偶而會是從這個地方被發現,一個好的系統管理者應該限制此類檔案的數量,只有少許的管理者可以執行,其他人則不許執行。另外sgid程式可能是危險的,如果一個入侵者可以破解一個sgid-kmem的程式的話,那麼入侵者就可能可以讀取/dev/kmem並讀取加密的密碼檔了,或者可以破解kmem,可以監控鍵盤的輸入動作,如果使用者正在執行一個終端程式或帶有鍵盤類比特性的模擬器,入侵者可以偷偷地發送一個資料流程在使用者的終端機顯示一個命令,然後就以那個用戶的身份來執行。9-2-3強化使用者帳號的安全使用者的帳戶通常是很難確保安全的,除非有充分的控制可以確保用戶帳戶的安全,否則就必須時刻警惕地監視那些帳戶。即使讓使用者的帳戶單純的使用ssh和加密可能仍然會有問題,需要額外的管理和技術支援,但和加密密碼檔機制相比的話,仍然是一個比較好解決方案。第9章系統安全9-99-2-4強化密碼檔的安全唯一的確保安全的方法是利用*符
本文标题:维护系统的安全
链接地址:https://www.777doc.com/doc-1268046 .html