GB | BIG5
|
| 首頁 > 系統管理 > FreeBSD > 正文 |
 |
| FreeBSD handbook中文版 10 安全 |
| 本文出自: 作者: 張紀青編譯 wxjoshua@163.com (2003-01-15 06:02:00) |
目錄
10 安全
10.1 概要
10.2 介紹
10.3 確保FreeBSD 的安全特性
10.4 DES, MD5 和Crypt
10.5 S/Key
10.6 Kerberos
10.7 防火牆
10.8 OpenSSL
10.9 IPsec
10.10 openSSH
=============================================================
第10 章安全
=============================================================
(翻譯中出現的任何問題或錯誤,請廣大讀者及時反饋給我:freebsdhandbook@163.com)
10.1 概要
這章將對系統安全概念作一個的基本介紹,還有一些通用的好的規則,和一些在
FreeBSD 下的高級主題。這兒提到的許多主題已經很好地應用系統和Internet 的安全。
確保你的系統安全將保護你的數據,不至被黑客所竊取。
FreeBSD 提供了許多工具和機制來確保你的系統和網絡的安全。
讀完這章,你將了解到這些:
. FreeBSD 的基本系統安全概念。
. FreeBSD 中可用的如DES 和MD5 這樣的加密(crypt)機制。
. 如何設置S/Key,一種一次性的密碼驗証機制。
. 如何設置Kerberos,另一種密碼驗証機制。
. 如何使用IPFW 來創建防火牆。
. 如何配置IPSec。
. 如何配置和使用OpenSSH,FreeBSD 的SSH 執行方式。
在閱讀這章之前,你必須了解:
. 了解基本的FreeBSD 和internet 概念。
10.2 介紹
安全是系統管理至始至終最基本的要求。所有的BSD UNIX 系統都有它自身內在的安
全性,建構和維護額外的安全機制,確保用戶的“誠實”大概是系統管理最艱巨的工作之一。
機器僅保持著建構時最原始的安全性,而安全性必須要考慮到用戶使用的便利性。通常
UNIX 系統能夠支持巨大的並發用戶處理,而這些處理中絕大部分是以服務器形式處理的----
這意味著外部的實體能夠連接和互相交談。昨天的小型電腦和主機變成了今天的桌面機,電
腦已連到局域網和互聯網,安全就成了一個非常嚴峻的問題。
第1 頁FreeBSD 使用手冊
通過一個分層的方法,安全能夠很好地實現。你所要做的就是創建很多的安全層,然
仔細地監視系統以防入侵。你不要過多地創建安全層,否則你將會影響檢測面。檢測是許多
安全機制中最重要的方法。例如,在每一個二進制程序中,很難判斷schg 標記,因為這樣
會臨時地保護二進制,它會妨礙對一個已經侵入的攻擊者作一個很容易的檢測,以至最終你
的安全機制根本檢測不到攻擊者。
系統安全也涉及到攻擊的許多方面,包括試圖摧毀或使一個系統無法使用。安全問題主
要被分成幾類:
1, 拒絕服務的攻擊;
2, 竊取用戶的帳戶;
3, 通過最近的服務器竊取root 帳戶;
4, 通過用戶帳戶竊取root 帳戶;
5, 創建門;
拒絕式服務攻擊是侵佔機器所需資源的一種方法。有代表性的,D.O.S 攻擊,是非常殘
忍的攻擊機制,它通過壓倒性的流量來破壞服務器和網絡堆棧,試圖摧毀機器或使機器無法
使用。一些D.O.S 攻擊利用在網絡堆棧中的錯誤,僅用一個簡單的信息包就可以摧毀一台機
器。這可以向內核添加一個錯誤補丁來修復。在一些不利的條件下,對服務器的攻擊能夠被
修復,只要適當地修改一下系統的選項來限制系統對服務器的負荷。頑強的網絡攻擊是很難
對付的。例如,一個欺騙性信息包的攻擊,無法阻止入侵者切斷你的系統與internet 的連接。
它不會使你的機器死掉,但它會把internet 管道塞滿。
竊取用戶帳戶要比D.O.S 攻擊更加普遍。許多系統管理員仍然在它們的服務器上運行著
基本的telnetd,rlogind,rshd,ftpd 服務。這些服務器默認情況下,不會通過加密連接來操作。
結果是如果你的系統有中等規模大小的用戶,在通過遠程登陸的方式登陸到你系統的用戶
中,一些人的密碼會被人竊取。仔細的系統管理員會從那些成功登陸系統的遠程訪問日志中
尋找可疑的資源地址。
假定,一個入侵者已經訪問到了一個用戶的帳戶,入侵者就會使超級用戶失效。然而,
事實是在一個安全的系統中,訪問用戶的帳戶不應該給入侵者訪問root 的權限。這個區別
是很重要的,因為沒有訪問root 的權限,入侵者是無法隱藏它的軌跡的,但可能不需要做
什,就可以把用戶的文件弄亂或使機器崩潰。竊取用戶帳戶是很普遍的事情,因為用戶往
第2 頁FreeBSD 使用手冊
往不會對系統管理員的警告採取措施。
系統管理員應該牢牢記住,可能有許多潛在的方法會使root 失效。入侵者可能知道root
的密碼,可以在一個以root 權限運行的服務器上找到一個錯誤(bug),就可以通過網絡連
接到那台服務器上使root 失效,或者一旦入侵者已經侵入了一個用戶的帳戶,可以在自己
的機器上運行一個程序來發現服務器的漏洞,從而讓他侵入到服務器使root 失效。如果入
侵者已經找到了方法使root 失效,入侵者就不需要安裝一個門。許多root 漏洞被找到之
,入侵者會想盡辦法去刪除日期來清除自己的訪問痕跡,所以很多入侵者會安裝門。
門能給入侵者提供一個簡單的重新獲取訪問系統的root 權限,但它也會給聰明的系統管理
員一個探測入侵的簡便方法。認為入侵者不可能安裝了門,這種思想事實上對你的系統安
全是有害的,因為這樣他就不會隔離從一開始就侵入系統的黑客發現的漏洞。
安全的管理方法應當使用象剝洋蔥皮一樣多層次,層層逼近的方法來實現,可以按下面
的方式進行分類:
1, 確保root 用戶和其它用戶帳戶的安全;
2, 確保root 用戶---以root 用戶權限運行的服務器和suid/sgid 二進制程序的安全;
3, 確保用戶帳戶的安全;
4, 確保密碼文件的安全;
5, 確保內核中內核設備和文件系統的安全;
6, 快速檢測系統中發生的不適當的變化;
7, 偏執狂;
這一章的下一節將比較深入地講述上面提到的每一個條目。
10.3 確保FreeBSD 的安全
下面這節將講述確保系統安全的方法。
10.3.1 確保root 用戶和其它用戶帳戶的安全
首先,如果你沒有確保root 帳戶的安全,請不要為確保其它用戶的安全而煩惱。絕大
多數系統都會指派一個密碼給root 用戶帳戶。第一件事是假定密碼總是不安全。這並不意
味著你要把密碼刪掉。密碼通常對用控制台訪問機器是必須的。也就是說,你不應當讓它用
到控制台以外的密碼,即使是使用su 命令。例如,確信你的pty’s 作為不安全的因素已經被
第3 頁FreeBSD 使用手冊
記錄在/etc/ttys 文件中,以至直接通過telnet 或rlogin 登陸root 會不被接受。如果使用(如sshd)
其它的登陸服務,確認直接登陸root 根本不行。考慮到每一種訪問方法--(如FTP 服務)通
過cracks 經常失敗。直接登陸root 應當只有通過系統控制台被允許。
當然,作為一個系統管理員,你應當獲得root 權限,所以我們公開幾個漏洞。但我們
確信這些漏洞需要額外的密碼確認才能操作。一種成為root 訪問的是增加適當用戶的帳戶
到wheel 組(在/etc/group 中)。Wheel 組中的用戶可以使用su 命令來訪問root。在它們的密
碼登陸口,通過把它們放置在wheel 組中,你就永遠不會給用戶成員訪問本地wheel 的權限。
用戶帳戶應當被放置在staff 組中,然通過/etc/group 文件加入到wheel 組。事實上,那些
需要訪問root 的用戶成員將會被放置在wheel 組中。當然也會有可能,用一個如kerberos
的認証方法。在root 帳戶中使用kerberos 的.k5login 文件,可以不需要把任何人放置在wheel
組中就允許ksu 訪問root.如果入侵者已經獲得了密碼文件,或者已侵入了一個用戶帳戶,這
可能是一個比較好的解決方法,因為wheel 機制仍然可能會使入侵者break root。雖然wheel
機制要什都沒有要好得多,但它也不是最安全的選擇。
確保超級用戶帳戶安全的間接方法是通過使用一個有選擇性的登陸訪問方法確保你的
用戶帳戶的安全。這樣做,入侵者可能會偷竊到密碼文件,但不會侵入任何用戶帳戶。用戶
成員通過使用一對私有或公共密匙(如kerberos 或ssh)的安全機制來進入它們的帳戶。當
你使用kerberos 時,你必須確保使用kerberos 的服務器或工作站的安全。當你使用一對ssh
的公共/私有密匙系統,你必須確保你所登陸的那台機器的安全,但當你用ssh-keygen 創建
它時,你可以添加一個額外的保護層到你的鑰匙對中。你可以強制所有的用戶成員使用加密
的方法連接它們的活動,這樣就可以關閉可能會被入侵者使用的一個重要漏洞:將一個毫無
關系,很不安全的機器與網絡隔離。
更多間接的安全機制能夠被實現。你可以從一個帶有限制性的服務器到一個毫無限制性
的服務器進行登陸。例如,如果你的主郵箱運行在所有種類的服務器上,那你的工作站就無
法運行任何東西。為了確保你工作站的安全,盡可能少運行服務器,直到根本就沒有服務器
運行,然運行一個受密碼保護的屏保。當然,一個入侵者強行訪問你的工作站,它就會把
你所設置的所有安全特性都破壞掉。有一個問題必須明確,你必須考慮到這樣一個事實,絕
大多數入侵是從那些沒有物理訪問工作站或服務器權限的人那裡,通過一個網絡來侵入的。
使用象kerberos 這樣的技術,也會讓你無法使用系統,或者改變用戶帳戶的密碼,從而影響
到擁有一個帳戶的所有用戶成員。如果一個用戶成員的帳戶已經失去安全,應當改變它在所
有機器上的密碼。對不連續的密碼,在n 台機器上改變一個密碼可能是很亂的。你可能要
第4 頁FreeBSD 使用手冊
用kerberos 重建密碼的限制:一張kerberos 的許可証可能一段時間會過期,但kerberos 系
統可能要求用戶在一段時間以選擇一個新密碼(一般是一個月)。
10.3.2 確保以root 權限運行的服務器和suid/sgid 二進制程序的安全
謹慎的系統管理員只運行他需要的服務器,不多也不少。要清醒地認識到第三方的服
務器經常有很多的錯誤。例如,運行一個老版本的imapd 或popper,就象是給出了一個通用
的root 帳號來訪問外部世界。運行每一個服務器,你都要仔細地檢查。許多服務器不一定
需要用root 來運行。例如,ntalk, comsat, 和finger 守護程序可能運行在一個特殊的用
戶sandboxes 上。一個sandbox 是不完全的,除非你遇到了許多問題,但安全的層級模式
仍然支持:如果能夠通過運行在一個sandbox 上的一個服務器侵入,他們仍然必須要攻破
sandbox。攻擊者必須通過很多的安全層,這樣他侵入的可能性就很小了。過去已經找到了
很多root 的安全漏洞,包括基本的系統服務器。如果你運行著用戶通過sshd 來登陸而從
不用telnetd 或rshd 或rlogind 來登陸的服務器,你最好把這些服務器關掉。
現在,FreeBSD 默認在sandbox 中運行ntalkd, comsat,和finger。還有一個叫做named
的程序。/etc/defaults/rc.conf中包含了運行named 的選項,但被注意掉了。無論你是在
安裝一個新的系統,還是升級一個已存在的系統,被這些sandboxes 使用的特殊用戶帳號
可能沒有被安裝。謹慎的系統管理員無論何時都要認真研究和執行sandboxes。
有許多其他的服務器通常不能運行在sandboxes 中:sendmail, popper, imapd, ftpd,
和其他一些。你可以選一些,但安裝它們可能需要你做很多工作。你可能必須以root 來運
行這些服務器,然依靠其他的機制來檢測可能通過他們進行的侵入活動。
其他比較大的潛在的root 漏洞是安裝在系統中的suid-root 和sgid 程序。這些程序,
象rlogin,都放在/bin, /sbin, /usr/bin,或/usr/sbin 中。當然,世上沒有100%的安全,
系統默認的suid 和sgid 程序可能認為是比較安全的。
另外,root 漏洞有時候能在這些程序中找到。在1998 年在xterm 的Xlib 中的一個root
漏洞被發現。謹慎的系統管理員需要限制suid 的程序,只有指定的人可以運行,指定人所
在的特殊組可以訪問,其他人都不能使用。一台沒有顯示器的服務器通常不需要一個xterm
程序。
Sgid 程序可能也會有危險。如果一個入侵者能夠攻破sgid-kmem 程序,入侵者就可以
第5 頁FreeBSD 使用手冊
讀到/dev/kmem,因而可以讀到crypted 密碼文件,從而危及到受密碼保護的帳戶的安全。
另外,一個侵入組kmem 的入侵者可以通過pty’s 來監測到擊鍵的情況,包括通過安全方
法登陸的用戶的情況。一個侵入tty 組的入侵者可以寫入幾乎任何用戶的tty。如果用戶正
在運行一個終端程序或帶有鍵盤模擬特性的模擬器,入侵者可以偷偷地發送一個數據流來
使用戶的終端顯示一個命令,然就以那個用戶的身份來運行。
10.3.3 確保用戶帳戶的安全
用戶的帳戶通常是很難確保安全的。當你用嚴格的訪問限制來約束你的用戶時,你不
可以使用你有的普通用戶帳戶來這樣做。如果你有充分的控制,那你可以確保用戶帳戶的
安全。如果沒有,你必須時刻警惕地監視那些帳戶。為用戶的帳戶使用ssh 和kerberos 可
能會有問題,需要額外的管理和技術支持,但與crypted 密碼文件相比仍是一個比較好解決
方案。
10.3.4 確保密碼文件的安全
唯一的確保安全的方法是用*號來代替輸入的密碼,使用ssh 或kerberos 來訪問那些帳
戶。即使crypted 密碼文件(/etc/spwd.db)只能被root 讀取,入侵者可能無法獲得root 寫
的權限,但也可能會獲得讀的權限。
你的安全腳本必須經常檢查和報告密碼文件的修改情況。
10.3.5 確保內核核心,Raw 設備和文件系統的安全
如果一個入侵者攻破root,他就可以做任何事情。例如,絕大多數現代內核都有一個
包來探測內建的設備啟動器。在FreeBSD 下,它被叫做bpf 設備。一個入侵者通常會試圖
在一台不安全的機器上運行一個包探測器。所以,絕大多數系統都不把bpf 設備編譯進內
核。
但即使你關閉了bpf 設備,你仍然可能會對/dev/mem 和/dev/kmem 擔心。因為,入侵
者仍可以寫到raw 磁盤設備。另外,還有另一個叫做module loader 的內核特性,kldload。
一個入侵者可以在運行內核時使用一個KLD module 來安裝它自己的bpf 設備,或其他檢測
設備。
第6 頁FreeBSD 使用手冊
要避免這些問題,你必須在更高安全級別上運行內核,至少在securelevel 1 上。
Securelevel 可以在kern.securelevel 變量上用sysctl 來設置。一旦你把securelevel 設
置成1,對raw 設備的寫入操作將被拒絕,特殊的chflags 標記如schg 將被強迫執行。你
必須保証schg 標記被設置在特定的啟動程序,目錄和腳本文件上。這樣做可能有點夸大了。
當你在一個安全性比較高的水平上操作時,升級系統可能比較困難。
你可以折中一下,將系統運行在一個安全性更高的水平上,但不對每個系統文件和目
錄設置schg 標記。另外一個方法是簡單地將/ 和/usr 設為只讀。這樣就可以阻止所有重要
的侵入檢測了。
10.3.6 檢查文件的完整性:程序,配置文件等
你需要保護你的核心系統配置和控制文件。例如,在/和/usr 中的絕大多數文件上使用
chflag 來設置schg 位可能達不到預期的目標,因為當它保護文件的時候,它也會關閉一個
檢測窗口。你安全層的最一層也許是最重要的檢測層。如果你不能檢測到潛在的入侵,
你安全層的其余部分可能就沒有用了。你的工作是要讓入侵者慢下來,而不是阻止它,以
便尋找時機抓住它。
檢測入侵的最好方法是尋找有沒有修改,丟失或不需要的文件。尋找修改文件的最好
方法是來自另一個訪問受限制的系統。在一個特別的訪問受到限制的系統上寫上你的安全
腳本使得入侵者不可見,這一點很重要。為了集中優勢,你通常必須使用有限訪問的機器
來訪問其他機器,通常是執行一個其他機器的只讀NFS 輸出到有限訪問的機器,或通過設
置ssh 鑰匙對來允許有限訪問的機器ssh 到其他機器。除了它的網絡傳輸,NFS 是很少用的
方法---允許你監視每個客戶機的文件系統。
如果你的有限訪問服務器通過一個switch 來連接到客戶機,NFS 方法是比較好的選擇。
如果你的有限訪問服務器是通過一個hub 或通過幾層的路由連接到客戶機,NFS 方法可能很
不安全,使用ssh 可能是更好的選擇。
一旦你使用一個訪問受限制的機器,至少需要能讀取客戶系統,你必須寫一些腳本來
執行實時的檢測。掛上NFS 之,你可以用find 和md5 這樣的工具。至少每天一次物理地
md5 客戶機文件。當發現匹配錯誤時,會發出“尖叫聲”提示系統管理員去檢查。一個安全
腳本也會檢查不適當的suid 程序和(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
FreeBSD handbook中文版 9 配制FreeBSD 的內核 (2003-01-14 06:02:01) FreeBSD handbook中文版 8 用戶和基本的帳戶管理 (2003-01-13 06:02:00) FreeBSD handbook中文版 7 FreeBSD 的啟動過程 (2003-01-10 06:02:00) FreeBSD handbook中文版 6 配置與調整 (2003-01-09 06:02:00) FreeBSD handbook中文版 5 X Window 系統 (2003-01-07 06:02:00) FreeBSD handbook中文版 4 安裝應用程序:Packages 和Ports (2003-01-06 06:02:00) FreeBSD handbook中文版 3 Unix 基礎 (2003-01-03 06:02:01) FreeBSD handbook中文版 2 開始安裝FreeBSD(2) (2003-01-02 06:02:00) FreeBSD handbook中文版 2 開始安裝FreeBSD(1) (2003-01-01 06:02:00) FreeBSD handbook中文版 1 整體介紹 (2002-12-31 06:02:00)
|
|
|
|
 |
★ 樊強制作 歡迎分享 ★ |