linux安全配置检查脚本_v0.8

脚本环境:RHEL6.*

脚本说明:该脚本作用为纯执行检测不涉及更改配置等操作,与直接上来就改安全配置等基线脚本相比相对安全一些。虽然如此,在你执行该脚本之前仍然建议你备份或快照一下目标系统。

代码部分:

#! /bin/bash
cat <<EOF
*************************************************************************
linux安全配置扫描脚本:
1. 输出结果也可以在当前目录的out.txt中查看
2. 检查范围:
 -》账号策略检查
 -》账号注销检查
 -》GRUB密码检查
 -》LILO密码检查
 -》非root账号但UID为0的用户检查
 -》/etc/profile中umask默认值检查
 -》/etc/csh.cshrc中umask默认值检查
 -》/etc/bashrc中umask默认值检查
 -》重要文件权限检查
 -》内核文件dump配置检查

*************************************************************************
EOF
rm -rf ./out.txt
echo -e "\n"
echo "[1] 账号策略检查中..."
passmax=`cat /etc/login.defs | grep PASS_MAX_DAYS | grep -v ^# | awk ‘{print $2}‘`
passmin=`cat /etc/login.defs | grep PASS_MIN_DAYS | grep -v ^# | awk ‘{print $2}‘`
passlen=`cat /etc/login.defs | grep PASS_MIN_LEN | grep -v ^# | awk ‘{print $2}‘`
passage=`cat /etc/login.defs | grep PASS_WARN_AGE | grep -v ^# | awk ‘{print $2}‘`
if [ $passmax -le 90 -a $passmax -gt 0 ];then
echo " [OK]口令生存周期为${passmax}天,符合要求" >> out.txt
else
echo " [ X ] 口令生存周期为${passmax}天,不符合要求,建议设置不大于90天" >> out.txt
fi
if [ $passmin -ge 6 ];then
echo " [OK]口令更改最小时间间隔为${passmin}天,符合要求" >> out.txt
else
echo " [ X ] 口令更改最小时间间隔为${passmin}天,不符合要求,建议设置大于等于6天" >> out.txt
fi
if [ $passlen -ge 8 ];then
echo " [OK]口令最小长度为${passlen},符合要求" >> out.txt
else
echo " [ X ] 口令最小长度为${passlen},不符合要求,建议设置最小长度大于等于8" >> out.txt
fi
if [ $passage -ge 30 -a $passage -lt $passmax ];then
echo " [OK]口令过期警告时间天数为${passage},符合要求" >> out.txt
else
echo " [ X ] 口令过期警告时间天数为${passage},不符合要求,建议设置大于等于30并小于口令生存周期" >> out.txt
fi
echo "..."
echo ‘check over‘
echo -e "\n"
echo "[2] 账号注销检查中..."
TMOUT=`cat /etc/profile | grep TMOUT | awk -F[=] ‘{print $2}‘`
if [ ! $TMOUT ];then
echo " [ X ] 账号超时不存在自动注销,不符合要求,建议设置小于600秒" >> out.txt
else
if [ $TMOUT -le 600 -a $TMOUT -ge 10 ] ; then
echo " [ √ ] 账号超时时间${TMOUT}秒,符合要求" >> out.txt
else
echo " [ X ] 账号超时时间$TMOUT秒,不符合要求,建议设置小于600秒" >> out.txt
fi
fi
echo "..."
echo ‘check over‘
echo -e "\n"
echo "[3] GRUB密码检查中..."
grup_pwd=`cat /etc/grub.conf | grep -v ^# | grep password 2> /dev/null`
if [ $? -eq 0 ];then
echo " [ √ ] 已设置grub密码,符合要求" >> out.txt
else
echo " [ X ] 没有设置grub密码,不符合要求,建议设置grub密码" >> out.txt
fi
echo "..."
echo "check over"
echo -e "\n"
echo "[4] LILO密码检查中..."
if [ ! -f /etc/lilo.conf ] ; then
echo " [ √ ] lilo.conf配置文件不存在,系统可能不是通过LILO引导" >> out.txt
else
lilo_pwd=`cat /etc/lilo.conf | grep -v ^# | grep password &> /dev/null`
if [ $? -eq 0 ];then
echo " [ √ ] 已设置lilo密码,符合要求" >> out.txt
else
echo " [ X ] 没有设置lilo密码,不符合要求,建议设置lilo密码(操作有风险,需慎重!)" >> out.txt
fi
fi
echo "..."
echo "check over"
echo -e "\n"

