50fe60741be0d4ef7fa0b2b9905a1d9be6667244
[mirror/dsa-puppet.git] / modules / ferm / manifests / per_host.pp
1 class ferm::per_host {
2   if (getfromhash($deprecated::nodeinfo, 'hoster', 'name') == 'aql') {
3     include ferm::aql
4   }
5
6   case $::hostname {
7     czerny,clementi: {
8       ferm::rule { 'dsa-upsmon':
9         description => 'Allow upsmon access',
10         rule        => '&SERVICE_RANGE(tcp, 3493, ( 82.195.75.64/26 192.168.43.0/24 ))'
11       }
12     }
13     default: {}
14   }
15
16   case $::hostname {
17     bm-bl1,bm-bl2: {
18       ferm::rule { 'dsa-vrrp':
19         rule => 'proto vrrp daddr 224.0.0.18 jump ACCEPT',
20       }
21       ferm::rule { 'dsa-bind-notrack-in':
22         domain      => 'ip',
23         description => 'NOTRACK for nameserver traffic',
24         table       => 'raw',
25         chain       => 'PREROUTING',
26         rule        => 'proto (tcp udp) daddr 5.153.231.24 dport 53 jump NOTRACK'
27       }
28
29       ferm::rule { 'dsa-bind-notrack-out':
30         domain      => 'ip',
31         description => 'NOTRACK for nameserver traffic',
32         table       => 'raw',
33         chain       => 'OUTPUT',
34         rule        => 'proto (tcp udp) saddr 5.153.231.24 sport 53 jump NOTRACK'
35       }
36
37       ferm::rule { 'dsa-bind-notrack-in6':
38         domain      => 'ip6',
39         description => 'NOTRACK for nameserver traffic',
40         table       => 'raw',
41         chain       => 'PREROUTING',
42         rule        => 'proto (tcp udp) daddr 2001:41c8:1000:21::21:24 dport 53 jump NOTRACK'
43       }
44
45       ferm::rule { 'dsa-bind-notrack-out6':
46         domain      => 'ip6',
47         description => 'NOTRACK for nameserver traffic',
48         table       => 'raw',
49         chain       => 'OUTPUT',
50         rule        => 'proto (tcp udp) saddr 2001:41c8:1000:21::21:24 sport 53 jump NOTRACK'
51       }
52     }
53     default: {}
54   }
55
56   # postgres stuff
57   case $::hostname {
58     bmdb1: {
59       ferm::rule { 'dsa-postgres-dak':
60         description => 'Allow postgress access to cluster: dak',
61         domain      => '(ip ip6)',
62         rule        => @("EOF"/$)
63           &SERVICE_RANGE(tcp, 5434, (
64             ${ join(getfromhash($deprecated::allnodeinfo, 'coccia.debian.org', 'ipHostNumber'), " ") }
65             ${ join(getfromhash($deprecated::allnodeinfo, 'quantz.debian.org', 'ipHostNumber'), " ") }
66             ${ join(getfromhash($deprecated::allnodeinfo, 'nono.debian.org', 'ipHostNumber'), " ") }
67             ${ join(getfromhash($deprecated::allnodeinfo, 'wuiet.debian.org', 'ipHostNumber'), " ") }
68             ${ join(getfromhash($deprecated::allnodeinfo, 'respighi.debian.org', 'ipHostNumber'), " ") }
69             ${ join(getfromhash($deprecated::allnodeinfo, 'usper.debian.org', 'ipHostNumber'), " ") }
70             ${ join(getfromhash($deprecated::allnodeinfo, 'ullmann.debian.org', 'ipHostNumber'), " ") }
71           ))
72           | EOF
73       }
74     }
75     default: {}
76   }
77   # vpn fu
78   case $::hostname {
79     draghi: {
80       ferm::rule { 'dsa-vpn':
81         description => 'Allow openvpn access',
82         rule        => '&SERVICE(udp, 17257)'
83       }
84       ferm::rule { 'dsa-routing':
85         description => 'forward chain',
86         chain       => 'FORWARD',
87         rule        => 'policy ACCEPT;
88 mod state state (ESTABLISHED RELATED) ACCEPT;
89 interface tun+ ACCEPT;
90 REJECT reject-with icmp-admin-prohibited
91 '
92       }
93       ferm::rule { 'dsa-vpn-mark':
94         table => 'mangle',
95         chain => 'PREROUTING',
96         rule  => 'interface tun+ MARK set-mark 1',
97       }
98       ferm::rule { 'dsa-vpn-nat':
99         table => 'nat',
100         chain => 'POSTROUTING',
101         rule  => 'outerface !tun+ mod mark mark 1 MASQUERADE',
102       }
103     }
104     ubc-enc2bl01,ubc-enc2bl02,ubc-enc2bl09,ubc-enc2bl10: {
105       ferm::rule { 'dsa-ssh-priv':
106         description => 'Allow ssh access',
107         rule        => '&SERVICE_RANGE(tcp, 22, ( 172.29.40.0/22 172.29.203.0/24 ))',
108       }
109     }
110     ubc-node-arm01,ubc-node-arm02,ubc-node-arm03: {
111       ferm::rule { 'dsa-ssh-priv':
112         description => 'Allow ssh access',
113         rule        => '&SERVICE_RANGE(tcp, 22, ( 172.29.43.240 ))',
114       }
115     }
116     default: {}
117   }
118   # tftp
119   case $::hostname {
120     abel: {
121       ferm::rule { 'dsa-tftp':
122         description => 'Allow tftp access',
123         rule        => '&SERVICE_RANGE(udp, 69, ( 172.28.17.0/24 ))'
124       }
125     }
126     master: {
127       ferm::rule { 'dsa-tftp':
128         description => 'Allow tftp access',
129         rule        => '&SERVICE_RANGE(udp, 69, ( 82.195.75.64/26 192.168.43.0/24 ))'
130       }
131     }
132   }
133 }