您的位置:首頁/技術文章
文章詳情頁

UNIX系統的安全(口令篇)

瀏覽:97日期:2024-06-30 17:48:58

Unix系統的安全

本文從用戶角度討論UNIX系統安全,闡述口令,文 件保護,目錄保護,與用戶程序有關的某些特殊特性和 使用crypt命令加密,并給出一些重要的安全忠告,以幫 助用戶保護自己的戶頭安全.

1.口令安全 UNIX系統中的/etc/passwd文件含有全部系統需要 知道的關于每個用戶的信息(加密后的口令也可能存于 /etc/shadow文件中). /etc/passwd中包含有用戶的登錄名,經過加密的 口令,用戶號,用戶組號,用戶注釋,用戶主目錄和用戶 所用的shell程序.其中用戶號(UID)和用戶組號(GID) 用于UNIX系統唯一地標識用戶和同組用戶及用戶的訪 問權限. /etc/passwd中存放的加密的口令用于用戶登錄時 輸入的口令經計算后相比較,符合則允許登錄,否則拒 絕用戶登錄.用戶可用passwd命令修改自己的口令,不 能直接修改/etc/passwd中的口令部份. 一個好的口令應當至少有6個字符長,不要取用個 人信息(如生日,名字,反向拼寫的登錄名,房間中可見 的東西),普通的英語單詞也不好(因為可用字典攻擊 法),口令中最好有一些非字母(如數字,標點符號,控 制字符等),還要好記一些,不能寫在紙上或計算機中 的文件中,選擇口令的一個好方法是將兩個不相關的 詞用一個數字或控制字符相連,并截斷為8個字符.當 然,如果你能記住8位亂碼自然更好. 不應使用同一個口令在不同機器中使用,特別是 在不同級別的用戶上使用同一口令,會引起全盤崩潰. 用戶應定期改變口令,至少6個月要改變一次,系 統管理員可以強制用戶定期做口令修改. 為防止眼明手快的人竊取口令,在輸入口令時應 確認無人在身邊.

2.文件許可權 文件屬性決定了文件的被訪問權限,即誰能存取 或執行該文件.用ls -l可以列出詳細的文件信息,如: -rwxrwxrwx 1 pat cs440 70 Jul 28 21:12 zombin 包括了文件許可,文件聯結數,文件所有者名,文件相 關組名,文件長度,上次存取日期和文件名. 其中文件許可分為四部分: -:表示文件類型. 第一個rwx:表示文件屬主的訪問權限. 第二個rwx:表示文件同組用戶的訪問權限. 第三個rwx:表示其他用戶的訪問權限. 若某種許可被限制則相應的字母換為-. 在許可權限的執行許可位置上,可能是其它字母, s,S,t,T.s和S可出現在所有者和同組用戶許可模式位 置上,與特殊的許可有關,后面將要討論,t和T可出現 在其他用戶的許可模式位置上,與'粘貼位'有關而與 安全無關.小寫字母(x,s,t)表示執行許可為允許,負 號或大寫字母(-,S或T)表示執行許可為不允許. 改變許可方式可使用chmod命令,并以新許可方式 和該文件名為參數.新許可方式以3位8進制數給出,r 為4,w為2,x為1.如rwxr-xr--為754. chmod也有其它方式的參數可直接對某組參數修 改,在此不再多說,詳見UNIX系統的聯機手冊. 文件許可權可用于防止偶然性地重寫或刪除一個 重要文件(即使是屬主自己)! 改變文件的屬主和組名可用chown和chgrp,但修 改后原屬主和組員就無法修改回來了.

3.目錄許可 在UNIX系統中,目錄也是一個文件,用ls -l列出 時,目錄文件的屬性前面帶一個d,目錄許可也類似于 文件許可,用ls列目錄要有讀許可,在目錄中增刪文 件要有寫許可,進入目錄或將該目錄作路徑分量時要 有執行許可,故要使用任一個文件,必須有該文件及 找到該文件的路徑上所有目錄分量的相應許可.僅當 要打開一個文件時,文件的許可才開始起作用,而rm, mv只要有目錄的搜索和寫許可,不需文件的許可,這 一點應注意. 4.umask命令 umask設置用戶文件和目錄的文件創建缺省屏蔽 值,若將此命令放入.profile文件,就可控制該用戶后 續所建文件的存取許可.umask命令與chmod命令的作 用正好相反,它告訴系統在創建文件時不給予什么存 取許可.

