前言:

  因为工作的原因,要写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
}

2019/11/26 update

把去年写的基线放在github上了

https://github.com/Echox1/windows_baseline

windows基线检测脚本编写指南-powershell版的更多相关文章

  1. Windows操作系统安全加固基线检测脚本

    一.背景信息 在我们的安全运维工作中经常需要进行安全基线配置和检查,所谓的安全基线配置就是系统的最基础的安全配置,安全基线检查涉及操作系统.中间件.数据库.甚至是交换机等网络基础设备的检查,面对如此繁 ...

  2. pyspider脚本编写指南

    注意,虽然在本文中会涉及调度策略等内容,但实际执行效果取决于具体策略实现. project 脚本分为不同的 project,不同的 project 之间的任务互相独立,建议为不同的站点建立不同的 pr ...

  3. 如何利用PowerShell完成的Windows服务器系统安全加固实践和基线检测

    0x00 前言简述 最近单位在做等保测评,由本人从事安全运维方面的工作(PS:曾经做过等保等方面的安全服务),所以自然而然的与信安的测评人员一起对接相关业务系统的检查,在做主机系统测评检查时发现了系统 ...

  4. 完整的WindowsServer服务器系统初始化配置、安全策略加固和基线检查脚本等保2.0适用

    转载自:https://www.bilibili.com/read/cv14326780?spm_id_from=333.999.0.0 0x00 前言简述 最近单位在做等保测评,由于本人从事安全运维 ...

  5. windows bat脚本编写

    windows批处理 (cmd/bat) 编程详解 开始之前先简单说明下cmd文件和bat文件的区别:在本质上两者没有区别,都是简单的文本编码方式,都可以用记事本创建.编辑和查看.两者所用的命令行代码 ...

  6. 编写 unix和 windows的 Scala 脚本

    编写 unix和 windows的 Scala 脚本 今天在看<Scala 编程>的时候看到附录了,里面提到了怎么在 unix 和 windows 下面编写 scala 脚本. 之前我也一 ...

  7. Ladon内网渗透扫描器PowerShell版

    程序简介 Ladon一款用于大型网络渗透的多线程插件化综合扫描神器,含端口扫描.服务识别.网络资产.密码爆破.高危漏洞检测以及一键GetShell,支持批量A段/B段/C段以及跨网段扫描,支持URL. ...

  8. CCleaner 垃圾文件清理规则 编写指南

    以下内容的英文版本来源于 CCleaner 官方论坛,仅供参考.欢迎大家编写并分享针对常用国产软件的垃圾文件清理规则!需要说明的是规则文件(Winapp2.ini)需和程序文件放于同一文件夹下,才能被 ...

  9. Web安全学习笔记之Nmap脚本编写

    0x00 Nmap脚本简介 夜无眠,看了一下Nmap官方的英文API文档(全是English),瞬间心态崩塌,不想吐槽它们的nmap官网前端太丑了=.=,但是都是大牛啊,挺敬佩开源开发者的. Nmap ...

随机推荐

  1. 【luogu AT3957】[AGC023F] 01 on Tree

    01 on Tree 题目链接:luogu AT3957 题目大意 有一棵根为 \(1\) 的树,每个节点有个值 \(0\) 或 \(1\). 然后每次你可以把一个没有父亲的点删除,然后把值放进一个数 ...

  2. 大数据开发-Spark Join原理详解

    数据分析中将两个数据集进行 Join 操作是很常见的场景.在 Spark 的物理计划阶段,Spark 的 Join Selection 类会根 据 Join hints 策略.Join 表的大小. J ...

  3. nginx实现文件上传和下载

    nginx实现文件上传和下载 发布时间:2020-06-05 16:45:27 来源:亿速云 阅读:156 作者:Leah 栏目:系统运维 这篇文章给大家分享的是nginx实现文件上传和下载的方法.小 ...

  4. 从 MFC 移植程序到 wxWidgets 界面库 ——《定时执行专家 5.0》的界面实现

    时隔十年的更新,最大的变化就是从 MFC 移植到 wxWidgets,界面也全部重现设计,图标也都进行了更换.wxWidgets(最新版  3.1.4,经典的开源.跨平台 C++ GUI类库)特有的 ...

  5. Docker项目demo

     Docker数据持久化 4.1 Volume (1)创建mysql数据库的container (2)查看volume (3)具体查看该volume docker volume inspect 485 ...

  6. cookie all in one

    cookie all in one credentials: "include" https://developers.google.com/web/updates/2015/03 ...

  7. CSP & CORS

    CSP & CORS 内容安全策略 跨域资源共享 CSP https://developers.google.com/web/fundamentals/security/csp google ...

  8. iPad Pro 涂鸦绘画实用技巧

    iPad Pro 涂鸦绘画实用技巧 绘画,涂鸦,简笔画 pre-requirement iPad Pro Apple Pencil 实用技巧 zoom in, zoom out 应用矢量的特性,灵活缩 ...

  9. git cli all in one

    git cli all in one https://www.atlassian.com/git/tutorials/learn-git-with-bitbucket-cloud git create ...

  10. CSS3 Animation & linear-gradient & css3 var & @keyframes

    CSS3 Animation & linear-gradient & css3 var & @keyframes https://www.zhangxinxu.com/word ...