教你如何安全設(shè)置Linux操作系統(tǒng)密碼

責任編輯:editor005

作者:By antian365.com simeon

2016-03-09 14:20:15

摘自:51CTO

字段:密碼(已被加密),如果有些用戶在這段是x,表示這個用戶不能登錄到系統(tǒng);這個字段是非空的;字段:用戶過期日期;此字段指定了用戶作廢的天數(shù)(從1970年的1月1日開始的天數(shù)),如果這個字段的值為空,帳號永久可用;

相對于Windows操作系統(tǒng)來說,Linux系統(tǒng)比較難于滲透和控制,其根本原因來自Linux的安全機制。對Web等應(yīng)用設(shè)置嚴格的最低權(quán)限后,即使入侵者獲取了webshell也因為較難提權(quán)而止步于此。有的入侵者還會分析服務(wù)器上涉及管理員、用戶的密碼信息、密碼習(xí)慣等,通過社會工程學(xué)再次進行攻擊,在運氣好的情況下極有可能獲取服務(wù)器的權(quán)限。因此對Linux服務(wù)器來說,除了設(shè)置嚴格的權(quán)限、及時更新漏洞補丁外還需要設(shè)置一個強健的密碼。本文就Linux操作系統(tǒng)密碼原理、如何破解Linux密碼以及如何設(shè)置安全的密碼進行探討。

1.1Linux密碼原理

1.Linux密碼構(gòu)成

在Linux系統(tǒng)中涉及系統(tǒng)登錄密碼的有兩個重要文件/etc/passwd和etc/shadow,第一個文件記錄用戶信息,第二個是真正保存用戶密碼信息的。在/etc/passwd 中,每一行都表示的是一個用戶的信息;一行有7個段位;每個段位用冒號分割。比如下面是一個Linux系統(tǒng)中的/etc/passwd 的兩行,其格式為username:x:UID:GID:username full:username home:shell type。

第一字段:用戶名(也被稱為登錄名);

第二字段:口令,顯示為x表示其實密碼已被映射到/etc/shadow 文件中;

第三字段:UID ;

第四字段:GID;

第五字段:用戶名全稱,這是可選的,可以不設(shè)置。

第六字段:用戶的家目錄所在位置;

第七字段:用戶所用SHELL的類型,常見為/bin/bash;

/etc/shadow文件是/etc/passwd 的影子文件,這個文件并不由/etc/passwd產(chǎn)生的,這兩個文件應(yīng)該是對應(yīng)互補的;shadow內(nèi)容包括用戶名及被加密的密碼以及其它/etc/passwd 不能包括的信息,比如用戶的有效期限等;這個文件只有root權(quán)限可以讀取和操作。

/etc/shadow 文件的內(nèi)容包括9個段位,每個段位之間用冒號分割。通過研究發(fā)現(xiàn)即使兩個帳號的密碼相同,其密碼加密值也不一樣。其各個字段的含義如下:

第一字段:用戶名(也被稱為登錄名),/etc/shadow中的用戶名和/etc/passwd中的用戶名 是相同的,這樣就把passwd 和shadow中用的用戶記錄聯(lián)系在一起,這個字段是非空的;

第二字段:密碼(已被加密),如果有些用戶在這段是x,表示這個用戶不能登錄到系統(tǒng);這個字段是非空的;

第三字段:上次修改口令的時間。這個時間是從1970年01月01日算起到最近一次修改口令的時間間隔(天數(shù)),您可以通過passwd 來修改用戶的密碼,然后查看/etc/shadow中此字段的變化;

第四字段:兩次修改口令間隔最少的天數(shù),也就是說用戶必須經(jīng)過多少天才能修改其口令。如果設(shè)置為0,則禁用此功能。此項功能用處不是太大,默認值是從/etc/login.defs文件定義中獲取,PASS_MIN_DAYS 中有定義;

第五字段:兩次修改口令間隔最多的天數(shù)。這個能增強管理員管理用戶口令的時效性,應(yīng)該說增強了系統(tǒng)的安全性;系統(tǒng)默認值是在添加用戶時由/etc/login.defs文件定義中獲取,在PASS_MAX_DAYS 中定義;

第六字段:提前多少天警告用戶口令將過期。當用戶登錄系統(tǒng)后,系統(tǒng)登錄程序提醒用戶口令將要作廢。系統(tǒng)默認值是在添加用戶時由/etc/login.defs文件定義中獲取,在PASS_WARN_AGE 中定義;

第七字段:在口令過期之后多少天禁用此用戶。此字段表示用戶口令作廢多少天后,系統(tǒng)會禁用此用戶,也就是說系統(tǒng)會不能再讓此用戶登錄,也不會提示用戶過期,完全禁用;

第八字段:用戶過期日期;此字段指定了用戶作廢的天數(shù)(從1970年的1月1日開始的天數(shù)),如果這個字段的值為空,帳號永久可用;

第九字段:保留字段,目前為空,以備將來Linux發(fā)展之用;

