Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## [2.1.0] - 2026-07-22
### Added
- Add support for 'Domain controller: LDAP server signing requirements enforcement' and 'Network security: LDAP client encryption requirements'

## [2.0.0] - 2026-07-21
### Changed
- **BREAKING**: Replace Puppet 6/7 support with OpenVox 8; CI now runs on Ruby 3.2 and Ruby 4.0. The Gemfile now depends on the `openvox` gem (via `voxpupuli-test`) instead of `puppet`, and `PUPPET_VERSION` replaces `PUPPET_GEM_VERSION`
Expand Down
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,13 +124,20 @@ local_security_policy { 'System cryptography: Use FIPS compiant algorithms for e
Devices: Prevent users from installing printer drivers
Devices: Restrict CD-ROM access to locally logged-on user only
Devices: Restrict floppy access to locally logged-on user only
Domain controller: Allow server operators to schedule tasks
Domain controller: Allow vulnerable Netlogon secure channel connections
Domain controller: LDAP server channel binding token requirements
Domain controller: LDAP server signing requirements
Domain controller: LDAP server signing requirements enforcement
Domain controller: Refuse machine account password changes
Domain member: Digitally encrypt or sign secure channel data (always)
Domain member: Digitally encrypt secure channel data (when possible)
Domain member: Digitally sign secure channel data (when possible)
Domain member: Disable machine account password changes
Domain member: Maximum machine account password age
Domain member: Require strong (Windows 2000 or later) session key
EnableAdminAccount
EnableGuestAccount
Enable computer and user accounts to be trusted for delegation
Enforce password history
Force shutdown from a remote system
Expand Down Expand Up @@ -185,13 +192,14 @@ local_security_policy { 'System cryptography: Use FIPS compiant algorithms for e
Network access: Restrict clients allowed to make remote calls to SAM
Network access: Shares that can be accessed anonymously
Network access: Sharing and security model for local accounts
Network security: All Local System to use computer identity for NTLM
Network security: Allow Local System to use computer identity for NTLM
Network security: Allow LocalSystem NULL session fallback
Network security: Allow PKU2U authentication requests to this computer to use online identities
Network security: Configure encryption types allowed for Kerberos
Network security: Do not store LAN Manager hash value on next password change
Network security: Force logoff when logon hours expire
Network security: LAN Manager authentication level
Network security: LDAP client encryption requirements
Network security: LDAP client signing requirements
Network security: Minimum session security for NTLM SSP based (including secure RPC) clients
Network security: Minimum session security for NTLM SSP based (including secure RPC) servers
Expand Down
10 changes: 10 additions & 0 deletions lib/puppet_x/lsp/security_policy.rb
Original file line number Diff line number Diff line change
Expand Up @@ -578,6 +578,11 @@ def self.lsp_mapping
reg_type: '4',
policy_type: 'Registry Values',
},
'Domain controller: LDAP server signing requirements enforcement' => {
name: 'MACHINE\System\CurrentControlSet\Services\NTDS\Parameters\LDAPServerEnforceIntegrity',
reg_type: '4',
policy_type: 'Registry Values',
},
'Domain controller: Refuse machine account password changes' => {
name: 'MACHINE\System\CurrentControlSet\Services\Netlogon\Parameters\RefusePasswordChange',
reg_type: '4',
Expand Down Expand Up @@ -826,6 +831,11 @@ def self.lsp_mapping
reg_type: '4',
policy_type: 'Registry Values',
},
'Network security: LDAP client encryption requirements' => {
name: 'MACHINE\System\CurrentControlSet\Services\LDAP\LDAPClientConfidentiality',
reg_type: '4',
policy_type: 'Registry Values',
},
'Network security: LDAP client signing requirements' => {
name: 'MACHINE\System\CurrentControlSet\Services\LDAP\LDAPClientIntegrity',
reg_type: '4',
Expand Down
2 changes: 1 addition & 1 deletion metadata.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ayohrling-local_security_policy",
"version": "2.0.0",
"version": "2.1.0",
"author": "Paul S. Cannon, Adam Yohrling, Corey Osman, Ryan Russell-Yates, Jordan Wesolowski, Gerben Welter, Thomas Linkin, Andy Adrian, Steven Pritchard",
"summary": "Windows Local Security Policy management. Forked from cannonps/local_security_policy",
"license": "Apache-2.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
SecurityPolicy.new
end

it 'returns user', skip: 'sid_to_user function is not used anywhere, no need to test' do

Check warning on line 51 in spec/unit/puppet/provider/local_security_policy/security_policy_spec.rb

View workflow job for this annotation

GitHub Actions / parallel_spec (OpenVox 8 (Ruby 3.2), ~> 8.0, 3.2)

SecurityPolicy returns user Skipped: sid_to_user function is not used anywhere, no need to test

Check warning on line 51 in spec/unit/puppet/provider/local_security_policy/security_policy_spec.rb

View workflow job for this annotation

GitHub Actions / parallel_spec (OpenVox 8 (Ruby 4.0), ~> 8.0, 4.0)

SecurityPolicy returns user Skipped: sid_to_user function is not used anywhere, no need to test
expect(security_policy.sid_to_user('S-1-5-32-556')).to eq('Network Configuration Operators')
expect(security_policy.sid_to_user('*S-1-5-80-0')).to eq('NT_SERVICE\\ALL_SERVICES')
end
Expand Down Expand Up @@ -105,6 +105,8 @@
['MACHINE\System\CurrentControlSet\Services\NTDS\Parameters\LdapEnforceChannelBinding', '4'],
'Domain controller: LDAP server signing requirements' =>
['MACHINE\System\CurrentControlSet\Services\NTDS\Parameters\LDAPServerIntegrity', '4'],
'Domain controller: LDAP server signing requirements enforcement' =>
['MACHINE\System\CurrentControlSet\Services\NTDS\Parameters\LDAPServerEnforceIntegrity', '4'],
'Domain controller: Refuse machine account password changes' =>
['MACHINE\System\CurrentControlSet\Services\Netlogon\Parameters\RefusePasswordChange', '4'],
}.each do |policy_desc, (reg_key, reg_type)|
Expand All @@ -131,6 +133,25 @@
end
end

describe 'additional policy mappings' do
{
'Network security: LDAP client encryption requirements' =>
['MACHINE\System\CurrentControlSet\Services\LDAP\LDAPClientConfidentiality', '4'],
}.each do |policy_desc, (reg_key, reg_type)|
it "maps #{policy_desc}" do
mapping = SecurityPolicy.find_mapping_from_policy_desc(policy_desc)
expect(mapping[:name]).to eq(reg_key)
expect(mapping[:reg_type]).to eq(reg_type)
expect(mapping[:policy_type]).to eq('Registry Values')
end

it "reverse maps #{reg_key}" do
name, = SecurityPolicy.find_mapping_from_policy_name(reg_key)
expect(name).to eq(policy_desc)
end
end
end

describe 'privilege right' do
let(:resource) do
Puppet::Type.type(:local_security_policy).new(
Expand Down
Loading