Linux基線檢查與安全加固方式
安全加固
Linux安全加固
賬戶(hù)管理
一、口令鎖定策略
檢查操作步驟
查看配置文件:
more /etc/pam.d/password-auth
查看是否存在如下內(nèi)容:
auth required pam_tally2.so deny=5 onerr=fail unlock time=300 even_deny_root=5 root unlock_time=600
(連續(xù)認(rèn)證5次會(huì)鎖定賬戶(hù),鎖定300秒,root的話,5次失敗,鎖定600秒)
基線符合性判定依據(jù)
用戶(hù)連續(xù)認(rèn)證失敗次數(shù)設(shè)置為5次即合規(guī),否則不合規(guī)。
安全加固方案
參考配置操作
1.執(zhí)行備份
cp -p /etc/pam.d/password-auth /etc/pam.d/password-auth_bak
2.修改策略設(shè)置,編輯文件
vim /etc/pam.d/password-auth
增加以下內(nèi)容
auth required pam_tally2.so deny=5 onerr=fail unlock time=300 even_deny_root=5 root unlock_time=600
注意:unlock_time和root_unlock_time單位為秒。
驗(yàn)證成功:
備注
PAM通過(guò)提供一些動(dòng)態(tài)鏈接庫(kù)和一套統(tǒng)一的AP1,將系統(tǒng)提供的服務(wù) 和該服務(wù)的認(rèn)證方式分開(kāi),使得系統(tǒng)管理員可以靈活地根據(jù)需要給不同的服務(wù)配置不同的認(rèn)證方式而無(wú)需更改服務(wù)程序,同時(shí)也便于向系統(tǒng)中添加新的認(rèn)證手段。
root下可查看因?yàn)轵?yàn)證登錄失敗的賬戶(hù)
pam_tally2 -u
如果需要解鎖的話,需要以root輸入
pam_tally2 -u baiyun -r
二、口令生存期
檢查操作步驟
查看文件:
more /etc/login.defs
檢查如下參數(shù)值是否滿足要求
- PASS_MAX_DAYS用戶(hù)的密碼最長(zhǎng)使用天數(shù)不大于90
- PASS_WARN_AGE #用戶(hù)的密碼到期提前提醒天數(shù)為7
基線符合性判定依據(jù)
- PASS_MAX_DAYS不大于90
- PASS_WARN_AGE等于7即合規(guī),否則不合規(guī)
安全加固方案
參考配置操作
1.執(zhí)行備份:
cp -p /etc/login.defs /etc/login.desfs_bak
2.修改策略設(shè)置,編輯/etc/login.defs在文件中加入如下內(nèi)容(存在的話修改,不存在則添加):
PASS_MAX_DAYS 90 PASS_WARN_AGE 7
chage -M 90 -W 7 baiyun
//修改已有用戶(hù)的口令生存期和過(guò)期告警天數(shù)
未加固前
加固后
三、口令復(fù)雜度
檢查操作步驟
執(zhí)行命令:
grep -E '^minlen|^minclass' /etc/security/pwquality.conf
查看是否有返回結(jié)果。
基線符合性判定依據(jù)
有返回結(jié)果且返回結(jié)果等于或者大于minlen = 8,minclass =3 即合規(guī),
否則不合規(guī)。
安全加固方案
1.執(zhí)行備份:
cp -p /etc/security/pwquality.conf /etc/security/pwquality.conf_bak
2.執(zhí)行命令:
authconfig --passminlen=8 --passminclass=3 --update
#至少包含數(shù)字、小寫(xiě)字母、大寫(xiě)字母、特殊字符中的三項(xiàng),且密碼長(zhǎng)度>=8
3、執(zhí)行命令
chage -d 0 username
#強(qiáng)制指定的用戶(hù)下次登錄修改密碼
四、檢查密碼重用是否受限制
檢查操作步驟
查看文件:
cat /etc/pam.d/system-auth
找到
password sufficient pam_unix.so 這行,檢查未尾是否有 remember參數(shù)
基線符合性判定依據(jù)
有remember參數(shù)且參數(shù)的值大于等于5即合規(guī),否則不合規(guī)。
安全加固方案
參考配置操作
1.執(zhí)行備份:
cp -p /etc/pam.d/system-auth
2.執(zhí)行命令:
vi /etc/pam.d/system-auth
編輯該文件,找到password sufficient pam_unix.so這行在末尾添加remember參數(shù)他的值為5,原來(lái)的內(nèi)容不用更改,只在末尾加remember=5即可,他表示禁止使用最近用過(guò)的5個(gè)密碼(已使用過(guò)的密碼會(huì)被保存在 /etc/security/opasswd下面)
未加固前
加固后
五、檢查是否存在除root之外UID為0的用戶(hù)
檢查操作步驟
執(zhí)行命令:
awk -F: '($3 == 0){ print $1}' /etc/passwd
查看返回值。
基線符合性性判定依據(jù)
返回值包括“root”以外的條目,則低于安全要求
安全加固方案
參考配置操作
1、執(zhí)行備份:
cp -p /etc/passwd cp -p /etc/shadow
2、執(zhí)行命令:
userdel -r username
刪除返回值中root除外的其他用戶(hù)。
或者使用命令:
usermod -u uid username
為他們分配新的UID
六、禁止存在空密碼的帳戶(hù)
檢查操作步驟
執(zhí)行以下命令查看系統(tǒng)中是否存在空口令賬號(hào)#
awk -F: '( $2 ==""){ print $1} /etc/shadow
基線符合性性判定依據(jù)
執(zhí)行命令后沒(méi)有返回值即合規(guī),否則不合規(guī)
安全加固方案
參考配置操作
1、為帳戶(hù)設(shè)置滿足密碼復(fù)雜度的密碼
#passwd username
服務(wù)管理
一、禁止SSH空密碼用戶(hù)登錄
檢查操作步驟
執(zhí)行命令:
more /etc/ssh/sshd_config
查看 PermitEmptyPasswords 配置情況
基線符合性性判定依據(jù)
PermitEmptyPasswords 的值設(shè)置為no即合規(guī),否則不合規(guī)
安全加固方案
參考配置操作
1、執(zhí)行備份:
cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
2、執(zhí)行命令:
vi /etc/ssh/sshd_config
找到 PermitEmptyPasswords 將其設(shè)置為no后保存并退出
3、執(zhí)行命令:
systemctl restrat sshd
重啟服務(wù)使配置生效
未配置前
這個(gè)雖然是no,但是被注釋掉了,不生效
加固后
二、SSH多次登錄失敗后鎖定用戶(hù)
檢查操作步驟
執(zhí)行命令:
more /etc/pam.d/sshd
查看是否存在
auth required pam_tally2.sodeny=5 unlock_time=300
內(nèi)容基線符合性性判定依據(jù)
存在該行且 deny小于等于5,unlock_time大于等于300,否則不合規(guī)
安全加固方案
參考配置操作
1、執(zhí)行備份:
cp -p /etc/pam.d/sshd /etc/pam.d/sshd bak
2、執(zhí)行命令:
vi /etc/pam.d/sshd
在文件開(kāi)頭添加一行,內(nèi)容為
auth requiredpam_tally2.so deny=5 unlock time=300
如要對(duì)root用戶(hù)也進(jìn)行限制,在剛添加的內(nèi)容后繼續(xù)添加:
even deny_root=5 root_unlock time=1200
重啟生效
systemctl restart sshd
未加固
加固后
三、限制root用戶(hù)遠(yuǎn)程登錄
檢查操作步驟
執(zhí)行命令:
more /etc/ssh/sshd_config
查看PermitRootLogin 參數(shù)的值
基線符合性性判定依據(jù)
PermitRootLogin參數(shù)值為no且該行沒(méi)有被注釋即合規(guī),否則不合規(guī)
安全加固方案
參考配置操作
1、執(zhí)行備份:
cp -p /etc/ssh/sshd_config /etc/ssh
2、執(zhí)行命令:
vi /etc/ssh/sshd_config
找到 PermitRootLogin 將其后方的 yes改為 no 并刪除前方的 # 取消該行的注釋
3、釋執(zhí)行命令:
systemctl restart sshd
重啟服務(wù)使其生效
未加固前
加固后
四、檢查ssh使用的端口
檢查操作步驟
執(zhí)行命令:
more /etc/ssn/sshd_config
查看Port 參數(shù)的值
基線符合性性判定依據(jù)
Port參數(shù)值不是默認(rèn)值 (22) 且該行沒(méi)有被注即合規(guī),否則不合規(guī)
安全加固方案
參考配置操作
1、執(zhí)行命令:
vi /etc/ssh/sshd_config
找到 Port 將其后方的 22 改為其他端口號(hào),然后刪除前方的 # 取消該行的注釋 (端口號(hào)最好挑10000-65535之間的端口號(hào),10000以下容易被系統(tǒng)或一些特殊軟件占用)
2、執(zhí)行命令:
semanage port -a -t ssh_port_t -p tcp 22233
修改后的端口號(hào),將修改后的端口添加到SELinux開(kāi)放給ssh使用的端口
3、執(zhí)行命令:
firewall-cmd --zone=public --add-port=22233/tcp --permanent
防火墻放行剛修改的 ssh 端口號(hào)
4、執(zhí)行命令:
systemctl restart sshd;systemctl restart firewalld
重啟ssh和防火墻,使配置生效
未加固
加固后
五、設(shè)置登錄超時(shí)自動(dòng)注銷(xiāo)
檢查操作步驟
執(zhí)行命令:
more /etc/profile
查看是否有export TMOUT=180
基線符合性性判定依據(jù)
存在export TMOUT且他的值小于等于180即合規(guī),否則不合規(guī)
安全加固方案
參考配置操作
1、執(zhí)行備份 :
cp - p /etc/profile /etc/profile_bak
2、執(zhí)行命令:
vi /etc/profile
在該文件末尾添加
export TMOUT=180
或者將原來(lái)的值修改為180
注意=號(hào)前后不要有空格。
權(quán)限管理
一、檢查默認(rèn)umask值
補(bǔ)充:
umask 027是一種文件權(quán)限掩碼,它用于控制新創(chuàng)建的文件和目錄的默認(rèn)權(quán)限。
umask 027指定了在創(chuàng)建文件和目錄時(shí),文件權(quán)限將減去2個(gè)位的可寫(xiě)權(quán)限和一個(gè)位的可執(zhí)行權(quán)限。
也就是說(shuō),如果創(chuàng)建一個(gè)新文件,權(quán)限將是所有者權(quán)限為rw-r-----(所有者可讀可寫(xiě),組可讀,其他用戶(hù)沒(méi)有任何權(quán)限),如果創(chuàng)建一個(gè)新目錄,權(quán)限將是所有者權(quán)限為rwxr-x---(所有者可讀可寫(xiě)可執(zhí)行,組可讀可執(zhí)行,其他用戶(hù)沒(méi)有任何權(quán)限)。
檢查操作步驟
執(zhí)行命令:
more /etc/profile
查看該文件末尾是否設(shè)置umask值
基線符合性性判定依據(jù)
/etc/profile文件末尾存在umask 027,則合規(guī),否則為不合規(guī)。
安全加固方案
參考配置操作
1、執(zhí)行備份:
cp -p /etc/profile /etc/profile_bak
2、執(zhí)行命令:
vi /etc/profile
編輯文件,在該文件末尾添加
umask 027
3、執(zhí)行以下命令讓配置生效:
source /etc/profile
二、檢查重要目錄和文件的權(quán)限
檢查操作步驟
執(zhí)行命令:
ls -l /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/hosts.allow /etc/hosts.allow /etc/services /etc/ssh/sshd_config
查看文件權(quán)限
基線符合性性判定依據(jù)
- /etc/passwd文件的權(quán)限<=644
- /etc/shadow文件的權(quán)限<=600
- /etc/group文件的權(quán)限<=644
- /etc/gshadow文件的權(quán)限<=600
- /etc/hosts.deny文件的權(quán)限<=644
- /etc/hosts.allow文件的權(quán)限<=644
- /etc/services文件的權(quán)限<=644
- /etc/ssh/sshd_config文件的權(quán)限<=600
以上條件同時(shí)滿足則合規(guī),否則不合規(guī)
安全加固方案
參考配置提作
1、執(zhí)行命令:
ls -l /etc/passwd /etc/shadow /etc/group /etc/ashadow/etc/hosts.allow /etc/hostsallow /etc/services /etc/ssh/sshd_config
查看文件權(quán)限
2、對(duì)不符合要求的文件使用chmod命令修改權(quán)限,如
chmod 644 /etc/passwd
三、設(shè)置限制可以su為root的用戶(hù)
檢查操作步驟
執(zhí)行命令:
more /etc/pam.d/su
找到
auth required pam_wheel.souse_uid
查看該行是否存在且是否被注釋
基線符合性性判定依據(jù)
auth required pam_wheel.so use_uid
存在且未被注釋即合規(guī),否則不合規(guī)
安全加固方案
參考配置操作
執(zhí)行備份:
1、
cp - p /etc/pam.d/su /etc/pam.d/su_bak
2、執(zhí)行命令:
vi /etc/pam.d/su
找到 auth required pam_wheel.souse_uid 刪除該行前面的 # 使其生效,如果該行不存在則在文件末尾添加該行。
3、將需要su為root的用戶(hù)使用命令:
usermod -G wheel username
加入 wheel 組,該用戶(hù)即可su為root用戶(hù)。如果需要將某個(gè)用戶(hù)移出wheel組,可使用命令:
gpasswd -d username wheel
日志管理
一、檢查rsyslog服務(wù)啟用狀況以及對(duì)登錄事件的記錄
補(bǔ)充:
- rsyslog是一個(gè)開(kāi)源的系統(tǒng)日志服務(wù),可用于Linux和Unix系統(tǒng)中收集、存儲(chǔ)和處理系統(tǒng)日志。
- rsyslog可以通過(guò)網(wǎng)絡(luò)協(xié)議和文件系統(tǒng)接收來(lái)自各種設(shè)備和應(yīng)用程序的日志信息,并將其輸出到文件、數(shù)據(jù)庫(kù)、遠(yuǎn)程日志服務(wù)器等不同的目標(biāo)。
檢查操作步驟
執(zhí)行命令:
more /etc/rsyslog.conf
查看authpriv的值
基線符合性性判定依據(jù)
authpriv值為authpriv.* /var/log/secure即合規(guī)注:/var/log/secure為可變項(xiàng),否則不合規(guī)
安全加固方案
參考配置操作
1、執(zhí)行備份:
cp - p /etc/rsyslog.conf /etc/rsyslog.conf_bak
2、執(zhí)行命令:
systemctl enable rsyslog
添加開(kāi)機(jī)自啟動(dòng)
3、執(zhí)行命令:
systemctl start rsyslog
啟動(dòng)服務(wù)
4、執(zhí)行命令:
vi/etc/rsyslog.conf
查看authpriv值 將其設(shè)置為 authpriv.*/var/log/secure#將authpirv 的任何級(jí)別的信息記錄到/var/log/secure 文件中
5、執(zhí)行命令:
systemctl restart rsyslog
二、檢查是否啟用記錄定時(shí)任務(wù)行為日志功能
檢查操作步驟
執(zhí)行命令:
more /etc/rsyslog.conf
查看 cron 的值
基線符合性判定依據(jù)
corn值為cron.* 即合規(guī),否則不合規(guī)注: var/log/cron為可變項(xiàng)
安全加固方案
參考配置操作
1、執(zhí)行備份:
cp -p /etc/rsyslog.conf /etc/rsyslog.conf_bak
2、執(zhí)行命令 :
vi /etc/rsyslog.conf
查看 cron 的值,將其設(shè)置為cron.* /var/log/cron# 即將 cron 的任何級(jí)別的信息記錄到 /ar/log/cron 文件中
3、執(zhí)行命令:
systemctl restart rsyslog
重啟 rsyslog 使配置生效
合規(guī)
三、查看SSH LogLevel設(shè)置是否為INFO
補(bǔ)充:
SSH LogLevel設(shè)置為INFO是用來(lái)指定在SSH連接建立并進(jìn)行時(shí)記錄的信息級(jí)別的。
INFO級(jí)別記錄大量有關(guān)連接的詳細(xì)信息,包括身份驗(yàn)證,所使用的密鑰,認(rèn)證的結(jié)果等。
這些信息對(duì)診斷問(wèn)題和了解連接的詳細(xì)情況非常有用,但可能會(huì)產(chǎn)生大量的日志。
因此,在平時(shí)使用SSH時(shí),通常將LogLevel設(shè)置為更低的級(jí)別(如ERROR或WARNING),以避免生成過(guò)多的日志,并且只在需要排除連接問(wèn)題時(shí)將其調(diào)整為更高的級(jí)別。
檢查操作步驟
執(zhí)行命令:more vi /etc/ssh/sshd_config 找到 LogLevel 查看設(shè)置的級(jí)別是否為INFO
基線符合性性判定依據(jù)
LogLevel 的級(jí)別是INFO 且該行未被注釋即合規(guī),否則不合規(guī)
安全加固方案
參考配置操作
1、進(jìn)行備份
cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak(log)
2、執(zhí)行命令:
vi /etc/ssh/sshd_config
找到 LogLevel 將其設(shè)置為 INFO,如果該行被注釋?zhuān)琲還應(yīng)刪掉該行前方的 #
3、執(zhí)行命令:
systemctl restart sshd
重啟ssh服務(wù)使其生效
四、是否將 /var/log/messages 文件設(shè)置為只可追加
補(bǔ)充:
`isattr`是一個(gè)Linux系統(tǒng)中的命令,用于檢查指定文件或目錄中是否包含擴(kuò)展屬性(extended attributes)。
擴(kuò)展屬性是在Linux文件系統(tǒng)上添加的一種元數(shù)據(jù)形式,可以包含文件或目錄的其他信息,例如訪問(wèn)控制列表和文件所有者。
檢查操作步驟
執(zhí)行命令:Isattr /var/log/messages 查看該文件屬性第六位是否為a
基線符合性性判定依據(jù)
為a即合規(guī),否則不合規(guī)
安全加固方案
參考配置操作
執(zhí)行命令:
lsattr var/log/messages
查看該文件屬性第六位是否為a不為a則執(zhí)行命令:
chattr +a /var/log/messages
將該文件的屬性修改為只可追加
未添加只可追加前
設(shè)置只可追加后
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
ubuntu開(kāi)機(jī)后ROS程序自啟動(dòng)問(wèn)題
這篇文章主要介紹了ubuntu開(kāi)機(jī)后ROS程序自啟動(dòng)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12Linux使用cd命令之實(shí)現(xiàn)切換目錄的完全指南
這篇文章主要介紹了Linux使用cd命令之實(shí)現(xiàn)切換目錄的完全指南,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02詳解linux系統(tǒng)目錄sys,tmp,usr,var!
在本篇文章里小編給大家詳解了關(guān)于linux系統(tǒng)目錄,sys,tmp,usr,var!的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們參考下。2019-06-06深入理解Bash中的尖括號(hào)(適合初學(xué)者)
這篇文章主要給大家介紹了關(guān)于Bash中尖括號(hào)的相關(guān)資料,本文非常適合初學(xué)者,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02Linux中文件描述符fd與文件指針FILE*互相轉(zhuǎn)換實(shí)例解析
這篇文章主要介紹了Linux中文件描述符fd與文件指針FILE*互相轉(zhuǎn)換實(shí)例解析,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Linux進(jìn)程信號(hào)的發(fā)送和保存方法
從信號(hào)產(chǎn)生到信號(hào)保存,中間經(jīng)歷了很多,當(dāng)操作系統(tǒng)準(zhǔn)備對(duì)信號(hào)進(jìn)行處理時(shí),還需要判斷時(shí)機(jī)是否 “合適”,在絕大多數(shù)情況下,只有在 “合適” 的時(shí)機(jī)才能處理信號(hào),即調(diào)用信號(hào)的執(zhí)行動(dòng)作,本文將給大家介紹Linux進(jìn)程信號(hào)的發(fā)送和保存方法,需要的朋友可以參考下2025-04-04