如何使用我自己的 PowerShell 脚本运行 OpenSCAP

如何使用我自己的 PowerShell 脚本运行 OpenSCAP

我想使用我自己的 PowerShell 脚本和 OpenSCAP 1.3.2(Windows 版本)检查我的 Windows 10 Pro 上的屏幕保护程序是否处于活动状态。我写了这样的文件测试文件

<?xml version="1.0" encoding="UTF-8"?>
<Benchmark
  xmlns="http://checklists.nist.gov/xccdf/1.1"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  id="RHEL-7"
  resolved="0"
  xml:lang="en-US">

  <status date="2011-12-08">draft</status>
  <title>Test XCCDF Benchmark</title>
  <version>0.1</version>

  <Profile id="standard">
    <title>Standard System Security Profile</title>
    <select idref="Screensaver_Is_Active" selected="true"/>
  </Profile>

  <Group id="password_requirements">
    <title>Active Screensaver Test</title>

    <Rule id="Screensaver_Is_Active" selected="false" severity="medium" weight="10.000000">
       <title>Check if screensaver is active?</title>
       <description>
          <xhtml:pre xmlns:xhtml="http://www.w3.org/1999/xhtml">Check screensaver</xhtml:pre>
       </description>
       <check system="http://open-scap.org/page/SCE">
          <check-import import-name="stdout" />
          <check-content-ref href="test.ps1" />
       </check>
    </Rule>

  </Group>
</Benchmark>

测试.ps1

$data = Get-ItemProperty -Path "HKCU:\Control Panel\Desktop"
if ($data.ScreenSaveActive) {
    Write-Output "Passed"
    exit $XCCDF_RESULT_PASS
} else { 
    Write-Output "Failed"
    exit $XCCDF_RESULT_FAIL
}

然后我开始使用命令检查并得到“未检查”的响应:

PS C:\> oscap xccdf eval --profile standard test.xml
Title
    Check if screensaver is active?
Rule    Screensaver_Is_Active
Result  notchecked

文件 test.ps1 和 test.xml 也在路径“C:\”上

我的例子有什么问题?为什么检查只有“未检查”状态?

答案1

首先尝试使用oscap该选项,以便我们可以获得更多有关正在发生的事情的信息。INFO级别应该没问题:

--verbose <verbosity_level>   - Turn on verbose mode at specified verbosity level.
                                   Verbosity level must be one of: DEVEL, INFO, WARNING, ERROR.

但我不确定 SCE 模块是否适用于 Windows。

另外尝试运行oscap --version并检查是否有以下列出的功能:

==== Capabilities added by auto-loaded plugins ====

相关内容