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"