5.設置用戶ID和同組用戶ID許可 用戶ID許可(SUID)設置和同組用戶ID許可(SGID) 可給予可執行的目標文件(只有可執行文件才有意義) 當一個進程執行時就被賦于4個編號,以標識該進 程隸屬于誰,分別為實際和有效的UID,實際和有效的 GID.有效的UID和GID一般和實際的UID和GID相同,有 效的UID和GID用于系統確定該進程對于文件的存取許 可.而設置可執行文件的SUID許可將改變上述情況,當 設置了SUID時,進程的有效UID為該可執行文件的所有 者的有效UID,而不是執行該程序的用戶的有效UID,因 此,由該程序創建的都有與該程序所有者相同的存取 許可.這樣,程序的所有者將可通過程序的控制在有限 的范圍內向用戶發表不允許被公眾訪問的信息. 同樣,SGID是設置有效GID. 用chmod u+s 文件名和chmod u-s文件名來設置 和取消SUID設置.用chmod g+s 文件名和chmod g-s文 件名來設置和取消SGID設置. 當文件設置了SUID和SGID后,chown和chgrp命令 將全部取消這些許可.

6.cp mv ln和cpio命令 cp拷貝文件時,若目的文件不存在則將同時拷貝 源文件的存取許可,包括SUID和SGID許可.新拷貝的文 件屬拷貝的用戶所有,故拷貝另人的文件時應小心,不 要被其他用戶的SUID程序破壞自己的文件安全. mv移文件時,新移的文件存取許可與原文件相同, mv僅改變文件名.只要用戶有目錄的寫和搜索許可,就 可移走該目錄中某人的SUID程序且不改變其存取許可. 若目錄許可設置不正確,則用戶的SUID程序可被移到 一個他不能修改和刪除的目錄中,將出現安全漏洞. ln為現有文件建立一個鏈,即建立一個引用同一 文件的新名字.如目的文件已經存在,則該文件被刪除 而代之以新的鏈,或存在的目的文件不允許用戶寫它, 則請求用戶確認是否刪除該文件,只允許在同一文件 系統內建鏈.若要刪除一個SUID文件,就要確認文件的 鏈接數,只有一個鏈才能確保該文件被刪除.若SUID文 件已有多個鏈,一種方法是改變其存取許可方式,將同 時修改所有鏈的存取許可,也可以chmod 000 文件名, 不僅取消了文件的SUID和SGID許可,而且也取消了文 件的全部鏈.要想找到誰與自己的SUID程序建立了鏈, 不要立刻刪除該程序,系統管理員可用ncheck命令找 到該程序的其它鏈. cpio命令用于將目錄結構拷貝到一個普通文件中, 而后可再用cpio命令將該普通文件轉成目錄結構.用 -i選項時,cpio從標準輸入設備讀文件和目錄名表,并 將其內容按檔案格式拷貝到標準輸出設備,使用-o選 項時,cpio從標準輸入設備讀取先已建好的檔案,重建 目錄結構.cpio命令常用以下命令做一完整的目錄系 統檔案: find fromdir -print|cpio -o > archive 根據檔案文件重建一個目錄結構命令為: cpio -id < archive cpio的安全約定如下: (1)檔案文件存放每個文件的信息,包括文件所有 者,小組用戶,最后修改時間,最后存取時間, 文件存取許可方式. *根據檔案建立的文件保持存放于檔案中的 取許可方式. *從檔案中提取的每個文件的所有者和小組用 戶設置給運行cpio -i命令的用戶,而不是設 置給檔案中指出的所有者和小組用戶. *當運行cpio -i命令的用戶是root時,被建立 的文件的所有者和小組用戶是檔案文件所指 出的. *檔案中的SUID/SGID文件被重建時,保持SUID 和SGID許可,如果重建文件的用戶不是root, SUID/SGID許可是檔案文件指出的用戶/小組 的許可. (2)現存文件與cpio檔案中的文件同名時,若現 存文件比檔案中的文件更新,這些文件將不 被重寫. (3)如果用修改選項U,則同名的現存的文件將被 重寫.可能會發生一件很奇怪的事:如被重寫 的文件原與另一個文件建了鏈,文件被重寫 后鏈并不斷開,換言之,該文件的鏈將保持, 因此,該文件的所有鏈實際指向從檔案中提 取出來的文件,運行cpio無條件地重寫現存 文件以及改變鏈的指向. (4)cpio檔案中可含的全路徑名或父目錄名給出 的文件. 7.su和newgrp命令 (1)su命令:可不必注銷戶頭而將另一用戶又登錄 進入系統,作為另一用戶工作.它將啟動一新的shell 并將有效和實際的UID和GID設置給另一用戶.因此必 須嚴格將root口令保密. (2)newgrp命令:與su相似,用于修改當前所處的組 名.

