怎么用脚本获取安全策略

wen 实用脚本 2

本文目录导读:

怎么用脚本获取安全策略

  1. 1. Windows 本地安全策略
  2. 2. Linux 系统安全策略
  3. 3. 网络设备安全策略(如防火墙)
  4. 4. 数据库安全策略
  5. 5. 通用安全策略检查脚本模板
  6. 注意事项

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())

注意事项

  1. 权限要求:大部分安全策略需要管理员/root 权限才能读取。
  2. 数据过滤:输出中可能包含敏感信息(如密码哈希),处理时需注意安全。
  3. 跨平台兼容:使用 platform.system()os.name 判断操作系统。

如果需要针对特定软件(如 Docker、Kubernetes)或云服务(AWS IAM Policy),请提供更具体的描述,我会给出更精确的脚本。

抱歉,评论功能暂时关闭!