例如某系統(tǒng)root帳號在etc/shadow文件中的表現(xiàn)方式為:root:$1$kbIAhX/R$PiLL1U.n6bivtIr4oTi2y0:15377:0:99999:7::: 。

2 Linux密碼文件位置

絕大部分Linux操作系統(tǒng)的密碼文件名稱為shadow,但也有一些特殊的Linux/Unix操作系統(tǒng)的密碼文件名稱為passwd,而且密碼文件所在位置也不一樣。下面是一些Linux常見系統(tǒng)的密碼文件位置:

Linux /etc/shadow

SystemV Release 4.2 /etc/security

SystemV Release 4.0 /etc/shadow

SunOS 5.0 /etc/shadow

SCOUnix / tcb /auth/files/

OSF/1 /etc/passwd

HP-UX /.secure/etc/ passwd

BSD4.x /etc/master.passwd

AIX3 /etc/security/passwd

IRIX5 /etc/shadow

1.2 Linux系統(tǒng)采用的加密算法

1、查看密碼的加密算法

Linux帳戶的密碼加密后存放于/etc/shadow文件中。對于Linux操作系統(tǒng)的密碼采用哪種加密方式,取決于/etc/pam.d/system-auth或者/etc/pam.d/passwd文件定義,通過more /etc/pam.d/system-auth或者authconfig --test | grep hashing命令可以獲取操作系統(tǒng)使用哪種加密算法,目前有sha256、sha512和md5加密算法。

在Red Hat Enterprise Linux Server中,可以通過authconfig --test | grep hashing命令來獲取當前系統(tǒng)帳號的密碼加密算法,如圖1所示。

教你如何安全設(shè)置Linux操作系統(tǒng)密碼

  圖1 獲取Red Hat Enterprise Linux Server系統(tǒng)帳號加密算法

2、 Linux/UNIX采用5種加密算法

Linux/UNIX操作系統(tǒng)目前采用5種加密算法,可以通過加密后的密碼值來識別,主要是通過帳號后面的$X來判斷。頭兩字節(jié)為$1表示MD5加密算法,$2表示使用Blowfish加密算法,$5表示使用SHA-256加密算法,$6表示使用SHA-512加密算法,其余為標準的DES。例如“root:$1$kbIAhX/R$PiLL1U.n6bivtIr4oTi2y0:15377:0:99999:7:::”其加密算法為md5。

1.3 Linux密碼操作

在早期的Linux系統(tǒng)中,/etc/passwd文件含有系統(tǒng)每個用戶的信息,當然,用戶的口令經(jīng)過一定的數(shù)字與邏輯算法后把一個運算結(jié)果(可見字符串)放到了passwd文件中,加密強度并不大。于是,早期黑客們只要拿到/etc/passwd這個文件,系統(tǒng)就已經(jīng)攻入一半了。后來,隨著安全級別的提高,出現(xiàn)了passwd文件中口令單獨加密的情況,密碼加密后的結(jié)果和其他一些輔助信息存到了shadow文件。至于采用何種保存形式和加密算法,可以用/usr/sbin/authconfig程序來設(shè)置。用戶登錄時輸入的口令經(jīng)計算后與/etc/passwd和/etc/shadow中的結(jié)果相比較,符合則允許登錄,否則拒絕登錄。

對于Linux密碼操作主要有增加、刪除和修改,第一次添加用戶時需要設(shè)定一個密碼,修改密碼使用“passwd”,刪除密碼在刪除用戶時系統(tǒng)自動刪除設(shè)置的密碼。讀取密碼加密文件必須具備Root權(quán)限,通過“cat /etc/shadow”命令來讀取shadow文件的內(nèi)容。

查看shadow文件權(quán)限:ls -l /etc/passwd /etc/shadow

passwd username 更改或者設(shè)置username的用戶密碼,例如passwd antian365 表示設(shè)置或者重設(shè)用戶antian365的用戶密碼。

passwd -l antian365 鎖定用戶antian365不能更改密碼

passwd -d antian365 清除antian365用戶密碼;

passwd -S antian365 查詢antian365用戶密碼狀態(tài);

chage -l antian365 查看某個用戶的密碼限期

chage -E 12/30/2016 -m 5 -M 90 -I 30 -W 14 antian365 將密碼期限設(shè)為2016年12月30日。

另外,修改密碼的最短周期為5天,最長周期為90天,密碼過期前14天會發(fā)送消息提醒用戶,過期后帳號會被鎖住30天。

1.4破解Linux密碼

在進行如何安全設(shè)置Linux密碼前,先看看如何破解Linux密碼。Linux使用的是DES(加密函數(shù)式是Crypt)或MD5加密算法,由于計算量之大,它們幾乎很難被逆向破解。DES口令密文是有13個ASCII字符的字符串,而MD5口令密文的啟始字符總是“$1$”,如圖2所示是一臺被攻陷的紅帽系列的Linux。入侵者遠程溢出服務(wù)器后獲得了一個root權(quán)限的登錄界面。

