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