本文目录导读:

Windows 本地安全策略
适用场景:获取 Windows 本地安全策略(如密码策略、账户锁定策略等)。
方法1:使用 secedit 命令
rem 导出安全策略到临时文件 secedit /export /cfg C:\temp\secpolicy.txt
解析:导出后可通过文本编辑器或脚本解析 secpolicy.txt。
方法2:使用 PowerShell(推荐)
# 获取密码策略 Get-LocalUser -Name * | Select-Object PasswordRequired, PasswordExpires, LastLogon # 获取安全策略的注册表路径(如密码长度) Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "MinimumPasswordLength"
Linux 系统安全策略
适用场景:查看 SSH 配置、sudo 权限、SELinux/AppArmor 状态等。
示例脚本(Bash)
#!/bin/bash # 检查 SSH 配置 echo "=== SSH Root Login Policy ===" grep "^PermitRootLogin" /etc/ssh/sshd_config # 检查密码策略 echo "=== Password Policy ===" grep -E "PASS_MAX_DAYS|PASS_MIN_LEN|PASS_WARN_AGE" /etc/login.defs # 检查 SELinux 状态 echo "=== SELinux Status ===" sestatus
网络设备安全策略(如防火墙)
适用场景:检查 iptables/nftables 规则(Linux)或 Windows 防火墙。
Linux iptables 示例
# 导出当前防火墙规则 iptables-save > /tmp/firewall_rules.txt
Windows 防火墙(PowerShell)
# 获取所有防火墙规则 Get-NetFirewallRule | Select-Object DisplayName, Direction, Action, Enabled
数据库安全策略
适用场景:MySQL/PostgreSQL 的密码复杂度、访问控制等。
MySQL 示例
-- 查看密码策略 SHOW VARIABLES LIKE 'validate_password%'; -- 查看用户权限 SELECT Host, User, authentication_string FROM mysql.user;
通用安全策略检查脚本模板
import os
import subprocess
def get_windows_policy():
"""获取Windows密码策略"""
cmd = 'secedit /export /cfg C:\\temp\\secpolicy.txt'
subprocess.run(cmd, shell=True)
with open('C:\\temp\\secpolicy.txt', 'r') as f:
return f.read()
def get_linux_policy():
"""获取Linux SSH策略"""
result = subprocess.run(
['grep', 'PermitRootLogin', '/etc/ssh/sshd_config'],
capture_output=True, text=True
)
return result.stdout
if __name__ == '__main__':
if os.name == 'nt':
print(get_windows_policy())
else:
print(get_linux_policy())
注意事项
- 权限要求:大部分安全策略需要管理员/root 权限才能读取。
- 数据过滤:输出中可能包含敏感信息(如密码哈希),处理时需注意安全。
- 跨平台兼容:使用
platform.system()或os.name判断操作系统。
如果需要针对特定软件(如 Docker、Kubernetes)或云服务(AWS IAM Policy),请提供更具体的描述,我会给出更精确的脚本。