教你如何安全設(shè)置Linux操作系統(tǒng)密碼

  圖2查看當前用戶

如何知道root用戶的密碼呢?入侵者打開了/etc/passwd文件。如圖3所示。

教你如何安全設(shè)置Linux操作系統(tǒng)密碼

  圖3查看etc/passwd文件

看來主機的賬戶是用shadow加密了。繼續(xù)看/etc/shadow的情況。如圖4所示。

教你如何安全設(shè)置Linux操作系統(tǒng)密碼

  圖4獲取加密的密碼字符串

root的冒號后面就是加密后的密碼。開始破解工作吧。

破解Linux口令的工具有很多,如oclhash、John the Ripper、Crack by Alex Muffett和Cracker Jack等等,其中John the Ripper的功能最為強大,速度也最快。將/etc/shadow下載到本地,先使用John the Ripper的簡單模式試一下,但沒有結(jié)果,如圖5所示。

教你如何安全設(shè)置Linux操作系統(tǒng)密碼

  圖5使用john破解密碼

再掛個字典看看。這里用“-w=1.txt”指定字典文件。很快,root密碼出來了,原來是:“bigapple”。如6所示。

教你如何安全設(shè)置Linux操作系統(tǒng)密碼

  圖6成功破解密碼

有了root密碼,以后再進這個服務(wù)器就方便了。

Linux密碼破解主要基于兩種一種是基于字典,將收集到的密碼保存在dic文件中,因此破解成功取決于字典中的密碼。另外一個就是暴力破解,暴力破解取決于計算機的硬件運算能力和密碼設(shè)置的長度和難易程度。

1.5安全設(shè)置linux密碼

1. 設(shè)置密碼過期期限

為了強迫用戶指定足夠強壯的密碼,需修改文件/etc/login.defs中參數(shù)PASS_MIN_LEN(口令最小長度)。同時應(yīng)限制口令使用時間,保證定期更換口令,建議修改參數(shù)PASS_MIN_DAYS(口令使用時間),一般的Linux設(shè)置如圖7所示。

vi /etc/login.defs PASSMAXDAYS 150 PASSMINDAYS 0 PASSWARNAGE 7

以上設(shè)置要求用戶每6個月改變他們的密碼,并且會提前7天提醒用戶密碼快到期了。

教你如何安全設(shè)置Linux操作系統(tǒng)密碼

  圖7修改login.defs參數(shù)

2.設(shè)置加密算法

Linux帳戶的密碼加密后存放于/etc/shadow文件中。對于Red hat Enterprise版本,默認使用MD5算法,這個算法已經(jīng)很不安全。很多經(jīng)典的黑客教程都是教人拿到shadow文件后回去破解出root的密碼,如果能用更難破解的sha算法加密密碼無疑可以提高服務(wù)器的安全性。

# authconfig --test | grep hashing 顯示當前密碼加密算法

# authconfig --passalgo=sha512 --update 設(shè)置使用sha512算法

#authconfig --passalgo=sha256 --update設(shè)置使用sha256算法

最后,所有用戶都需要重新設(shè)置密碼才能生效。可以使用# chage -d 0 userName 強制所有用戶下次登錄修改密碼。對于archlinux架構(gòu)起密碼算法設(shè)置有所不同,可按以下步驟修改:

(1)修改 /etc/pam.d/passwd文件

#%PAM-1.0

#password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3

#password required pam_unix.so md5 shadow use_authtok

password required pam_unix.so md5 shadow nullok

把最后一行的md5用sha256替換

(2)修改/etc/default/passwd文件

CRYPT=des 改為 CRYPT=sha256

(3)所有用戶重新修改密碼。

3.設(shè)置強悍的密碼

一個強壯的有效的口令應(yīng)當至少有8個字符長,不要取用個人信息(如生日,名字,用戶名,計算機的型號等也盡量不要在密碼中連接電話號碼和2002、2000、888等數(shù)字),普通的英語單詞也不好(因為可用字典攻擊法),口令中最好有一些非字母(如數(shù)字,標點符號,控制字符等),注意盡量不要寫在紙上或計算機中的文件中,選擇口令的一個好方法是將不相關(guān)的字母和數(shù)字或控制字符相連,并組成不少于8位的長度。

獨立設(shè)置服務(wù)器的密碼,服務(wù)器密碼跟其它任何密碼無相關(guān)性,很多公司內(nèi)網(wǎng)喜歡使用公司名稱大小寫,包括一些有規(guī)律的變換。在滲透服務(wù)器時,可以通過社工字典工具生成密碼字典進行暴力破解攻擊。

密碼不在郵件、CMS系統(tǒng)進行傳遞,在有些情況下,黑客會攻擊郵件,通過查看郵件獲取服務(wù)器權(quán)限。

經(jīng)濟允許的情況下,可以結(jié)合硬件進行登錄,比如使用動態(tài)口令盤等。這樣即使黑客獲取了用戶密碼,也因為需要動態(tài)口令需要二次驗證而無法登陸。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號