limit -sd access to bacula clients and the director
authorPeter Palfrader <peter@palfrader.org>
Tue, 24 Sep 2019 06:22:02 +0000 (08:22 +0200)
committerPeter Palfrader <peter@palfrader.org>
Tue, 24 Sep 2019 06:22:02 +0000 (08:22 +0200)
modules/bacula/manifests/client.pp
modules/bacula/manifests/director.pp
modules/bacula/manifests/storage.pp

index 4172224..dfeb176 100644 (file)
@@ -29,6 +29,14 @@ class bacula::client(
     Ferm::Rule::Simple <<| tag == "bacula::director-to-fd::${bacula::bacula_director_address}" |>> {
       port => $bacula::bacula_client_port,
     }
+
+    # get access to the storage
+    @@ferm::rule::simple { "bacula::fd-to-storage::${::fqdn}":
+      tag         => "bacula::director-to-storage::${bacula::bacula_storage_address}",
+      description => 'Allow bacula-fd access to the bacula-storage',
+      chain       => 'bacula-sd',
+      saddr       => $bacula::public_addresses,
+    }
   } elsif $ensure == 'absent' {
     file { '/etc/bacula':
       ensure  => absent,
index 578251c..b4e0105 100644 (file)
@@ -121,7 +121,7 @@ class bacula::director inherits bacula {
   @@ferm::rule::simple { "bacula::director-to-storage::${::fqdn}":
     tag         => "bacula::director-to-storage::${::fqdn}",
     description => 'Allow bacula-storage access from the bacula-director',
-    port        => '7', # overridden on collecting
+    chain       => 'bacula-sd',
     saddr       => $bacula::public_addresses,
   }
 }
index f581d04..3d9ac3b 100644 (file)
@@ -44,16 +44,14 @@ class bacula::storage inherits bacula {
     notify  => Exec['bacula-sd restart-when-idle']
   }
 
-  ferm::rule { 'dsa-bacula-sd':
-    domain      => '(ip ip6)',
-    description => 'Allow bacula-sd access from director and clients (i.e. all of Debian)',
-    rule        => 'proto tcp mod state state (NEW) dport (bacula-sd) @subchain \'bacula-sd\' { saddr ($HOST_DEBIAN) ACCEPT; }',
-    notarule    => true,
-  }
-  # allow access from director
-  Ferm::Rule::Simple <<| tag == "bacula::director-to-storage::${bacula::bacula_director_address}" |>> {
-    port => $bacula::bacula_storage_port,
+  # allow access from director and fds
+  ferm::rule::simple { 'dsa-bacula-sd':
+    description => 'Access to the bacula-storage',
+    port        => $bacula::bacula_storage_port,
+    target      => 'bacula-sd',
   }
+  Ferm::Rule::Simple <<| tag == "bacula::director-to-storage::${bacula::bacula_director_address}" |>>;
+  Ferm::Rule::Simple <<| tag == "bacula::fd-to-storage::${::fqdn}" |>>;
 
   file { '/etc/bacula/storage-conf.d/empty.conf':
     content => '',