echo "[5] 非root账号但UID为0的用户检查中..."
UIDS=`awk -F[:] ‘NR!=1{print $3}‘ /etc/passwd`
flag=0
for i in $UIDS
do
  if [ $i = 0 ];then
     flag=1
  fi
done
  if [ $flag != 1 ];then
    echo " [ √ ] 不存在root账号外的UID为0的异常用户" >> out.txt
  else
    echo " [ X ] 存在非root但UID为0的异常用户,请立刻进行排查" >> out.txt
  fi
echo "..."
echo "check over"
echo -e "\n"

echo "[6] /etc/profile中umask默认值检查中..."
umask1=`cat /etc/profile | grep umask | grep -v ‘^#‘ | awk ‘{print $2}‘`
flags=0

for i in $umask1
do
  if [ $i = "027" ];then
    flags=1
  fi
done
if [ $flags = 1 ];then
  echo " [ √ ] /etc/profile文件中所设置的umask为${i},符合要求" >> out.txt
else
  echo " [ X ] /etc/profile文件中所设置的umask为${i},不符合要求" >> out.txt
  echo "      【理论上建议设置值为027,但因系统重要程度不同请根据具体情况慎重操作,如不确定请暂忽略此项】" >> out.txt
fi
echo "..."
echo "check over"
echo -e "\n"

echo "[7] /etc/csh.cshrc中umask默认值检查中..."
umask2=`cat /etc/csh.cshrc | grep umask | grep -v ‘^#‘ | awk ‘{print $2}‘`
flags=0

for i in $umask2
do
  if [ $i = "027" ];then
    flags=1
  fi
done
if [ $flags = 1 ];then
  echo " [ √ ] /etc/csh.cshrc文件中所设置的umask为${i},符合要求" >> out.txt
else
  echo " [ X ] /etc/csh.cshrc文件中所设置的umask为${i},不符合要求" >> out.txt
  echo "      【理论上建议设置值为027,但因系统重要程度不同请根据具体情况慎重操作,如不确定请暂忽略此项】" >> out.txt
fi
echo "..."
echo "check over"
echo -e "\n"

echo "[8] /etc/bashrc中umask默认值检查中..."
umask3=`cat /etc/bashrc | grep umask | grep -v ‘^    #‘ | awk ‘{print $2}‘`
flags=0

for i in $umask3
do
  if [ $i = "027" ];then
    flags=1
  fi
done
if [ $flags = 1 ];then
  echo " [ √ ] /etc/bashrc文件中所设置的umask为${i},符合要求" >> out.txt
else
  echo " [ X ] /etc/bashrc文件中所设置的umask为${i},不符合要求" >> out.txt
  echo "      【理论上建议设置值为027,但因系统重要程度不同请根据具体情况慎重操作,如不确定请暂忽略此项】" >> out.txt
fi
echo "..."
echo "check over"
echo -e "\n"

echo "[9] 重要文件权限检查中..."
file1=`ls -l /etc/passwd | awk ‘{print $1}‘`
if [ $file1 = "-rw-r--r--." ];then
  echo " [ √ ] /etc/passwd文件权限为644,符合要求" >> out.txt
else
  echo " [ X ] /etc/passwd文件权限为[$file1.],不符合要求" >> out.txt
fi

file2=`ls -l /etc/shadow | awk ‘{print $1}‘`
if [ $file2 = "-rw-r--r--." ] || [ $file2 = "----------." ];then
  echo " [ √ ] /etc/shadow文件权限为400或000,符合要求" >> out.txt
