/pmaker

Create native policy files from network sets

Primary LanguageRuby

Known Issues
------------

Solaris will reject duplicate selectors, so make sure there aren't multiple rules having the same selector. For example, don't create an encrypt policy between two hosts followed by a drop policy for the same hosts.

There is a limitation in ipsecconf when using the -a arg to load policies from file. It seems like there is ~120 policy limit on the file. Files that are too large will segfault. One workaround is to use csplit to separate the policy file into 100 line pieces.

Currently, a wildcard ('*') results in a 0.0.0.0 in a solaris ipsecconf file. That is not correct syntax and needs to be fixed.


Example Policy
--------------

require 'policy_maker'

# server definitions
rush = server_pep 'rush', '192.168.2.76'
elvis = server_pep 'elvis', '192.168.2.121'
sinatra = server_pep 'sinatra', '192.168.2.122'

# network set definitions
ns1 = network_set rush
ns2 = network_set elvis
ns3 = network_set sinatra
ns4 = network_set '10.10.100.1'                      # 1 host
ns5 = network_set_range '10.10.101.1', '10.10.101.5' # 5 hosts
ns6 = network_set '10.10.102.0/24'                   # 253 hosts
ns_all = network_set '*'

policy_mesh 'encrypt',
  { :encrypt_alg => 'aes',
    :encrypt_key => '29dc32fad62af71e99e730b4115cb563',
    :auth_alg => 'hmac-sha1',
    :auth_key => 'c9cd510dced1aa66fede4481eb5e62f60596fd85',
	  :network_sets => [ns1, ns2, ns3] }

policy_mesh 'drop', { :network_sets => [ns2, ns5] }
policy_mesh 'drop', { :network_sets => [ns3, ns4] }
policy_mesh 'pass', { :network_sets => [ns1, ns4] }
policy_mesh 'pass', { :network_sets => [ns2, ns_all] }

generate_solaris_policies # policy files are only generated for defined server peps