Linux系統加固:如何有效管理系統賬號
- 1.1 口令重復次數限制
- 1.2 避免系統存在uid相同的賬號
- 1.3 空密碼的帳戶
- 1.4 口令復雜度
- 1.5 口令生存期
- 1.6 登錄失敗次數鎖定策略
💖The Begin💖點點關注,收藏不迷路💖 |
在Linux系統中,系統賬號的安全性至關重要。惡意用戶或黑客可能利用弱密碼、未使用的賬號或其他漏洞來入侵系統。
因此,加固系統賬號是保護系統安全的重要一環。本文將介紹一些有效的方法來管理和加固Linux系統賬號,以提高系統的安全性。
1.1 口令重復次數限制
口令重復次數限制是一種安全策略,用于限制用戶在一定時間內重復使用相同的密碼。這個策略的目的是防止用戶頻繁地在短時間內更改密碼,從而增加系統的安全性。通過限制口令重復次數,可以減少密碼被惡意破解或盜用的風險。
在實際應用中,口令重復次數限制通常會結合密碼歷史記錄功能一起使用。當用戶更改密碼時,系統會檢查新密碼是否與之前使用過的密碼相同,如果相同則不允許使用。同時,系統還會記錄用戶的密碼歷史,以便在限制口令重復次數時進行比對。
檢查點:
檢查是否設置口令重復次數限制。
加固步驟:
1、執行備份
cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
2、創建文件/etc/security/opasswd用于存儲舊密碼,并設置權限
touch /etc/security/opasswdchown root:root /etc/security/opasswdchmod 600 /etc/security/opasswd
3、修改策略設置
vi /etc/pam.d/system-auth
建立/etc/security/opasswd后,即可在配置文件中的pam_unix模塊后面添加參數remember=N
來開始記錄舊密碼。這個參數N的作用是指定系統要記住的舊密碼數量,N代表要記住的舊密碼數量。
查看配置文件/etc/pam.d/system-auth ,查看類似password sufficient pam_unix.so所在行是否存在remember=5
,如果沒有則新增,例如:
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=5
檢查加固結果:
將系統認證配置文件system-auth中的包含"password"關鍵字的行,使用grep命令篩選出包含"password"關鍵字的行并輸出。
if ([ -f /etc/redhat-release ] && [ -f /etc/pam.d/system-auth ]);
then FILE=/etc/pam.d/system-auth
cat $FILE |sed '/^#/d'|sed '/^$/d'|grep password
fi
1.2 避免系統存在uid相同的賬號
檢查點:
查看文件/etc/passwd,檢查是否存在uid相同的賬號。
加固步驟:
1、檢查系統中的UID情況
cat /etc/passwd | cut -d: -f1,3
這個命令的含義是:
cat /etc/passwd:顯示/etc/passwd文件的內容,該文件包含了系統中所有用戶的信息。
cut -d: -f1,3:使用冒號作為分隔符,提取每行中的第1列(用戶名)和第3列(UID)
這個命令會輸出系統中所有用戶的用戶名和對應的UID。
執行該命令后,可以看到類似以下的輸出:
root:0
bin:1
daemon:2
adm:3
lp:4
sync:5
shutdown:6
halt:7
mail:8
operator:11
games:12
ftp:14
nobody:99
systemd-network:192
dbus:81
polkitd:999
sshd:74
postfix:89
zyl:1000
2、檢查是否存在相同UID的賬號
for venus_test in `cat /etc/passwd|awk -F: '{print $3}'|uniq -d`
do
for venus_test1 in `cat /etc/passwd|grep "^\s*[^:]*\:[^:]*\:$venus_test"|awk -F: '{print $1}'`
do
echo "The same uuid account:"$venus_test1;
done
done
或者使用:
ut -d: -f3 /etc/passwd | sort | uniq -d
這個命令的含義是:
cut -d: -f3 /etc/passwd:使用冒號作為分隔符,提取/etc/passwd文件中每行的第3列(UID)。
sort:對提取出來的UID進行排序。
uniq -d:查找重復的行(即相同的UID),并只顯示重復的行。
如果輸出了重復的UID,則表示系統中存在相同UID的賬號。
3、處理相同UID的賬號
如果發現系統中存在相同UID的賬號,需要根據實際情況進行處理。一般情況下,可以通過修改賬號的UID或者刪除重復的賬號來解決這個問題。
1、修改賬號的UID可以使用usermod命令,例如:usermod -u <new_uid> <username>2、刪除重復的賬號可以使用userdel命令,例如:userdel <username>3、其他命令:
1、#useradd username #創建賬號
2、#userdel username #刪除賬號
3、#passwd username #設置密碼修改權限
這里修改上面輸出的ftp用戶(ftp:14)為例:
usermod -u 15 ftp##檢查修改結果
cat /etc/passwd | cut -d: -f1,3
如果當前修改用戶有進程占用的話(如zyl用戶),會有如下提示:
usermod: user zyl is currently used by process 1562
這個錯誤提示表明在嘗試修改用戶的UID時,系統發現該用戶當前正在被一個進程(PID為1562)使用,因此無法修改。這種情況下,需要先停止使用該用戶的進程,然后再嘗試修改用戶的UID。
查找并停止使用該用戶的進程:
1、使用以下命令查找使用用戶"zyl"的進程:
ps -u zyl2、根據輸出結果找到相關的進程ID(PID),然后使用kill命令停止這些進程:
kill -9 <PID>
1.3 空密碼的帳戶
檢查點:
系統中口令為空的賬號個數為0則合規,否則不合規。
執行以下命令查看系統中是否存在空口令賬號:
awk -F: '( $2 == "" ) { print $1 }' /etc/shadow
如果執行該命令后有輸出,表示系統中存在口令為空的賬號。如果輸出為空,則表示系統中不存在口令為空的賬號。
加固步驟:
1、執行備份
cp -p /etc/passwd /etc/passwd_bak
cp -p /etc/shadow /etc/shadow_bak
2、為口令為空的帳戶設置滿足密碼復雜度的密碼
passwd username
1.4 口令復雜度
查看配置文件/etc/pam.d/system-auth,是否存在如下配置:
password requisite pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8
設置了口令復雜度則合規,否則不合規。這個配置指定了使用pam_cracklib.so模塊來實現口令復雜度要求。
下面是各個參數的含義:
try_first_pass:如果前一個認證模塊已經成功驗證了用戶的口令,那么嘗試使用用戶提供的口令。
retry=3:在用戶輸入錯誤口令時,允許重試的次數為3次。
dcredit=-1:至少包含一個數字(digit)。
lcredit=-1:至少包含一個小寫字母(lowercase)。
ucredit=-1:至少包含一個大寫字母(uppercase)。
ocredit=-1:至少包含一個特殊字符(other)。
minlen=8:口令最小長度為8個字符。
根據這個配置,用戶在設置口令時必須滿足以下要求:
1、口令長度至少為8個字符。
2、必須包含至少一個數字、一個小寫字母、一個大寫字母和一個特殊字符。
加固步驟:
1、編輯配置文件/etc/pam.d/system-auth,
vi /etc/pam.d/system-auth2、在文件中找到如下內容password requisite pam_cracklib.so,在其內容后面追加,例如:
password requisite pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8
#至少包含一個數字、一個小寫字母、一個大寫字母、一個特殊字符、且密碼長度>=8
這樣的口令復雜度設置可以增強系統的安全性,防止用戶設置過于簡單的口令。
1.5 口令生存期
口令生存期是指用戶在一定時間內必須更改其口令的頻率。這有助于增強系統的安全性,因為定期更改口令可以減少口令泄露和被猜測的風險。
在Linux系統中,口令生存期通常由PAM(Pluggable Authentication Modules)模塊來管理。可以在/etc/login.defs文件中查看口令生存期的相關設置。
PASS_MAX_DAYS不大于180天,PASS_MIN_DAYS至少為1天,PASS_WARN_AGE不小于28天則合規,否則不合規
。
加固步驟:
1、執行備份cp -p /etc/login.defs /etc/login.defs_bak2、修改策略設置,編輯文件/etc/login.defs,在文件中加入如下內容(如果存在則修改,不存在則添加)
PASS_MAX_DAY 180
PASS_MIN_DAYS 1
PASS_WARN_AGE 28
下面是各個參數的含義:
PASS_MAXDAYS:指定口令的最大有效天數,超過這個天數后用戶必須更改口令。
PASS_MIN_DAYS:指定用戶更改口令之間的最小天數間隔。
PASS_WARN_AGE:在口令過期前多少天提醒用戶更改口令。
加固結果檢查:
cat /etc/login.defs |grep -v "^[[:space:]]*#"|grep -E '^\s*PASS_MAX_DAYS|^\s*PASS_MIN_DAYS|^\s*PASS_WARN_AGE'
1.6 登錄失敗次數鎖定策略
檢測方法
1、查看/etc/pam.d/system-auth文件是否存在類似如下配置:
cat /etc/pam.d/system-authauth required pam_faillock.so preauth audit deny=5 even_deny_root unlock_time=60
2、查看/etc/login.defs文件,檢查LOGIN_RETRIES和LOGIN_TIMEOUT配置:
cat /etc/login.defsLOGIN_RETRIES 5
LOGIN_TIMEOUT 60
判定依據:
1、/etc/pam.d/system-auth文件配置:deny=5
2、/etc/pam.d/system-auth文件配置:unlock_time=60
3、/etc/login.defs文件配置:LOGIN_RETRIES 5
4、/etc/login.defs文件配置:LOGIN_TIMEOUT 60
條件1和條件2同時滿足或條件3和條件4同時滿足則合規;否則不合規。
加固步驟:
1、備份文件
cp /etc/login.defs /etc/login.defs.bakcp /etc/pam.d/system-auth /etc/pam.d/system-auth_bak
2、編輯 /etc/login.defs 文件,
vi /etc/login.defs ## 添加以下類似配置:LOGIN_RETRIES 5
LOGIN_TIMEOUT 60
或者:
vi /etc/pam.d/system-auth 添加以下類似配置:
auth required pam_faillock.so preauth audit deny=5 even_deny_root unlock_time=60
💖The End💖點點關注,收藏不迷路💖 |