]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - modules/named/manifests/init.pp
add rcode0.net to primary nameserver firewall rules
[dsa-puppet.git] / modules / named / manifests / init.pp
index 28a666b5a1b5ce2f78f467de98f09adc478fda64..0fa51233111a8531d7b1acc480673071d9f2670a 100644 (file)
@@ -1,7 +1,12 @@
 class named {
-
        munin::check { 'bind': }
 
+       site::aptrepo { 'bind-ratelimit':
+               url        => 'http://db.debian.org/debian-admin',
+               suite      => 'bind-ratelimit',
+               components => 'main',
+       }
+
        package { 'bind9':
                ensure => installed
        }
@@ -10,10 +15,45 @@ class named {
                ensure => running,
        }
 
-       @ferm::rule { 'dsa-bind':
+       @ferm::rule { '00-dsa-bind-no-ddos-any':
                domain      => '(ip ip6)',
                description => 'Allow nameserver access',
-               rule        => '&TCP_UDP_SERVICE(53)'
+               rule        => 'proto udp dport 53 mod string from 32 to 64 algo bm hex-string \'|0000ff0001|\' jump DROP'
+       }
+
+       if has_role('dns_primary') {
+               @ferm::rule { '01-dsa-bind-4':
+                       domain      => '(ip)',
+                       description => 'Allow nameserver access',
+                       rule        => '&TCP_UDP_SERVICE_RANGE(53, ( $HOST_DNS_SECONDARY_V4 $HOST_NAGIOS_V4 $HOST_RCODE0_V4 $HOST_EASYDNS_V4 ) )',
+               }
+               @ferm::rule { '01-dsa-bind-6':
+                       domain      => '(ip6)',
+                       description => 'Allow nameserver access',
+                       rule        => '&TCP_UDP_SERVICE_RANGE(53, ( $HOST_DNS_SECONDARY_V6 $HOST_NAGIOS_V6 $HOST_RCODE0_V6 ) )',
+               }
+       } else {
+               @ferm::rule { '01-dsa-bind':
+                       domain      => '(ip ip6)',
+                       description => 'Allow nameserver access',
+                       rule        => '&TCP_UDP_SERVICE(53)'
+               }
+       }
+
+       @ferm::rule { 'dsa-bind-notrack':
+               domain      => '(ip ip6)',
+               description => 'NOTRACK for nameserver traffic',
+               table       => 'raw',
+               chain       => 'PREROUTING',
+               rule        => 'proto (tcp udp) dport 53 jump NOTRACK'
+       }
+
+       @ferm::rule { 'dsa-bind-notrack-out':
+               domain      => '(ip ip6)',
+               description => 'NOTRACK for nameserver traffic',
+               table       => 'raw',
+               chain       => 'OUTPUT',
+               rule        => 'proto (tcp udp) sport 53 jump NOTRACK'
        }
 
        file { '/var/log/bind9':