powershell执行策略必须设为remotesigned,这是兼顾可用性与安全性的底线配置;它允许本地脚本直接运行,但要求网络脚本必须带有效签名,能拦截绝大多数未经验证的恶意载荷。
powershell 不只是自动化工具,更是 windows 服务器安全加固的实战引擎。关键不在于写得多,而在于用得准、控得严、看得清——执行策略设对、敏感操作留痕、高危行为可溯,才是真实有效的防护。
执行策略必须设为 RemoteSigned
这是兼顾可用性与安全性的底线配置。Restricted 会阻断所有脚本,Unrestricted 则等于敞开大门。RemoteSigned 允许本地脚本直接运行,但要求从网络下载的脚本必须带有效签名,能挡住绝大多数未经验证的恶意载荷。
- 执行命令:Set-ExecutionPolicy RemoteSigned -Scope LocalMachine
- 若需临时运行单个脚本(如部署工具),用 powershell.exe -ExecutionPolicy Bypass -File .deploy.ps1,不改系统策略
- 企业环境建议配合数字签名:用 New-SelfSignedCertificate 创建代码签名证书,再用 Set-AuthenticodeSignature 签署内部脚本
开启脚本块日志,让隐蔽行为无所遁形
攻击者常混淆 PowerShell 命令(如 Base64 编码),普通日志看不到真实意图。脚本块日志(Script Block Logging)能自动解码并记录原始代码,是溯源分析的核心依据。
- 启用方式(管理员权限):New-Item -Path "HKLM:SOFTWAREPoliciesMicrosoftWindowsPowerShellScriptBlockLogging" -Force
Set-ItemProperty -Path "HKLM:SOFTWAREPoliciesMicrosoftWindowsPowerShellScriptBlockLogging" -Name "EnableScriptBlockLogging" -Value 1 -Force - 日志位置:Event Viewer → Windows Logs → Microsoft-Windows-PowerShell/Operational
- 搭配事件订阅,可将高危关键词(如 Invoke-Mimikatz、DownloadString)实时告警
用安全模块主动检测与加固
别等被攻破才响应。PowerShell 生态中已有成熟、轻量、免安装的安全工具,可嵌入日常巡检流程。
- 漏洞与配置检查:安装 PSecurity 检查二进制文件是否启用 ASLR/DEP;用 Carbon 自动部署 CIS 基线,比如禁用 SMBv1、强制 TLS 1.2
- 内存与磁盘取证:PowerForensics 可快速提取进程内存镜像、分析注册表最近运行项、定位可疑服务驱动
- 权限路径审计:BloodHound(配合 SharpHound 收集器)识别域内“域管理员→普通用户→本地管理员”的跳转链,提前堵住提权入口
凭证与脚本运行必须零明文
硬编码密码、未脱敏的配置文件,是服务器失陷最常见的导火索。PowerShell 提供原生机制避免这类低级错误。
- 永远不用 $password = "123",改用 $cred = Get-Credential 弹窗输入,或 $secPass = ConvertTo-SecureString "xxx" -AsPlainText -Force(仅限测试环境)
- 从网络共享(如 \fileserverscripts)运行脚本前,先执行 Unblock-File -Path \fileserverscriptshardening.ps1,否则会被默认拦截
- 第三方脚本(如 Privatezilla 的 Remove OneDrive.ps1)务必先打开查看注释和核心命令,确认无 Disable-WindowsDefender 或 Set-Service -StartupType Disabled 类全局禁用操作











