Allow access to the tracker db @ danzi from ticharich
[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     kaufmann: {
14       ferm::rule { 'dsa-hkp':
15         domain      => '(ip ip6)',
16         description => 'Allow hkp access',
17         rule        => '&SERVICE(tcp, 11371)'
18       }
19     }
20     gombert: {
21       ferm::rule { 'dsa-infinoted':
22         domain      => '(ip ip6)',
23         description => 'Allow infinoted access',
24         rule        => '&SERVICE(tcp, 6523)'
25       }
26     }
27     draghi: {
28       ferm::rule { 'dsa-finger':
29         domain      => '(ip ip6)',
30         description => 'Allow finger access',
31         rule        => '&SERVICE(tcp, 79)'
32       }
33       ferm::rule { 'dsa-ldap':
34         domain      => '(ip ip6)',
35         description => 'Allow ldap access',
36         rule        => '&SERVICE(tcp, 389)'
37       }
38       ferm::rule { 'dsa-ldaps':
39         domain      => '(ip ip6)',
40         description => 'Allow ldaps access',
41         rule        => '&SERVICE(tcp, 636)'
42       }
43     }
44     default: {}
45   }
46
47   case $::hostname {
48     bm-bl1,bm-bl2: {
49       ferm::rule { 'dsa-vrrp':
50         rule => 'proto vrrp daddr 224.0.0.18 jump ACCEPT',
51       }
52       ferm::rule { 'dsa-bind-notrack-in':
53         domain      => 'ip',
54         description => 'NOTRACK for nameserver traffic',
55         table       => 'raw',
56         chain       => 'PREROUTING',
57         rule        => 'proto (tcp udp) daddr 5.153.231.24 dport 53 jump NOTRACK'
58       }
59
60       ferm::rule { 'dsa-bind-notrack-out':
61         domain      => 'ip',
62         description => 'NOTRACK for nameserver traffic',
63         table       => 'raw',
64         chain       => 'OUTPUT',
65         rule        => 'proto (tcp udp) saddr 5.153.231.24 sport 53 jump NOTRACK'
66       }
67
68       ferm::rule { 'dsa-bind-notrack-in6':
69         domain      => 'ip6',
70         description => 'NOTRACK for nameserver traffic',
71         table       => 'raw',
72         chain       => 'PREROUTING',
73         rule        => 'proto (tcp udp) daddr 2001:41c8:1000:21::21:24 dport 53 jump NOTRACK'
74       }
75
76       ferm::rule { 'dsa-bind-notrack-out6':
77         domain      => 'ip6',
78         description => 'NOTRACK for nameserver traffic',
79         table       => 'raw',
80         chain       => 'OUTPUT',
81         rule        => 'proto (tcp udp) saddr 2001:41c8:1000:21::21:24 sport 53 jump NOTRACK'
82       }
83     }
84     default: {}
85   }
86
87   # postgres stuff
88   case $::hostname {
89     ullmann: {
90       ferm::rule { 'dsa-postgres-udd':
91         description => 'Allow postgress access',
92         domain      => '(ip ip6)',
93         # quantz, master, coccia
94         rule        => @("EOF")
95           &SERVICE_RANGE(tcp, 5452, (
96             ${ join(getfromhash($deprecated::allnodeinfo, 'quantz.debian.org', 'ipHostNumber'), " ") }
97             ${ join(getfromhash($deprecated::allnodeinfo, 'master.debian.org', 'ipHostNumber'), " ") }
98             ${ join(getfromhash($deprecated::allnodeinfo, 'coccia.debian.org', 'ipHostNumber'), " ") }
99             ${ join(getfromhash($deprecated::allnodeinfo, 'respighi.debian.org', 'ipHostNumber'), " ") }
100             ${ join(getfromhash($deprecated::allnodeinfo, 'wuiet.debian.org', 'ipHostNumber'), " ") }
101           ))
102           | EOF
103       }
104     }
105     fasolo: {
106       ferm::rule { 'dsa-postgres':
107         description => 'Allow postgress access',
108         domain      => '(ip ip6)',
109         rule        => @("EOF"/$)
110           &SERVICE_RANGE(tcp, 5433, (
111             ${ join(getfromhash($deprecated::allnodeinfo, 'bmdb1.debian.org', 'ipHostNumber'), " ") }
112             \$HOST_PGBACKUPHOST
113           ))
114           | EOF
115       }
116     }
117     bmdb1: {
118       ferm::rule { 'dsa-postgres-main':
119         description => 'Allow postgress access to cluster: main',
120         domain      => '(ip ip6)',
121         rule        => @("EOF"/$)
122           &SERVICE_RANGE(tcp, 5435, (
123             ${ join(getfromhash($deprecated::allnodeinfo, 'ticharich.debian.org', 'ipHostNumber'), " ") }
124             ${ join(getfromhash($deprecated::allnodeinfo, 'petrova.debian.org', 'ipHostNumber'), " ") }
125             ${ join(getfromhash($deprecated::allnodeinfo, 'ullmann.debian.org', 'ipHostNumber'), " ") }
126             ${ join(getfromhash($deprecated::allnodeinfo, 'wuiet.debian.org', 'ipHostNumber'), " ") }
127             ${ join(getfromhash($deprecated::allnodeinfo, 'quantz.debian.org', 'ipHostNumber'), " ") }
128             ${ join(getfromhash($deprecated::allnodeinfo, 'respighi.debian.org', 'ipHostNumber'), " ") }
129             ${ join(getfromhash($deprecated::allnodeinfo, 'tate.debian.org', 'ipHostNumber'), " ") }
130             \$HOST_PGBACKUPHOST
131           ))
132           | EOF
133       }
134       ferm::rule { 'dsa-postgres-dak':
135         description => 'Allow postgress access to cluster: dak',
136         domain      => '(ip ip6)',
137         rule        => @("EOF"/$)
138           &SERVICE_RANGE(tcp, 5434, (
139             ${ join(getfromhash($deprecated::allnodeinfo, 'coccia.debian.org', 'ipHostNumber'), " ") }
140             ${ join(getfromhash($deprecated::allnodeinfo, 'quantz.debian.org', 'ipHostNumber'), " ") }
141             ${ join(getfromhash($deprecated::allnodeinfo, 'nono.debian.org', 'ipHostNumber'), " ") }
142             ${ join(getfromhash($deprecated::allnodeinfo, 'wuiet.debian.org', 'ipHostNumber'), " ") }
143             ${ join(getfromhash($deprecated::allnodeinfo, 'respighi.debian.org', 'ipHostNumber'), " ") }
144             ${ join(getfromhash($deprecated::allnodeinfo, 'usper.debian.org', 'ipHostNumber'), " ") }
145             ${ join(getfromhash($deprecated::allnodeinfo, 'ullmann.debian.org', 'ipHostNumber'), " ") }
146           ))
147           | EOF
148       }
149       ferm::rule { 'dsa-postgres-bacula':
150         description => 'Allow postgress access to cluster: bacula',
151         domain      => '(ip ip6)',
152         rule        => @("EOF"/$)
153           &SERVICE_RANGE(tcp, 5437, (
154             ${ join(getfromhash($deprecated::allnodeinfo, 'dinis.debian.org', 'ipHostNumber'), " ") }
155             ${ join(getfromhash($deprecated::allnodeinfo, 'storace.debian.org', 'ipHostNumber'), " ") }
156             \$HOST_PGBACKUPHOST
157           ))
158           | EOF
159       }
160       ferm::rule { 'dsa-postgres-dedup':
161         description => 'Allow postgress access to cluster: dedup',
162         domain      => '(ip ip6)',
163         rule        => @("EOF"/$)
164           &SERVICE_RANGE(tcp, 5439, (
165             ${ join(getfromhash($deprecated::allnodeinfo, 'delfin.debian.org', 'ipHostNumber'), " ") }
166           ))
167           | EOF
168       }
169       ferm::rule { 'dsa-postgres-debsources':
170         description => 'Allow postgress access to cluster: debsources',
171         domain      => '(ip ip6)',
172         rule        => @("EOF"/$)
173           &SERVICE_RANGE(tcp, 5440, (
174             ${ join(getfromhash($deprecated::allnodeinfo, 'sor.debian.org', 'ipHostNumber'), " ") }
175             \$HOST_PGBACKUPHOST
176           ))
177           | EOF
178       }
179     }
180     danzi: {
181       ferm::rule { 'dsa-postgres-tracker':
182         description => 'Allow postgress access to cluster: tracker',
183         domain      => '(ip ip6)',
184         rule        => @("EOF"/$)
185           &SERVICE_RANGE(tcp, 5432, (
186             ${ join(getfromhash($deprecated::allnodeinfo, 'ticharich.debian.org', 'ipHostNumber'), " ") }
187             \$HOST_PGBACKUPHOST
188           ))
189           | EOF
190       }
191       ferm::rule { 'dsa-postgres-danzi':
192         # ubc, wuiet
193         description => 'Allow postgress access',
194         rule        => '&SERVICE_RANGE(tcp, 5433, ( 206.12.19.0/24 209.87.16.0/24 5.153.231.18/32 ))'
195       }
196       ferm::rule { 'dsa-postgres-danzi6':
197         domain      => 'ip6',
198         description => 'Allow postgress access',
199         rule        => '&SERVICE_RANGE(tcp, 5433, ( 2607:f8f0:610:4000::/64 2607:f8f0:614:1::/64 2001:41c8:1000:21::21:18/128 ))'
200       }
201
202       ferm::rule { 'dsa-postgres2-danzi':
203         description => 'Allow postgress access2',
204         rule        => '&SERVICE_RANGE(tcp, 5434, ( 209.87.16.0/24 ))'
205       }
206       ferm::rule { 'dsa-postgres2-danzi6':
207         domain      => 'ip6',
208         description => 'Allow postgress access2',
209         rule        => '&SERVICE_RANGE(tcp, 5434, ( 2607:f8f0:614:1::/64 ))'
210       }
211       ferm::rule { 'dsa-postgres-wannabuild':
212         description => 'Allow postgress access to cluster: wannabuild',
213         domain      => '(ip ip6)',
214         rule        => @("EOF"/$)
215           &SERVICE_RANGE(tcp, 5436, (
216             ${ join(getfromhash($deprecated::allnodeinfo, 'respighi.debian.org', 'ipHostNumber'), " ") }
217             ${ join(getfromhash($deprecated::allnodeinfo, 'wuiet.debian.org', 'ipHostNumber'), " ") }
218             ${ join(getfromhash($deprecated::allnodeinfo, 'ullmann.debian.org', 'ipHostNumber'), " ") }
219             \$HOST_PGBACKUPHOST
220           ))
221           | EOF
222       }
223     }
224     seger: {
225       ferm::rule { 'dsa-postgres-backup':
226         description => 'Allow postgress access',
227         rule        => '&SERVICE_RANGE(tcp, 5432, ( $HOST_PGBACKUPHOST_V4 ))'
228       }
229       ferm::rule { 'dsa-postgres-backup6':
230         domain      => 'ip6',
231         description => 'Allow postgress access',
232         rule        => '&SERVICE_RANGE(tcp, 5432, ( $HOST_PGBACKUPHOST_V6 ))'
233       }
234     }
235     sallinen: {
236       ferm::rule { 'dsa-postgres':
237         description => 'Allow postgress access',
238         domain      => '(ip ip6)',
239         rule        => @("EOF"/$)
240           &SERVICE_RANGE(tcp, 5473, (
241             ${ join(getfromhash($deprecated::allnodeinfo, 'lw07.debian.org', 'ipHostNumber'), " ") }
242             ${ join(getfromhash($deprecated::allnodeinfo, 'snapshotdb-manda-01.debian.org', 'ipHostNumber'), " ") }
243             \$HOST_PGBACKUPHOST
244           ))
245           | EOF
246       }
247     }
248     lw07: {
249       ferm::rule { 'dsa-postgres-snapshot':
250         description => 'Allow postgress access',
251         rule        => '&SERVICE_RANGE(tcp, 5439, ( 185.17.185.176/28 ))'
252       }
253       ferm::rule { 'dsa-postgres-snapshot6':
254         domain      => 'ip6',
255         description => 'Allow postgress access',
256         rule        => '&SERVICE_RANGE(tcp, 5439, ( 2001:1af8:4020:b030::/64 ))'
257       }
258     }
259     snapshotdb-manda-01: {
260       ferm::rule { 'dsa-postgres-snapshot':
261         domain      => '(ip ip6)',
262         description => 'Allow postgress access from leaseweb (lw07 and friends)',
263         rule        => '&SERVICE_RANGE(tcp, 5442, ( 185.17.185.176/28 2001:1af8:4020:b030::/64 ))'
264       }
265     }
266     default: {}
267   }
268   # vpn fu
269   case $::hostname {
270     draghi: {
271       ferm::rule { 'dsa-vpn':
272         description => 'Allow openvpn access',
273         rule        => '&SERVICE(udp, 17257)'
274       }
275       ferm::rule { 'dsa-routing':
276         description => 'forward chain',
277         chain       => 'FORWARD',
278         rule        => 'policy ACCEPT;
279 mod state state (ESTABLISHED RELATED) ACCEPT;
280 interface tun+ ACCEPT;
281 REJECT reject-with icmp-admin-prohibited
282 '
283       }
284       ferm::rule { 'dsa-vpn-mark':
285         table => 'mangle',
286         chain => 'PREROUTING',
287         rule  => 'interface tun+ MARK set-mark 1',
288       }
289       ferm::rule { 'dsa-vpn-nat':
290         table => 'nat',
291         chain => 'POSTROUTING',
292         rule  => 'outerface !tun+ mod mark mark 1 MASQUERADE',
293       }
294     }
295     ubc-enc2bl01,ubc-enc2bl02,ubc-enc2bl09,ubc-enc2bl10: {
296       ferm::rule { 'dsa-ssh-priv':
297         description => 'Allow ssh access',
298         rule        => '&SERVICE_RANGE(tcp, 22, ( 172.29.40.0/22 172.29.203.0/24 ))',
299       }
300     }
301     ubc-node-arm01,ubc-node-arm02,ubc-node-arm03: {
302       ferm::rule { 'dsa-ssh-priv':
303         description => 'Allow ssh access',
304         rule        => '&SERVICE_RANGE(tcp, 22, ( 172.29.43.240 ))',
305       }
306     }
307     default: {}
308   }
309   # tftp
310   case $::hostname {
311     abel: {
312       ferm::rule { 'dsa-tftp':
313         description => 'Allow tftp access',
314         rule        => '&SERVICE_RANGE(udp, 69, ( 172.28.17.0/24 ))'
315       }
316     }
317     master: {
318       ferm::rule { 'dsa-tftp':
319         description => 'Allow tftp access',
320         rule        => '&SERVICE_RANGE(udp, 69, ( 82.195.75.64/26 192.168.43.0/24 ))'
321       }
322     }
323   }
324 }