windows基线编写指南-powershell版

前言:

  因为工作的原因,要写windows下的基线检查脚本。之前没接触过,在网上找了半天也没找到现成的,无奈只好自己研究,最后还是成功完成了工作。

在我编写之后发现windows下的基线基本就是检查注册表表项。但也有例外。windows组策略有些并不存在于注册表中,那么就要用到组策略命令行工具secedit

在powershell中获取secedit用法

举个例子:如果需要对审核策略进行检查,那我们的思路是先读取审核策略,然后判断是否符合策略,通过

secedit /export /cfg config.cfg /quiet

读取组策略到该目录下的config.cfg文件中,截取一部分config.cfg文件如下

那么我们只需知道这里面的参数名和对应的值所代表的含义就能够编写检查脚本,我在网上找了一下关于参数的含义,只找到一篇,不过也够用了

[Unicode]
Unicode=yes
[System Access]
MinimumPasswordAge = 0    //密码最短留存期
MaximumPasswordAge = 42    //密码最长留存期
MinimumPasswordLength = 0    //密码长度最小值
PasswordComplexity = 0    //密码必须符合复杂性要求
PasswordHistorySize = 0    //强制密码历史 N个记住的密码
LockoutBadCount = 5    //账户锁定阈值
ResetLockoutCount = 30    //账户锁定时间
LockoutDuration = 30    //复位账户锁定计数器
RequireLogonToChangePassword = 0 *下次登录必须更改密码
ForceLogoffWhenHourExpire = 0    *强制过期
NewAdministratorName = "Administrator" *管理员账户名称
NewGuestName = "Guest"    *来宾账户名称
ClearTextPassword = 0
LSAAnonymousNameLookup = 0
EnableAdminAccount = 1    //administrator是否禁用
EnableGuestAccount = 0    //guest是否禁用
[Event Audit]
AuditSystemEvents = 3    //审核系统事件 成功、失败
AuditLogonEvents = 3    //审核登录事件 成功、失败
AuditObjectAccess = 3    //审核对象访问 成功、失败
AuditPrivilegeUse = 2    //审核特权使用 失败
AuditPolicyChange = 3    //审核策略更改 成功、失败
AuditAccountManage = 3    //审核账户管理 成功、失败
AuditProcessTracking = 2    //审核过程追踪 失败
AuditDSAccess = 2    //审核目录服务访问 失败
AuditAccountLogon = 3    //审核账户登录事件 成功、失败

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

本文来自 yongping8204 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/yongping8204/article/details/7471627?utm_source=copy 

那么现在就简单了,如果我们审核账户登录事件的标准策略为失败。那么只要AuditAccountLogon = 2就满足策略标准了

代码如下:

 $config = Get-Content -path config.cfg
 for ($i=0; $i -lt $config.Length; $i++)
 {
    $config_line = $config[$i] -split "="
    if(($config_line[0] -eq "AuditAccountLogon "))
    {
        $config_line[1] = $config_line[1].Trim(‘ ‘)
        if($config_line[1] -eq "2")
        {
            $projectdata = @{"msg"="审核账户登录事件策略符合标准";}
            $data[‘project‘]+=$projectdata
        }
        else
        {
            $projectdata = @{"msg"="审核账户登录事件策略不符合标准";}
            $data[‘project‘]+=$projectdata
        }
    }
}

而不在secedit组策略中的基线要求可以读注册表,这里很简单,先百度一下该策略所在的注册表的位置,使用powershell读取注册表,判断是否符合标准即可。

举个例子:

#安全日志查看器大小设置
$Key = ‘HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Security‘
$name = "MaxSize"
$config = (Get-ItemProperty -Path "Registry::$Key" -ErrorAction Stop).$name
if($config -ge "8192")
        {
            $projectdata = @{"msg"="安全日志查看器大小设置策略符合标准";}
            $data[‘project‘]+=$projectdata
        }
else
        {
            $projectdata = @{"msg"="安全日志查看器大小设置策略不符合标准";}
            $data[‘project‘]+=$projectdata
        }

除了windows之外还有windows下中间件基线脚本的编写,思路比较清楚。

无非就是读取配置文件,通过正则匹配确认策略是否符合标准。

或是通过Test-Path判断是否存在敏感目录或文件:

if(Test-Path %systemroot%\system32\inetsrv\iisadmpwd){
        $projectdata = @{"msg"="删除风险实例文件%systemroot%\system32\inetsrv\iisadmpwd策略不符合标准";}
        $data[‘project‘]+=$projectdata
}

原文地址:https://www.cnblogs.com/escape-w/p/9688103.html

时间: 2024-08-29 20:33:49

windows基线编写指南-powershell版的相关文章

