脚本环境:RHEL6.*

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

代码部分:

#! /bin/bash
cat <<EOF
*************************************************************************
linux安全配置扫描脚本:
. 输出结果也可以在当前目录的out.txt中查看
. 检查范围:
-》账号策略检查
-》账号注销检查
-》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 -a $passmax -gt ];then
echo " [OK]口令生存周期为${passmax}天,符合要求" >> out.txt
else
echo " [ X ] 口令生存周期为${passmax}天,不符合要求,建议设置不大于90天" >> out.txt
fi
if [ $passmin -ge ];then
echo " [OK]口令更改最小时间间隔为${passmin}天,符合要求" >> out.txt
else
echo " [ X ] 口令更改最小时间间隔为${passmin}天,不符合要求,建议设置大于等于6天" >> out.txt
fi
if [ $passlen -ge ];then
echo " [OK]口令最小长度为${passlen},符合要求" >> out.txt
else
echo " [ X ] 口令最小长度为${passlen},不符合要求,建议设置最小长度大于等于8" >> out.txt
fi
if [ $passage -ge -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 -a $TMOUT -ge ] ; 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 > /dev/null`
if [ $? -eq ];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 ];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=
for i in $UIDS
do
if [ $i = ];then
flag=
fi
done
if [ $flag != ];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= for i in $umask1
do
if [ $i = "" ];then
flags=
fi
done
if [ $flags = ];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= for i in $umask2
do
if [ $i = "" ];then
flags=
fi
done
if [ $flags = ];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= for i in $umask3
do
if [ $i = "" ];then
flags=
fi
done
if [ $flags = ];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 [ $? = ];then
#soft=`cat /etc/security/limits.conf| grep -V ^# | grep core | awk {print $}`
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 ""

执行结果:

[root@localhost ~]# ./linuxCheck.sh
*************************************************************************
linux安全配置扫描脚本:
. 输出结果也可以在当前目录的out.txt中查看
. 检查范围:
-》账号策略检查
-》账号注销检查
-》GRUB密码检查
-》LILO密码检查
-》非root账号但UID为0的用户检查
-》/etc/profile中umask默认值检查
-》/etc/csh.cshrc中umask默认值检查
-》/etc/bashrc中umask默认值检查
-》重要文件权限检查
-》内核文件dump配置检查 ************************************************************************* [] 账号策略检查中...
...
check over [] 账号注销检查中...
...
check over [] GRUB密码检查中...
...
check over [] LILO密码检查中...
...
check over [] 非root账号但UID为0的用户检查中...
...
check over [] /etc/profile中umask默认值检查中...
...
check over [] /etc/csh.cshrc中umask默认值检查中...
...
check over [] /etc/bashrc中umask默认值检查中...
...
check over [] 重要文件权限检查中...
ls: cannot access /etc/xinetd.conf: No such file or directory
ls: cannot access /etc/lilo.conf: No such file or directory
...
check over [] 内核文件dump配置检查中...
* soft core
...
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 ]已经设置
[ √ ] 内核文件dump配置检查[* hard core ]已经设置 --------------------------------------------------------------------------

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

  1. linux安全配置检查脚本_v0.5

    看到网上有人分享了一些linux系统的基线检查脚本,但有些检查项未必适合自己或者说检查的不够完善, 计划按着自己的需求重新写一份出来,其中脚本的检查范围在不断更新中. 脚本内容: [root@loca ...

  2. Linux安全基线检查脚本

    基线检查内容: 一:共享账号检查 配置名称:用户账号分配检查,避免共享账号存在配置要求:1.系统需按照实际用户分配账号; 2.避免不同用户间共享账号,避免用户账号和服务器间通信使用的账号共享.操作指南 ...

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

    [本文出自天外归云的博客园] 问题 由于A测试环境和B测试环境相互耦合,B测试环境切换导致我方测试环境需要更改后台服务器的响应配置.若多台服务器中有一台服务器没有更改配置,则在测试过程中将会出现问题. ...

  4. linux系统健康检查脚本

    #!/bin/bash echo "You are logged in as `whoami`"; if [ `whoami` != root ]; then echo " ...

  5. linux 安装配置kafka脚本

    安装脚本 #!/bin/bash # auto install kafka echo "========= Start to install kafka ==============&quo ...

  6. Linux CPU 核数检查脚本

    #!/bin/bash physicalNumber=0 coreNumber=0 logicalNumber=0 HTNumber=0 logicalNumber=$(grep "proc ...

  7. linux 安装配置zookeeper脚本

    #!/bin/bash # automatic install zookeeper echo "========= Start to install zookeeper ========== ...

  8. linux安装配置JDK脚本

    #!/bin/bash # install jdk and configuring environment variables function installjdk(){ tar -zxf jdk- ...

  9. linux各版本基线检查脚本(centos6、centos7、ubuntu系列)

    以下是centos7基线检查脚本: #!/bin/bash #version v1. by pensar #操作系统linux 配置规范--centos7 cat <<EOF ****** ...

随机推荐

  1. linux 学习笔记 软件包管理

    >查询文件所属软件包 #rpm -qf /usr/share/pixmaps/xplns.png 查询某个文件所属软件包 >查询软件包所包含文件列表 #rpm -ql xplus-3.3. ...

  2. XamarinAndroid组件教程设置自定义子元素动画(二)

    XamarinAndroid组件教程设置自定义子元素动画(二) (9)打开MainActivity.cs文件,为RecylerView的子元素设置添加和删除时的透明动画效果.代码如下: …… usin ...

  3. UVA 12108 Extraordinarily Tired Students

    思路: ①用结构体stu,属性有清醒时间,睡眠时间,开始处于的时间,状态(醒着还是睡着), 还有计数器. ②二维数组存表格. ③在确定接下来要进入的状态之后,就一次把表格里持续状态的数据都修改掉,比如 ...

  4. Java笔记(十五) 并发包

    并发包 Java中还有一套并发工具包,位于包java.util.concurrent下,里面包括很多易用 且很多高性能的并发开发工具. 一.原子变量和CAS 为什么需要原子变量,因为对于例如count ...

  5. Stm32常见英文缩写

    Stm32常见英文缩写 https://wenku.baidu.com/view/4b9c2eee5022aaea998f0f5b.html STM32嵌入式开发常见缩写 https://wenku. ...

  6. 更改pip安装源的镜像解决安装总是timeout的情况(pip 豆瓣镜像源)

    由于国外的pip源总是由于各种原因不能被访问或者网速过慢,而造成的timeout错误 解决方法是修改pip的配置文件(如果没有配置文件在相应的地方新建,配置文件的路径和名字参考这里),设置安装包时候访 ...

  7. 04 树莓派截图软件scrot的安装和使用

    2017-08-22 13:52:52 sudo apt-get install scrot 捕捉活动窗口(按下回车后,3秒之内点击要捕捉的窗口): scrot -d 3 -u 捕捉选定的区域(按下回 ...

  8. Cow Acrobats [POJ3045] [贪心]

    Description 农夫的N只牛(1<=n<=50,000)决定练习特技表演. 特技表演如下:站在对方的头顶上,形成一个垂直的高度. 每头牛都有重量(1 <= W_i <= ...

  9. js将时间戳格式化为HH:ii:ss的格式

    将时间戳格式化为 HH:ii:ss的格式 <html> <head> </head> <body> <span id="time&quo ...

  10. Java 深复制和浅复制

    浅复制是指复制对象时仅仅复制对象本身(包括对象中的基本变量),而不复制对象包含的引用指向的对象.深复制不仅复制对象本身,而且复制对象包含的引用指向的对象. 复制对象时需要调用Object类的clone ...