代码编织梦想

安全基线检查
扫描用户和时间:
user_id=whoami
echo “当前扫描用户:${user_id}”

scanner_time=date '+%Y-%m-%d %H:%M:%S'
echo “当前扫描时间:${scanner_time}”
echo “***************************”
echo “账号策略检查中…”
echo “***************************”
#项目1:帐号与口令-用户口令设置
#合格:Y;不合格:N
#不合格地方
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 p a s s m a x − g t 0 ] ; t h e n e c h o " Y : 口 令 生 存 周 期 为 passmax -gt 0 ];then echo "Y:口令生存周期为 passmaxgt0];thenecho"Y:{passmax}天,符合要求"
else
echo “N:口令生存周期为${passmax}天,不符合要求,建议设置不大于90天”
fi

if [ p a s s m i n − g e 6 ] ; t h e n e c h o " Y : 口 令 更 改 最 小 时 间 间 隔 为 passmin -ge 6 ];then echo "Y:口令更改最小时间间隔为 passminge6];thenecho"Y:{passmin}天,符合要求"
else
echo “N:口令更改最小时间间隔为${passmin}天,不符合要求,建议设置大于等于6天”
fi
if [ p a s s l e n − g e 8 ] ; t h e n e c h o " Y : 口 令 最 小 长 度 为 passlen -ge 8 ];then echo "Y:口令最小长度为 passlenge8];thenecho"Y:{passlen},符合要求"
else
echo “N:口令最小长度为${passlen},不符合要求,建议设置最小长度大于等于8”
fi

if [ $passage -ge 30 -a $passage -lt p a s s m a x ] ; t h e n e c h o " Y : 口 令 过 期 警 告 时 间 天 数 为 passmax ];then echo "Y:口令过期警告时间天数为 passmax];thenecho"Y:{passage},符合要求"
else
echo "N:口令过期警告时间天数为KaTeX parse error: Expected 'EOF', got '#' at position 41: …0并小于口令生存周期" fi #̲项目2:帐号与口令-root用…(cat /etc/ssh/sshd_config | grep -v ^# |grep “PermitRootLogin no”)
if [ $? -eq 0 ];then
echo “Y:已经设置远程root不能登陆,符合要求”
else
echo “N:已经设置远程root能登陆,不符合要求,建议/etc/ssh/sshd_config添加PermitRootLogin no”
fi
#编号:SBL-Linux-02-01-03
#项目:帐号与口令-检查是否存在除root之外UID为0的用户
#合格:Y;不合格:N
#不合格地方
#查找非root账号UID为0的账号
echo “SBL-Linux-02-01-03:”
UIDS=awk -F[:] 'NR!=1{print $3}' /etc/passwd
flag=0
for i in $UIDS
do
if [ $i = 0 ];then
echo “N:存在非root账号的账号UID为0,不符合要求”
else
flag=1
fi
done
if [ $flag = 1 ];then
echo “Y:不存在非root账号的账号UID为0,符合要求”
fi

more /etc/securetty

