摘要:linux是一套免費(fèi)使用和自由傳播的系統(tǒng),是一個(gè)基于UNIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。所謂的多用戶和多任務(wù)。多用戶是指在同一時(shí)刻可以有多個(gè)用戶同時(shí)使用操作系統(tǒng)而且他們互不干擾,而多任務(wù)則指的是任何一個(gè)用戶在同一時(shí)間可以在操作系統(tǒng)上運(yùn)行多個(gè)程序。
作為一個(gè)開放源代碼的操作系統(tǒng),Linux服務(wù)器以其安全、高效和穩(wěn)定的顯著優(yōu)勢而得以廣泛應(yīng)用,不過,如果不做好權(quán)限的合理分配,系統(tǒng)的安全性得不到更好的保障。
因此,為提高系統(tǒng)的穩(wěn)定性,加強(qiáng)安全管理必不可少。
本文將使用centos7操作系統(tǒng),分別從賬戶安全、密碼策略、登錄控制、系統(tǒng)資源控制以及日志審計(jì)等方面優(yōu)化系統(tǒng)的安全性。詳細(xì)內(nèi)容請參考下文。
一、優(yōu)化系統(tǒng)賬號管理
說明:系統(tǒng)賬戶默認(rèn)存放的目錄為/etc/passwd,可以執(zhí)行cat指令手動(dòng)查詢用戶信息。具體的優(yōu)化措施是除了root賬戶需要登錄以外,其他的賬戶全部設(shè)置為禁止登錄。
需要用到的命令如下:
userdel <用戶名> //刪除不必要的賬號。
passwd -l <用戶名> //鎖定不必要的賬號。
passwd -u <用戶名> //解鎖必要的賬號。
解決辦法:本文使用{passwd -l 用戶名}鎖定用戶登錄,可以編寫lockuser.sh腳本完成這個(gè)過程。
1、編寫腳本
執(zhí)行指令# vim lockuser.sh
備注:grep -v就是反向過濾文本行的搜索,grep -v name # 表示搜索除了含有name之外的行內(nèi)容。
2、執(zhí)行腳本
執(zhí)行指令# sh lockuser.sh
二、設(shè)置密碼管理策略
說明:操作系統(tǒng)和數(shù)據(jù)庫的管理用戶身份鑒別信息應(yīng)具有不易被破解的特點(diǎn),口令應(yīng)有一定的復(fù)雜度要求并定期更換。設(shè)置有效的密碼策略,防止攻擊者破解出密碼。
1、查看空口令帳號并為弱/空口令帳號設(shè)置強(qiáng)密碼
執(zhí)行指令# awk -F: '($2 == ""){print $1}' /etc/shadow
備注:可用密碼網(wǎng)站查詢出帳號的密碼是否是弱口令
2、修改login.defs配置密碼周期策略
執(zhí)行指令# vim /etc/login.defs
修改密碼策略文件
修改內(nèi)容為
備注:此策略只對策略實(shí)施后所創(chuàng)建的帳號生效, 以前的帳號還是按99999天周期時(shí)間來算。對于已創(chuàng)建的賬戶,可以使用chage命令修改用戶設(shè)置(針對已創(chuàng)建用戶)。【比如# chage -m 0 -M 90 -I 5 -W 7 <用戶名>】表示將此用戶的密碼最長使用天數(shù)設(shè)為30,最短使用天數(shù)設(shè)為0,密碼過期后5天之后賬戶失效,過期前7天警告用戶。
參數(shù)含義如下所示:
PASS_MAX_DAYS 90 #密碼最長過期天數(shù)
PASS_MIN_DAYS 0 #密碼最小過期天數(shù)
PASS_MIN_LEN 8 #密碼最小長度
PASS_WARN_AGE 7 #密碼過期警告天數(shù)
3、修改system-auth配置密碼復(fù)雜度
執(zhí)行指令# vim /etc/pam.d/system-auth
修改密碼復(fù)雜度文件為
備注:在密碼復(fù)雜度文件的末尾添加如下一行:password requisite pam_cracklib.so retry=3 difok=2 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1
參數(shù)含義如下所示:
difok:本次密碼與上次密碼至少不同字符數(shù)
minlen:密碼最小長度,此配置優(yōu)先于login.defs中的PASS_MAX_DAYS
ucredit:最少大寫字母
lcredit:最少小寫字母
dcredit:最少數(shù)字
retry:重試多少次后返回密碼修改錯(cuò)誤
三、設(shè)置登陸管理策略
說明:服務(wù)器必須設(shè)置登錄失敗處理策略,可以采取結(jié)束會話、限制非法登錄次數(shù)和自動(dòng)退出等措施。遭遇密碼破解時(shí),暫時(shí)鎖定帳號,降低密碼被猜解的可能性。
1、登錄失敗處理功能策略(服務(wù)器終端)
執(zhí)行指令# vim /etc/pam.d/system-auth編輯系統(tǒng)文件,在 auth 字段所在的那一部分策 略下面添加如下策略參數(shù)。
auth required pam_tally2.so onerr=fail deny=3 unlock_time=30 even_deny_root root_unlock_time=30
備注:注意添加的位置,要寫在第一行,即#%PAM-1.0的下面。如上圖所示。以上策略表示,普通帳戶和 root 的帳戶登錄連續(xù) 3 次失敗,就統(tǒng)一鎖定30 秒,30 秒后可以解鎖。如果不想限制 root 帳戶,可以把 even_deny_root root_unlock_time這兩個(gè)參數(shù)去掉, root_unlock_time 表示 root 帳戶的 鎖定時(shí)間,onerr=fail 表示連續(xù)失敗,deny=3,表示 超過3 次登錄失敗即鎖定。還應(yīng)該注意的是,用戶鎖定期間,無論在輸入正確還是錯(cuò)誤的密碼,都將視為錯(cuò)誤密碼,并以最后一次登錄為鎖定起始時(shí)間,若果用戶解鎖后輸入密碼的第一次依然為錯(cuò)誤密碼,則再次重新鎖定。登陸信息可以通過日志 tail -f /var/log/secure查看。
2、登錄失敗處理功能策略(ssh遠(yuǎn)程連接登錄)
執(zhí)行指令# vim /etc/pam.d/sshd編輯SSH文件,在 auth 字段所在的那一部分策 略下面添加如下策略參數(shù)。
auth required pam_tally2.so onerr=fail deny=3 unlock_time=30 even_deny_root root_unlock_time=30
備注:上面的錯(cuò)誤意思是在/lib64/security/ 下面找不到pam_tally.so,而我進(jìn)入到目錄下,確實(shí)沒找到這個(gè)文件,解決方法是將現(xiàn)有的 pam_tally2.so做個(gè)軟連接到pam_tally.so,先切換到目錄cd /lib64/security/,然后再做軟鏈接ln -s pam_tally2.so pam_tally.so。
3、解鎖賬戶
首先,執(zhí)行指令# pam_tally2查看鎖定的賬戶
備注:如果密碼在鎖定時(shí)間內(nèi),但是又要立即進(jìn)入系統(tǒng),可使用下面方法解鎖被鎖定用戶,當(dāng)然這是對于root用戶解鎖普通用戶來說的。如果root用戶被鎖,請等待鎖定期過后在操作。
然后,執(zhí)行指令# pam_tally2 -r -u root解鎖指定用戶,可以正常登陸系統(tǒng)。如下圖
四、設(shè)置安全遠(yuǎn)程管理方式
說明:當(dāng)對服務(wù)器進(jìn)行遠(yuǎn)程管理時(shí),應(yīng)采取必要措施,防止鑒別信息在網(wǎng)絡(luò)傳輸過程中被竊聽。為防止遠(yuǎn)程管理過程中,密碼等敏感信息被竊聽,有必要禁用te.NET等不安全的訪問方式。
執(zhí)行指令# systemctl status xinetd查看telnet狀態(tài)
執(zhí)行指令# systemctl stop xinetd禁用telnet功能
五、啟用入侵防御方式
說明:操作系統(tǒng)遵循最小安裝的原則,僅安裝需要的組件和應(yīng)用程序,并通過設(shè)置升級服務(wù)器等方式保持系統(tǒng)補(bǔ)丁及時(shí)得到更新。關(guān)閉與系統(tǒng)業(yè)務(wù)無關(guān)或不必要的服務(wù),減小系統(tǒng)被黑客攻擊、滲透的風(fēng)險(xiǎn)。比如禁用藍(lán)牙功能等。
執(zhí)行指令# systemctl status bluetooth查看藍(lán)牙狀態(tài)
執(zhí)行指令# systemctl stop bluetooth禁用藍(lán)牙功能
六、系統(tǒng)資源控制
1、系統(tǒng)資源訪問控制
說明:通過設(shè)定終端接入方式、網(wǎng)絡(luò)地址范圍等條件限制終端登錄,對接入服務(wù)器的IP、方式等進(jìn)行限制,可以阻止非法入侵。
可以在/etc/hosts.allow和/etc/hosts.deny文件中配置接入限制。最好的策略就是阻止所有的主機(jī)在“/etc/hosts.deny”文件中加入“ ALL:ALL@ALL, PARANOID ”,然后再在“/etc/hosts.allow” 文件中加入所有允許訪問的主機(jī)列表。
執(zhí)行指令# vim /etc/hosts.deny
執(zhí)行指令# vim /etc/hosts.allow
2、訪問系統(tǒng)資源超時(shí)鎖定
說明:應(yīng)根據(jù)安全策略設(shè)置登錄終端的操作超時(shí)鎖定。設(shè)置登錄超時(shí)時(shí)間,釋放系統(tǒng)資源,也提高服務(wù)器的安全性。
執(zhí)行指令# vim /etc/profile
備注:加入這一行exprot TMOUT=3600,表示設(shè)置3600秒內(nèi)用戶無操作就斷開終端,該功能視實(shí)際情況而定。
然后執(zhí)行指令# source /etc/profile使操作立即生效。
七、系統(tǒng)日志管理
1、保護(hù)審計(jì)記錄
說明:避免受到意外的刪除、修改或覆蓋等操作。防止重要日志信息被覆蓋,讓日志文件轉(zhuǎn)儲一個(gè)月,保留6個(gè)月的信息。執(zhí)行指令# cat /etc/logrotate.conf查看目前配置
需要將文件修改配置為
2、記錄所有用戶的登錄和操作日志
說明:通過腳本代碼實(shí)現(xiàn)記錄所有用戶的登錄操作日志,防止出現(xiàn)安全事件后無據(jù)可查。
首先,執(zhí)行指令# vim /etc/profile打開配置文件
其次,修改配置文件,在配置文件中輸入以下內(nèi)容
最后,執(zhí)行指令# source /etc/profile 使配置生效
備注:通過上述步驟,可以在 /var/log/history目錄下為每個(gè)用戶為名新建一個(gè)文件夾,每次用戶退出后都會產(chǎn)生以用戶名、登錄IP、時(shí)間的日志文件,包含此用戶本次的所有操作。
注意事項(xiàng):編輯/etc/bashrc文件,最后加入
HISTTIMEFORMAT="%F %T "
export HISTTIMEFORMAT
保存后退出,關(guān)閉當(dāng)前shell,并重新登錄這個(gè)時(shí)候,在變量HISTFILE所指向文件中,就有記錄命令執(zhí)行的時(shí)間。如下圖
八、系統(tǒng)升級管理
說明:內(nèi)核、OS版本、所有軟件都會升級,會更改相關(guān)配置環(huán)境。由于系統(tǒng)與硬件的兼容性問題,有可能升級內(nèi)核后導(dǎo)致服務(wù)器不能正常啟動(dòng),這是非常可怕的,如果沒有特別的需要,建議不要隨意升級內(nèi)核。
如果不想升級內(nèi)核及系統(tǒng)版本,則在執(zhí)行yum update之前,需修改/etc/yum.conf配置文件,再[main] 后面添加以下配置。
exclude=kernel*
exclude=centos-release*
執(zhí)行指令# vim /etc/yum.conf
備注:exclude=kernel*表示不升級內(nèi)核,而exclude=centos-release* 表示不升級系統(tǒng)版本。