微软发布 Windows Server 2016 预览版第三版,开发者要重点关注Nano Server

微软已经发布 Windows Server 2016 和 System Center 2016 第三个技术预览版,已经提供下载.Windows Server 2016 技术预览版第三版也是首个包括了容器技术的支持的版本,也提供了 Nano Server 和数据中心增强的功能. Windows Server 容器是微软和 Docker 合作的,开发者可以通过隔离操作系统环境的方式来运行应用.Windows Server 容器是 Docker 开源计划的一部分,容器可以通过 PowerShell 或

Windows 10 IoT Core 正式版进阶体验

本文接上一篇`Windows 10 IoT Core 正式版初体验`,着重介绍一下,如何使用ssh和powershell或者web方式操作Windows 10 IoT Core,并且给予Windows 10 IoT Core的软件开发. 远程连接 **ssh方式** 保证个人PC和树莓派2在一个网段,使用PuTTY可以直接连接服务器, 默认用户名Administrator,密码[email protected]. 详细的命令行命令可以从这里查阅 **powershell方式** 保证个人PC和树

Windows API 学习指南

1.WindowsAPI开发入门2.Windows数据类型3.Windows数据类型与WindowsAPI函数4.Windows数据结构5.将系统目录信息写入文件6.窗口创建以及消息处理7.使用对话框资源创建窗口8.使用MFC创建对话框窗口9.宽字符10.三种版本11.字符转换12.遍历卷13.驱动器属性14.磁盘容量15.文件操作的四种方法16.文件操作(一)17.文件操作(二)18.目录操作(一)19.目录操作(二)20.目录操作(三)21.文件属性和时间22.内存映射文件23.系统信息(一

Windows Server 2016-WinSer 2016标准版与数据中心版的区别

今天在整理文章的时候看到有读者问到他现在的测试环境是用的Windows Server 2016标准版,和我现阶段系列文章的环境是否有区别. 其实针对Windows Server 2016 Active Directory这一模块新增功能我们在之前有提到的,请参考第二章节"Windows Server 2016-WinSer2016 ActiveDirectory新增功能"http://blog.51cto.com/wenzhongxiang/2071659 ). 本章针对Windows

Windows 10 技术预览版抢先体验

Windows 10 是微软公司新一代操作系统,即传说中的Windows Threshold,NT内核为6.4.该系统于2014年9月30日(美国东部时间, 北京时间2014年10月1日)发布开技术预览版.北京时间10月2日凌晨开放下载技术预览版[1] .该操作系统可能会是微软的最后一款操作系统(即不再有大更新). Windows 10正式版将于2015年发布,将涵盖PC.平板电脑.手机.XBOX和服务器端,芯片类型将涵盖Intel.AMD和ARM[2] . 上面文字引述百度百科内容. ====

(转载)HTML Email 编写指南

原文地址 今天,我想写一个"低技术"问题. 话说我订阅了不少了新闻邮件(Newsletter),比如JavaScript Weekly.每周收到一封邮件,了解本周的大事. 有一天,我就在想,是不是我也能做一个这样的邮件? 然后,就发现这事不那么容易.抛开后台和编辑工作,单单是设计一个Email样板,就需要不少心思. 因为这种带格式的邮件,其实就是一张网页,正式名称叫做HTML Email.它能否正常显示,完全取决于邮件客户端.大多数的邮件客户端(比如Outlook和Gmail),会过滤

Windows 10 IoT Core 正式版初体验

今天收到Windows 10 IoT Core Team邮件,Windows 10 IoT Core正式发布. 以下记录了今天在Raspberry Pi 2上的体验过程: 准备工作 一台运行着正版Windows 10且版本不小于10240的个人PC Visual Studio 2015 版本不小于14.0.23107.0 D14Rel Install Visual Studio Community 2015 Visual Studio Tools for Universal Windows Ap

在windows下编写R程序包

每个R的使用者总会遇到这样的问题,用R时间长了攒了几个自己写的函数需要经常调用,用source命令调用感觉不够方便,最好怎么办呢?编一个自己的包,只需安装一次就可多次调用,方便自己和他人使用.我把自己制作R包的步骤记了下来,主要参考了统计之都的一篇帖子(http://cos.name/cn/topic/15991)和<Creating R Packages: A Tutorial>中的部分内容,对一些过时的东西做了更正,以供大家参考吧. 在windows下编写R程序包

虚拟机安装 Windows 10 9926 预览版 “准备就绪”...... 故障

用VMwarestation 11安装Windows 10 9926预览版,可能重启后会一直停在"准备就绪" 解决方法: 增加虚拟机的CPU个数和内存数.笔者增加到6个CPU.4G内存.