#检查是否有下列行:
#pts/x(x为一个十进制整数)
#more /etc/ssh/sshd_config
#检查下列行设置是否为no并且未被注释:
#PermitRootLogin
#不存在pts/x则禁止了telnet登录,PermitRootLogin no禁止了ssh登录,符合以上条件>则禁止了root远程登录,符合安全要求,否则低于安全要求。
##!/bin/bash
SSHSTATUS=ps -ef|grep -i sshd|grep -v grep|wc -l
if [ x" S S H S T A T U S " ! = " x 0 " ] ; t h e n i f [ [ ‘ g r e p " P e r m i t R o o t L o g i n n o " / e t c / s s h / s s h d c o n f i g ∣ w c − l ‘ ! = 0 ] ] ; t h e n g r e p " P e r m i t R o o t L o g i n n o " / e t c / s s h / s s h d c o n f i g ; e c h o " T h i s d e v i c e d o e s n o t p e r m i t r o o t t o s s h l o g i n , c h e c k r e s u l t : t r u e " ; e l s e e c h o " T h i s d e v i c e p e r m i t s r o o t t o s s h l o g i n , c h e c k r e s u l t : f a l s e " ; f i e l s e e c h o " T h e s s h s e r v i c e o f d e v i c e i s n o t r u n n i n g , c h e c k r e s u l t : t r u e " ; f i T E L S T A T U S = ‘ n e t s t a t − a n t ∣ g r e p " : 23   " ∣ w c − l ‘ i f [ x " SSHSTATUS" != "x0" ]; then if [[ `grep "^PermitRootLogin no" /etc/ssh/sshd_config|wc -l` != 0 ]]; then grep "^PermitRootLogin no" /etc/ssh/sshd_config; echo "This device does not permit root to ssh login,check result:true"; else echo "This device permits root to ssh login,check result:false" ; fi else echo "The ssh service of device is not running,check result:true"; fi TELSTATUS=`netstat -ant|grep ":23\>"|wc -l` if [ x" SSHSTATUS"!="x0"];thenif[[grep"PermitRootLoginno"/etc/ssh/sshdconfigwcl!=0]];thengrep"PermitRootLoginno"/etc/ssh/sshdconfig;echo"Thisdevicedoesnotpermitroottosshlogin,checkresult:true";elseecho"Thisdevicepermitsroottosshlogin,checkresult:false";fielseecho"Thesshserviceofdeviceisnotrunning,checkresult:true";fiTELSTATUS=netstatantgrep":23"wclif[x"TELSTATUS" != “x0” ];
then if ([ -f /etc/securetty ] && [ grep -i "^pts" /etc/securetty|wc -l = 0 ]);
then echo “This device does not permit root to telnet login,check result:true”;
else echo “This device permits root to telnet login,check result:false”;
fi
else echo “The telnet service of device is not running,check result:true” ;
fi
#项目3:帐号与口令-root用户环境变量的安全性
#合格:Y;不合格:N
#不合格地方
#检查目录权限是否为777
echo “SBL-Linux-02-01-05:”
dirPri=$(find $(echo KaTeX parse error: Double superscript at position 15: PATH | tr ':' '̲ ') -type d \( …dirPri" ]
then
echo “Y:目录权限无777的,符合要求”
else
echo “N:文件KaTeX parse error: Expected 'EOF', got '#' at position 31: …7的,不符合要求。" fi #̲项目4:帐号与口令-远程连接的…(find / -xdev -mount -name .netrc -print)
if [ -z “ f i l e N e t r c " ] ; t h e n e c h o " Y : 不 存 在 . n e t r c 文 件 , 符 合 要 求 " e l s e e c h o " N : 存 在 . n e t r c 文 件 , 不 符 合 要 求 " f i f i l e R h o s t s = ‘ f i n d / − x d e v − m o u n t − n a m e . r h o s t s − p r i n t ‘ i f [ − z " {fileNetrc}" ];then echo "Y:不存在.netrc文件,符合要求" else echo "N:存在.netrc文件,不符合要求" fi fileRhosts=`find / -xdev -mount -name .rhosts -print` if [ -z " fileNetrc"];thenecho"Y:.netrc"elseecho"N:.netrc"fifileRhosts=find/xdevmountname.rhostsprintif[z"fileRhosts” ];then
echo “Y:不存在.rhosts文件,符合要求”
else
echo “N:存在.rhosts文件,不符合要求”
fi
#项目5:帐号与口令-用户的umask安全配置
#合格:Y;不合格:N
#不合格地方
#检查umask设置
echo “SBL-Linux-02-01-07:”
umask1=cat /etc/profile | grep umask | grep -v ^# | awk '{print $2}'
umask2=cat /etc/csh.cshrc | grep umask | grep -v ^# | awk '{print $2}'
umask3=cat /etc/bashrc | grep umask | grep -v ^# | awk 'NR!=1{print $2}'
flags=0
for i in $umask1
do
if [ i ! = " 027 " ] ; t h e n e c h o " N : / e t c / p r o f i l e 文 件 中 所 所 设 置 的 u m a s k 为 i != "027" ];then echo "N:/etc/profile文件中所所设置的umask为 i!="027"];thenecho"N:/etc/profileumask{i},不符合要求,建议设置为027”
flags=1
break
fi
done
if [ f l a g s = = 0 ] ; t h e n e c h o " Y : / e t c / p r o f i l e 文 件 中 所 设 置 的 u m a s k 为 flags == 0 ];then echo "Y:/etc/profile文件中所设置的umask为 flags==0];thenecho"Y:/etc/profileumask{i},符合要求"
fi
flags=0
for i in $umask2
do
if [ i ! = " 027 " ] ; t h e n e c h o " N : / e t c / c s h . c s h r c 文 件 中 所 所 设 置 的 u m a s k 为 i != "027" ];then echo "N:/etc/csh.cshrc文件中所所设置的umask为 i!="027"];thenecho"N:/etc/csh.cshrcumask{i},不符合要求,建议设置为027"
flags=1
break
fi
done
if [ f l a g s = = 0 ] ; t h e n e c h o " Y : / e t c / c s h . c s h r c 文 件 中 所 设 置 的 u m a s k 为 flags == 0 ];then echo "Y:/etc/csh.cshrc文件中所设置的umask为 flags==0];thenecho"Y:/etc/csh.cshrcumask{i},符合要求"
fi
flags=0
for i in $umask3
do
if [ i ! = " 027 " ] ; t h e n e c h o " N : / e t c / b a s h r c 文 件 中 所 设 置 的 u m a s k 为 i != "027" ];then echo "N:/etc/bashrc文件中所设置的umask为 i!="027"];thenecho"N:/etc/bashrcumask{i},不符合要求,建议设置为027"
flags=1
break
fi
done
if [ f l a g s = = 0 ] ; t h e n e c h o " Y : / e t c / b a s h r c 文 件 中 所 设 置 的 u m a s k 为 flags == 0 ];then echo "Y:/etc/bashrc文件中所设置的umask为 flags==0];thenecho"Y:/etc/bashrcumask{i},符合要求"
fi
#项目6:文件系统-重要目录和文件的权限设置
#合格:Y;不合格:N
#不合格地方
echo “SBL-Linux-02-02-01:” >> “/tmp/${ipadd}_checkResult.txt”
echo “***************************”
echo “检查重要文件权限中…”
echo “***********************"
file1=ls -l /etc/passwd | awk '{print $1}'
file2=ls -l /etc/shadow | awk '{print $1}'
file3=ls -l /etc/group | awk '{print $1}'
file4=ls -l /etc/securetty | awk '{print $1}'
file5=ls -l /etc/services | awk '{print $1}'
#检测文件权限为400的文件
if [ $file2 = “-r--------” ];then
echo “Y:/etc/shadow文件权限为400,符合要求”
else
echo “N:/etc/shadow文件权限不为400,不符合要求,建议设置权限为400”
fi
#检测文件权限为600的文件
if [ $file4 = “-rw-------” ];then
echo “Y:/etc/security文件权限为600,符合要求”
else
echo “N:/etc/security文件权限不为600,不符合要求,建议设置权限为600”
fi
#检测文件权限为644的文件
if [ $file1 = “-rw-r–r--” ];then
echo “Y:/etc/passwd文件权限为644,符合要求”
else
echo “N:/etc/passwd文件权限不为644,不符合要求,建议设置权限为644”
fi
if [ $file5 = “-rw-r–r--” ];then
echo “Y:/etc/services文件权限为644,符合要求”
else
echo “N:/etc/services文件权限不为644,不符合要求,建议设置权限为644”
fi
if [ KaTeX parse error: Can't use function '\(' in math mode at position 146: …edfile=`find / \̲(̲ -perm -04000 -…{unauthorizedfile}设置了SUID/SGID,请检查是否授权"
#项目7:文件系统-检查任何人都有写权限的目录
#合格:Y;不合格:N;检查:C
#不合格地方
echo “SBL-Linux-02-02-03:”
checkWriteDre=KaTeX parse error: Can't use function '\(' in math mode at position 30: …-mount -type d \̲(̲ -perm -0002 -a…{checkWriteDre}" ];then
echo “Y:不存在任何人都有写权限的目录,符合要求”
else
echo “N:KaTeX parse error: Expected 'EOF', got '#' at position 38: …以写,不符合要求" fi #̲项目8:文件系统-检查任何人都…(find / -xdev -mount -type f ( -perm -0002 -a ! -perm -1000 ))
if [ -z “ c h e c k W r i t e F i l e " ] ; t h e n e c h o " Y : 不 存 在 任 何 人 都 有 写 权 限 的 目 录 , 符 合 要 求 " e l s e e c h o " N : {checkWriteFile}" ];then echo "Y:不存在任何人都有写权限的目录,符合要求" else echo "N: checkWriteFile"];thenecho"Y:"elseecho"N:{checkWriteFile}目录任何人都可以写,不符合要求”
fi
#项目9:文件系统-检查异常隐含文件
#合格:Y;不合格:N;检查:C
#不合格地方
echo “SBL-Linux-02-02-05:”
hideFile=KaTeX parse error: Can't use function '\(' in math mode at position 22: …/ -xdev -mount \̲(̲ -name "..*" -o…{hideFile}” ];then
echo “Y:不存在隐藏文件,符合要求”
else
echo “N:KaTeX parse error: Expected 'EOF', got '#' at position 29: …文件,建议审视" fi #̲项目10:日志审计-syslo…{recodeFile}” ];then
logFile=KaTeX parse error: Expected group after '^' at position 33: …conf | grep -V ^̲# | grep authpr…{logFile}" ];then
echo “Y:存在保存authpirv的日志文件”
else
echo “N:不存在保存authpirv的日志文件”
fi
else
echo “N:不存在/etc/syslog.conf文件,建议对所有登录事件都记录”
fi
#项目11:系统文件-检查日志审核功能是否开启
#合格:Y;不合格:N;检查:C
echo “SBL-Linux-03-01-02:”
auditdStatus=$(service auditd status )
if [ $? = 0 ];then
echo “Y:系统日志审核功能已开启,符合要求”
fi
if [ KaTeX parse error: Expected 'EOF', got '#' at position 71: …td start开启" fi #̲项目12:系统文件-系统cor…(cat /etc/security/limits.conf | grep -V ^# | grep core)
if [ $? -eq 0 ];then
soft=(cat /etc/security/limits.conf | grep -V ^# | grep core | awk {print $2})
for i in s o f t d o i f [ " soft do if [ " softdoif["i"x = "soft"x ];then
echo "Y:
soft core 0 已经设置"
fi
if [ "$i"x = "hard"x ]
then
echo "Y:
hard core 0 已经设置"
fi
done
else
echo "N:没有设置core,建议在/etc/security/limits.conf中添加
soft core 0和
hard core 0”
fi
#项目13:系统文件-检查磁盘动态空间,是否大于等于80%
#合格:Y;不合格:N;检查:C

echo “SBL-Linux-04-01-02:”
space=$(df -h | awk -F “[ %]+” ‘NR!=1{print $5}’)
for i in $space
do
if [ $i -ge 80 ];then
echo “C:警告!磁盘存储容量大于80%,建议扩充磁盘容量或者删除垃圾文件”
fi
done
执行脚本过程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/weixin_51167520/article/details/111060514

Centos7部署ELK-爱代码爱编程

Centos7部署ELK7.8.0 ###下载7.8.0 https://mirrors.huaweicloud.com/filebeat/7.8.0/filebeat-7.8.0-linux-x86_64.tar.gz https://mirrors.huaweicloud.com/logstash/7.8.0/logstash-7

vmware流程以及修改默认语言-爱代码爱编程

安装vmware的流程 以及修改默认语言 1.下载vware的安装包 选择一个下载源,这里提供一个西西园的地址https://www.cr173.com/soft/68480.html 2.安装vmware 下载后选择安装到某个磁盘文件夹 到这一步安装出现的问题几乎没有,安装镜像的时候会出现问题,稍后再说 3.下载想要安装的系统的ios镜像

Linux 后台运行python代码-爱代码爱编程

有时候我们需要花比较长时间的跑python程序时,可以考虑后台运行代码。 例如:在nlp领域中,往往需要花比较长的时间需训练一个模型,而通过远程工具连接Linux服务器跑python代码,如果中途关闭shell远程工具,正在运行的python代码就会终止,这时,可以通过使用后台运行python程序的方式,设置输出log保存文件,关闭shell远程工具

shell expect脚本使用ssh遍历配置文件进行远程登录执行命令-爱代码爱编程

参数说明: set:可以设置超时,也可以设置变量timeout:expect超时等待时间,默认10Sspawn:执行一个命令expect “”:匹配输出的内容exp_continue:继续执行下面匹配\r:可以理解为回车$argc:统计位置参数数量[lindex argv0]:脚本后第一个参数,类似于shell中argv0]:脚本后第一个参数,类似于sh

盘点腾讯后台开发各级工程师(T1-T9)需要具备哪些能力-爱代码爱编程

作为一个程序员,不管是初入职场的菜鸟还是做开发多年的老鸟,都希望有机会能进大厂,最近有不少小伙伴问腾讯好不好进?需要的技术栈是怎么样的?本文就给大家普及一下腾讯后台开发各级工程师(T1-T9)需要具备哪些能力 ? 下图是腾讯后台开发技术栈总览,不同级别所需要具备的能力要求不一样,只有最高级的T9才是所有能力都需要具备的。 下面就详细介绍各职级需要具备的能力

【爱找茬】linux系统和windows系统,你找到了几处不同?-爱代码爱编程

什么是linux系统   Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。   Linux操作系统诞生于

vmware流程以及修改默认语言-爱代码爱编程

安装vmware的流程 以及修改默认语言 1.下载vware的安装包 选择一个下载源,这里提供一个西西园的地址https://www.cr173.com/soft/68480.html 2.安装vmware 下载后选择安装到某个磁盘文件夹 到这一步安装出现的问题几乎没有,安装镜像的时候会出现问题,稍后再说 3.下载想要安装的系统的ios镜像

Linux下文档类型转PDF乱码解决方式-爱代码爱编程

项目场景:     在Linux系统下进行文本类型转PDF时出现乱码。 问题描述:     Linux系统未安装指定的字体导致文本文件乱码。 解决方案: 1、安装fontconfig 安装命令: yum –y install fontconfig 2、在/usr/share/fonts目录下新建一个目录chinese 操作命令: cd /u

Linux初学总结(一)-爱代码爱编程

linux命令 [wxrj@wxrj-linux 桌面]$ cd //当前用户的目录 [wxrj@wxrj-linux ~]$ //创建文件夹 mkdir 文件夹名称 [wxrj@wxrj-linux ~]$ mkdir test //创建文件 touch 文件名称 [wxrj@wxrj-linux ~]$ touch test.txt [wxrj@wx

KVM [ 3 ] --- KVM虚拟机管理:virsh命令,kvm虚拟机添加内存,添加硬盘-爱代码爱编程

文章目录 创建 kvm 的虚拟机流程KVM虚拟机管理一、virsh 管理虚拟机1 列出正则运行中的虚拟机2 列出所有的虚拟机3 查看指定虚拟机的元数据信息4 查看指定虚拟机的 IP 地址5 启动虚拟机6 正常关闭虚拟机7 强制关闭虚拟机,相当于拔掉电源8 重启虚拟机9 从一个 xml 文件定义一个虚拟机10 取消定义一个虚拟机二、给kvm虚拟机添加

CentOS 6.5 安装JDK环境以及Could not find or load main class报错解决-爱代码爱编程

CentOS 6.5 安装JDK 上传jdk到linux系统(使用SecureFX直接拖动上传) 创建一个jdkhome 目录用于保存解压后的jdk 在 /home/xzr/ 目录下创建一个 jdkhome 目录 解压JDK压缩包 把 Uploads 目录下的JDK压缩包解压(当文件名比较长时,可以输入文件名的前几个名称再按下Tab键,系统会自动

Centos 7.6 安装 docker-爱代码爱编程

安装yum-utils软件包(提供yum-config-manager 实用程序)并设置稳定的存储库。 $ sudo yum install -y yum-utils $ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/doc