服務(wù)器安全加固方案:安全策略修改密碼。前段時(shí)間根據(jù)公司要求對(duì)部分服務(wù)器進(jìn)行安全加固,加固內(nèi)容中有一項(xiàng)是要設(shè)置用戶口令周期時(shí)間的。事實(shí)證明,這個(gè)木有任務(wù)用處。下面是在虛擬機(jī)環(huán)境下一個(gè)小小滴測(cè)試: 首先,登陸服務(wù)器,查看一下/etc/login.def
然后再查看一下/etc/shadow
發(fā)現(xiàn)兩者口令策略是完全對(duì)的上的。 然后,我們修改/etc/login.def
第一行,密碼使用最長(zhǎng)時(shí)間為90天,90天后會(huì)有提醒。 第二行,密碼使用最短時(shí)間為10天,10天之內(nèi)是不能修改密碼的。 第三行,密碼復(fù)雜度,最少8位 第四行,密碼過期后會(huì)提醒5天,5天之后還沒改密碼的話,帳號(hào)會(huì)被凍結(jié)失效。 修改過后,再查看/etc/shadow,發(fā)現(xiàn)沒有任何改變。然后我們?cè)?useradd test 添加一個(gè)帳號(hào),發(fā)現(xiàn)新加的帳號(hào)適應(yīng)修改后的口令周期設(shè)置。
經(jīng)過多次反復(fù)測(cè)試,發(fā)現(xiàn)無論是添加普通帳號(hào)還是管理員帳號(hào),還是修改PASS_MIN_DAYS、PASS_MIN_LEN、PASS_WARN_AGE幾個(gè)選項(xiàng),都只適用于后來添加的帳號(hào),對(duì)于之前已經(jīng)存在的帳號(hào)不存在任何影響。
同事修改linux root密碼時(shí)出現(xiàn)錯(cuò)誤passwd: Authentication token manipulation error發(fā)生該錯(cuò)誤原因是:1、分區(qū)沒有空間導(dǎo)致。2、/etc/passwd 和/etc/shadow不同步但是這次上面兩條卻行不通,通過df查看根分區(qū)還有40%剩余。 1、嘗試修改密碼,出現(xiàn)錯(cuò)誤# passwdChanging password for user root.New UNIX password: BAD PASSWORD: it is WAY too shortRetype new UNIX password: passwd: Authentication token manipulation error2、同步/etc/passwd 和/etc/shadow出錯(cuò) #pwconvpwconv: can't lock passwd file3、看權(quán)限沒有異常,也沒有進(jìn)程鎖定該文件# ll /etc/passwd-rwxr--r-- 1 root root 2752 Dec 31 17:29 /etc/passwd# fuser -u /etc/passwd# lsof |grep passwd4、cp lock文件出錯(cuò),提示空間不足# cp /tmp/.pwd.lock /etc/cp: cannot create regular file `/etc/.pwd.lock': No space left on device5、上面的錯(cuò)誤驚醒了我,查看確實(shí)是inode滿了,刪除無用的文件#df -iFilesystem Inodes IUsed IFree IUse% Mounted on/dev/sda5 2562240 2562240 0 100% //dev/sda1 50200 47 50153 1% /boot/dev/sda2 51300000 12 51299988 1% /data/cache1/dev/sdb1 51300000 7080311 44219689 14% /data/cache2/dev/sdb2 9863168 11 9863157 1% /data/proclognone 215907 1 215906 1% /dev/shm/dev/sda3 3842720 305795 3536925 8% /usr/dev/sda7 3162112 7893 3154219 1% /var6、再次修改密碼仍然出錯(cuò),于是嘗試修改/etc/passwd也出現(xiàn)錯(cuò)誤# chmod 777 /etc/passwdchmod: changing permissions of `/etc/passwd': Operation not permitted7、執(zhí)行chattr #chattr -i /etc/passwd# lsattr -v /etc/passwd 2095582053 ------------- /etc/passwd# chattr -i /etc/shadow8、同步文件pwconv9、成功修改密碼passwd Changing password for user root.New UNIX password: BAD PASSWORD: it is WAY too shortRetype new UNIX password: passwd: all authentication tokens updated successfully.#
修改密碼時(shí)提示錯(cuò)誤[root@WS10111509 ~]# passwd rootChanging password for user root.New UNIX password:Retype new UNIX password:passwd: Authentication token manipulation error
2,修改權(quán)限時(shí)提示錯(cuò)誤[root@WS10111509 ~]# chmod 755 /etc/passwdchmod: changing permissions of `/etc/passwd’: Operation not permitted
3,同步/etc/passwd 和/etc/shadow出錯(cuò)#pwconvpwconv: can’t lock passwd file
4,操做方法。檢查:# fuser -u /etc/passwd //查看是否有寫入權(quán)限# lsof |grep passwd //查看是否有寫入權(quán)限# ll /etc/.pwd.lock //查看是否有此文件# df -i //查看是否空間被占滿# lsattr /etc/shawr //查看是否被寫保護(hù)
lsattr /etc/passwd—i———- //被標(biāo)記了i屬性
chattr -i /etc/passwdchmod 755 /etc/passwd
lsattr /etc/shawr—-i——– //被標(biāo)記了i屬性
chattr -i /etc/shawchmod 755 /etc/shaw
#pwconv 同步/etc/passwd 和/etc/shadow
pawsswd root 不會(huì)出錯(cuò)了。修改密碼后
5,加回保護(hù)
#chattr命令只能管理員使用,重新保護(hù)passwd文件chattr +i /etc/passwdchattr +i /etc/shaw
還有一種可能就是有的系統(tǒng)是限制了5天內(nèi)不能修改密碼,也會(huì)出現(xiàn)這樣的錯(cuò)誤。
基本的修改密碼命令
1、passwd 簡(jiǎn)單說明;
我們已經(jīng)學(xué)會(huì)如何添加用戶了,所以我們還要學(xué)習(xí)設(shè)置或修改用戶的密碼;passwd命令的用法也很多,我們只選如下的幾個(gè)參數(shù)加以說明;想了解更多,請(qǐng)參考man passwd或passwd --help ;
[OPTION...]
passwd 作為普通用戶和超級(jí)權(quán)限用戶都可以運(yùn)行,但作為普通用戶只能更改自己的用戶密碼,但前提是沒有被root用戶鎖定;如果root用戶運(yùn)行passwd ,可以設(shè)置或修改任何用戶的密碼;
passwd 命令后面不接任何參數(shù)或用戶名,則表示修改當(dāng)前用戶的密碼;請(qǐng)看下面的例子;
[[email protected]
~]# passwd注:沒有加任何用戶,我是用root用戶來執(zhí)行的passwd 表示修改root用戶的密碼;下面也有提示;
Changing password for user root.
New UNIX password: 注:請(qǐng)輸入新密碼;
Retype new UNIX password: 注:驗(yàn)證新密碼;
passwd: all authentication tokens updated successfully. 注:修改root密碼成功;
如果是普通用戶執(zhí)行passwd 只能修改自己的密碼;
如果新建用戶后,要為新用戶創(chuàng)建密碼,則用 passwd 用戶名 ,注意要以root用戶的權(quán)限來創(chuàng)建;
[
~]# passwd beinan注:更改或創(chuàng)建beinan用戶的密碼;
Changing password for user beinan.
New UNIX password: 注:請(qǐng)輸入新密碼;
Retype new UNIX password: 注:再輸入一次;
passwd: all authentication tokens updated successfully. 注:成功;
普通用戶如果想更改自己的密碼,直接運(yùn)行passwd即可;比如當(dāng)前操作的用戶是beinan;
[
~]$ passwd
Changing password for user beinan. 注:更改beinan用戶的密碼;
(current) UNIX password: 注:請(qǐng)輸入當(dāng)前密碼;
New UNIX password: 注:請(qǐng)輸入新密碼;
Retype new UNIX password: 注:確認(rèn)新密碼;
passwd: all authentication tokens updated successfully. 注:更改成功;
2、passwd 幾個(gè)比較重要的參數(shù);
[
beinan]# passwd --help
Usage: passwd [OPTION...]
-k, --keep-tokens keep non-expired authentication tokens
注:保留即將過期的用戶在期滿后能仍能使用;
-d, --delete delete the password for the named account (root only)
注:刪除用戶密碼,僅能以root權(quán)限操作;
-l, --lock lock the named account (root only)
注:鎖住用戶無權(quán)更改其密碼,僅能通過root權(quán)限操作;
-u, --unlock unlock the named account (root only)
注:解除鎖定;
-f, --force force operation
注:強(qiáng)制操作;僅root權(quán)限才能操作;
-x, --maximum=DAYS maximum password lifetime (root only) 注:兩次密碼修正的最大天數(shù),后面接數(shù)字;僅能root權(quán)限操作;
-n, --minimum=DAYS minimum password lifetime (root only) 注:兩次密碼修改的最小天數(shù),后面接數(shù)字,僅能root權(quán)限操作;
-w, --warning=DAYS number of days warning users receives before 注:在距多少天提醒用戶修改密碼;僅能root權(quán)限操作;
password expiration (root only)
-i, --inactive=DAYS number of days after password expiration when an 注:在密碼過期后多少天,用戶被禁掉,僅能以root操作;
account becomes disabled (root only)
-S, --status report password status on the named account (root 注:查詢用戶的密碼狀態(tài),僅能root用戶操作;
only)
--stdin read new tokens from stdin (root only)
比如我們讓某個(gè)用戶不能修改密碼,可以用-l 參數(shù)來鎖定:
[
~]# passwd -l beinan注:鎖定用戶beinan不能更改密碼;
Locking password for user beinan.
passwd: Success 注:鎖定成功;
[[email protected] ~]# su beinan 注:通過su切換到beinan用戶;
[[email protected] ~]$ passwd 注:beinan來更改密碼;
Changing password for user beinan.
Changing password for beinan
(current) UNIX password: 注:輸入beinan的當(dāng)前密碼;
passwd: Authentication token manipulation error 注:
,不能更改密碼;
再來一例:
[
~]# passwd -d beinan注:清除beinan用戶密碼;
Removing password for user beinan.
passwd: Success 注:清除成功;
[[email protected]
~]# passwd -S beinan注:查詢beinan用戶密碼狀態(tài);
Empty password. 注:空密碼,也就是沒有密碼;
注意: 當(dāng)我們清除一個(gè)用戶的密碼時(shí),登錄時(shí)就無需密碼;這一點(diǎn)要加以注意;
3、chage 修改用戶密碼有效期限的命令;
chage 用語法格式:
chage [-l] [-m 最小天數(shù)] [-M 最大天數(shù)] [-W 警告] [-I 失效日] [-E 過期日] [-d 最后日] 用戶
前面已經(jīng)說的好多了,這個(gè)只是一筆帶過吧,知道有這個(gè)命令就行,自己實(shí)踐實(shí)踐再說,大體和psswd有些參數(shù)的用法差不多;
密 碼時(shí)效命令-----chage
格式為:chage []
下面列出了chage命令的選項(xiàng)說明:
-m days: 密碼可更改的最小天數(shù)。為零時(shí)代表任何時(shí)候都可以更改密碼。
-M days: 指定口令有效的最多天數(shù)。當(dāng)該選項(xiàng)指定的天數(shù)加上-d選項(xiàng)指定的天數(shù)小于當(dāng)前的日期時(shí),用戶在使用該帳號(hào)前就必須改變口令。
-d days: 指定從1970年1月1日起,口令被改變的天數(shù)。
-I days: 指定口令過期后,帳號(hào)被鎖前不活躍的天數(shù)。如果值為0,帳號(hào)在口令過期后就不會(huì)被鎖。
-E date: 指定帳號(hào)被鎖的日期。日期格式Y(jié)YYY-MM-DD。若不用日期,也可以使用自1970年1月1日后經(jīng)過的天數(shù)。
-W days: 指定口令過期前要警告用戶的天數(shù)。
-l: 列出指定用戶當(dāng)前的口令時(shí)效信息,以確定帳號(hào)何時(shí)過期。
例如下面的命令要求用戶user1兩天內(nèi)不能更改口令,并且口令最長(zhǎng)的存活期為30天,并且口令過期前5天通知用戶
chage -m 2 -M 30 -W 5 user1
可以使用如下命令查看用戶user1當(dāng)前的口令時(shí)效信息:chage -l user1
提示:1)可以使用chage 進(jìn)入交互模式修改用戶的口令時(shí)效。
2)修改口令實(shí)質(zhì)上就是修改影子口令文件/etc/shadow中與口令時(shí)效相關(guān)的字段值。
強(qiáng)制用戶在下次登錄時(shí)修改密碼
每個(gè)Linux用戶都關(guān)聯(lián)這不同的密碼相關(guān)配置和信息。比如,記錄著上次密碼更改的日期、最小/最大的修改密碼的天數(shù)、密碼何時(shí)過期等等。
一個(gè)叫chage的命令行工具可以訪問并調(diào)整密碼過期相關(guān)配置。你可以使用這個(gè)工具來強(qiáng)制用戶在下次登錄修改密碼、
要查看特定用戶的過期信息(比如:alice),運(yùn)行下面的命令。注意的是除了你自己之外查看其他任何用戶的密碼信息都需要root權(quán)限。
$ sudo chage -l alice
強(qiáng)制用戶修改密碼
如果你想要強(qiáng)制用戶去修改他/她的密碼,使用下面的命令。
$ sudo chage -d
原本“-d ”參數(shù)是用來設(shè)置密碼的“年齡”(也就是上次修改密碼起到1970/1/1起的天數(shù))。因此“-d0”的意思是上次密碼修改的時(shí)間是1970/1/1,這就讓當(dāng)前的密碼過期了,也就強(qiáng)制讓他在下次登錄的時(shí)候修改密碼了。
另外一個(gè)過期當(dāng)前密碼的方式是用passwd命令。
$ sudo passwd -e
上面的命令和“chage -d0”作用一樣,讓當(dāng)前用戶的密碼立即過期。
現(xiàn)在檢查用戶的信息,你會(huì)發(fā)現(xiàn):
當(dāng)你再次登錄時(shí)候,你會(huì)被要求修改密碼。你會(huì)在修改前被要求再驗(yàn)證一次當(dāng)前密碼。
|