本文目录导读:

- Windows 本地安全策略(通过 secpol.msc 配置的策略)
- Windows 组策略设置
- Linux 安全策略
- macOS 安全策略
- 跨平台 PowerShell 脚本
- 企业级脚本 - 综合扫描示例
- 注意事项
要获取安全策略设置,通常有几种常见的方法,具体取决于操作系统和你想获取的策略类型,以下是几个主流场景的脚本方案:
Windows 本地安全策略(通过 secpol.msc 配置的策略)
使用 PowerShell 脚本
# 获取所有安全策略设置 secedit /export /cfg C:\temp\secpol.cfg # 读取导出的配置文件 Get-Content C:\temp\secpol.cfg # 或者使用更精确的方法,查询具体策略 # 获取密码策略 Get-LocalUser -Name * | Select-Object Name, PasswordRequired, PasswordLastSet
使用命令行(CMD)
@echo off :: 导出安全策略到文件 secedit /export /cfg %temp%\secpol.cfg :: 显示特定策略 type %temp%\secpol.cfg | findstr /i "PasswordComplexity MinimumPasswordLength"
Windows 组策略设置
# 使用 gpresult 命令获取应用的组策略 gpresult /h C:\temp\gpreport.html # 获取 RSOP (策略结果集) Get-GPResultantSetOfPolicy -ReportType Html -Path C:\temp\rsop.html # 查询特定策略设置 gpresult /z | findstr /i "密码"
Linux 安全策略
获取 SELinux 状态
#!/bin/bash # 获取 SELinux 状态 getenforce sestatus # 获取 SELinux 布尔值 getsebool -a
获取 AppArmor 策略
#!/bin/bash # 获取 AppArmor 状态 aa-status apparmor_status # 列出所有配置文件 ls /etc/apparmor.d/
获取 PAM 配置
#!/bin/bash # 查看 PAM 配置 cat /etc/pam.d/common-password cat /etc/security/pwquality.conf # 查看登录限制 cat /etc/security/limits.conf
macOS 安全策略
#!/bin/bash # 获取防火墙状态 /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate # 获取 FileVault 状态 fdesetup status # 获取 Gatekeeper 状态 spctl --status # 获取 SIP (系统完整性保护) 状态 csrutil status
跨平台 PowerShell 脚本
# Windows 系统
if ($IsWindows) {
# 获取 Windows Defender 状态
Get-MpComputerStatus | Select-Object AntivirusEnabled, RealTimeProtectionEnabled
# 获取 UAC 设置
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name EnableLUA
}
# Linux 系统
elseif ($IsLinux) {
# 获取 SSH 配置
Get-Content /etc/ssh/sshd_config | Where-Object {$_ -notmatch '^#' -and $_ -ne ''}
}
企业级脚本 - 综合扫描示例
#!/usr/bin/env python3
import subprocess
import platform
def get_windows_security_settings():
"""获取 Windows 安全设置"""
settings = {}
# 获取密码策略
cmd = "net accounts"
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
settings['password_policy'] = result.stdout
# 获取防火墙状态
cmd = "netsh advfirewall show allprofiles"
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
settings['firewall'] = result.stdout
return settings
def get_linux_security_settings():
"""获取 Linux 安全设置"""
import os
settings = {}
# 检查关键配置文件
config_files = [
'/etc/passwd',
'/etc/shadow',
'/etc/ssh/sshd_config',
'/etc/sysctl.conf'
]
for file in config_files:
if os.path.exists(file):
with open(file, 'r') as f:
settings[file] = f.read()
return settings
# 根据平台执行
system = platform.system()
if system == "Windows":
settings = get_windows_security_settings()
elif system == "Linux":
settings = get_linux_security_settings()
注意事项
- 权限要求:大多数安全策略设置需要管理员/root权限
- 日志记录:建议记录操作日志以便审计
- 备份策略:在修改前备份原有配置
- 合规性:确保获取策略的方式符合组织安全政策
根据你的具体需求(哪个操作系统、什么类型的策略),选择合适的脚本方案,如果需要更具体的帮助,请提供更多细节。