test: verify map output using yaml_dump
* Semi-automated using https://github.com/myii/ssf-formula/pull/159
This commit is contained in:
parent
95e26621f9
commit
69df9a62d6
16
firewalld/yaml_dump/init.sls
Normal file
16
firewalld/yaml_dump/init.sls
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# vim: ft=sls
|
||||||
|
---
|
||||||
|
{#- Get the `tplroot` from `tpldir` #}
|
||||||
|
{%- set tplroot = tpldir.split('/')[0] %}
|
||||||
|
{%- from tplroot ~ "/map.jinja" import firewalld as map with context %}
|
||||||
|
|
||||||
|
{%- set output_file = '/tmp/salt_yaml_dump.yaml' %}
|
||||||
|
|
||||||
|
yaml-dump-{{ tplroot }}:
|
||||||
|
file.managed:
|
||||||
|
- name: {{ output_file }}
|
||||||
|
- source: salt://{{ tplroot }}/yaml_dump/yaml_dump.jinja
|
||||||
|
- template: jinja
|
||||||
|
- context:
|
||||||
|
map: {{ map | yaml }}
|
4
firewalld/yaml_dump/yaml_dump.jinja
Normal file
4
firewalld/yaml_dump/yaml_dump.jinja
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# yamllint disable rule:indentation rule:line-length
|
||||||
|
# {{ grains.get('osfinger', grains.os) }}-{{ grains.saltversion }}-py{{ grains.pythonversion[0] }}
|
||||||
|
---
|
||||||
|
{{ map|yaml(False)|trim }}
|
@ -160,6 +160,7 @@ suites:
|
|||||||
state_top:
|
state_top:
|
||||||
base:
|
base:
|
||||||
'*':
|
'*':
|
||||||
|
- firewalld.yaml_dump
|
||||||
- firewalld
|
- firewalld
|
||||||
pillars:
|
pillars:
|
||||||
top.sls:
|
top.sls:
|
||||||
|
166
test/integration/default/controls/yaml_dump_spec.rb
Normal file
166
test/integration/default/controls/yaml_dump_spec.rb
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
control 'firewalld `map.jinja` YAML dump' do
|
||||||
|
title 'should contain the lines'
|
||||||
|
|
||||||
|
yaml_dump = "---\n"
|
||||||
|
yaml_dump += <<~YAML_DUMP.chomp
|
||||||
|
AutomaticHelpers: system
|
||||||
|
FirewallBackend: nftables
|
||||||
|
FlushAllOnReload: 'yes'
|
||||||
|
IndividualCalls: 'no'
|
||||||
|
LogDenied: 'off'
|
||||||
|
RFC3964_IPv4: 'yes'
|
||||||
|
backend:
|
||||||
|
manage: true
|
||||||
|
pkg: nftables
|
||||||
|
config: /etc/firewalld.conf
|
||||||
|
default_zone: public
|
||||||
|
direct:
|
||||||
|
chain:
|
||||||
|
MYCHAIN:
|
||||||
|
ipv: ipv4
|
||||||
|
table: raw
|
||||||
|
rule:
|
||||||
|
INTERNETACCESS:
|
||||||
|
ipv: ipv4
|
||||||
|
table: filter
|
||||||
|
chain: FORWARD
|
||||||
|
priority: '0'
|
||||||
|
args: -i iintern -o iextern -s 192.168.1.0/24 -m conntrack --ctstate NEW,RELATED,ESTABLISHED
|
||||||
|
-j ACCEPT
|
||||||
|
passthrough:
|
||||||
|
MYPASSTHROUGH:
|
||||||
|
ipv: ipv4
|
||||||
|
args: -t raw -A MYCHAIN -j DROP
|
||||||
|
enabled: true
|
||||||
|
ipset:
|
||||||
|
manage: true
|
||||||
|
pkg: ipset
|
||||||
|
ipsets:
|
||||||
|
fail2ban-ssh:
|
||||||
|
short: fail2ban-ssh
|
||||||
|
description: fail2ban-ssh ipset
|
||||||
|
type: hash:ip
|
||||||
|
options:
|
||||||
|
maxelem:
|
||||||
|
- 65536
|
||||||
|
timeout:
|
||||||
|
- 300
|
||||||
|
hashsize:
|
||||||
|
- 1024
|
||||||
|
entries:
|
||||||
|
- 10.0.0.1
|
||||||
|
fail2ban-ssh-ipv6:
|
||||||
|
short: fail2ban-ssh-ipv6
|
||||||
|
description: fail2ban-ssh-ipv6 ipset
|
||||||
|
type: hash:ip
|
||||||
|
options:
|
||||||
|
family:
|
||||||
|
- inet6
|
||||||
|
maxelem:
|
||||||
|
- 65536
|
||||||
|
timeout:
|
||||||
|
- 300
|
||||||
|
hashsize:
|
||||||
|
- 1024
|
||||||
|
entries:
|
||||||
|
- 2a01::1
|
||||||
|
package: firewalld
|
||||||
|
service: firewalld
|
||||||
|
services:
|
||||||
|
sshcustom:
|
||||||
|
short: sshcustom
|
||||||
|
description: SSH on port 3232 and 5252. Secure Shell (SSH) is a protocol for logging
|
||||||
|
into and executing commands on remote machines. It provides secure encrypted
|
||||||
|
communications. If you plan on accessing your machine remotely via SSH over
|
||||||
|
a firewalled interface, enable this option. You need the openssh-server package
|
||||||
|
installed for this option to be useful.
|
||||||
|
ports:
|
||||||
|
tcp:
|
||||||
|
- 3232
|
||||||
|
- 5252
|
||||||
|
modules:
|
||||||
|
- some_module_to_load
|
||||||
|
protocols:
|
||||||
|
- igmp
|
||||||
|
source_ports:
|
||||||
|
tcp:
|
||||||
|
- 21
|
||||||
|
destinations:
|
||||||
|
ipv4:
|
||||||
|
- 224.0.0.251
|
||||||
|
- 224.0.0.252
|
||||||
|
ipv6:
|
||||||
|
- ff02::fb
|
||||||
|
- ff02::fc
|
||||||
|
zabbixcustom:
|
||||||
|
short: Zabbixcustom
|
||||||
|
description: zabbix custom rule
|
||||||
|
ports:
|
||||||
|
tcp:
|
||||||
|
- '10051'
|
||||||
|
salt-minion:
|
||||||
|
short: salt-minion
|
||||||
|
description: salt-minion
|
||||||
|
ports:
|
||||||
|
tcp:
|
||||||
|
- '8000'
|
||||||
|
zones:
|
||||||
|
public:
|
||||||
|
short: Public
|
||||||
|
description: For use in public areas. You do not trust the other computers on
|
||||||
|
networks to not harm your computer. Only selected incoming connections are accepted.
|
||||||
|
services:
|
||||||
|
- http
|
||||||
|
- https
|
||||||
|
- ssh
|
||||||
|
- salt-minion
|
||||||
|
other_services:
|
||||||
|
- zabbixcustom
|
||||||
|
protocols:
|
||||||
|
- igmp
|
||||||
|
rich_rules:
|
||||||
|
- family: ipv4
|
||||||
|
source:
|
||||||
|
address: 8.8.8.8/24
|
||||||
|
accept: true
|
||||||
|
- family: ipv4
|
||||||
|
ipset:
|
||||||
|
name: fail2ban-ssh
|
||||||
|
reject:
|
||||||
|
type: icmp-port-unreachable
|
||||||
|
ports:
|
||||||
|
- comment: zabbix-agent
|
||||||
|
port: 10050
|
||||||
|
protocol: tcp
|
||||||
|
- comment: bacula-client
|
||||||
|
port: 9102
|
||||||
|
protocol: tcp
|
||||||
|
- comment: vsftpd
|
||||||
|
port: 21
|
||||||
|
protocol: tcp
|
||||||
|
source_ports:
|
||||||
|
- comment: something
|
||||||
|
port: 2222
|
||||||
|
protocol: tcp
|
||||||
|
- comment: something_else
|
||||||
|
port: 4444
|
||||||
|
protocol: tcp
|
||||||
|
rich_public:
|
||||||
|
short: rich_public
|
||||||
|
description: Example
|
||||||
|
rich_rules:
|
||||||
|
ssh-csg:
|
||||||
|
accept: true
|
||||||
|
ipsets:
|
||||||
|
- fail2ban-ssh
|
||||||
|
- other-ipset
|
||||||
|
services:
|
||||||
|
- ssh
|
||||||
|
YAML_DUMP
|
||||||
|
|
||||||
|
describe file('/tmp/salt_yaml_dump.yaml') do
|
||||||
|
its('content') { should include yaml_dump }
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user