else
  echo " [ X ] /etc/shadow文件权限为${file2},不符合要求" >> out.txt
fi

file3=`ls -l /etc/group | awk ‘{print $1}‘`
if [ $file3 = "-rw-r--r--." ];then
  echo " [ √ ] /etc/group文件权限为644,符合要求" >> out.txt
else
  echo " [ X ] /etc/group文件权限为$file3,不符合要求" >> out.txt
fi

file4=`ls -l /etc/securetty | awk ‘{print $1}‘`
if [ $file4 = "-rw-------." ];then
  echo " [ √ ] /etc/security文件权限为600,符合要求" >> out.txt
else
  echo " [ X ] /etc/security文件权限不为600,不符合要求,建议设置权限为600" >> out.txt
fi

file5=`ls -l /etc/services | awk ‘{print $1}‘`
if [ $file5 = "-rw-r--r--." ];then
  echo " [ √ ] /etc/services文件权限为644,符合要求" >> out.txt
else
  echo " [ X ] /etc/services文件权限不为644,不符合要求,建议设置权限为644" >> out.txt
fi

file6=`ls -l /etc/xinetd.conf | awk ‘{print $1}‘`
if [ !-f $file6 ];then
  echo " [ √ ] /etc/xinetd.conf文件不存在,暂略此项" >> out.txt
else
  if [ $file6 = "-rw-------." ];then
    echo " [ √ ] /etc/xinetd.conf文件权限为600,符合要求" >> out.txt
  else
    echo " [ X ] /etc/xinetd.conf文件权限不为600,不符合要求,建议设置权限为600" >> out.txt
  fi
fi

file7=`ls -l /etc/grub.conf | awk ‘{print $1}‘`
if [ $file7 = "-rw-------." ];then
  echo " [ √ ] /etc/grub.conf文件权限为600,符合要求" >> out.txt
else
  echo " [ X ] /etc/grub.conf文件权限为$file7,不符合要求,建议设置权限为600" >> out.txt
fi

file8=`ls -l /etc/lilo.conf | awk ‘{print $1}‘`
if [ -f /etc/lilo.conf ];then
  if [ $file8 = "-rw-------" ];then
    echo " [ √ ] /etc/lilo.conf文件权限为600,符合要求" >> out.txt
  else
    echo " [ X ] /etc/lilo.conf文件权限不为600,不符合要求,建议设置权限为600" >> out.txt
  fi
else
  echo " [ √ ] /etc/lilo.conf文件不存在,暂略此项" >> out.txt
fi
echo "..."
echo "check over"
echo -e "\n"

echo "[10] 内核文件dump配置检查中..."
cat /etc/security/limits.conf | grep -v ^# | grep core
if [ $? = 0 ];then
  #soft=`cat /etc/security/limits.conf| grep -V ^# | grep core | awk {print $2}`
  soft=`cat /etc/security/limits.conf| grep -v ‘^#‘ | awk ‘{print $2}‘` &> /dev/null
  for i in $soft
  do
    if [ $i = "soft" ];then
      echo -e " [ √ ] 内核文件dump配置检查[*\tsoft\tcore\t0]已经设置" >> out.txt
    fi
    if [ $i = "hard" ];then
      echo -e " [ √ ] 内核文件dump配置检查[*\thard\tcore\t0]已经设置" >> out.txt
    fi
  done
else
  echo -e " [ X ] 没有设置core,建议在/etc/security/limits.conf中添加[*\tsoft\tcore\t0]和[*\thard\tcore\t0]" >> out.txt
fi
echo "..."
echo "check over"
echo -e "\n"

echo "--------------------------------------------------------------------------"
echo ""
echo "扫描结果:"
echo ""
cat ./out.txt
echo ""
echo "--------------------------------------------------------------------------"
echo ""

执行结果:

