Windows基线安全检测-安全配置检测
前言
Windows在生产环境中是使用最多的一个系统,大部分为客户端,少部分为服务端;
然而其实很多用户对windows系统不是很了解,安全配置更是如此;
因此我们安全人员要定期对员工的主机做必要的安全检测,其中基线的定期检测就是方式之一;
以下则是我亲自编写测试上线使用的检测和修复脚本,如有不对的地方,欢迎大家留言,我会立马改正!!!
各模块检测
1、系统账号安全
内容:
账号策略:失败锁定次数(5次)、时长(15min);
根据实际情况调整即可;
检测方式:
组策略-->计算机配置-->windows设置-->安全设置-->帐户策略-->账户锁定策略-->(账户锁定时间15min,账户锁定阈值5次)
2、设置Sysmon服务开机自启
内容:
Sysmon作为windows下系统监控工具,通过编写配置文件,能够发现windows系统的部分异常操作行为,建议该服务设置为开机自启;
检测方式:
bash
function Check-SysmonService {
$service = Get-Service -Name Sysmon64
if ($service.Status -eq "Running") {
Write-Output "Sysmon服务正在运行"
} else {
Write-Output "Sysmon服务未运行"
}
}
Check-SysmonService
function Check-SysmonServiceStartup {
$service = Get-Service -Name Sysmon64
$status = $service.StartType
if ($status -eq "Automatic") {
Write-Output "Sysmon服务已设置为开机自启"
} else {
Write-Output "Sysmon服务未设置为开机自启"
}
}
Check-SysmonServiceStartup
修复方式:
控制面板-->管理工具-->服务-->Sysmon/Sysmon32/Sysmon64-->
右键属性-->启动类型-->自动
3、补丁更新配置
内容:
配置对应的补丁更新服务器【wsus】,及时获取到最新的补丁更新详情;
根据实际情况调整即可;
检测方式:
1、 组策略-->计算机配置-->管理模板-->Windows组件-->Windows更新-->配置自动更新(4-自动下载并计划安装、计划安装日期-每天、计划安装时间-03:00、每周);
2、 组策略-->计算机配置-->管理模板-->Windows组件-->Windows更新-->指定Intranet Microsoft 更新服务位置;
3、 组策略-->计算机配置-->管理模板-->Windows组件-->Windows更新-->自动更新检测频率(22小时);
4、 组策略-->计算机配置-->管理模板-->Windows组件-->Windows更新-->允许非管理员接收更新通知;
根据实际情况调整即可;
修复方式:
bash
Dim OperationRegistry
Set OperationRegistry=WScript.CreateObject("WScript.Shell")
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\NoAutoUpdate",0,"REG_DWORD"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\AUOptions",4,"REG_DWORD"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\AutomaticMaintenanceEnabled",1,"REG_DWORD"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\ScheduledInstallDay",0,"REG_DWORD"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\ScheduledInstallTime",3,"REG_DWORD"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\ScheduledInstallEveryWeek",1,"REG_DWORD"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\WUServer","Intranet Microsoft 更新服务位置","REG_SZ"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\WUStatusServer","Intranet Microsoft 更新服务位置","REG_SZ"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\DetectionFrequencyEnabled",1,"REG_DWORD"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\DetectionFrequency",22,"REG_DWORD"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\ElevateNonAdmins",1,"REG_DWORD"
4、禁止远程桌面的文件拷贝
内容:
部分Windows属于服务器,会有限制此功能的需求;
跳板机应该禁止rdp远程桌面使用剪贴板功能,此策略设置指定是否阻止在远程桌面服务会话期间远程计算机和客户端计算机之间共享剪贴板内容(剪贴板重定向);
检测方式:
1、组策略-->计算机配置-->管理模板-->Windows组件-->远程桌面服务-->远程桌面会话主机-->设备和资源重定向-->"不允许剪贴板重定向" 是否设置为:已启用;
修复方式:
bash
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\fDisableClip",1,"REG_DWORD"
5、禁止远程桌面的共享盘挂载、远程打印
内容:
1、 此策略设置允许您指定是否阻止在远程桌面服务会话中映射客户端打印机;
2、 此策略设置指定是否阻止在远程桌面服务会话中映射客户端驱动器(驱动器重定向);
检测方式:
1、组策略-->计算机配置-->管理模板-->Windows组件-->远程桌面服务-->远程桌面会话主机-->打印机重定向--> "不允许客户端打印机重定向" 是否设置为:已启用;
2、组策略-->计算机配置-->管理模板-->Windows组件-->远程桌面服务-->远程桌面会话主机-->设备和资源重定向-->"不允许驱动器重定向" 是否设置为:已启用;
修复方式:
bash
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\fDisableCpm",1,"REG_DWORD"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\fDisableCdm",1,"REG_DWORD"
6、禁用SMBv1协议
内容:
SMBv1协议目前属于不安全的协议,该协议会容易造成计算机受到蠕虫攻击,建议禁用该协议;
检测方式:
bash
Get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol
SMBV2协议为True代表已禁用SM1服务
修复方式:
bash
#禁用服务端
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters",0,"REG_DWORD"
#禁用客户端
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb10\Start",4,"REG_DWORD"
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\DependOnService"删除MRxSMB10
#必须重新操作系统
7、开启必要日志记录
内容:
Windows系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。 用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹;
检测方式:
组策略-->计算机配置-->Windows设置-->安全设置-->高级审核策略配置-->(账户登录、账户管理、详细跟踪、DS访问、登录/注销、对象访问、策略更改、特权使用、系统),启用成功+失败;
8、日志大小设置
内容:
应用程序事件日志大小必须配置为32768 KB或更大;
安全事件日志大小必须配置为1024000 KB或更大;
系统事件日志大小必须配置为32768 KB或更大;
根据实际情况调整即可;
检测方式:
组策略-->计算机配置-->管理模板-->Windows组件-->事件日志服务-->(应用程序、安全、系统)-->指定日志文件的最大大小(KB)、控制事件日志在日志文件达到最大大小时的行为(已启用)、日志文件写满后自动备份(已启用)
修复方式:
bash
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\EventLog\Application\MaxSize",32768,"REG_DWORD"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\EventLog\Application\Retention",1,"REG_SZ"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\EventLog\Application\AutoBackupLogFiles",1,"REG_SZ"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\EventLog\Security\MaxSize",1024000,"REG_DWORD"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\EventLog\Security\Retention",0,"REG_SZ"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\EventLog\Security\AutoBackupLogFiles",1,"REG_SZ"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\EventLog\System\MaxSize",32768,"REG_DWORD"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\EventLog\System\Retention",1,"REG_SZ"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\EventLog\System\AutoBackupLogFiles",1,"REG_SZ"
9、禁用Guest账户
内容:
Guest账户通常是一个匿名用户账户,允许用户在不需要提供用户名和密码的情况下访问系统。禁用Guest账户可以有效防止未经授权的访问和潜在的安全风险。
修复方式:
1、编辑组策略-->计算机配置-->Windows设置-->安全设置-->本地策略-->安全选项-->禁用"账户:来宾账户状态"
10、必须启用Windows Defender
内容:
Windows Defender 是Windows操作系统内置的一款防病毒和反恶意软件工具。它可以帮助保护你的计算机免受病毒、恶意软件和其他安全威胁的侵害;
检测方式:
1、 编辑组策略-->计算机配置-->管理模板-->Windows组件-->Microsoft Defender 防病毒程序-->关闭 Microsoft Defender 防病毒程序,已禁用
2、 编辑组策略-->计算机配置-->管理模板-->Windows组件-->Microsoft Defender 防病毒程序-->实时保护-->关闭实时保护,已禁用
修复方式:
bash
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows Defender\DisableAntiSpyware",0,"REG_DWORD"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows Defender\Real-Time Protection\DisableRealtimeMonitoring",0,"REG_DWORD"
11、修改关键服务端口
内容:
默认端口众所周知,应修改默认端口,以减少攻击
根据实际情况调整即可;
检测方式:
修改远程端口3389为31763或其他不常用端口
修复方式:
bash
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber",31763,"REG_DWORD"
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp\PortNumber",31763,"REG_DWORD"
#修改防火墙策略
New-NetFirewallRule -DisplayName 'RDPPORTLatest-TCP-In' -Profile 'Public' -Direction Inbound -Action Allow -Protocol TCP -LocalPort $portvalue
New-NetFirewallRule -DisplayName 'RDPPORTLatest-UDP-In' -Profile 'Public' -Direction Inbound -Action Allow -Protocol UDP -LocalPort $portvalue
12、开启Windows Defender防火墙
内容:
Windows Defender防火墙有助于防止黑客和恶意软件通过 Internet 或网络访问你的电脑;
修复方式:
编辑组策略-->计算机配置-->windows设置-->安全设置-->高级安全Windows Defender防火墙-->为域、专用和公用网络设置选择"打开Windows Defender防火墙"
13、减少用户访问功能
内容:
删除不必要的桌面访问功能,避免系统不必要的信息被查看,例如:删除计算机、回收站等入口
检测方式:
1、 组策略-->用户配置-->管理模块-->桌面-->从桌面删除回收站,已启用
2、 组策略-->用户配置-->管理模块-->桌面-->删除桌面上的"计算机"图标,已启用
修复方式:
bash
OperationRegistry.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\NonEnum\{645FF040-5081-101B-9F08-00AA002F954E}",1,"REG_DWORD"
OperationRegistry.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\NonEnum\{20D04FE0-3AEA-1069-A2D8-08002B30309D}",1,"REG_DWORD"
14、时间同步服务
内容:
Win 时间同步是指确保计算机系统中各个设备的时间保持一致。这对于许多计算机操作和网络通信是至关重要的,尤其是在多台计算机协同工作或在网络环境中进行数据传输时;
修复方式:
1、组策略-->计算机配置-->管理模板 -->系统--> Windows 时间服务-->全局配置设置,设为"已启用",不需修改参数。
2、组策略-->计算机配置 -->管理模板 --> 系统-->Windows 时间服务 -> 时间提供程序-->配置Windows NTP客户端,设置为已启用。
IP设置为与第一步相同的NTP服务器IP,IP之后的",0x9"需要保留。
类型选择AllSync,表示即可与NTP同步,也可与域同步。
SpecialPollInterval参数设置同步周期,单位为秒,设置为600秒即为10分钟同步一次。
15、设置密码使用期限策略
内容:
密码需要定期更改;
根据实际情况调整即可;
修复方式:
在管理工具打开本地安全策略,打开路径:安全设置\帐户策略\密码策略,将密码最长使用期限设置为30-180之间,建议值为90,将密码最短使用期限设置为1-14之间,建议值为7;
16、密码复杂性配置
内容:
在管理工具打开本地安全策略,打开路径:(计算机策略\计算机配置\Windows设置)安全设置\帐户策略\密码策略,将密码必须符合复杂性要求设置为已启用,将密码最小长度设置为8以上;
根据实际情况调整即可;
修复方式:
控制面板->管理工具->本地安全策略->帐户策略->密码策略->密码必须符合复杂性要求->属性:启用启用密码必须符合复杂性要求;
控制面板->管理工具->本地安全策略->帐户策略->密码策略->密码长度最小值->属性->设置最小密码长度为8;
17、'强制密码历史'设置为5-24之间
内容:
在管理工具打开本地安全策略,打开路径:安全设置\帐户策略\密码策略,将强制密码历史设置为5-24之间;
根据实际情况调整即可;
18、配置账户锁定策略
内容:
配置账户锁定策略,降低被爆破和猜测风险;
根据实际情况调整即可;
修复方式:
在管理工具打开本地安全策略,打开路径:安全设置\帐户策略\账户锁定策略。将账户锁定阈值设置为3-8之间,建议值为5,输错5次密码锁定账户;然后将账户锁定时间和重置账户锁定计数器设置为10-30之间,建议值为15,账户锁定时间为15分钟;
19、启用安全审计功能
内容:
开启审核策略,对重要的用户行为和重要安全事件进行审计;
修复方式:
在管理工具打开本地安全策略,打开路径:安全设置\本地策略\审核策略,将全部审核策略配置为:成功,失败。包括审核策略更改、审核对象访问、审核进程跟踪、审核目录服务访问、审核账户登陆事件、审核特权使用、审核系统事件、审核账户管理、审核登陆事件共九项;
20、匿名账户访问控制
内容:
在管理工具打开本地安全策略,打开路径:安全设置\本地策略\安全选项。将网络访问中"Everyone权限应用于匿名用户"设置为:已禁用,将"不允许SAM帐户的匿名枚举"设置为:已启用,将"不允许SAM帐户和共享的匿名枚举"设置为:已启用,将"允许匿名SID/名称转换"设置为:已禁用
21、配置安全选项账户策略
内容:
配置安全选项账户策略,限制空密码账户和禁用guest账户;
修复方式:
在管理工具打开本地安全策略,打开路径:安全设置\本地策略\安全选项。将"账户:来宾账户状态"设置为:已禁用;将"账户:使用空密码的本地账户只允许控制台登陆"设置为:启用;
22、检测身份验证凭据是否为加密存储
内容:
检测身份验证凭据是否为加密存储
修复方式:
bash
OperationRegistry.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\UseLogonCredential",0,"REG_DWORD"
23、超时锁屏时间3小时
内容:
修复完需要重启生效;
根据实际情况调整即可;
修复方式:
bash
Dim OperationRegistry
Set OperationRegistry=WScript.CreateObject("WScript.Shell")
OperationRegistry.RegWrite "HKCU\Control Panel\Desktop\ScreenSaveTimeOut",10800,"REG_DWORD"
OperationRegistry.RegWrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\InactivityTimeoutSecs",10800,"REG_DWORD"
24、禁止Windows远程管理(WinRM)客户端使用
内容:
需根据实际场景来定;
检测方式:
bash
function Check-WinrmService {
$service = Get-Service -Name winrm
if ($service.Status -eq "Running") {
Write-Output "Winrm服务正在运行"
} else {
Write-Output "Winrm服务未运行"
}
}
Check-WinrmService
修复方式:
bash
#停止winrm服务
Stop-Service WinRM
#将winrm服务设置为禁用
Set-Service -Name WinRM -StartupType Disabled