Linux系統安全設定
阿新 • • 發佈:2018-12-24
根據此文章寫了一個自動檢測指令碼
指令碼位置:https://gitee.com/wdze/linux_security_settings
一、賬號管理
1、使用者密碼
檢測方法:
(1)是否存在如下類似的簡單使用者密碼配置,比如:root/root, test/test, root/root1234 (2)執行:more /etc/login.defs,檢查PASS_MAX_DAYS/ PASS_MIN_DAYS/PASS_WARN_AGE引數 (3)執行:awk -F: '($2 == "") { print $1 }' /etc/shadow, 檢查是否存在空口令帳號
建議安全標準:
(1)在/etc/login.defs檔案中配置: PASS_MAX_DAYS 90 #新建使用者的密碼最長使用天數 PASS_MIN_DAYS 0 #新建使用者的密碼最短使用天數 PASS_WARN_AGE 14 #新建使用者的密碼到期提前提醒天數 (2)不允許存在空口令帳號
2、密碼強度
檢測方法:
/etc/pam.d/system-auth檔案中是否對pam_cracklib.so的引數進行了正確設定。
建議安全標準:
密碼長度至少8位,幷包括數字、小寫字母、大寫字母和特殊符號4種中至少3種 建議在/etc/pam.d/system-auth 檔案中配置: password requisite pam_cracklib.so difok=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=1
3、使用者鎖定策略
檢測方法:
/etc/pam.d/system-auth檔案中是否對pam_tally.so的引數進行了正確設定。
建議安全標準:
設定連續輸錯10次密碼,帳號鎖定5分鐘, 使用命令“vim /etc/pam.d/system-auth”修改配置檔案,新增 auth required pam_tally.so onerr=fail deny=10 unlock_time=300 注:解鎖使用者 faillog -u <使用者名稱> -r
4、禁止root使用者遠端登入
檢測方法:
執行:more /etc/securetty,檢查Console引數
建議安全標準:
建議在/etc/securetty檔案中配置:CONSOLE = /dev/tty01
5、檢查是否存在root外的UID為0使用者
檢測方法:
執行:awk -F: '($3 == 0) { print $1 }' /etc/passwd
建議安全標準:
UID為0的任何使用者都擁有系統的最高特權,保證只有root使用者的UID為0,返回值包括“root”以外的條目,則低於安全要求;
6、檢查root環境變數中是否包含777的目錄
檢測方法:
執行:echo $PATH | egrep '(^|:)(\.|:|$)',檢查是否包含父目錄, 執行:find `echo $PATH | tr ':' ' '` -type d \( -perm -002 -o -perm -020 \) -ls,檢查是否包含組目錄許可權為777的目錄
建議安全標準:
確保root使用者的系統路徑中不包含父目錄,在非必要的情況下,不應包含組許可權為777的目錄
7、遠端連線的安全性配置
檢測方法:
執行:find / -name .netrc,檢查系統中是否有.netrc檔案, 執行:find / -name .rhosts ,檢查系統中是否有.rhosts檔案
建議安全標準:
如無必要,刪除這兩個檔案
8、使用者的umask安全配置
檢測方法:
執行:more /etc/profile more /etc/csh.login more /etc/csh.cshrc more /etc/bashrc檢查是否包含umask值且umask=027
建議安全標準:
建議設定使用者的預設umask=027
9、重要目錄和檔案的許可權
檢測方法:
執行以下命令檢查目錄和檔案的許可權設定情況: ls -l /etc/ ls -l /etc/rc.d/init.d/ ls -l /etc/inetd.conf ls -l /etc/passwd ls -l /etc/shadow ls -l /etc/group ls -l /etc/security ls -l /etc/services ls -l /etc/rc*.d
建議安全標準:
對於重要目錄,建議執行如下類似操作: chmod -R 750 /etc/rc.d/init.d/* 這樣只有root可以讀、寫和執行這個目錄下的指令碼。
10、查詢未授權的SUID/SGID檔案
檢測方法:
for PART in `grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'`; do find $PART \( -perm -04000 -o -perm -02000 \) -type f -xdev -print done
建議安全標準:
若存在未授權的檔案,則低於安全要求 建議經常性的對比suid/sgid檔案列表,以便能夠及時發現可疑的後門程式
11、檢查任何人都有寫許可權的目錄
檢測方法:
for PART in `awk '($3 == "ext2" || $3 == "ext3") \ { print $2 }' /etc/fstab`; do find $PART -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print done
建議安全標準:
若返回值非空,則低於安全要求
12、查詢任何人都有寫許可權的檔案
檢測方法:
for PART in `grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'`; do find $PART -xdev -type f \( -perm -0002 -a ! -perm -1000 \) -print done
建議安全標準:
若返回值非空,則低於安全要求
13、檢查沒有屬主的檔案
檢測方法:
for PART in `grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'`; do find $PART -nouser -o -nogroup -print done 注意:不用管“/dev”目錄下的那些檔案。
建議安全標準:
若返回值非空,則低於安全要求 發現沒有屬主的檔案往往就意味著有******你的系統了。不能允許沒有主人的檔案存在。如果在系統中發現了沒有主人的檔案或目錄,先檢視它的完整性,如果一切正常,給它一個主人。有時候解除安裝程式可能會出現一些沒有主人的檔案或目錄,在這種情況下可以把這些檔案和目錄刪除掉
14、檢查異常隱含檔案
檢測方法:
用“find”程式可以查詢到這些隱含檔案。例如: find / -name ".. *" -print -xdev find / -name "…*" -print -xdev | cat -v 同時也要注意象“.xx”和“.mail”這樣的檔名的。(這些檔名看起來都很象正常的檔名)
建議安全標準:
若返回值非空,則低於安全要求 在系統的每個地方都要檢視一下有沒有異常隱含檔案(點號是起始字元的,用“ls”命令看不到的檔案),因為這些檔案可能是隱藏的***工具或者其它一些資訊(口令破解程式、其它系統的口令檔案,等等)。在UNIX下,一個常用的技術就是用一些特殊的名,如:“…”、“.. ”(點點空格)或“..^G”(點點control-G),來隱含檔案或目錄。
15、登入超時設定
檢測方法:
使用命令“cat /etc/profile |grep TMOUT”檢視TMOUT是否設定
建議安全標準:
使用命令“vi /etc/profile”修改配置檔案,新增“TMOUT=”行開頭的註釋,建議設定為“TMOUT=180”,即超時時間為3分鐘
16、遠端登入設定
檢測方法:
檢視SSH服務狀態: service ssh status 檢視telnet服務狀態: service telnet status
建議安全標準:
SSH服務狀態檢視結果為:running telnet服務狀態檢視結果為:not running/unrecognized
17、Root遠端登入限制
檢測方法:
使用命令“cat /etc/ssh/sshd_config”檢視配置檔案 (1)檢查是否允許root直接登入 檢查“PermitRootLogin ”的值是否為no (2)檢查SSH使用的協議版本 檢查“Protocol”的值
建議安全標準:
(1)不允許root直接登入 設定“PermitRootLogin ”的值為no 設定後root使用者需要使用普通使用者遠端登入後su進行系統管理 (2)修改SSH使用的協議版本 設定“Protocol”的版本為2
18、關閉不必要的服務
檢測方法:
使用命令“who -r”檢視當前init級別 使用命令“chkconfig --list <服務名>”檢視所有服務的狀態
建議安全標準:
若有不必要的系統在當前級別下為on,則低於安全要求 使用命令“chkconfig --level <init級別> <服務名> on|off|reset”設定服務在個init級別下開機是否啟動
二、日誌審計
1、syslog登入事件記錄
檢測方法:
執行命令:more /etc/syslog.conf 檢視引數authpriv值
建議安全標準:
若未對所有登入事件都記錄,則低於安全要求
2、Syslog.conf的配置稽核
檢測方法:
執行:more /etc/syslog.conf,檢視是否設定了下列項: kern.warning;*.err;authpriv.none\[email protected] *.info;mail.none;authpriv.none;cron.none\[email protected] *.emerg\[email protected] local7.*\[email protected]
建議安全標準:
若未設定,則低於安全要求 建議配置專門的日誌伺服器,加強日誌資訊的異地同步備份
三、系統檔案
1、系統core dump狀態
檢測方法:
執行:more /etc/security/limits.conf 檢查是否包含下列項: * soft core 0 * hard core 0
建議安全標準:
若不存在,則低於安全要求 core dump中可能包括系統資訊,易被***者利用,建議關閉