[[email protected] ~]# ./linuxCheck.sh
*************************************************************************
linux安全配置扫描脚本:
1. 输出结果也可以在当前目录的out.txt中查看
2. 检查范围:
 -》账号策略检查
 -》账号注销检查
 -》GRUB密码检查
 -》LILO密码检查
 -》非root账号但UID为0的用户检查
 -》/etc/profile中umask默认值检查
 -》/etc/csh.cshrc中umask默认值检查
 -》/etc/bashrc中umask默认值检查
 -》重要文件权限检查
 -》内核文件dump配置检查

*************************************************************************

[1] 账号策略检查中...
...
check over

[2] 账号注销检查中...
...
check over

[3] GRUB密码检查中...
...
check over

[4] LILO密码检查中...
...
check over

[5] 非root账号但UID为0的用户检查中...
...
check over

[6] /etc/profile中umask默认值检查中...
...
check over

[7] /etc/csh.cshrc中umask默认值检查中...
...
check over

[8] /etc/bashrc中umask默认值检查中...
...
check over

[9] 重要文件权限检查中...
ls: cannot access /etc/xinetd.conf: No such file or directory
ls: cannot access /etc/lilo.conf: No such file or directory
...
check over

[10] 内核文件dump配置检查中...
* soft    core            0
...
check over

--------------------------------------------------------------------------

扫描结果:

 [ X ] 口令生存周期为99999天,不符合要求,建议设置不大于90天
 [ X ] 口令更改最小时间间隔为0天,不符合要求,建议设置大于等于6天
 [ X ] 口令最小长度为5,不符合要求,建议设置最小长度大于等于8
 [ X ] 口令过期警告时间天数为7,不符合要求,建议设置大于等于30并小于口令生存周期
 [ X ] 账号超时不存在自动注销,不符合要求,建议设置小于600秒
 [ √ ] 已设置grub密码,符合要求
 [ √ ] lilo.conf配置文件不存在,系统可能不是通过LILO引导
 [ √ ] 不存在root账号外的UID为0的异常用户
 [ X ] /etc/profile文件中所设置的umask为022,不符合要求
      【理论上建议设置值为027,但因系统重要程度不同请根据具体情况慎重操作,如不确定请暂忽略此项】
 [ X ] /etc/csh.cshrc文件中所设置的umask为022,不符合要求
      【理论上建议设置值为027,但因系统重要程度不同请根据具体情况慎重操作,如不确定请暂忽略此项】
 [ X ] /etc/bashrc文件中所设置的umask为022,不符合要求
      【理论上建议设置值为027,但因系统重要程度不同请根据具体情况慎重操作,如不确定请暂忽略此项】
 [ √ ] /etc/passwd文件权限为644,符合要求
 [ √ ] /etc/shadow文件权限为400或000,符合要求
 [ √ ] /etc/group文件权限为644,符合要求
 [ √ ] /etc/security文件权限为600,符合要求
 [ √ ] /etc/services文件权限为644,符合要求
 [ √ ] /etc/xinetd.conf文件不存在,暂略此项
 [ X ] /etc/grub.conf文件权限为lrwxrwxrwx.,不符合要求,建议设置权限为600
 [ √ ] /etc/lilo.conf文件不存在,暂略此项
 [ √ ] 内核文件dump配置检查[*    soft    core    0]已经设置
 [ √ ] 内核文件dump配置检查[*    hard    core    0]已经设置

--------------------------------------------------------------------------
时间: 2024-12-07 16:19:34

linux安全配置检查脚本_v0.8的相关文章

服务端测试环境hosts配置检查脚本

问题 由于A测试环境和B测试环境相互耦合,B测试环境切换导致我方测试环境需要更改后台服务器的响应配置.若多台服务器中有一台服务器没有更改配置,则在测试过程中将会出现问题.届时排查由于环境配置不统一引起的环境问题将会费时费力. 思考 测试环境之间的关联配置就是hosts的配置,我们只需要知道A测试环境中各个服务器上的hosts文件中配置的B环境的hosts是否一致即可得出结论. 解决方案 在A测试环境服务器端各个机器的根目录下均安放hosts检查脚本hosts_check.py,内容如下: #!/

