以下是centos7基线检查脚本:
1 #!/bin/bash 2 #version v1.0 by pensar 3 #操作系统linux 配置规范--centos7 4 cat <<EOF 5 *************************************************************** 6 linux安全配置检查脚本: 7 1. 输出结果在/tmp/check/目录下查看 8 2.检查范围及检查项(共计4大类,33项) 9 *日志审计配置*: 10 [1]检查Cron任务授权 11 [2]检查是否对syslog登录事件记录 12 [3]检查是否对rsyslog.conf配置审核 13 [4]检查系统日志读写权限 14 [5]检查是否对远程日志服务器配置 15 *系统文件管理*: 16 [1]检查是否对登录超时时间配置 17 [2]检查系统磁盘状态 18 [3]检查是否禁止匿名FTP访问 19 [4]检查是否修改FTP banner 信息 20 [5]检查是否关闭不必要的服务 21 [6]检查系统core dump状态 22 [7]检查系统补丁 23 *用户账号配置*: 24 [1]检查是否存在无用账号 25 [2]检查不同用户是否共享账号 26 [3]检查是否删除或锁定无用账号 27 [4]检查是否存在无用用户组 28 [5]检查是否指定用户组成员使用su命令 29 [6]检查密码长度及复杂度策略 30 [7]检查是否对用户远程登录进行限制 31 [8]检查是否配置加密协议 32 [9]检查是否配置密码的生存期 33 [10]检查用户缺省访问权限 34 [11]检查passwd group文件安全权限 35 [12]检查是否存在除root之外UID为0的用户 36 [13]检查是否配置环境变量 37 [14]检查是否对远程连接的安全性进行配置 38 [15]检查是否对用户的umask进行配置 39 [16]检查是否对重要目录和文件的权限进行设置 40 [17]检查是否存在未授权的suid/sgid文件 41 [18]检查是否存在异常隐含文件 42 *网络通信配置*: 43 [1]检查是否对基本网络服务进行配置 44 [2]检查是否开启NFS服务 45 [3]检查常规网络服务是否运行正常 46 *************************************************************** 47 EOF 48 mkdir /tmp/check 49 str1=`/sbin/ifconfig -a | grep inet | grep -v 127.0.0.1 | grep -v inet6 | awk '{print $2}' | tr -d "addr:" | head -n 1` 50 str=`date +%Y%m%d%H%M`_"$str1" 51 52 echo "----**日志审计配置**----" >> /tmp/check/${str}_out.txt 53 echo "[1] 检查Cron任务授权" >> /tmp/check/${str}_out.txt 54 if [ -e /etc/cron.deny ] && [ -e /etc/at.deny ];then 55 CRON_DENY=`ls -l /etc/cron.deny | awk '{print $1}'` 56 AT_DENY=`ls -l /etc/at.deny | awk '{print $1}'` 57 echo "/etc/cron.deny文件授权情况为:${CRON_DENY:1:9}" >> /tmp/check/${str}_out.txt 58 echo "/etc/at.deny文件授权情况为:${AT_DENY:1:9}" >> /tmp/check/${str}_out.txt 59 echo "{'Check_point':'检查Cron任务授权','Check_result':{'/etc/cron.deny文件授权情况为':'${CRON_DENY:1:9}','/etc/at.deny文件授权情况为':'${AT_DENY:1:9}'}}" >> /tmp/check/${str}_dict.txt 60 CRON=`cat /etc/rsyslog.conf | grep "cron.\*"` 61 echo "/etc/rsyslog.conf的配置情况为:${CRON}" >> /tmp/check/${str}_out.txt 62 else 63 echo "未找到/etc/cron.deny和/etc/at.deny配置文件" >> /tmp/check/${str}_out.txt 64 fi 65 66 echo "----------------------------" >> /tmp/check/${str}_out.txt 67 echo "[2]检查是否对syslog登录事件记录" >> /tmp/check/${str}_out.txt 68 if [ -e /etc/syslog.conf ];then 69 Clog=`cat /etc/syslog.conf | grep /var/log/secure | grep -E "authpriv\.\*"` 70 echo "/etc/syslog.conf的配置为:${Clog}" >> /tmp/check/${str}_out.txt 71 else 72 echo "未找到/etc/syslog.conf配置文件" >> /tmp/check/${str}_out.txt 73 fi 74 75 echo "----------------------------" >> /tmp/check/${str}_out.txt 76 echo "[3]检查是否对rsyslog.conf配置审核" >> /tmp/check/${str}_out.txt 77 if [ -e /etc/rsyslog.conf ];then 78 LOG=`cat /etc/rsyslog.conf | grep @loghost` 79 echo "rsyslog.conf文件的配置为${LOG}" >> /tmp/check/${str}_out.txt 80 else 81 echo "未找到/etc/rsyslog.conf配置文件" >> /tmp/check/${str}_out.txt 82 fi 83 84 echo "----------------------------" >> /tmp/check/${str}_out.txt 85 echo "[4]检查系统日志读写权限" >> /tmp/check/${str}_out.txt 86 if [ -e /var/log/messages ];then 87 MESSAGES=`ls -l /var/log/messages | awk '{print $1}'` 88 echo "/var/log/messages的文件权限为:${MESSAGES:1:9}" >> /tmp/check/${str}_out.txt 89 else 90 echo "未找到/var/log/messages的文件" >> /tmp/check/${str}_out.txt 91 fi 92 if [ -e /var/log/secure ];then 93 SECURE=`ls -l /var/log/secure | awk '{print $1}'` 94 echo "/var/log/secure 的文件权限为:${SECURE:1:9}" >> /tmp/check/${str}_out.txt 95 else 96 echo "未找到/var/log/secure的文件" >> /tmp/check/${str}_out.txt 97 fi 98 99 if [ -e /var/log/maillog ];then 100 MAILLOG=`ls -l /var/log/maillog | awk '{print $1}'` 101 echo "/var/log/maillog 的文件权限为:${MAILLOG:1:9}" >> /tmp/check/${str}_out.txt 102 else 103 echo "未找到/var/log/maillog的文件" >> /tmp/check/${str}_out.txt 104 fi 105 106 if [ -e /var/log/cron ];then 107 CRON=`ls -l /var/log/cron | awk '{print $1}'` 108 echo "/var/log/cron 的文件权限为:${CRON:1:9}" >> /tmp/check/${str}_out.txt 109 else 110 echo "未找到/var/log/cron的文件" >> /tmp/check/${str}_out.txt 111 fi 112 if [ -e /var/log/spooler ];then 113 SPOOLER=`ls -l /var/log/spooler | awk '{print $1}'` 114 echo "/var/log/spooler 的文件权限为:${SPOOLER:1:9}" >> /tmp/check/${str}_out.txt 115 else 116 echo "未找到/var/log/spooler的文件" >> /tmp/check/${str}_out.txt 117 fi 118 119 if [ -e /var/log/boot/log ];then 120 LOG=`ls -l /var/log/boot/log | awk '{print $1}'` 121 echo "/var/log/boot/log 的文件权限为:${LOG:1:9}" >> /tmp/check/${str}_out.txt 122 else 123 echo "未找到/var/log/boot/log的文件" >> /tmp/check/${str}_out.txt 124 fi 125 126 echo "----------------------------" >> /tmp/check/${str}_out.txt 127 echo "[5]检查是否对远程日志服务器配置" >> /tmp/check/${str}_out.txt 128 if [ -e /etc/rsyslog.conf ];