系統管理員職責
系統管理員以及系統中的每個用戶必須***同承擔保護口令安全的職責。系統管理員執行下列安全任務:
確保所有用戶都有自己的口令。
在所有系統文件中應用適當的權限,包括標準的口令文件和組文件,即 /etc/passwd 和 /etc/group。
對於無權再訪問系統的用戶,應刪除其用戶 ID 和口令,或者使其用戶 ID 和口令無效。
驗證是否所有應用程序口令都已加密。
驗證為 /var/adm/btmp 和 /var/adm/wtmp 設置的權限是否正確。
對每次 guest 訪問使用壹次性口令。
告知用戶與口令安全性相關的職責。
利用口令時限性強制用戶定期更改其口令。
防止重新使用最近的口令。
在 /etc/default/security 文件中配置系統範圍的安全屬性。有關詳細信息,請參閱“定義系統安全屬性”,並參考 security(4)。
轉換系統以使用影子口令。有關詳細信息,請參閱“/etc/shadow 影子口令文件”以及 shadow(4) 和 pwconv(1M)。
用戶職責
每個用戶必須遵守下列規則:
記住口令,並始終將它秘密保存。
立即更改初始口令,並堅持更改口令。
報告任何狀態變更,以及任何值得懷疑的安全違規現象。
確保輸入口令時無人監視。
好口令的標準
選擇口令時應遵守下列準則並將其傳達給用戶:
選擇的口令至少應有 6 個字符,最多不超過 80 個字符。特殊字符可以包括控制符以及諸如星號和斜杠之類的符號。在標準模式下,只使用前 8 個字符。
不要選擇可以在任何語言的字典中找到的單詞,即便反過來拼也不可以。有壹些軟件程序可以找到並匹配您使用的單詞。
不要選擇容易與用戶關聯起來的口令,例如家庭成員或寵物的名字,或者是某種業余愛好。
不要使用簡單的鍵盤序列(例如 asdfghjkl)或登錄名的重復(例如,如果登錄名為 ann,則 annann 便不是好的口令)。
可以考慮使用拼錯的單詞或兩個不相關單詞的音節組合來組成適合的口令。另壹種常用的方法是使用最喜歡的標題或短語的前幾個字符作為口令。
可以考慮使用口令生成器來組合音節以生成可發音的混亂文字。
不要與其他用戶***享口令。管理人員必須禁止***享口令。
始終使用口令。不要清除 /etc/passwd 文件中的口令字段。
更改 /etc/passwd 口令文件
標準系統維護壹個口令文件:/etc/passwd。
所有口令輸入後便立即加密,並存儲在口令文件 /etc/passwd 中。在比較過程中僅使用加密的口令。
如果需要更改口令文件,請遵守下列準則:
不允許有任何空的口令字段;否則便是安全違例。空口令字段允許任何用戶為該帳戶設置口令。
不要直接編輯口令文件。應使用 HP SMH 或者 useradd、userdel 或 usermod 命令來修改口令文件條目。如果必須直接編輯口令文件,請使用 vipw 命令,並使用 pwck 命令進行檢查。有關詳細信息,請參閱vipw(1M) 和 pwck(1M)。
passwd 命令示例
下面是壹些有用的 passwd 命令示例:
重置用戶的口令:
# passwd user1
在下次登錄時強制更改口令:
# passwd -f user1
鎖定或禁用帳戶:
# passwd -l user2
啟用口令時限性:
# passwd -n 7 -x 28 user1
查看特定用戶的口令時限性狀態:
# passwd -s user
查看所有用戶的口令時限性狀態:
# passwd -sa
/etc/passwd 文件格式
/etc/passwd 文件用於在用戶登錄時驗證其身份。對於 HP-UX 系統中的每個帳戶,該文件都包含壹個相應的條目。每個條目均由冒號分隔的七個字段組成。典型的 /etc/passwd 條目應與下面的示例類似:
robin:Z.yxGaSvxAXGg:102:99:Robin Hood,Rm 3,x9876,408-555-1234:/home/robin:/usr/bin/sh
字段包含下列信息(按順序列出),各信息之間用冒號分隔:
robin - 用戶(登錄)名,最多由 8 個字符組成。
Z.yxGaSvxAXGg - 加密口令字段
102 - 用戶 ID,為 0 到 MAXINT-1(等於 2、147、483、646 或 231 -2)之間(含)的整數。
99 - 組 ID,來自 /etc/group,為 0 到 MAXINT-1 之間(含)的整數。
Robin Hood,Rm 3,x9876,408-555-1234 - 註釋字段,用於標識諸如用戶的全名、位置和電話號碼等信息。由於歷史原因,該字段也稱為 gecos 字段。
/home/robin - 主目錄,用戶的起始登錄目錄。
/usr/bin/sh - 登錄 shell 路徑名,用戶登錄時執行。
用戶可以分別通過調用 passwd、chfn 以及 chsh 來更改口令、註釋字段(第五個字段)以及登錄程序路徑名(第七個字段)。余下的字段由系統管理員設置。用戶 ID 必須是唯壹的。有關詳細信息,chfn(1)、chsh(1)、passwd(1) 和 passwd(4)。
/etc/shadow 影子口令文件
可用於惡意口令解密器的計算能力的不斷提高使 /etc/passwd 文件中的非隱藏口令非常容易被解密,
而影子口令將加密的口令隱藏在影子口令文件中,從而增強了系統安全性。可以將先前存儲在公***可讀文件 /etc/passwd 中的加密口令移動至 /etc/shadow 文件中,只有具有適當權限的用戶才可以訪問此文件。
使用下列命令可啟用、驗證和禁用影子口令:
pwconv 命令創建影子口令文件,並將加密的口令從 /etc/passwd 文件復制到 /etc/shadow 文件。
pwck 命令檢查文件 /etc/passwd 和 /etc/shadow 中的不壹致性。
pwunconv 命令將加密的口令和時限性信息從 /etc/shadow 文件復制到 /etc/passwd 文件中,然後刪除 /etc/shadow 文件。
有關詳細信息,請參閱 pwconv(1M)、pwck(1M)、pwunconv(1M) 和 shadow(4)。
請註意有關影子口令功能的下列各點。
啟用影子口令功能後,如果應用程序直接訪問 /etc/passwd 文件的口令字段來獲取口令和時限性信息,則這些應用程序會受到影響。此字段現在會包含壹個 x,表示此信息位於 /etc/shadow 中。
使用 PAM 接口進行驗證的應用程序不會受到影響。
要以編程方式訪問 /etc/shadow 文件,請使用 getspent() 調用。這些調用類似於 /etc/passwd 的 getpwent() 調用。有關詳細信息,請參閱 getspent(3C) 和 getpwent(3C)。
在 /etc/nsswitch.conf 文件中,影子口令受 files、NIS 和 LDAP 名稱服務支持,但是其他名稱服務器轉換後端可能不支持影子口令。要配置系統使其僅使用 files、NIS 和(或) LDAP,請確保 /etc/nsswitch.conf 中的 passwd 行僅包含 files、NIS 和(或) LDAP。如果 /etc/nsswitch.conf 不存在,或者其中不存在 passwd 行,則缺省值僅是 files。有關詳細信息,請參閱 nsswitch.conf(4)。
影子口令基於在其他 UNIX 系統中提供的 de facto 標準。
/etc/default/security 中定義的下列屬性適用於影子口令。有關詳細信息,請參閱“定義系統安全屬性”以及 security(4) 聯機幫助頁。
INACTIVITY_MAXDAYS - 帳戶過期前可處於非活動狀態的天數。
PASSWORD_MINDAYS - 可以更改口令前的最少使用天數。
PASSWORD_MAXDAYS - 口令的最大有效天數。
PASSWORD_WARNDAYS - 警告用戶口令過期之前的天數。
下列產品支持影子口令:
輕量級目錄訪問協議 (LDAP)
Ignite-UXht 目錄訪問協議 (LDAP)
Serviceguard
下列軟件不支持影子口令:
Process Resource Manager (PRM)
預期口令保存在 /etc/passwd 中的應用程序
有關詳細信息,請參閱下列聯機幫助頁:
passwd(1)、pwck(1M)、pwconv(1M)、pwunconv(1M)、getspent(3C)、putspent(3C)、nsswitch.conf(4)、passwd(4)、security(4)、shadow(4)
在 /etc/passwd 中消除偽帳戶並保護密鑰子系統
傳統的 /etc/passwd 文件包含大量的“偽帳戶”,即與各個用戶無關且沒有真正的交互式登錄 Shell 的條目。
其中的壹些條目(例如 date、who、sync 和 tty)是為方便用戶而形成的,它們提供無需登錄即可執行的命令。為了加強安全性,在分發的 /etc/passwd 中已將其刪除,這樣這些程序只能由已登錄的用戶運行。
其他類似的條目則保留在 /etc/passwd 中,因為它們是文件的屬主。具有屬主的程序(例如 adm、bin、daemon、hpdb、lp 和 uucp)可作用於整個子系統,並且代表壹種特例。由於它們授予對它們所保護或使用的文件的訪問權限,因此必須在 /etc/passwd 中列出相應的條目,以便允許這些程序作為偽帳戶運行。傳統的偽帳戶和特殊帳戶如示例 3-1 “偽帳戶和特殊系統帳戶”所示。
示例 3-1 偽帳戶和特殊系統帳戶
root::0:3::/:/sbin/sh
daemon:*:1:5::/:/sbin/sh
bin:*:2:2::/usr/bin:/sbin/sh
sys:*:3:3::/:
adm:*:4:4::/var/adm:/sbin/sh
uucp:*:5:3::/var/spool/uucppublic:/usr/lbin/uucp/uucico
lp:*:9:7::/var/spool/lp:/sbin/sh
nuucp:*:11:11::/var/spool/uucppublic:/usr/lbin/uucp/uucico
hpdb:*:27:1:ALLBASE:/:/sbin/sh
nobody:*:-2:-2::/:
這些子系統特權狀態的關鍵是能夠授予對受其管轄的程序的訪問權限,而無需授予超級用戶訪問權限 (uid 0),相反,它們設置可執行文件的 setuid 位,並使進程的有效用戶對應於可執行文件的屬主。例如,cancel 命令是 lp 子系統的壹部分,因此它作為有效用戶 lp 運行。
設置 setuid 後,該子系統的安全調停機制會強制將所有程序的安全性局限在子系統範圍內,而不是整個系統範圍內。因此,子系統中有害於安全性的弱點也僅僅只局限於這些子系統內的文件。違例不能影響到其他子系統下的程序。例如,lp 下的程序不會影響到 daemon 下的程序。
使用 HP-UX Secure Shell 進行安全登錄
HP-UX Secure Shell 提供安全的遠程登錄、文件傳輸和遠程命令執行功能。客戶端和服務器之間的所有通信都經過加密。通過網絡傳輸的口令不再以明文形式發送。有關詳細信息,請參閱 ssh(1) 和 “使用 HP-UX Secure Shell (SSH) 保護遠程會話”。
保護存儲在 NIS 中的口令
網絡信息服務 (NIS) 是網絡文件系統 (NFS) 的壹部分。NIS 支持從壹個中心位置(即主服務器)對多個主機進行配置管理。不是將主機配置分別存儲在各個主機上,而是將信息整合到壹個中心位置。/etc/password 文件是存儲在 NIS 服務器上的多個配置文件之壹。
/etc/shadow 影子口令文件在 NIS 上不受支持。
有關 NIS 的信息,請參閱《NFS Services Administrator's Guide》。
保護存儲在 LDAP 目錄服務器中的口令
LDAP-UX Client Services 與 PAM 進行交互來驗證存儲在 LDAP 目錄服務器上的口令。PAM_LDAP 庫提供驗證服務