- define rule($domain="ip", $chain="INPUT", $rule, $description="", $prio="00") {
- file { "/etc/ferm/dsa.d/${prio}_${name}":
- ensure => present,
- owner => root,
- group => root,
- mode => 0600,
- content => template("ferm/ferm-rule.erb"),
- notify => Exec["ferm restart"],
- }
- }
-
- package { ferm: ensure => installed }
-
- file {
- "/etc/ferm/dsa.d":
- ensure => directory,
- require => Package["ferm"];
- "/etc/ferm/conf.d":
- ensure => directory,
- require => Package["ferm"];
- "/etc/ferm/ferm.conf":
- source => "puppet:///ferm/ferm.conf",
- require => Package["ferm"],
- notify => Exec["ferm restart"];
- "/etc/ferm/conf.d/me.conf":
- content => template("ferm/me.conf.erb"),
- require => Package["ferm"],
- notify => Exec["ferm restart"];
- "/etc/ferm/conf.d/defs.conf":
- source => "puppet:///ferm/defs.conf",
- require => Package["ferm"],
- notify => Exec["ferm restart"];
- }
-
- ferm::rule { "dsa-ssh":
- description => "Allow SSH from DSA",
- rule => "proto tcp mod state state (NEW) dport (ssh) @subchain 'ssh' { saddr (\$SSH_SOURCES) ACCEPT; }"
- }
- ferm::rule { "dsa-ssh-v6":
- description => "Allow SSH from DSA",
- domain => "ip6",
- rule => "proto tcp mod state state (NEW) dport (ssh) @subchain 'ssh' { saddr (\$SSH_V6_SOURCES) ACCEPT; }"
- }
- ferm::rule { "dsa-munin":
- description => "Allow munin from munin master",
- rule => "proto tcp mod state state (NEW) dport (munin) @subchain 'munin' { saddr (\$HOST_MUNIN) ACCEPT; }"
- }
- ferm::rule { "dsa-nagios":
- description => "Allow nrpe from nagios master",
- rule => "proto tcp mod state state (NEW) dport (5666) @subchain 'nagios' { saddr (\$HOST_NAGIOS) ACCEPT; }"
- }
-
- exec { "ferm restart":
- path => "/etc/init.d:/usr/bin:/usr/sbin:/bin:/sbin",
- refreshonly => true,
- }
+ File { mode => '0400' }
+
+ package { 'ferm':
+ ensure => installed
+ }
+ package { 'ulogd2':
+ ensure => installed
+ }
+ package { 'ulogd':
+ # Remove instead of purge ulogd because it deletes log files on purge.
+ ensure => absent
+ }
+
+ service { 'ferm':
+ hasstatus => false,
+ status => '/bin/true',
+ }
+ exec {
+ "ferm reload":
+ command => "service ferm reload",
+ refreshonly => true,
+ }
+
+
+ $munin_ips = getfromhash($site::nodeinfo, 'misc', 'v4addrs')
+ .map |$addr| { "ip_${addr}" }
+
+ munin::check { $munin_ips: script => 'ip_', }
+
+ $munin6_ips = getfromhash($site::nodeinfo, 'misc', 'v6addrs')
+ .map |$addr| { "ip_${addr}" }
+ munin::ipv6check { $munin6_ips: }
+
+ file { '/etc/ferm':
+ ensure => directory,
+ notify => Exec['ferm reload'],
+ require => Package['ferm'],
+ mode => '0755'
+ }
+ file { '/etc/ferm/dsa.d':
+ ensure => directory,
+ mode => '0555',
+ purge => true,
+ force => true,
+ recurse => true,
+ source => 'puppet:///files/empty/',
+ }
+ file { '/etc/ferm/conf.d':
+ ensure => directory,
+ mode => '0555',
+ purge => true,
+ force => true,
+ recurse => true,
+ source => 'puppet:///files/empty/',
+ }
+ file { '/etc/default/ferm':
+ source => 'puppet:///modules/ferm/ferm.default',
+ require => Package['ferm'],
+ notify => Exec['ferm reload'],
+ mode => '0444',
+ }
+ file { '/etc/ferm/ferm.conf':
+ content => template('ferm/ferm.conf.erb'),
+ notify => Exec['ferm reload'],
+ }
+ file { '/etc/ferm/conf.d/00-init.conf':
+ content => template('ferm/00-init.conf.erb'),
+ notify => Exec['ferm reload'],
+ }
+ file { '/etc/ferm/conf.d/me.conf':
+ content => template('ferm/me.conf.erb'),
+ notify => Exec['ferm reload'],
+ }
+ file { '/etc/ferm/conf.d/defs.conf':
+ content => template('ferm/defs.conf.erb'),
+ notify => Exec['ferm reload'],
+ }
+
+ file { '/etc/ferm/conf.d/50-munin-interfaces.conf':
+ content => template('ferm/conf.d-munin-interfaces.conf.erb'),
+ notify => Exec['ferm reload'],
+ }
+ ferm::rule { 'dsa-munin-interfaces-in':
+ prio => '001',
+ description => 'munin accounting',
+ chain => 'INPUT',
+ domain => '(ip ip6)',
+ rule => 'daddr ($MUNIN_IPS) NOP'
+ }
+ ferm::rule { 'dsa-munin-interfaces-out':
+ prio => '001',
+ description => 'munin accounting',
+ chain => 'OUTPUT',
+ domain => '(ip ip6)',
+ rule => 'saddr ($MUNIN_IPS) NOP'
+ }
+
+ file { '/etc/ferm/dsa.d/010-base.conf':
+ content => template('ferm/dsa.d-010-base.conf.erb'),
+ notify => Exec['ferm reload'],
+ }
+
+ augeas { 'logrotate_ulogd2':
+ context => '/files/etc/logrotate.d/ulogd2',
+ changes => [
+ 'set rule/schedule daily',
+ 'set rule/delaycompress delaycompress',
+ 'set rule/rotate 10',
+ 'set rule/ifempty notifempty',
+ ],
+ }
+ file { '/etc/logrotate.d/ulogd':
+ ensure => absent,
+ }
+ file { '/etc/logrotate.d/ulogd.dpkg-bak':
+ ensure => absent,
+ }
+ file { '/etc/logrotate.d/ulogd.dpkg-dist':
+ ensure => absent,
+ }
+