根据此文章写了一个自动检测脚本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中可能包括系统信息,易被***者利用,建议关闭