系統管理員
本文從系統管理員的角度討論安全問題.系統管理員是管理系統的人:啟動系統,停止系統運行,安裝新軟件,增加新用戶,刪除老用戶,以及完成保持系統發展和運行的日常事務工作。
1.安全管理 安全管理主要分為四個方面:
(1)防止未授權存取:這是計算機安全最重要的問題:未被使用系統的人進入系統.用戶意識,良好的口令管理(由系統管理員和用戶雙方配合),登錄活動記錄和報告,用戶和網絡活動的周期檢查,這些都是防止未授權存取的關鍵。
(2)防止洩密:這也是計算機安全的一個重要問題.防止已授權或未授權的用戶相互存取相互的重要信息.文件系統查帳,su登錄和報告,用戶意識,加密都是防止洩密的關鍵。
(3)防止用戶拒絕系統的管理:這一方面的安全應由操作系統來完成.一個系統不應被一個有意試圖使用過多資源的用戶損害.不幸的是,UNIX不能很好地限制用戶對資源的使用,一個用戶能夠使用文件系統的整個磁盤空間,而UNIX基本不能阻止用戶這樣做.系統管理員最好用PS命令,記帳程序df和du周期地檢查系統.查出過多占用CUP的進程和大量占用磁盤的文件。
(4)防止丟失系統的完整性:這一安全方面與一個好系統管理員的實際工作(例如:周期地備份文件系統,系統崩潰後運行fsck檢查,修復文件系統,當有新用戶時,檢測該用戶是否可能使系統崩潰的軟件)和保持一個可靠的操作系統有關(即用戶不能經常性地使系統崩潰).
本文其余部分主要涉及前兩個問題,第三個問題在"安全查帳"一節討論。
2.超級用戶 一些系統管理命令只能由超級用戶運行.超級用戶擁有其他用戶所沒有的特權,超級用戶不管文件存取許可方式如何,都可以讀,寫任何文件,運行任何程序。系統管理員通常使用命令: /bin/su 或以 root 進入系統從而成為超級用戶.在後面文章中以#表示應敲入必須由超級用戶運行的命令,用$表示應敲入由所有其他用戶運行的命令。
3.文件系統安全 (1)UNIX文件系統概述
UNIX文件系統是UNIX系統的心髒部分,提供了層次結構的目錄和文件.文件系統將磁盤空間劃分為每1024個字節一組,稱為塊(block)(也有用512字節為一塊的,如:SCO XENIX).編號從0到整個磁盤的最大塊數.全部塊可劃分為四個部分,塊0稱為引導塊,文件系統不用該塊;塊1稱為專 用塊,專用塊含有許多信息,其中有磁盤大小和全部塊的其它兩部分的大小.從塊2開始是i節點表,i節點表中含有i節點,表的塊數是可變的,後面將做討論.i節點表之後是空閒存儲塊(數據存儲塊),可用於存放文件內容.文件的邏輯結構和物理結構是十分不同的,邏輯結構是用戶敲入cat命令後所看到的文件,用戶可得到表示文件內容的字符流.物理結構是文件實際上如何存放在磁盤上的存儲格式.用戶認為自己的文件是邊疆的字符流,但實際上文件可能並不是以邊疆的方式存放在磁盤上的,長於一塊的文件通常將分散地存放在盤上.然而當用戶存取文件時,UNIX文件系統將以正確的順序取各塊,給用戶提供文件的邏輯結構.當然,在UNIX系統的某處一定會有一個表,告訴文件系統如何將物理結構轉換為邏輯結構.這就涉及到i節點了.i節點是一個64字節長的表,含有有關一個文件的信息,其中有文件大小,文件所有者,文件存取許可方式,以及文件為普通文件,目錄文件還是特別文件等.在i節點中最重要的一項是磁盤地址表.該表中有13個塊號.前10個塊號是文件前10塊的存放地址.這10個塊號能給出一個至多10塊長的文件的邏輯結構,文件將以塊號在磁盤地址表中出現的順序依次取相應的塊。
當文件長於10塊時又怎樣呢?磁盤地址表中的第十一項給出一個塊號,這個塊號指出的塊中含有256個塊號,至此,這種方法滿足了至多長於266塊的文件(272,384字節).如果文件大於266塊,磁盤地址表的第十二項給出一個塊號,這個塊號指出的塊中含有256個塊號,這256個塊號的每一個塊號又指出一塊,塊中含256個塊號,這些塊號才用於取文件的內容.磁盤地址中和第十三項索引尋址方式與第十二項類似,只是多一級間接索引。
這樣,在UNIX系統中,文件的最大長度是16,842,762塊,即17,246,988,288字節,有幸是是UNIX系統對文件的最大長度(一般為1到2M字節)加了更實際的限制,使用戶不會無意中建立一個用完整個磁盤窨所有塊的文件.文件系統將文件名轉換為i節點的方法實際上相當簡單.一個目錄實際上是一個含有目錄表的文件:對於目錄中的每個文件,在目錄表中有一個入口項,入口項中含有文件名和與文件相應的i節點號.當用戶敲入cat xxx時,文件系統就在當前目錄表中查找名為xxx的入口項,得到與文件xxx相應的i節點號,然後開始取含有文件xxx的內容的塊。
(2)保持系統安全
. 考慮系統中一些關鍵的薄弱環節:
a. 系統是否有MODEM?電話號碼是否公布
b. 系統是否連接到?還有什麼系統也連接到該網絡
c. 系統管理員是否使用未知來處或來處不可靠的程序
d. 系統管理員是否將重要信息放在系統中
e. 系統的用戶是熟悉系統的使用還是新手
f. 用戶是否很重視關心安全
g. 用戶的管理部門是否重視安全
. 保持系統文件安全的完整性.檢查所有系統文件的存取許可,任何具有SUID許可的程序都是非法者想偷換的選擇對象.
. 要特別注意設備文件的存取許可.
. 要審查用戶目錄中具有系統ID/系統小組的SUID/SGID許可的文件.
. 在未檢查用戶的文件系統的SUID/SGID程序和設備文件之前,不要安裝用戶的文件系統.
. 將磁盤的備份存放在安全的地方.
. 設置口令時效,如果能存取UNIX的源碼,將加密口令和信息移到僅對root可讀的文件中,並修改系統的口令處理子程序.這樣可增加口令的安全.修改passwd,使passwd能刪去口令打頭和末尾的數字,然後根據spell詞典和/etc/passwd中用戶的個人信息,檢查用戶的新口令,也檢查用戶新口令中子串等於登錄名的情況.如果新口令是spell詞典中的單詞,或/etc/passwd中的入口項的某項值,或是登錄名的子串,passwd將不允許用戶改變口令.
. 記錄本系統的用戶及其授權使用的系統.
. 查出久未使用的登錄戶頭,並取消該戶頭.
. 確保沒有無口令的登錄戶頭.
. 啟動記帳系統.
. 查出不尋常的系統使用情況,如大量的占用磁盤,大量的使用CPU時間,大量的進程,大量的使用su的企圖,大量無效的登錄,大量的到某一系統的網絡傳輸,奇怪的uucp請求.
. 修改shell,使其等待了一定時間而無任務時終止運行.
. 修改login,使其打印出用戶登錄的最後時間,三次無效登錄後,將通訊線掛起,以便系統管理員能檢查出是否有人試圖非法進入系統.確保login不讓root在除控制台外的任何地方登錄.
. 修改su,使得只有root能以過期口令通過su進入某一戶頭.
. 當安裝來源不可靠的軟件時,要檢查源碼和makefile文件,查看特殊的子程序調用或命令.
. 即使是安裝來源可靠的軟件,也要檢查是否有SUID(SGID)程序,確認這些許可的確是必要的.如果可能,不要讓這些程序具有系統ID(或組)的SUID(SGID)許可,而應該建立一個新用戶(或給)供該軟件運行.
. 如果系統在辦公室中,門應上鎖,將重要數據保存在軟盤上或帶上,並鎖起來.
. 將secure,perms和任何其它做安全檢查的shell程序存取許可置為僅執行,更好的是將這些shell程序存於可拆卸的介質上.
. 記住,只要系統有任何人都可調用的撥號線,系統就不可能真正的安全.系統管理員可以很好地防止系統受到偶然的破壞.但是那些有耐心,有計劃,知道自己在干什麼的破壞者,對系統直接的有預謀的攻擊卻常常能成功.
. 如果系統管理員認為系統已經洩密,則應當設法查出肇事者.若肇事者是本系統的用戶,與用戶的管理部門聯系,並檢查該用戶的文件,查找任何可疑的文件,然後對該用戶的登錄小心地監督幾個星期.如果肇事者不是本系統的用戶,可讓本公司采取合法的措施,並要求所有的用戶改變口令,讓用戶知道出了安全事故,用戶們應當檢查自己的文件是否有被竄改的跡象.如果系統管理員認為系統軟件已被更改了,就應當從原版系統帶(或;軟盤)上重裝入所有系統軟件,保持系統安全比道歉更好.
(3)設備文件
UNIX系統與邊在本系統上的各種設備之間的通訊,通過特別文件來實現就程序而言,磁盤是文件,MODEM是文件,甚至內存也是文件.所有連接到系統上的設備都在/dev目錄中有一個文件與其對應.當在這些文件上執行I/O操作時,由UNIX系統將I/O操作轉換成實際設備的動作.例如,文件/dev/mem是系統的內存,如果cat這個文件,實際上是在終端顯示系統的內存.為了安全起見,這個文件對普通用戶是不可讀的.因為在任一給定時間,內存區可能含有用戶登錄口令或運行程序的口令,某部分文件的編輯緩沖區,緩沖區可能含有用ed -x命令解密後的文本,以及用戶不願讓其他人存取的種種信息.在/dev中的文件通常稱為設備文件,用ls /dev命令可以看看系統中的一些設備:
acuo 呼叫自動撥號器
console 系統控制台
dsknn 塊方式操作磁盤分區
kmem 核心內存
mem 內存
lp 打印機
mto 塊方式操作磁帶
rdsknn 流方式操作的磁盤分區
rmto 流方式操作的磁帶
swap 交換區
syscon 系統終端
ttynn 終端口
x25 網絡端口
等等
(4)/etc/mknod命令
用於建立設備文件.只有root能使用這個命令建立設備文件.其參數是文件名,字母c或b分別代表字符特別文件或塊特別文件,主設備號,次設備號.塊特別文件是像磁帶,磁盤這樣一些以塊為單位存取數據的設備.字符特別文件是如像終端,打印機,MODEM,或者其它任何與系統通訊時,一次傳輸一個字符的設備,包括模仿對磁盤進行字符方式存取的磁盤驅動器.主設備號指定了系統子程序(設備驅動程序),當在設備上執行I/O時,系統將調用這個驅動程序.調用設備驅動程序時,次設備號將傳遞給該驅動程序(次設備規定具體的磁盤驅動器,帶驅動器,信號線編號,或磁盤分