nm.d.o no longer needs access to projectb on bmdb1
[mirror/dsa-puppet.git] / modules / roles / manifests / security_mirror.pp
1 # security mirror
2 #
3 # @param listen_addr IP addresses to have rsync listen on
4 # @param onion_service provide the onion service from this host
5 # @param healthcheck_name name to access this node in the health checker
6 class roles::security_mirror(
7   Array[Stdlib::IP::Address] $listen_addr = [],
8   Boolean $onion_service = false,
9   Optional[String] $healthcheck_name = undef,
10 ){
11   include roles::archvsync_base
12   include apache2
13   include apache2::expires
14   include apache2::rewrite
15
16   $enclosed_addresses_rsync = empty($listen_addr) ? {
17     true    => ['[::]'],
18     default => enclose_ipv6($listen_addr),
19   }
20   $_enclosed_addresses = empty($listen_addr) ? {
21     true    => ['*'],
22     default => enclose_ipv6($listen_addr),
23   }
24   $vhost_listen = $_enclosed_addresses.map |$a| { "${a}:80" } .join(' ')
25
26   apache2::site { '010-security.debian.org':
27     site    => 'security.debian.org',
28     content => template('roles/security_mirror/security.debian.org.erb')
29   }
30
31   rsync::site { 'security':
32     source      => 'puppet:///modules/roles/security_mirror/rsyncd.conf',
33     max_clients => 100,
34     binds       => $enclosed_addresses_rsync,
35   }
36
37   if $onion_service {
38     $onion_addr = empty($listen_addr) ? {
39       true    => $base::public_address,
40       default => filter_ipv4($listen_addr)[0]
41     }
42     if ! $onion_addr {
43       fail("Do not have a useable address for the onionservice on ${::hostname}.  Is \$listen_addr empty or does it not have an IPv4 address?.")
44     }
45
46     onion::service { 'security.debian.org':
47       port           => 80,
48       target_port    => 80,
49       target_address => $onion_addr,
50     }
51   }
52
53   Ferm::Rule::Simple <<| tag == 'ssh::server::from::security_master' |>>
54
55   mirror_health::service { 'security':
56     this_host_service_name => $healthcheck_name,
57     url                    => 'http://security.backend.mirrors.debian.org/debian-security/dists/stable/updates/Release',
58     health_url             => 'http://security.backend.mirrors.debian.org/_health',
59   }
60
61   # security abusers
62   #  198.108.67.48 DoS against our rsync service
63   ferm::rule { 'dsa-security-abusers':
64     prio => '005',
65     rule => 'saddr ( 198.108.67.48/32 ) DROP',
66   }
67 }