suse基线配置采集脚本

工作中,想深入了解下基线,并 帮助自己快速高效的工作,闲暇时间写了个suse的基线采集脚本,很久之前写的了,有想法把linux几个大版本都写一下,并写个基线分析系统来处理一下,下面的脚本采集各项数据配置,并不分析处理,虽然所有的采集的配置都写到了一个文件中,他们之间都是有间隔,后期可以很容易区分开来,可以做下一步分析处理

#!/bin/bash



[ $# -ne 1 ]&& {

printf "\033[1;32m [!]  Usage ${0} reportfilename.txt\n\033[0m "


exit  1
}


#1. get /etc/shadow content  剔除无关账号,锁定adm,lp,sync,shutdown,halt,news,uucp,operator,games


filename=${1}

echo "[cat /etc/shadow]" >> ${filename}
(cat /etc/shadow >> ${filename}) ||{
printf "\033[1;31m /etc/shadow get content failed!\n\033[0m"
echo "None" >> ${filename}
}

# 2. 获取/etc/pam.d/login 文件内容
# 2.1 禁用root telnet登陆
echo "[cat /etc/pam.d/login]" >> ${filename}

(cat /etc/pam.d/login >> ${filename}) || {
printf "\033[1;31m /etc/pam.d/login get  content failed!\n\033[0m"
echo "None" >> ${filename}
}

# 2.2 禁止root ssh登陆
function getContent()
{
confile=${1}
tag="[cat ${1}]"
echo ${tag} >> ${filename}
(cat ${confile} >> ${filename}) || {

    printf "\033[1;31m  ${1} get  content failed!\n\033[0m"
    echo "None" >> ${filename}
    }
}
#注意,第三方软件配置文件可能不在这里,甚至不叫这个名字,自定义安装导致
#解决方法通过find / -name confile 来先获取文件然后获取内容,暂时默认写成死的
getContent "/etc/ssh/sshd_config"

# 3. 登陆超时配置采集 /etc/profile

getContent "/etc/profile"


# 4. 口令强度检查
#4.1 获取密码强度文件
getContent "/etc/pam.d/passwd"

#4.2 密码有效期以及警告设置
getContent "/etc/login/defs"

#4.3 密码复用检查
 #配置已经采集

# 5. 敏感文件权限查看
echo [ls -al /etc/passwd /etc/group /etc/shadow]
ls -al /etc/passwd >> ${filename}

ls -al /etc/group >> ${filename}
ls -al /etc/shadow >> ${filename}

#6. SNMP安全配置检查
#6.1  各个运行级别snmp是否关闭
echo "[chkconfig --list snmpd]" >> ${filename}

#这里给你提一点,为了后期能够知道什么没有收集成功,可以把失败的命令执行写入到log文件,记住没有这个服务也会执行失败,这个时候你可以想办法排除,或者先判断一下有没有安装这个服务
(chkconfig --list snmpd >> ${filename}) ||{
echo "None" >> ${filename}
printf "\033[1;31m chkconfig --list snmpd excute failed!\n\033[0m"
}

#6.2 snmp默认字符串设置获取
getContent "/etc/snmp/snmpd.conf"




#7. 查看系统版本信息,是否为最新

#echo "[ca]"

#8.建议关闭的服务检查

(chkconfig --list >> ${filename}) ||{

echo "None" >> ${filename}

printf "\033[1;31m chkconfig --list  excute failed!\n\033[0m"
}

#8.2 sendmail 检查使用上面获取的信息即可
#

#9.ssh 安全配置检查
getContent "/etc/ssh/sshd_config"

getContent "/.rhosts"
getContent "/etc/hosts.equiv"


#10. ftp安全配置检查
getContent "/etc/ftpusers"
getContent "ftpaccess.ctl"
getContent "/etc/vsftpd.conf"

# 11. 系统banner信息屏蔽配置以及登陆提示配置
getContent "/etc/rc.d/rc.local"
getContent "/etc/rc.local"
getContent "/etc/issue"

#12. 新建文件夹的权限获取

echo "[mk test123456321 && ls -al test123456321 ]"

mkdir test123456321 && ls -al test123456321 >> ${filename} 
rm -rf test123456321
getContent "/etc/profile"
#

#13. 限定IP登陆和服务 需要人工确认
getContent "/etc/hosts.allow"
#


#14. 远程登陆废弃的不安全服务是否开启

#配置信息获取使用上面采集过的信息

# 15. 特殊目录权限设定
#除了管理员,其他用户权限都应为rw--------
getContent "/etc/rsyslog.conf"
getContent "/etc/syslog.conf"
getContent "/etc/syslog-ng/syslog-ng.conf"
#16. 日志配置检查
getContent "/etc/login.defs"

posted @ 2019-03-08 15:04  随时静听  阅读(382)  评论(0编辑  收藏  举报