linux安全配置检查项

1.查看系统口令长度.强度检查 查看系统口令长度 cat /etc/login.defs PASS_MIN_LEN=8 #设定最小用户密码长度为8 越大越好 查看系统口令强度 cat /etc/pam.d/system-auth password required /lib/security/$ISA/pam_cracklib.so retry=3 minlen=9 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 从上面使用pam_cracklib.so的

linux个性化配置初始化脚本

#!/bin/bash #==================================================== # Author: Mr.Song # Create Date: 2018-11-16 # Description: #==================================================== ######################################################## #bash配置 cat >>

Linux系统检查脚本

一.背景 对登录一个系统,快速查看其系统信息,检查系统各项指标及参数,编写系统快速检查脚本,输出系统信息到脚本运行的logs目录下. 二.脚本 git地址 #!/bin/bash # auth:kaliarch # func:sys info check # version:v1.0 # sys:centos6.x/7.x [ $(id -u) -gt 0 ] && echo "请用root用户执行此脚本!" && exit 1 sysversion=$

linux系统负载状态检查脚本

为了便于分析问题,编写了一个linux状态检查脚本,脚本可放置任意目录,脚本执行检测后会输出日志记录到当前目录下.直接执行脚本可用于一次检测,可通过日志进行分析.如果需要长时间监测,可执行-x参数,脚本会自动增加计划任务,并将日志输出到/tmp目录下.如果需要删除计划任务,可执行-xx参数. 脚本下载地址: wget http://jinxiang.oss-cn-hangzhou.aliyuncs.com/vmstatuscheck.sh #使用方法:  #例:./vmstatuscheck.s

Linux生产服务器Shell脚本分享

Linux生产服务器Shell脚本分享 2012-6-6 86市场网 linux 作为一名Linux/unix系统管理员,我经常遇到人问这个问题:shell能做什么?PHP这么强大,为什么不用PHP来完成工作呢?其实相对于PHP这些开发语言而言,shell主要用于数据库备份(SVN备份).计划任务(crontab).服务状态监控.FTP远程备份等.对于这些任务,shell的强大是大家都公认的,这也是每一个Linux/unix系统管理员的基本之一.现在在Windows 2008里也出现了Power

Linux安装配置apache

Linux安装配置apache 1.获取软件: http://httpd.apache.org/  httpd-2.2.21.tar.gz 2.安装步骤: 解压源文件: 1 tar zvxf httpd-2.2.21.tar.gz 2 cd httpd-2.2.213 ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite 4 make5 make install 运行./configure 命令进行编译源代码,

小麦苗健康检查脚本说明

小麦苗健康检查脚本说明 第一章 小麦苗健康检查脚本特点 小麦苗健康检查脚本有如下的特点: 1. 绿色版.免安装.纯SQL文本 2. 跨平台,只要有SQL*Plus环境即可运行 3. 兼容Oracle 10g.11g及12c版本 4. 一次购买,终身免费升级 5. 检查内容非常全面 6. 脚本可视化,可以看到脚本内容,因此可供学习使用 7. 只有1个SQL脚本,不存在嵌套调用等其它问题 8. 生成html文件的健康检查结果 9. 对结果进行过滤,列出了数据库有问题的内容   第二章 小麦苗健康检查

Linux下定时执行脚本(转自Decode360)

文章来自:http://www.blogjava.net/decode360/archive/2009/09/18/287743.html Decode360's Blog  老师(业精于勤而荒于嬉 QQ:150355677 MSN:[email protected]) 菜鸟表示不会写shell脚本,但还是能够看懂的,昨天因为传了太多数据,结果namenode进入了safe mode,然后小伙伴赶紧就暂停了每天早晨4点自动执行的数据合并压缩和传输的脚本,今天我自己准备改,才发现这篇博文. 先说说