根據此文章寫了一個自動檢測腳本linux
腳本位置:https://gitee.com/wdze/linux_security_settingsgit
1、帳號管理vim
一、用戶密碼安全
檢測方法:bash
(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)不容許存在空口令賬號
二、密碼強度ssh
檢測方法:ide
/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
三、用戶鎖定策略ui
檢測方法:
/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
四、禁止root用戶遠程登陸
檢測方法:
執行:more /etc/securetty,檢查Console參數
建議安全標準:
建議在/etc/securetty文件中配置:CONSOLE = /dev/tty01
五、檢查是否存在root外的UID爲0用戶
檢測方法:
執行:awk -F: '($3 == 0) { print $1 }' /etc/passwd
建議安全標準:
UID爲0的任何用戶都擁有系統的最高特權,保證只有root用戶的UID爲0,返回值包括「root」之外的條目,則低於安全要求;
六、檢查root環境變量中是否包含777的目錄
檢測方法:
執行:echo $PATH | egrep '(^|:)(\.|:|$)',檢查是否包含父目錄, 執行:find `echo $PATH | tr ':' ' '` -type d \( -perm -002 -o -perm -020 \) -ls,檢查是否包含組目錄權限爲777的目錄
建議安全標準:
確保root用戶的系統路徑中不包含父目錄,在非必要的狀況下,不該包含組權限爲777的目錄
七、遠程鏈接的安全性配置
檢測方法:
執行:find / -name .netrc,檢查系統中是否有.netrc文件, 執行:find / -name .rhosts ,檢查系統中是否有.rhosts文件
建議安全標準:
如無必要,刪除這兩個文件
八、用戶的umask安全配置
檢測方法:
執行:more /etc/profile more /etc/csh.login more /etc/csh.cshrc more /etc/bashrc檢查是否包含umask值且umask=027
建議安全標準:
建議設置用戶的默認umask=027
九、重要目錄和文件的權限
檢測方法:
執行如下命令檢查目錄和文件的權限設置狀況: 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能夠讀、寫和執行這個目錄下的腳本。
十、查找未受權的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文件列表,以便可以及時發現可疑的後門程序
十一、檢查任何人都有寫權限的目錄
檢測方法:
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
建議安全標準:
若返回值非空,則低於安全要求
十二、查找任何人都有寫權限的文件
檢測方法:
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
建議安全標準:
若返回值非空,則低於安全要求
1三、檢查沒有屬主的文件
檢測方法:
for PART in `grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'`; do find $PART -nouser -o -nogroup -print done 注意:不用管「/dev」目錄下的那些文件。
建議安全標準:
若返回值非空,則低於安全要求 發現沒有屬主的文件每每就意味着有******你的系統了。不能容許沒有主人的文件存在。若是在系統中發現了沒有主人的文件或目錄,先查看它的完整性,若是一切正常,給它一個主人。有時候卸載程序可能會出現一些沒有主人的文件或目錄,在這種狀況下能夠把這些文件和目錄刪除掉
1四、檢查異常隱含文件
檢測方法:
用「find」程序能夠查找到這些隱含文件。例如: find / -name ".. *" -print -xdev find / -name "…*" -print -xdev | cat -v 同時也要注意象「.xx」和「.mail」這樣的文件名的。(這些文件名看起來都很象正常的文件名)
建議安全標準:
若返回值非空,則低於安全要求 在系統的每一個地方都要查看一下有沒有異常隱含文件(點號是起始字符的,用「ls」命令看不到的文件),由於這些文件多是隱藏的***工具或者其它一些信息(口令破解程序、其它系統的口令文件,等等)。在UNIX下,一個經常使用的技術就是用一些特殊的名,如:「…」、「.. 」(點點空格)或「..^G」(點點control-G),來隱含文件或目錄。
1五、登陸超時設置
檢測方法:
使用命令「cat /etc/profile |grep TMOUT」查看TMOUT是否設置
建議安全標準:
使用命令「vi /etc/profile」修改配置文件,添加「TMOUT=」行開頭的註釋,建議設置爲「TMOUT=180」,即超時時間爲3分鐘
1六、遠程登陸設置
檢測方法:
查看SSH服務狀態: service ssh status 查看telnet服務狀態: service telnet status
建議安全標準:
SSH服務狀態查看結果爲:running telnet服務狀態查看結果爲:not running/unrecognized
1七、Root遠程登陸限制
檢測方法:
使用命令「cat /etc/ssh/sshd_config」查看配置文件 (1)檢查是否容許root直接登陸 檢查「PermitRootLogin 」的值是否爲no (2)檢查SSH使用的協議版本 檢查「Protocol」的值
建議安全標準:
(1)不容許root直接登陸 設置「PermitRootLogin 」的值爲no 設置後root用戶須要使用普通用戶遠程登陸後su進行系統管理 (2)修改SSH使用的協議版本 設置「Protocol」的版本爲2
1八、關閉沒必要要的服務
檢測方法:
使用命令「who -r」查看當前init級別 使用命令「chkconfig --list <服務名>」查看全部服務的狀態
建議安全標準:
如有沒必要要的系統在當前級別下爲on,則低於安全要求 使用命令「chkconfig --level <init級別> <服務名> on|off|reset」設置服務在個init級別下開機是否啓動
2、日誌審計
一、syslog登陸事件記錄
檢測方法:
執行命令:more /etc/syslog.conf 查看參數authpriv值
建議安全標準:
若未對全部登陸事件都記錄,則低於安全要求
二、Syslog.conf的配置審覈
檢測方法:
執行:more /etc/syslog.conf,查看是否設置了下列項: kern.warning;*.err;authpriv.none\t@loghost *.info;mail.none;authpriv.none;cron.none\t@loghost *.emerg\t@loghost local7.*\t@loghost
建議安全標準:
若未設置,則低於安全要求 建議配置專門的日誌服務器,增強日誌信息的異地同步備份
3、系統文件
一、系統core dump狀態
檢測方法:
執行:more /etc/security/limits.conf 檢查是否包含下列項: * soft core 0 * hard core 0
建議安全標準:
若不存在,則低於安全要求 core dump中可能包括系統信息,易被***者利用,建議關閉