8.文件加密 crypt命令可提供給用戶以加密文件,使用一個 關鍵詞將標準輸入的信息編碼為不可讀的雜亂字符 串,送到標準輸出設備.再次使用此命令,用同一關鍵 詞作用于加密后的文件,可恢復文件內容. 一般來說,在文件加密后,應刪除原始文件,只留 下加密后的版本,且不能忘記加密關鍵詞. 在vi中一般都有加密功能,用vi -x命令可編輯 加密后的文件.關于加密關鍵詞的選取規則與口令的 選取規則相同. 由于crypt程序可能被做成特洛依木馬,故不宜 用口令做為關鍵詞.最好在加密前用pack或compress 命令對文件進行壓縮后再加密.

9.其它安全問題 (1)用戶的.profile文件 由于用戶的HOME目錄下的.profile文件在用戶 登錄時就被執行.若該文件對其他人是可寫的 則系統的任何用戶都能修改此文件,使其按自 己的要求工作.這樣可能使得其他用戶具有該 用戶相同的權限. (2)ls -a 此命令用于列出當前目錄中的全部文件,包括 文件名以.開頭的文件,查看所有文件的存取許 可方式和文件所有者,任何不屬于自己但存在 于自己的目錄中的文件都應懷疑和追究. (3).exrc文件 為編輯程序的初始化文件,使用編輯文件后,首 先查找$HOME/.exrc文件和./.exrc文件,若該 文件是在$HOME目錄中找到,則可像.profile一 樣控制它的存取方式,若在一個自己不能控制 的目錄中,運行編輯程序,則可能運行其他人的 .exrc文件,或許該.exrc文件存在那里正是為 了損害他人的文件安全.為了保證所編輯文件 的安全,最好不要在不屬于自己或其他人可寫 的目錄中運行任何編輯程序. (4)暫存文件和目錄 在UNIX系統中暫存目錄為/tmp和/usr/tmp,對 于程序員和許多系統命令都使用它們,如果用 這些目錄存放暫存文件,別的用戶可能會破壞 這些文件. 使用暫存文件最好將文件屏蔽值定義為007, 但最保險的方法是建立自己的暫存文件和目 錄:$HOME/tmp,不要將重要文件存放于公共的 暫存目錄. (5)UUCP和其它網絡 UUCP命令用于將文件從一個UNIX系統傳送到 另一個UNIX系統,通過UUCP傳送的文件通常存 于/usr/spool/uucppublic/login目錄,login 是用戶的登錄名,該目錄存取許可為777,通過 網絡傳輸并存放于此目錄的文件屬于UUCP所 有,文件存取許可為666和777,用戶應當將通過 UUCP傳送的文件加密,并盡快移到自己的目錄 中. 其它網絡將文件傳送到用戶HOME目錄下的rjc 目錄中.該目錄應對其他人是可寫可搜索的, 但不必是可讀的,因而用戶的rjc目錄的存取 許可方式應為733,允許程序在其中建立文件. 同樣,傳送的文件也應加密并盡快移到自己 的目錄中. (6)特絡依木馬 在UNIX系統安全中,用特絡依木馬來代表和種 程序,這種程序在完成某種具有明顯意圖的功 能時,還破壞用戶的安全.如果PATH設置為先 搜索系統目錄,則受特絡依木馬的攻擊會大大 減少.如模似的crypt程序. (7)誘騙 類似于特絡依木馬,模似一些東西使用戶泄漏 一些信息,不同的是,它由某人執行,等待無警 覺的用戶來上當.如模似的login. (8)計算機病毒 計算機病毒通過把其它程序變成病毒從而傳 染系統的,可以迅速地擴散,特別是系統管理員 的粗心大意,作為root運行一個被感染的程序 時.實驗表明,一個病毒可在一個小時內(平均 少于30分鐘)取得root權限. (9)要離開自己已登錄的終端 除非能對終端上鎖,否則一定要注銷戶頭. (10)智能終端 由于智能終端有send和enter換碼序列,告訴 終端送當前行給系統,就像是用戶敲入的一樣. 這是一種危險的能力,其他人可用write命令 發送信息給本用戶終端,信息中如含有以下的 換碼序列: 移光標到新行(換行) 在屏幕上顯示'rm -r *' 將該行送給系統 后果大家可以想象. 禁止其他用戶發送信息的方法是使用mesg命 令,mesg n不允許其他用戶發信息,mesg y允許 其他用戶發信息. 即使如此仍是有換碼序列的問題存在,任何一 個用戶用mail命令發送同樣一組換碼序列,不 同的要用!rm -r *替換rm -r *.mail將以!開 頭的行解釋為一條shell命令,啟動shell,由 shell解釋該行的其它部分,這被稱為shell換 碼.為避免mail命令發送換碼序列到自己的終 端,可建立一個過濾程序,在讀mail文件之前先 運行過濾程序,對mail文件進行處理: myname='$LOGNAME'; tr -d[01-07][-13-37]< /usr/mail/$myname >> $HOME/mailbox; > /usr/mail/$myname; mail -f $HOME/mailbox 其中tr將標準輸入的字符轉換手寫到標準輸 出中.這只是一個簡單的思路,從原則上來說, 此程序應為一C程序,以避免破壞正發送到的 文件,可用鎖文件方式實現. (11)斷開與系統的聯接 用戶應在看到系統確認用戶登錄注銷后再離 開以免在用戶未注銷時由他人潛入. (12)cu命令 該命令使用戶能從一個UNIX系統登錄到另一 個UNIX系統,此時,在遠地系統中注銷用戶后 還必須輸入'~'后回車,以斷開cu和遠地系統 的聯接. cu還有兩個安全問題: *如本機安全性弱于遠地機,不提倡用cu去登 錄遠地機,以免由于本地機的不安全而影響 較安全的遠地機. *由于cu的老版本處理'~'的方法不完善,從 安全性強的系統調用安全性弱的系統時,會 使弱系統的用戶使用強系統用戶的cu傳送 強系統的/etc/passwd文件,除非確信正在 使用的cu是正確版本,否則不要調用弱系統. 10.保持戶頭安全的要點 (1)保持口令的安全 *不要將口令寫下來. *不要將口令存于終端功能鍵或MODEM的字符 串存儲器中 *不要選取顯而易見的信息作口令. *不要讓別人知道. *不要交替使用兩個口令. *不要在不同系統上使用同一口令. *不要讓人看見自己在輸入口令. (2)不要讓自己的文件或目錄可被他人寫. *如果不信任本組用戶,umask設置為022. *確保自己的.profile除自己外對他人都不 可讀寫. *暫存目錄最好不用于存放重要文件. *確保HOME目錄對任何人不可寫. *uucp傳輸的文件應加密,并盡快私人化. (3)若不想要其他用戶讀自己的文件或目錄,就 要使自己的文件和目錄不允許任何人讀. *umask設置為006/007. *若不允許同組用戶存取自己的文件和目錄, umask設置為077. *暫存文件按當前umask設置,存放重要數據 到暫存文件的程序,就被寫成能確保暫存 文件對其他用戶不可讀. *確保HOME目錄對每個用戶不可讀. (4)不要寫SUID/SGID程序. (5)小心地拷貝和移文件. *cp拷貝文件時,記住目的文件的許可方式 將和文件相同,包括SUID/SGID許可在內, 如目的文件已存在,則目的文件的存取許 可和所有者均不變. *mv移文件時,記住目的文件的許可方式 將和文件相同,包括SUID/SGID許可在內, 若在同一文件系統內移文件,目的文件的 所有者和小組都不變,否則,目的文件的 所有者和小組將設置成本用戶的有效UID 和GID. *小心使用cpio命令,它能復蓋不在本用戶 當前目錄結構中的文件,可用t選項首先 列出要被拷貝的文件. (6)刪除一個SUID/SGID程序時,先檢查該程序 的鏈接數,如有多個鏈,則將存取許可方式 改為000,然后再刪除該程序,或先寫空該 程序再刪除,也可將該程序的i結點號給 系統管理員去查找其他鏈. (7)用crypt加密不愿讓任何用戶(包括超級 用戶)看的文件. *不要將關鍵詞做為命令變量. *用ed -x或vi -x編輯加密文件. (8)除了信任的用戶外,不要運行其他用戶的 程序. (9)在自己的PATH中,將系統目錄放在前面. (10)不要離開自己登錄的終端. (11)若有智能終端,當心來自其他用戶,包括 write命令,mail命令和其他用戶文件的信 息中有換碼序列. (12)用CTRL+D或exit退出后,在斷開與系統的 聯接前等待看到login:提示. (13)注意cu版本. *不要用cu調用安全性更強的系統. *除非確信cu不會被誘騙去發送文件,否則 不要用cu調用安全性較弱的系統.

標簽: Unix系統
国产综合久久一区二区三区